Iowa State University

Iowa State University

2005-2007 Courses and Programs

Iowa State University Catalog

Search for classes offered this term

Catalog Index

A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

Computer Science

200 | 300 | 400 | Graduate Courses

www.cs.iastate.edu
Carl K. Chang, Chair of Department
Professors: Bergman, Chang, Fernandez-Baca, Honavar, Kothari, Leavens, Lutz, Maddux, Miller, Slutzki, Wong
Professors (Emeritus): Brearly, Oldehoeft, Stewart, Thomas
Associate Professors: Aluru, Chang, Chaudhuri, Cruz-Neira, Gadia, Huang, Lutz, Prabhu, Tyagi
Associate Professors (Adjunct): Kendall, Sosonkina
Assistant Professors: Aduri, Basu, Cai, Chou, Eulenstein, Harding, Jia, Lumpe, Margaritis, Miner, Reiners, Ruan, Tavanapong, Tian
Assistant Professors (Adjunct): Turner

Undergraduate Study

The curriculum leading up to the baccalaureate degree in computer science is designed to prepare students for positions as computer scientists with business, industry, or government, or for graduate study in computer science. The main objectives are to impart to students an understanding of the basics of computer science, to develop proficiency in the practice of computing, and to prepare them for continued professional development.

The following are intended learning outcomes for computer science majors. Seniors will assess these outcomes in a survey conducted before they graduate and feedback thus obtained will be used to improve the curriculum.

A. Impart an understanding of the basics of the discipline

Each graduate will know

A.1 Fundamental principles of computing,
A.2 Basic foundations of mathematics, statistics, and physical sciences
A. 3 Design and implementation of programs

B. Develop proficiency in the practice of computing

The graduated student will be able to

B.1 Formulate and solve problems in computing,
B. 2 Understand design and performance requirements of software systems,
B. 3 Apply sound principles to the synthesis and analysis of computer systems

C. Prepare for continued professional development

Our students will

C.1 Engage in lifelong learning and expect to embrace change,
C. 2 Communicate effectively and think critically and creatively, both independently and with others,
C. 3 Be aware of social and ethical issues of computers in society

Students must earn at least a C- in each course taken to fulfill the Degree Program.

Students must take at least 15 credits at the 300 level or higher at Iowa State University.

To complete an undergraduate degree in Computer Science, a student must satisfy the requirements of the College of Liberal Arts and Sciences (see Liberal Arts and Sciences, Curriculum) and include the following courses within the group requirements: Phil 343; Sp Cm 212; 14 credits of math and statistics including Math 165, Math 166, one statistics course from Stat 105, 231, 305, 330, 333, or 341, and at least one math course from Math 265, 266, 304, 307, 314, or 317; a minimum of 13 credits of natural science including Phys 221, 222, and at least one additional natural science course from the following list: A Ecl 312, Anthr 202, 307, BBMB 221, Biol 312, Biol 355, Chem 163-231, Ent 370, Env S 324, Env S 330, FS HN 167, Gen 260, Geol 100-108, 201, 311, 451, 475, Mat E 207, 211, Mteor 206, 301, Psych 310, English proficiency requirement: Engl 104, 105 and one of Engl 302, 305, 309 or 314. The minimum grade accepted in each of the three required English courses is a C-.

Students wishing to pursue the B.S. degree in computer science must first successfully complete the premajor program consisting of the following courses and minimum grade requirements:

Course Minimum Grade
227 C-
228 C-
Math 165 C-

Students majoring in computer science must successfully complete this premajor program prior to taking any other courses in the Department.

Thus, for computer science majors, this premajor serves as a necessary Prerequisite to all the other courses offered by the Department.

Computer science majors transferring from other institutions must take at least 15 of their credits at the 300-level or above in our department while in residence at Iowa State.

To graduate with a major in the Computer Science Department, a student must earn at least a C- in each of the courses taken to fulfill the program of study.

A minimum of 44 credits is required for the B.S. degree in computer science. The required courses are: Com S 101, 203, Cpr E 210, Com S 227, 228, 229, 309, 311, 321, 330, 331, 342, 352, 362 or 363. In addition, two advanced-level courses must be selected from the following groups:

Group W: 426, 440, 454, 477, 486

Group B: 401, 416, 417, 425, 430, 455, 461, 472, 474

Group N: 418, Math 421, Math 471, Math 481, Cpr E 484, Cpr E 485, Cpr E 489, M E 519

Courses in Group W require written reports and those in Group B require both oral and written reports. Students must take one course from Group B and one course from any group.

Students must earn a C- or better in each course in the department which is a Prerequisite to a course listed in the student's degree program.

Graduate Study

The department offers work for the degrees master of science and doctor of philosophy with a major in Computer Science. The doctor of philosophy may also be earned with computer science as a co- major with some other discipline. Additionally, the department offers minor work to students majoring in other departments.

Established research areas include algorithms, artificial intelligence, computational complexity, computer architecture, bioinformatics, computational biology, computer networks, database systems, formal methods, information assurance, machine learning and neural networks, multimedia, operating systems, parallel and distributed computing, programming languages, robotics, and software engineering. There are also numerous opportunities for interdisciplinary research.

Typically, students beginning graduate work in Computer Science have completed a bachelor's degree or equivalent in Computer Science. However, some students with undergraduate majors in other areas, such as mathematical, physical, or biological science or engineering, become successful graduate students in Computer Science.

For the degree master of science, a minimum of 31 semester credits are required. A thesis demonstrating research and the ability to organize and express significant ideas in computer science is required.

