Iowa State University Catalog
Welcome to ISU Catalog Directory Academic Calendar Catalog Home Page
General Information
College Curriculum
Graduate College
Courses and Programs
Faculty

100 | 200 | 300 | 400 | Graduate Courses
Schedule of Classes

Computer Science (Com S)

www.cs.iastate.edu
Leslie L. Miller, Chair of Department
Professors: Fernandez-Baca, Kothari, Leavens, J. Lutz, Miller, Slutzki, Wong
Professors (Emeritus): Brearley, Oldehoeft, Thomas
Associate Professors: Baker, Chaudhuri, Gadia, Honavar, R. Lutz, Prabhu, Strawn, Tyagi
Associate Professors (Adjunct): Kendall
Assistant Professors: Aluru, Chou, Cruz-Neira, Eulenstein, Jia, Lavalle, Lumpe, Miner, Tavanapong
Assistant Professors (Adjunct): Boysen, Mitra
Instructors (Adjunct): Rose

Undergraduate Study

The curriculum in Liberal Arts and Sciences leading to a bachelor of science degree with a major 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. This program has been accredited by the Computing Sciences Accreditation Board, Inc.

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 442;

Sp Cm 212; 14 credits of math and statistics including Math 165, 166 and at least one math course from Math 265, 266, 304, 307, 314, or 317, and at least one stat course from Stat 105, 231, 305, 333, or 341; a minimum of 12 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 201, 201L, 202, 202L, 312, Bot 102, 202, 304, Chem 163-231, Ent 370, Env S 324, FS HN 167, Gen 260, Geol 101, 102, 201, 306, 311, 412, Mat E 207, 211, Mteor 206, 301, Psych 310, Zool 155, 156, 258, 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 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

                104          C-

                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.

A minimum of 44 credits is required for the B.S. degree in computer science. The required courses are: Com S 101, 104, 203, Cpr E 210, Com S 227, 228, 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: 411, 440, 454, 476, Math 421

                Group B: 401, 410, 425, 430, 461, 472, 474

                Group N: 418, Math 471, Math 481, Cpr E 484, 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.

Facilities exist for research in such areas as algorithms, artificial intelligence, computational complexity, computer architecture, bioinformatics, computer networks, database systems, formal methods, machine learning and neural networks, multimedia, 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, include coursework, demonstrated proficiency in three 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, 401, 411, 425, 426, 430, 440, 454, 461, 471, 472, 474, 476, 481, 484.

Courses Primarily for Undergraduate Students

Com S 101. Orientation
(1-0) Cr. R. 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, e-mail, Internet usage, HTML and other software. Beginning programming in Visual Basic, and animation scripting. Topics from computer history, programming languages, algorithm development, and societal impact. No prior computer experience necessary. This course is for computer science majors.

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 basics of good programming techniques and style through extensive practice in top-down design, writing, running, and debugging small programs. Procedural abstraction. Use of abstract data types. 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. F.S. Prereq: 207, credit or enrollment in Math 151, 160, or 165. An introduction to data structures and algorithm analysis. Recursion. List and file processing. Dynamic data structures. Data abstraction and implementation. Emphasis on design, writing, documenting and testing medium-sized programs. This course is designed for nonmajors. Credit may not be applied toward the major.

Com S 227. Introduction to Object-oriented Programming
(3-1) Cr. 3. F.S. Prereq: 104 or 107 or prior programming experience, credit or enrollment in Math 165. 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, Math 165, credit or enrollment in 104 and Math 166. 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, including stacks, queues, trees, searching, sorting, graphs and file processing. Analysis of algorithms. Emphasis on object-oriented design, writing and documenting medium-sized programs. This course is designed for majors.

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, 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, 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. Nonmajor graduate credit.

