100-200 | 300
| 400 | Graduate Courses
Computer Science
www.cs.iastate.edu
Carl K. Chang, Chair of Department
Professors: Bergman, C. Chang, Fernandez-Baca, Honavar, Kothari, Leavens,
J. Lutz, Maddux, Miller, Slutzki, Wong
Professors (Emeritus): Brearley, Oldehoeft, Stewart, Thomas
Associate Professors: Aluru, J. M. Chang, Chaudhuri, Cruz-Neira, Gadia,
Huang, R. Lutz, Prabhu, Tyagi
Associate Professors (Adjunct): Kendall
Assistant Professors: Aduri, Chou, Eulenstein, Jia, Lumpe, Margaritis,
Miner, Ruan, Tavanapong, Tian
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 343; Sp Cm 212; 14 credits
of math and statistics including Math 165, Math 166, Stat 330, and
at least one math course from Math 265, 266, 304, 307, 314, or 317;
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 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 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
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: 440, 454, 476
Group B: 401, 425, 430, 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.
Com S 591 is required and it is taken during the first semester of
a normal Graduate program.
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, 381, 401, 411, 425, 426, 430, 440, 454, 455, 461,
471, 472, 474, 476, 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. This course is for computer science pre-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. 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: 228, 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 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. 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. Computer-Based Information
Systems. (2-2) Cr. 3. F. Prereq: Engl
105, Sp Cm 212, an additional 9 Com S credits 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; database management
systems implementations; data dictionary considerations; data communication
considerations, lab experiments and implementations. Oral and written
reports. Nonmajor graduate credit.
Com S 418. Introduction to Computational
Geometry. (Dual-listed with 518.) (3-0)
Cr. 3. Alt. S., offered 2005. 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 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. 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 2005. 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 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, 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.
(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 2005. 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. Finite-state and pushdown 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
array of programming language features including type systems, naming,
state, and control. Creative use of functional and declarative programming
paradigms.
Com S 548. Fundamental Algorithms in
Computational Biology. (Same as BCB 548,
Gen 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,
Gen 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, 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 2005. 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 311and 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, 331 , 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.
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,
agent 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. Agent based distributed computing. Agent-oriented software
engineering. Applications in distributed intelligent information networks
for information retrieval, inference, and discovery from heterogeneous,
autonomous, distributed, dynamic information sources.
Com S 576. Motion Strategy: Algorithms
and Applications. (Dual-listed with 476.)
(3-1) Cr. 3. F. 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 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 583. Reconfigurable Computing
Systems. (Same as Cpr E 583.) See Computer
Engineering.
Com S 585. Advanced Computer Architecture.
(Same as Cpr E 585.) 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, 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. Web-based computing. Directory services. Mobile 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, Gen 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, Gen 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
2005. Prereq: 511, 531. Advanced algorithm analysis and design
techniques. Graph algorithms, algebraic algorithms, NP-completeness,
probabilistic and parallel algorithms, intractable problems.
Com S 612. Distributed Algorithms.
(3-0) Cr. 3. Alt. S., offered 2004. Prereq: 511 or 531. An
advanced course in the theory of distributed computation. Synchronous,
asynchronous and partially synchronous distributed systems. Consensus,
mutual exclusion and clock synchronization. Broadcast and multicast.
Shared memory and message passing systems. Wait-free object simulations.
Distributed shared memory, fault-tolerance and randomization.
Com S 624. Advanced Topics in Computer
Architecture. (3-0) Cr. 3. Alt. S., offered
2004. 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
2005. Prereq: 511, Cpr E 585. 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 2004. 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 2003. 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
2005. 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
2004. 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 2003.
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 661. Advanced Topics in Database
Systems. (3-0) Cr. 3. Alt. F., offered 2004.
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 2004. Prereq: Stat 330, Com S 331,
Com S 572 or Com S 573 or Com S 472 or Com S 474. Algorithmic
models of learning. Computational learning theory, PAC learning, Bayesian
Learning, Minimum description length, Information theoretic and related
frameworks. Selected topics in deductive learning, inductive learning,
reinforcement learning, active learning, distributed learning, incremental
learning, multi-task learning, multi-strategy learning, causal inference,
grammatical inference, learning with structured representations and
automated scientific discovery. Selected applications.
Com S 673. Advanced Topics in Artificial
Intelligence and Cognitive Modeling. (3-0)
Cr. 3. Alt. S., offered 2005. Prereq: Stat 330, Com S 331, Com
S 572 or Com S 573 or Com S 472 or Com S 474. Advanced study of
selected topics from among the following: knowledge representation
and inference including theoretical and philosophical foundations,
computational approaches to representation of inference using, and
reasoning about knowledge, beliefs, goals, actions, and behaviors.
Intelligent agents and Multi-agent systems including agent architectures,
agent infrastructures, languages and tools for design and implementation
of distributed multi-agent systems, multi-agent learning, organizations,
communication, interaction, cooperation, negotiation. Distributed
intelligent information networks for information retrieval, inference,
and discovery from heterogeneous, autonomous, distributed, dynamic
information sources with emphasis on applications in bioinformatics
and information assurance.
Com S 699. Research.
Cr. arr. Offered on a satisfactory-fail grading basis only. Approval
of instructor.
|
|
| |
|
|
|