The purpose of the doctoral program is to train students to do original research in Computer Science. Each student is also required to attain knowledge and proficiency commensurate with a leadership role in the field. The Ph.D. requirements, governed by the student's program of study committee within established guidelines of the department and the graduate college. They include coursework, demonstrated proficiency in four areas of Computer Science, a research skills requirement, a preliminary examination, and a doctoral dissertation and final oral examination. The department recommends that all graduate students majoring in Computer Science teach as part of their training for an advanced degree.

Courses open for nonmajor graduate credit: 309, 311, 321, 330, 331, 342, 352, 362, 363, 381, 401, 416, 417, 418, 425, 426, 430, 440, 454, 455, 461, 471, 472, 474, 477, 481, 484.

Courses primarily for undergraduate students


Com S 101. Orientation. (1-0) Cr. R. Half semester. F.S. Introduction to the procedures and policies of Iowa State University and the Department of Computer Science, test-outs, honorary societies, etc. Issues relevant to student adjustment to college life will also be discussed. Offered on a satisfactory- fail grading basis only.

Com S 103. Computer Applications. (3-2) Cr. 4. F.S. Introduction to computer literacy and applications. Applications: Windows, Internet browser/HTML, word processing, spreadsheets, database management and presentation software. Literacy: history of computing, structure of computers, telecommunications, computer ethics, computer crime, and history of programming languages. No prior computer experience necessary.

Com S 104. Introduction to Computers. (3-2) Cr. 4. F. Use of personal computer and workstation operating systems and software. Overview of machine architecture and telecommunications. Project- oriented approach to word processing, spreadsheet, presentation, database management, Internet usage, HTML and other software. Beginning programming in Visual Basic, Unix. Topics from computer history, programming languages, algorithm development, and societal impact. No prior computer experience necessary.

Com S 107. Applied Computer Programming. (3-0) Cr. 3. F.S. Prereq: 103, Math 104 or 140 or 150. Introduction to computer programming for non-majors using a language such as the Visual Basic language. Basics of good programming and algorithm development. Graphical user interfaces.

Com S 201. Computer Programming in COBOL. (3-0) Cr. 3. F.S. Prereq: 107 or 207 or 227. Computer programming in COBOL. Emphasis on the design, writing, debugging, and testing of business applications programs in a transaction-oriented environment.

Com S 203. Careers in Computer Science. (1-0) Cr. R. Half semester. F.S. Computer science as a profession. Introduction to career fields open to computer science majors. Relationship of coursework to careers. Presentations by computer science professionals. Offered on a satisfactory-fail grading basis only.

Com S 207. Programming I. (3-1) Cr. 3. F.S. Prereq: Math 150 or placement into Math 140/141/142 or higher. An introduction to computer programming using an object-oriented programming language. Emphasis on the basics of good programming techniques and style. Extensive practice in designing, implementing, and debugging small programs. Use of abstract data types. Interactive and fild I/O. Exceptions/error-handling. This course is designed for nonmajors. Credit may not be applied toward graduation for both 207 and 227.

Com S 208. Programming II. (3-1) Cr. 3. S. Prereq: 207, credit or enrollment in Math 151, 160, or 165. Intermediate-level programming techniques. Emphasis on designing, writing, testing, debugging, and documenting medium-sized programs. Data structures and their uses. Dynamic memory usage. Inheritance and polymorphism. Algorithm design and efficiency: recursion, searching, and sorting. Event-driven and GUI programming. The software development process. This course is designed for nonmajors. Credit may not be applied toward the major.

Com S 227. Introduction to Object-oriented Programming. (3-2) Cr. 4. F.S. An introduction to object- oriented design and programming techniques. Symbolic and numerical computation. Recursion and iteration. Modularity procedural and data abstraction, specifications and subtyping. Object-oriented techniques. Imperative programming. Emphasis on principles of programming and object-oriented design through extensive practice in design, writing, running, debugging, and reasoning about programs. This course is designed for majors. Credit may not be applied toward graduation for both 207 and 227.

Com S 228. Introduction to Data Structures. (3-1) Cr. 3. F.S. Prereq: 227, credit or enrollment in Math 165. An object-oriented approach to data structures and algorithms. Object-oriented analysis, design, and programming, with emphasis on data abstraction, inheritance and subtype polymorphism. Abstract data type specification and correctness. Collections and associated algorithms, such as stacks, queues, lists, trees. Searching and sorting algorithms. Graphs. Data on secondary storage. Analysis of algoritms. Emphasis on object-oriented design, writing and documenting medium-sized programs. This course is designed for majors.

Com S 229. Advanced Programming Techniques. (3-0) Cr. 3. F.S. Prereq: 228, credit or enrollment in Math 166. Object-oriented programming experience using a language suitable for exploring advanced topics in programming. Topics include memory management, parameter passing, inheritance, compiling, debugging, and maintaining programs. Significant programming projects.

Com S 252. Linux Operating System Essentials. (2-2) Cr. 3. Alt. F., offered 2006. Prereq: 103, 104, or equivalent experience, ability to read and modify simple C code. Selected topics include: Linux Distributions, installation, configuration, and management of a Linux based computer system, shell programming, network accessing technologies, package management systems, system security, user, file sharing techniques, interoperation with other computers on the network, and open-source software. This is a hands-on course designed to demonstrate the installation and utilization of the Linux operating system for a personal computer.

Com S 290. Independent Study. Cr. arr. F.S. Prereq: Permission of instructor. Offered on a satisfactory-fail grading basis only.
H. Honors