Com S 321. Introduction to Computer Architecture and Machine-Level Programming
(3-1) Cr. 3. F.S. Prereq: 228, Cpr E 210 and Engl 104. Introduction to computer architecture and organization with emphasis on instruction sets, memory-hierarchy design, and performance. Machine level programming including assembly language. Input/output and interrupts. 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. Object-oriented requirements analysis and systems design. Design notations such as the United 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. 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 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. Computer-Based Information Systems
(2-2) Cr. 3. F. Prereq: Engl 105, Sp Cm 212, an additional 9 credits in Com S at the 200 level or above and either 362 or 363. Systems concepts and implementations for supporting production-oriented information systems; data and terminal access methods; operating systems implementations; data base management systems implementations; data dictionary considerations; data communication considerations; lab experiments and implementations. Oral and written reports. Nonmajor graduate credit.

Com S 410. Research Projects
(3-0) Cr. 3. Prereq: Engl 105, Sp Cm 212, 21 credits in Com S, and permission of instructor. Students enrolling in this course will work individually or in a small group with a faculty member on mutually agreed-upon projects and research. Oral and written reports. Intended primarily for students interested in graduate school or with a strong interest in corporate research.

Com S 411. Specification and Design in Software Engineering
(3-1) Cr. 3. Alt. F., offered 2001. Prereq: 311 or Cpr E 305, Engl 105, Sp Cm 212. Principles and techniques for methodical construction of quality software. Software requirements specification; programming paradigms; module specification techniques; testing and validation procedures; proof of program correctness. Emphasis on team projects. Written reports. Nonmajor graduate credit.

Com S 418. Introduction to Computational Geometry (Dual-listed with 518.)
(3-0) Cr. 3. Alt. F., offered 2002. Prereq: 311. 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.

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. Alt. S., offered 2002. Prereq: 311, 330, Engl 105, Sp Cm 212. Introduction to high performance computing using different computing platforms including parallel computers and workstation clusters. Discussion of performance, visualization, 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 and case studies. Oral and written reports. Nonmajor graduate credit.

Com S 426. Practical Introduction to Parallel 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. Alt. F., offered 2002. Prereq: 311, 361, 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 targeting the Java Virtual Machine. Projects with different difficulty levels will be given for 440 and 540. Topics: lexical, syntax and semantic analyses, syntax-director 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 2003. 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-processes 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 461. Database Systems Concepts and Internals
(3-1) Cr. 3. F. Prereq: 311, Engl 105, Sp Cm 212 and either 362 or 363. Introduction to database concepts. Data models. Algebraic, first order calculus based, 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, Engl 105, Sp Cm 212, Com S 330 or Cpr E 310, Com S 342, or comparable programming experience. Specification, design, implementation, and selected applications of intelligent software agents and multi-agent systems. Algorithmic models of problem solving, knowledge representation, reasoning, planning, decision making, learning, perception, action, communication and interaction. Reactive, deliberative, rational, adaptive, learning and communication and interaction. 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: Engl 105, Sp Cm 212, Math 165, 330 or Cpr E 310 and Com S 228. Introduction to theory and applications of neural computation with emphasis on machine learning, data mining and knowledge discovery. Computational models of neurons and networks of neurons. Neural associative memories, pattern classifiers, function approximators, and learning algorithms. Bayesian learning, prototype based learning, decision-tree learning, and related techniques. Reinforcement learning, stochastic search, and genetic algorithms. Applications in Artificial Intelligence, intelligent agents, cognitive and neural modeling, computational biology, data mining and knowledge discovery. Hands-on experience is emphasized through the use of simulation tools and laboratory projects. Oral and written reports. Nonmajor graduate credit.

Com S 476. Motion Strategy: Algorithms and Applications (Dual-listed with 576.)
(3-1) Cr. 3. S. Prereq: Engl 105, Sp Cm 212, Com S 311 or M E 519, or consent of instructor. Recent techniques for developing algorithms that automatically generate continuous motions while satisfying geometric constraints. Applications in areas such as robotics and graphical animation. Basic path planning. Kinematics, configuration space, and topological issues. Collision detection. Randomized planning. Nonholonomic systems. Optimal decisions and motion strategies. Coordination of Multiple Bodies. Representing and overcoming uncertainties. Visibility-based motion strategies. Implementation of software that computes motion strategies. Written reports. Nonmajor graduate credit.

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