Com S 309. Software Development Practices. (3-1) Cr. 3. F.S. Prereq: 228, 229 or Cpr E 211, Engl 104. A practical introduction to methods for managing software development. Process models, requirements analysis, structured and object-oriented design, coding, testing, maintenance, cost and schedule estimation, metrics. Programming projects. Nonmajor graduate credit.

Com S 311. Design and Analysis of Algorithms. (3-1) Cr. 3. F.S. Prereq: 228, 229 or Cpr E 211, Math 166, Engl 104, and either 330 or Cpr E 310. Basic techniques for design and analysis of efficient algorithms. Sorting, searching, graph algorithms, computational geometry, string processing and NP-completeness. Design techniques such as dynamic programming and the greedy method. Asymptotic, worst-case, average-case and amortized analyses. Data structures including heaps, hash tables, binary search trees and red-black trees. Programming projects. Credit may not be applied toward graduation for both 311 and 381. Nonmajor graduate credit.

Com S 321. Introduction to Computer Architecture and Machine-Level Programming. (3-1) Cr. 3. F.S. Prereq: 229, Cpr E 210 and Engl 104. Introduction to computer architecture and organization. Emphasis on evaluation of performance, instruction set architecture, datapath and control, memory- hierarchy design, and pipelining. Assembly language on a simulator. Nonmajor graduate credit.

Com S 330. Discrete Computational Structures. (3-1) Cr. 3. F.S. Prereq: 228, Math 166 and Engl 104. Concepts in discrete mathematics as applied to computer science. Logic, proof techniques, set theory, relations, graphs, combinatorics, discrete probability and number theory. Nonmajor graduate credit.

Com S 331. Theory of Computing. (Same as Ling 331.) (3-1) Cr. 3. F.S. Prereq: Math 166, Engl 104, and either 330 or Cpr E 310. Models of computation: finite state automata, pushdown automata and Turing machines. Study of grammars and their relation to automata. Limits of digital computation, unsolvability and Church-Turing thesis. Chomsky hierarchy and relations between classes of languages. Nonmajor graduate credit.

Com S 342. Principles of Programming Languages. (3-1) Cr. 3. F.S. Prereq: 321, Engl 104, 330 or Cpr E 310, and either 309, 362 or 363. Organization of programming languages emphasizing language design concepts and semantics. Study of language features and major programming paradigms, especially functional programming. Programming projects. Nonmajor graduate credit.

Com S 352. Introduction to Operating Systems. (3-1) Cr. 3. F.S. Prereq: 321, Engl 104, and either 362 or 363. Survey of operating system issues. Introduction to hardware and software components including: processors, peripherals, interrupts, management of processes, threads and memory, deadlocks, file systems, protection, virtual machines and system organization, and introduction to distributed operating systems. Programming projects. Nonmajor graduate credit.

Com S 362. Object-Oriented Analysis and Design. (3-0) Cr. 3. F.S. Prereq: 228 and Engl 104. Object- oriented requirements analysis and systems design. Design notations such as the Unifed Modeling Language. Design Patterns. Group design and programming with large programming projects. Nonmajor graduate credit.

Com S 363. Introduction to Database Management Systems. (3-0) Cr. 3. F.S. Prereq: 228 and Engl 104. Relational, object-oriented, and semistructured data models and query languages. SQL, ODMG, and XML standards. Database design using entity-relationship model, data dependencies and object definition language. Application development in SQL-like languages and general purpose host languages with application program interfaces. Information integration using data warehouses, mediators and wrappers. Programming Projects. Nonmajor graduate credit.

Com S 381. Introduction to Data Structures for Biologists. (4-0) Cr. 4. S. Prereq: 207 or equivalent programming experience. An object-oriented approach to programming and data structures for biologists. Object-oriented programming. Strings. Stacks. Queues. Recursion. Lists. Trees. Graphs. Sorting, Algorithm Analysis. The course is designed to provide the fundamentals of data structures and programming for biology students that already have basic programming skills. Not for major credit. Credit may not be applied toward graduation for both 311 and 381. Nonmajor graduate credit.

Com S 398. Cooperative Education. Cr. R. Required of all cooperative students. Prereq: Permission of department chair. Students must register for this course prior to commencing each work period.


Com S 401. Projects in Computing and Business Applications. (2-2) Cr. 3. F. Prereq: Engl 105, Sp Cm 212, Com S 309, and either 362 or 363. Applications of software development methods (requirements collection and analysis, software design, project management, documentation and testing), programming techniques, database designs and administration, network application programming to solve computing needs in business settings. A study of practical applications of emerging technologies in computing. Emphasis on semester-long team programming projects. Lab assignments. Oral and written reports. Nonmajor graduate credit.

Com S 416. Software Evolution and Maintenance. (Same as Cpr E 416.) (3-0) Cr. 3. Prereq: Com S 309. Fundamental concepts in software evolution and maintenance; practical software evolution processes; legacy systems, program comprehension, impact analysis, program migration and transformation, refactoring. Tools for software evolution and maintenance. Case studies, experimental software projects. Written reports and oral presentations. Nonmajor graduate credit.

Com S 417. Software Verification and Testing. (Same as Cpr E 417.) (3-0) Cr. 3. S. Prereq: 309. Software verification topics include propositional, predicate, and temporal logics, model-based verification using model checking, program verification using theorem proving, and tools for verification. Software testing topics include testing process software defects, inspection, white/black box testing, unit/system testing, object-oriented and GUI software testing, automatic test generation, test planning and management, and tools for testing. Oral and written reports.

Com S 418. Introduction to Computational Geometry. (Dual-listed with 518.) (3-0) Cr. 3. Alt. S., offered 2007. Prereq: 311 or permission of instructor, Engl 105, Sp Cm 212. Introduction to data structures, algorithms, and analysis techniques for computational problems that involve geometry. Line segment intersection, polygon triangulation and visibility problems, range queries, point location, arrangements and duality, Voronoi diagrams and Delaunay triangulation, convex hulls. Other selected topics. Programming assignments. Nonmajor graduate credit.

Com S 421. Logic for Mathematics and Computer Science. (Same as Math 421.) See Mathematics.

Com S 425. High Performance Computing for Scientific and Engineering Applications. (Same as Cpr E 425.) (3-1) Cr. 3. S. Prereq: 311, 330, Engl 105, Sp Cm 212. Introduction to high performance computing platforms including parallel computers and workstation clusters. Discussion of parallel architectures, performance, programming models, and software development issues. Sample applications from science and engineering. Practical issues in high performance computing will be emphasized via a number of programming projects using a variety of programming models and case studies. Oral and written reports. Nonmajor graduate credit.

Com S 426. Introduction to Parallel Algorithms and Programming. (Dual-listed with 526, same as Cpr E 426.) See Computer Engineering. Nonmajor graduate credit.

Com S 430. Advanced Programming Tools. (3-1) Cr. 3. F. Prereq: 311, 362 or 363, Engl 105, Sp Cm 212. Topics in advanced programming techniques and tools widely used by industry (e.g., event-driven programming and graphical user interfaces, standard libraries, client/server architectures and techniques for distributed applications). Emphasis on programming projects in a modern integrated development environment. Oral and written reports. Nonmajor graduate credit.

Com S 440. Principles and Practice of Compiling. (Dual-listed with 540.) (3-1) Cr. 3. S. Prereq: 331, 342, Engl 105, Sp Cm 212. Theory of compiling and implementation issues of programming languages. Programming projects leading to the construction of a compiler. Projects with different difficulty levels will be given for 440 and 540. Topics: lexical, syntax and semantic analyses, syntax- directed translation, runtime environment and library support. Written reports. Nonmajor graduate credit.

Com S 454. Distributed and Network Operating Systems. (Dual-listed with 554; same as Cpr E 454.) (3-1) Cr. 3. Alt. S., offered 2007. Prereq: 311, 352, Engl 105, Sp Cm 212. Laboratory course dealing with practical issues of design and implementation of distributed and network operating systems and distributed computing environments (DCE). The client server paradigm, inter-process communications, layered communication protocols, synchronization and concurrency control, and distributed file systems. Graduate credit requires additional in-depth study of advanced operating systems. Written reports. Nonmajor graduate credit.

Com S 455. Simulation: Algorithms and Implementation. (Dual-listed with 555.) (3-0) Cr. 3. F. Prereq: 311and 330, Stat 330, Engl 104, Sp Cm 212. Introduction to discrete-event simulation with a focus on computer science applications, including performance evaluation of networks and distributed systems. Overview of algorithms and data structures necessary to implement simulation software. Discrete and continuous stochastic models, random number generation, elementary statistics, simulation of queuing and inventory systems, Monte Carlo simulation, point and interval parameter estimation. Graduate credit requires additional in-depth study of concepts. Oral and written reports. Nonmajor graduate credit.

Com S 461. Database Systems Concepts and Internals. (3-1) Cr. 3. F. Prereq: 311, Engl 105, Sp Cm 212 and Com S 363. Data models. Algebraic, first order, and user oriented query languages. Data storage, access methods, query execution, and transaction management. Parallel and distributed databases. Special purpose databases. Information integration using data warehouses, mediators, wrappers, and data mining. Oral and written reports. Nonmajor graduate credit.

Com S 471. Computational Linear Algebra and Fixed Point Iteration. (Same as Math 471.) See Mathematics. Nonmajor graduate credit.

Com S 472. Principles of Artificial Intelligence. (Dual-listed with 572.) (3-1) Cr. 3. F. Prereq: 311, 330 or Cpr E 310, Stat 330, Engl 105, Sp Cm 212, Com S 342 or comparable programming experience. Specification, design, implementation, and selected applications of intelligent software agents and multi-agent systems. Computational models of intelligent behavior, including problem solving, knowledge representation, reasoning, planning, decision making, learning, perception, action, communication and interaction. Reactive, deliberative, rational, adaptive, learning and communicative agents and multiagent systems. Artificial intelligence programming. Graduate credit requires a research project and a written report. Oral and written reports. Nonmajor graduate credit.

Com S 474. Elements of Neural Computation. (3-1) Cr. 3. S. Prereq: 311, 330 or Cpr E 310, Stat 330, Math 165, Engl 105, Sp Cm 212, Com S 342 or comparable programming experience. Introduction to theory and applications of neural computation and computational neuroscience. Computational models of neurons and networks of neurons. Neural architectures for associative memory, knowledge representation, inference, pattern classification, function approximation, stochastic search, decision making, and behavior. Neural architectures and algorithms for learning including perceptions, support vector machines, kernel methods, bayesian learning, instance based learning, reinforcement learning, unsupervised learning, and related techniques. Applications in Artificial Intelligence and cognitive and neural modeling. Hands-on experience is emphasized through the use of simulation tools and laboratory projects. Oral and written reports. Nonmajor graduate credit.