Com S 484. Advanced Digital Systems Design (Same as Cpr E 484.)
See Computer Engineering. Nonmajor graduate credit.

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

Com S 495. Seminar
Cr. arr. F.S. Prereq: Permission of instructor. Offered on a satisfactory-fail grading basis only.

Courses Primarily for Graduate Students, Open to Qualified Undergraduate Students

Com S 502. Complex Adaptive Systems Seminar (Same as CAS 502, E E 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, E E 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 Ordinary Differential Equations (Same as Math 507.)
See Mathematics.

Com S 511. Design and Analysis of Algorithms
(3-0) Cr. 3. F. Prereq: 311, 330. 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 topics 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 518. Introduction to Computational Geometry (Dual-listed with 418.)
Cr. 3. Alt. F., offered 2002. 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 524. Computer System Architecture
(3-0) Cr. 3. F. Prereq: 352, or Cpr E 305. Fundamentals of computer design, performance and cost, instruction set design, basic processor implementation techniques, pipelining, memory design, caches, I/O systems, multiprocessor systems, interconnection networks.

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 Algorithm 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. Finite-state and pushdown computation.

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

Com S 541. Programming Languages I
(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 array of programming language features including type systems, naming, state, and control. Creative use of functional, object-oriented and declarative, concurrent, and other programming paradigms.

Com S 542. Programming Languages II
(3-0) Cr. 3. Alt. F., offered 2001. Prereq: 440. Compilation theory and techniques, emphasis on high-level software tools to facilitate compiler construction. Lexical analysis, parsing, attribute grammars, code generation and optimization for traditional and nontraditional languages and architectures.

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 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, and system performance. Protection issues including capability-based systems, access and flow control, encryption, and authentication.

Com S 554. Distributed and Network Operating Systems (Dual-listed with 454, same as Cpr E 554.)
(3-1) Cr. 3. Alt. S., offered 2003. 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-processes 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 561. Principles of Database Systems
(3-0) Cr. 3. S. Prereq: 311, 363. Introduction to database system concepts. Database design. Data models. Algebraic, first order calculus based, and user oriented query languages. Data storage and access methods. Query processing and optimization. Transaction management, concurrency control, and crash recovery. Database security. Parallel and distributed databases. Special purpose databases. Data warehousing and data mining.

Com S 572. Principles of Artificial Intelligence (Dual-listed with 472.)
(3-1) Cr. 3. F. Prereq: 311, 330 or Cpr E 310, Com S 342 or 362 or comparable programming experience. Specification, design, implementation, and selected applications of intelligent software agents and multi-agent systems. Algorithmic models of 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. Alt. S., offered 2003. Prereq: 311, 362 or 363. Algorithmic models of learning. Design, analysis, implementation and applications of learning algorithms. Learning of concepts, classification rules, functions, relations, grammars, 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, decision trees, Bayesian learning, association rules, genetic algorithms, 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 sentences, bioinformatics and Internet-based information systems.

Com S 576. Motion Strategy: Algorithms and Applications (Dual-listed with 476.)
(3-1) Cr. 3. Alt. S., offered 2002. Prereq: Engl 105, Sp Cm 212, Com S 311 or M E 519, or consent of instructor. Recent techniques for developing algorithms that automatically generate continuous motions while satisfying geometric constraints. Applications in areas such as robotics and graphical animation. Basic path planning. Kinematics, configuration space, and topological issues. Collision detection. Randomized planning. Nonholonomic systems. Optimal decisions and motion strategies. Coordination of multiple bodies. Representing and overcoming uncertainties. Visibility-based motion strategies. Implementation of software that computes motion strategies. Written reports.

Com S 586. Computer Network Architectures
(3-0) Cr. 3. F. Prereq: 511, 552 or Cpr E 489. Design and development of advanced computer communication networks: distributed and failsafe routing in large and dynamic networks, gateways and interconnection of heterogeneous networks, flow control and congestion avoidance techniques, network architectures, communication protocol standards, formal specification and verification of protocols, implementation and conformance testing of protocol standards, network security and web computing.

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. Required by the M.S. degree and is taken during the first semester of a normal M.S. program. Offered on a satisfactory-fail grading basis only.

Com S 594. Computational Molecular Biology (Same as Gen 594.)
See Genetics.

Com S 596. Genomic Data Processing (Same as Gen 596.)
See Zoology and Genetics.

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 2003. Prereq: 511, 531. Advanced algorithm analysis and design techniques. Graph algorithms, algebraic algorithms, NP-completeness, probabilistic and parallel algorithms, intractable problems.

Com S 612. Parallel and Distributed Algorithms
(3-0) Cr. 3. Alt. S., offered 2002. Prereq: 511 or 531. An advanced course in the theory of parallel and distributed computation. Models of computation, Algorithm paradigms and analysis, Lower bounds and impossibility results. Parallel sorting, graph, geometric, algebraic and number-theoretic algorithms. The parallel computation Thesis. P-complete problems and the class NC. Synchronous, asynchronous, partially timed distributed systems. Consensus, mutual exclusion, and resource allocation. Wait-free register implementations. Shared memory and network models. Fault-tolerance. Randomized computation.

Com S 624. Advanced Topics in Computer Architecture
(3-0) Cr. 3. Alt. S., offered 2002. Prereq: 524. 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 625. Issues in Parallel Programming and Performance
(3-0) Cr. 3. Alt. S., offered 2003. Prereq: 511, 524. 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 631. Computational Complexity
(3-0) Cr. 3. Alt. F., offered 2002. 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 computations and relativized classes, randomized algorithms, advice machines and Boolean circuits. Kolmogorov complexity and randomness.

Com S 632. Circuit Complexity and Parallel Complexity
(3-0) Cr. 3. Alt. S., offered 2003. Prereq: 531. An advanced course in the complexity of Boolean functions and parallel computation. General circuits, bounded-depth circuits, threshold circuits and monotone circuits. Parallel complexity, including uniform circuits, alternating Turing machines and parallel RAMs. Additional topics chosen from communication and sorting networks, communication complexity, VLSI complexity, cellular automata, neural networks and general purpose parallel architectures.

Com S 633. Randomness in Computation
(3-0) Cr. 3. Alt. S., offered 2002. Prereq: 531. Advanced study of the role of randomness in computation. Randomized algorithms, random oracles, and probabilistic complexity classes. One-way functions and pseudorandom generators. 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 641. Semantic Models for Programming Languages
(3-0) Cr. 3. Alt. S., offered 2002. Prereq: 531, 541. Operational and other mathematical models of programming language semantics. Type systems and their soundness. Application of semantics to program correctness, language design and translation.

Com S 652. Topics in Distributed Operating Systems
(3-0) Cr. 3. Alt. F., offered 2001. Prereq: 552. Concepts and techniques for network operating systems: high-level languages and communication protocols, name and object management, concurrency control for consistent distributed data, design of reliable software, protection, performance analysis.

Com S 661. Advanced Topics in Database Systems
(3-0) Cr. 3. Alt. F., offered 2002. 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. Computational Models of Learning
(3-0) Cr. 3. Alt. S., offered 2002. Prereq: 572 or 472 or 474. Advanced study of artificial intelligence, neural, statistical, syntactic, evolutionary models and algorithms for machine learning. Inductive learning, classification, grammar induction, function approximation, program induction, inductive logic programming. Computational learning theory (PAC, maximum likelihood, minimum description length and related frameworks). Deductive learning, reinforcement learning, discovery and data mining. Selected applications.

Com S 673. Advanced Topics in Artificial Intelligence and Cognitive Modeling
(3-0) Cr. 3. Alt. S., offered 2003. Prereq: 572 or 472 or 474. Advanced study of selected topics from among the following: distributed intelligent information networks, intelligent systems in computational biology and bioinformatics, intelligent agents in multi-agent systems, neural and evolutionary computation.

Com S 699. Research
Offered on a satisfactory-fail grading basis only.

| Welcome to ISU | Catalog Directory | Academic Calendar | Home |
| General Information | College Curriculum | Graduate College |
| Courses and Programs | Faculty |