Com S 477. Problem Solving Techniques for Applied Computer Science. (Dual-listed with 577.) (3-0) Cr. 3. F. Prereq: 228, 330 or Cpr E 310, Math 166 and Math 307 (or Math 317), or consent of the instructor. Selected topics in applied mathematics and modern heuristics that have found applications in areas such as geometric modeling, graphics, robotics, vision, human machine interface, speech recognition, computer animation, etc. Polynomial interpolation, roots of polynomials, resultants, solution of linear and nonlinear equations, approximation, data fitting, fast Fourier transform, linear programming, nonlinear optimization, Lagrange multipliers, genetic algorithms, integration of ODEs, curves, curvature, Frenet Formulas, cubic splines, and Bezier curves. Programming components. Written report for graduate credit.

Com S 481. Numerical Solution of Differential Equations and Interpolation. (Same as Math 481.) See Mathematics. Nonmajor graduate credit.

Com S 486. Fundamental Concepts in Computer Networking. (3-0) Cr. 3. S. Prereq: 352. An introduction to fundamental concepts in the design and implementation of computer communication in both the wired and wireless networks, their protocols, and applications. Layered network architecture in the Internet, applications, transport, Socket APIs, network, and data link layers and their protocols, multimedia networking, and network security.

Com S 490. Independent Study. Cr. arr. F.S. Prereq: 6 credits in computer science, permission of instructor. No more than 9 credits of 490 may be counted toward graduation. Offered on a satisfactory-fail grading basis only.
H. Honors

Courses primarily for graduate students, open to qualified undergraduate students


Com S 502. Complex Adaptive Systems Seminar. (Same as CAS 502.) (1-0) Cr. 1. F.S. Prereq: Admissions to CAS minor. Understanding core techniques in artificial life are based on basic readings in complex adaptive systems. Understand techniques of complex system analysis methods including: Evolutionary computation, Neural nets, Agent based simulations (Agent based Computational Economics). Large-scale simulations are to be emphasized, e.g. power grids, whole ecosystems.

Com S 503. Complex Adaptive Systems Concepts and Techniques. (Same as CAS 503.) (3-0) Cr. 3. S. Prereq: Admission to CAS minor. Understanding of Computer Modeling of Complex Systems, Complex adaptive systems approach to the study of evolutionary computation, neural computation, cellular computation, computational models of immune systems, complexity theory, computational economics, and other fields of application.

Com S 507. Numerical Solution of Differential Equations. (Same as Math 507.) See Mathematics.

Com S 511. Design and Analysis of Algorithms. (Same as Cpr E 511.) (3-0) Cr. 3. F. Prereq: 311. A study of basic algorithm design and analysis techniques. Advanced data structures, amortized analysis and randomized algorithms. Applications to sorting, graphs, and geometry. NP- completeness and approximation algorithms.

Com S 512. Formal Methods in Software Engineering. (3-0) Cr. 3. S. Prereq: 311, 330. A survey of formal methods relevant to the software life-cycle process including requirements, specifications, design, implementation, testing, and maintenance. Implications of formal results for software prototyping and automated testing.

Com S 515. Software System Safety. (3-0) Cr. 3. F. Prereq: 309 or 311, 342. An introduction to the analysis, design, and testing of software for safety-critical and high-integrity systems. Analysis techniques, formal verification, fault identification and recovery, model checking, and certification issues. Emphasizes a case-based and systematic approach to software's role in safe systems.

Com S 518. Introduction to Computational Geometry. (Dual-listed with 418.) (3-0) Cr. 3. Alt. S., offered 2007. Prereq: 311 or permission of instructor. Introduction to data structures, algorithms, and analysis techniques for computational problems that involve geometry. Line segment intersection, polygon triangulation and visibility problems, range queries, point location, arrangements and duality, Voronoi diagrams and Delaunay triangulation, convex hulls. Other selected topics. Programming assignments. A scholarly report must be submitted for graduate credit.

Com S 525. Numerical Analysis of High Performance Computing. (Same as Cpr E 525, Math 525.) See Computer Engineering or Mathematics.

Com S 526. Introduction to Parallel Algorithms and Programming. (Dual-listed with 426, same as Cpr E 526.) See Computer Engineering.

Com S 531. Theory of Computation. (3-0) Cr. 3. S. Prereq: 331. A systematic study of the fundamental models and analytical methods of theoretical computer science. Computability, the Church-Turing thesis, decidable and undecidable problems, and the elements of recursive function theory. Time complexity, logic, Boolean circuits, and NP-completeness. Role of randomness in computation.

Com S 540. Principles and Practice of Compiling. (Dual-listed with 440, same as Cpr E 540.) (3-1) Cr. 3. S. Prereq: 331, 342, Engl 105, Sp Cm 212. Theory of compiling and implementation issues of programming languages. Programming projects leading to the construction of a compiler. Projects with different difficulty levels will be given for 440 and 540. Topics: lexical, syntax and semantic analyses, syntax-directed translation, runtime environment and library support. Written reports.

Com S 541. Programming Languages. (3-1) Cr. 3. F. Prereq: 342 or 440. Survey of the goals and problems of language design. Formal and informal studies of a wide variety of programming language features including type systems. Creative use of functional and declarative programming paradigms.

Com S 548. Fundamental Algorithms in Computational Biology. (Same as BCB 548, Cpr E 548.) (3-0) Cr. 3. S. Prereq: 311 and some knowledge of programming. Introduction, design and analysis of fundamental algorithms and methods for molecular biology. Topics include pairwise sequence alignment, alignment heuristics, biological database and retrieval systems, multiple sequence alignment, phylogenetic trees, physical mapping, genome rearrangements, DNA-chips, fragment assembly, protein folding, and genetic networks.

Com S 549. Advanced Algorithms in Computational Biology. (Same as BCB 549, Cpr E 549.) (3-0) Cr. 3. S. Prereq: 311 and either 228 or 208. Design and analysis of algorithms for applications in computational biology, pairwise and multiple sequence alignments, approximation algorithms, string algorithms including in-depth coverage of suffix trees, semi-numerical string algorithms, algorithms for selected problems in fragment assembly, phylogenetic trees and protein folding. No background in biology is assumed. Also useful as an advanced algorithms course in string processing.

Com S 550. Evolutionary Problems for Computational Biologists. (Same as BCB 550.) (3-0) Cr. 3. F. Prereq: 311 and some knowledge of programming. Discussion and analysis of basic evolutionary principles and the necessary knowledge in computational biology to solve "real world" problems. Topics include character and distance based methods, phylogenetic tree distances, and consensus methods, and approaches to extract the necessary information from sequence-databases to build phylogenetic trees.

Com S 551. Computational Techniques for Genome Assembly and Analysis. (Same as BCB 551.) (3- 0) Cr. 3. F. Prereq: 311 and some knowledge of programming. Huang. Introduction to practical sequence assembly and comparison techniques. Topics include global alignment, local alignment, overlapping alignment, banded alignment, linear-space alignment, word hashing, DNA-protein alignment, DNA-cDNA alignment, comparison of two sets of sequences, construction of contigs, and generation of consensus sequences. Focus on development of sequence assembly and comparison programs.

Com S 552. Principles of Operating Systems. (3-0) Cr. 3. S. Prereq: 352. A comparative study of high-level language facilities for process synchronization and communication. Formal analysis of deadlock, concurrency control and recovery. Protection issues including capability-based systems, access and flow control, encryption, and authentication. Additional topics chosen from distributed operating systems, soft real-time operating systems, and advanced security issues.

Com S 554. Distributed and Network Operating Systems. (Dual-listed with 454, same as Cpr E 554.) (3-1) Cr. 3. Alt. S., offered 2007. Prereq: 311, 352. Laboratory course dealing with practical issues of design and implementation of distributed and network operating systems and distributed computing environments (DCE). The client server paradigm, inter-process communications, layered communication protocols, synchronization and concurrency control, and distributed file systems. Graduate credit requires additional in-depth study of advanced operating systems. Written reports.

Com S 555. Simulation: Algorithms and Implementation. (Dual-listed with 455.) (3-0) Cr. 3. F. Prereq: Com S 311 and 330, Stat 330. Introduction to discrete-event simulation with a focus on computer science applications, including performance evaluation of networks and distributed systems. Overview of algorithms and data structures necessary to implement simulation software. Discrete and continuous stochastic models, random number generation, elementary statistics, simulation of queuing and inventory systems, Monte Carlo simulation, point and interval parameter estimation. Graduate credit requires additional in-depth study of concepts. Oral and written reports.

Com S 556. Analysis Algorithms for Stochastic Models. (3-0) Cr. 3. S. Prereq: Com S 331, Math 307, and Stat 330. Introduction to the use of stochastic models to study complex systems, including network communication and distributed systems. Data structures and algorithms for analyzing discrete-state models expressed in high-level formalisms. State space and reachability graph construction, model checking, Markov chain construction and numerical solution, computation of performance measures, product-form models, approximations, and advanced techniques.

Com S 561. Principles of Database Systems. (3-0) Cr. 3. S. Prereq: 311, 363. Database models. Algebraic, first order, and user-oriented query languages. Database schema design. Physical storage, access methods, and query processing. Transaction management, concurrency control, and crash recovery. Database security. Parallel and distributed databases, and special purpose databases. Data warehousing and data mining.

Com S 562. Implementation of Database Systems. (3-0) Cr. 3. F. Prereq: 461 or 561. Implementation topics and projects are chosen from the following: Storage architecture, buffer management and caching, access methods, design, parsing and compilation of query languages and update operations, application programming interfaces (APIs), user interfaces, query optimization and processing, and transaction management for relational, object-oriented, semistructured (XML), and special purpose database models; client-server architectures, metadata and middleware for database integration, web databases.

Com S 572. Principles of Artificial Intelligence. (Dual-listed with 472.) (3-1) Cr. 3. F. Prereq: 311, 331, Stat 330, Com S 342 or comparable programming experience. Specification, design, implementation, and selected applications of intelligent software agents and multi-agent systems. Computational models of intelligent behavior, including problem solving, knowledge representation, reasoning, planning, decision making, learning, perception, action, communication and interaction. Reactive, deliverative, rational, adaptive, learning and communicative agents. Artificial intelligence programming. Graduate credit requires a research project and a written report. Oral and written reports.

Com S 573. Machine Learning. (3-1) Cr. 3. S. Prereq: 311, 362, Stat 330. Algorithmic models of learning. Design, analysis, implementation and applications of learning algorithms. Learning of concepts, classification rules, functions, relations, grammars, probability distributions, value functions, models, skills, behaviors and programs. Agents that learn from observation, examples, instruction, induction, deduction, reinforcement and interaction. Computational learning theory. Data mining and knowledge discovery using artificial neural networks, support vector machines, decision trees, Bayesian networks, association rules, dimensionality reduction, feature selection and visualization. Learning from heterogeneous, distributed, dynamic data and knowledge sources. Learning in multi- agent systems. Selected applications in automated knowledge acquisition, pattern recognition, program synthesis, bioinformatics and Internet-based information systems. Oral and written reports.

Com S 574. Intelligent Multiagent Systems. (3-0) Cr. 3. S. Prereq: Stat 330, Com S 331, Com S 572 or Com S 573 or Com S 472 or Com S 474. Specification, design, implementation, and applications of multi-agent systems. Intelligent agent architectures; infrastructures, languages and tools for design and implementation of distributed multi- agent systems; Multi-agent organizations, communication, interaction, cooperation, team formation, negotiation, competition, and learning. Selected topics in decision theory, game theory, contract theory, bargaining theory, auction theory, and organizational theory. Selected topics in knowledge representation and ontologies. Agent-based systems and the Semantic Web. Applications in distributed intelligent information networks for information retrieval, information integration, inference, and discovery from heterogeneous, autonomous, distributed, dynamic information sources.

Com S 577. Problem Solving Techniques for Applied Computer Science. (Dual-listed with 477.) (3-0) Cr. 3. F. Prereq: 228, 330 or Cpr E 310, Math 166 and Math 307 (or Math 317), or consent of the instructor. Selected topics in applied mathematics and modern heuristics that have found applications in areas such as geometric modeling, graphics, robotics, vision, human machine interface, speech recognition, computer animation, etc. Polynomial interpolation, roots of polynomials, resultants, solution of linear and nonlinear equations, approximation, data fitting, fast Fourier transform, linear programming, nonlinear optimization, Lagrange multipliers, genetic algorithms, integration of ODEs, curves, curvature, Frenet Formulas, cubic splines, and Bezier curves. Programming components.

Com S 581. Computer Systems Architecture. (Same as Cpr E 581.) See Computer Engineering.

Com S 583. Reconfigurable Computing Systems. (Same as Cpr E 583.) See Computer Engineering.

Com S 586. Computer Network Architectures. (3-0) Cr. 3. F. Prereq: 511, 552 or Cpr E 489. Design and implementation of computer communication networks: layered network architectures, local area networks, data link protocols, distributed routing, transport services, network programming interfaces, network applications, error control, flow/congestion control, interconnection of heterogeneous networks, TCP/IP, ATM networks, multimedia communications, IP and application multicast, overlay networks, network security and web computing.

Com S 587. Principles of Distributed and Network Programming. (3-0) Cr. 3. F. Prereq: 352 or Cpr E 489 or equivalent. Programming paradigms for building modern distributed applications, including multithreaded client-server programming, distributed object frameworks and programming languages. Directory services. Web-based computing. Mobile computing. Peer-to-Peer computing. Network multimedia applications. Reliability and manageability of networked systems, including aspects of distributed system security, verification of concurrent systems, and network management.

Com S 590. Special Topics. Cr. arr. Prereq: Permission of instructor. Offered on a satisfactory-fail grading basis only.

Com S 591. Graduate Orientation Seminar. (1-0) Cr. 1. F. Prereq: Graduate classification. Topics include an introduction to ISU computing facilities, M.S. and Ph.D. degree requirements, career choices, ethics, literature searching, technical presentations, technical writing, ethics in writing, and discussion of research interests and projects by members of the graduate faculty. Offered on a satisfactory-fail grading basis only.

Com S 594. Computational Molecular Biology. (Same as BCB 594, GDCB 594, Math 594.) (3-0) Cr. 3. S. Prereq: BCB 484, BCB 495, Stat 432 or equivalent courses and programming experience (C, C++, or Pearl). State-of-the-art introduction to bioinformatics with emphasis on concepts and principles, combined with hands-on (keyboard) applications. Topics typically include: molecular databases, score-based sequence analysis, amino acid substitution scoring matrices, query search problems, dynamic programming and other methods for pairwise sequence alignment, motif identification, multiple sequence alignment, construction of phylogenetic trees from sequence data, gene structure prediction, protein structure prediction.

Com S 596. Genomic Data Processing. (Same as BCB 596, GDCB 596.) (3-0) Cr. 3. F. Prereq: Some knowledge of programming. Chou. Practical aspects of genomic data processing. Emphasis on projects that carry out major steps in data processing using important bioinformatic tools. Topics include base-calling, raw sequence cleaning and contaminant removal; shotgun assembly procedures and EST clustering methods; genome closure strategies and practices; sequence homology search and function prediction; annotation and submission of GenBank reports; and data collection and dissipation through the Internet.

Courses for Graduate students

Com S 610. Seminar. Cr. arr. Offered on a satisfactory-fail grading basis only.

Com S 611. Advanced Topics in Analysis of Algorithms. (3-0) Cr. 3. Alt. S., offered 2007. Prereq: 511, 531. Advanced algorithm analysis and design techniques. Topics include graph algorithms, algebraic algorithms, number-theoretic algorithms, randomized and parallel algorithms. Intractable problems and NP-completeness. Advanced data structures.

Com S 612. Distributed Algorithms. (3-0) Cr. 3. Alt. S., offered 2006. Prereq: 511 or 531. The theory of distributed computation. Algorithms, lower bounds and impossibility results. Leader Elections, mutual exlusion, consensus and clock synchronization algorithms. Synchronous, asynchronous and partially synchronous distributed systems models. Shared memory and message passing systems. Fault-tolerance and randomization. Broadcast and multicast. Wait-free object simulations. Distributed shared memory.

Com S 625. Issues in Parallel Programming and Performance. (3-0) Cr. 3. Alt. S., offered 2007. Prereq: 511. Parallel solutions of numerical and non-numerical problems, implementation of parallel programs on parallel machines, performance and other computational issues in parallel programming.

Com S 626. Parallel Algorithms for Scientific Applications. (Same as Cpr E 626.) See Computer Engineering.

Com S 631. Computational Complexity. (3-0) Cr. 3. Alt. F., offered 2006. Prereq: 531. Advanced study in the quantitative theory of computation. Time and space complexity of algorithmic problems. The structure of P, NP, PH, PSPACE, and other complexity classes, especially with respect to resource-bounded reducibilities and complete problems. Complexity relative to auxiliary information, including oracle computation and relativized classes, randomized algorithms, advice machines, Boolean circuits. Kolmogorov complexity and randomness.

Com S 633. Randomness in Computation. (3-0) Cr. 3. Alt. F., offered 2005. Prereq: 531. Advanced study of the role of randomness in computation. Randomized algorithms, derandomization, and probabilistic complexity classes. Kolmogorov complexity, algorithmic information theory, and algorithmic randomness. Applications chosen from cryptography, interactive proof systems, computational learning, lower bound arguments, mathematical logic, and the organization of complex systems.

Com S 634. Theory of Games, Knowledge and Uncertainty. (3-0) Cr. 3. Alt. S., offered 2007. Prereq: 330. Fundamentals of Game Theory: individual decision making, strategic and extensive games, mixed strategies, backward induction, Nash and other equilibrium concepts. Discussion of Auctions and Bargaining. Repeated, Bayesian and evolutionary games. Interactive Epistemology: reasoning about knowledge in multiagent environment, properties of knowledge, agreements, and common knowledge. Reasoning about and representing uncertainty, probabilities, and beliefs. Uncertainty in multiagent environments. Aspects and applications of game theory, knowledge, and uncertainty in other areas, especially Artificial Intelligence and Economics, will be discussed.

Com S 641. Semantic Models for Programming Languages. (3-0) Cr. 3. Alt. S., offered 2006. Prereq: 531, 541. Operational and other mathematical models of programming language semantics. Type systems and their soundness. Applications of semantics om areas such as program correctness, language design or translation.

Com S 652. Topics in Distributed Operating Systems. (3-0) Cr. 3. Alt. F., offered 2005. Prereq: 552. Concepts and techniques for network and distributed operating systems: Communications protocols, processes and threads, name and object management, synchronization, consistency and replications for consistent distributed data, fault tolerance, protection and security, distributed file systems, design of reliable software, performance analysis.

Com S 657. Advanced Topics in Computer Graphics. (3-0) Cr. 3. Alt. F. Prereq: 228, IE/ME/Cpr E/ Com S 557. Modern lighting models: Rendering Equation, Spherical Harmonics, Lafortune, Cook- Torrance. Non-polygonal primitives: volumes, points, particles. Textures: filtering, reflections creation. Graphics hardware: pipeline, performance issues, programmability in vertex and fragment path. Per- pixel lighting. Nonphotorealistic rendering. Radiosity; Ray tracing.

Com S 661. Advanced Topics in Database Systems. (3-0) Cr. 3. Alt. F., offered 2006. Prereq: 461 or 561. Advanced topics chosen from the following: database design, data models, query systems, query optimization, incomplete information, logic and databases, multimedia databases; temporal, spatial and belief databases, semistructured data, concurrency control, parallel and distributed databases, information retrieval, data warehouses, wrappers, mediators, and data mining.

Com S 672. Advanced Topics in Computational Models of Learning. (3-0) Cr. 3. Alt. S., offered 2006. Prereq: Com S 572 or 573 or 472 or 474. Selected topics in Computational Learning Theory (PAC learning, Sample complexity, VC Dimension, Occam Learning, Boosting, active learning, Kolomogorov Complexity, Learning under helpful distributions, Mistake Bound Analysis). Selected topics in Bayesian and Information Theoretic Models (ML, MAP, MDL, MML). Advanced statistical methods for machine learning. Selected topics in reinforcement learning.

Com S 673. Advanced Topics in Computational Intelligence. (3-0) Cr. 3. Alt. S., offered 2007. Prereq: Com S 572 or 573 or 472 or 474. Advanced applications of artificial intelligence in bioinformatics, distributed intelligent information networks and the Semantic Web. Selected topics in distributed learning, incremental learning, multi-task learning, multi-strategy learning; Graphical models, multi- relational learning, and causal inference; statistical natural language processing; modeling the internet and the web; automated scientific discovery; neural and cognitive modeling.

Com S 681. Advanced Topics in Computer Architecture. (Same as Cpr E 681.) (3-0) Cr. 3. Alt. S., offered 2007. Prereq: 581. Current topics in computer architecture design and implementation. Advanced pipelining, cache and memory design techniques. Interaction of algorithms with architecture models and implementations. Tradeoffs in architecture models and implementations.

Com S 686. Advanced Topics in High-Speed Networks. (3-0) Cr. 3. Alt. S. Prereq: 586. Advanced topics in IP networks and optical networks. QoS routing and scheduling, multicast, multiprotocol label switching (MPLS), traffic engineering. Optical network architectures, routing and wavelength assignment algorithms, optical multicast, traffic grooming, optical burst switching, lightpath protection/restoration schemes, and IP over WDM.

Com S 699. Research. Cr. arr. Offered on a satisfactory-fail grading basis only. Approval of instructor.