Computer Science


The Department of Computer Science offers three graduate programs through the Graduate College: an Accelerated Master's Program (AMP) that enables strong computer science undergraduate students to complete computer science Bachelor's and Master's degrees in 5 years; a Master's Program (M.S.) in computer science with course work-only, project, and thesis options; and an interdisciplinary Ph.D. program that offers study in both traditional and cross-disciplinary areas of computing.  The Department also contributes courses to and coordinates the Transdisciplinary Certificate of Graduate Study in Complex Systems.


Bongard, Joshua C.; Associate Professor, Department of Computer Science; PHD, University of Zurich
Dinitz, Jeffrey Howard; Professor, Department of Mathematics and Statistics; PHD, Ohio State University
Dunlop, Mary J.; Assistant Professor, School of Engineering; PHD, California Institute of Technology
Eppstein, Margaret Jean; Associate Professor, Department of Computer Science; PHD, University of Vermont
Hines, Paul D.; Associate Professor, School of Engineering; PHD, Carnegie Mellon University
Lee, Byung S.; Professor, Department of Computer Science; PHD, Stanford University
Li, Dawei ; Assistant Professor, Department of Microbiology and Molecular Genetics; PHD, Shanghai Jiao Tong University
Ling, Alan Chi; Associate Professor, Department of Computer Science; PHD, University of Waterloo
Oughstun, Kurt Edmund; Professor, School of Engineering; PHD, University of Rochester
Pinder, George Francis; Professor, School of Engineering; PHD, University of Illinois Urbana-Champaign
Radermacher, Michael; Professor, Department of Molecular Physiology and Biophysics; PHD, Technical University of Munich
Rizzo, Donna Marie; Professor, School of Engineering; PHD, University of Vermont
Skalka, Christian Edward; Associate Professor, Department of Computer Science; PHD, Johns Hopkins University
Snapp, Robert Raymond; Associate Professor, Department of Computer Science; PHD, University of Texas Austin
Wang, Xiaoyang; Adjunct Professor, Department of Computer Science; PHD, University of Southern California
Wu, Xindong; Professor, Department of Computer Science; PHD, Edinburgh University
Yu, Jun; Professor, Department of Mathematics and Statistics; PHD, University of Washington Seattle
Zia, Asim; Associate Professor, Department of Community Development and Applied Economics; PHD, Georgia Institute of Technology


CS 201. Operating Systems. 0 or 3 Credits.

Supervisory and control software for multiprogrammed computer systems. Processes synchronization, interprocess communication, scheduling, memory management, resource allocation, performance evaluation, object-oriented systems, case studies. Prerequisites: CS 121 and CS 124.

CS 204. Database Systems. 3 Credits.

Techniques for processing very large collections of data. Secondary storage. Database design and management. Query languages and optimization. Database recovery. Prerequisite: CS 124.

CS 205. Software Engineering. 3 Credits.

Treatment of software engineering problems and principles, including documentation, information hiding, and module interface specification syntax and semantics. Requires participation in a team project. Prerequisite: CS 124.

CS 206. Evolutionary Robotics. 3 Credits.

Exploration of the automated design of autonomous machines using evolutionary algorithms. Coursework involves reading of research papers, programming assignments and a final project. Prerequisites: Junior standing and programming experience, or Instructor permission.

CS 222. Computer Architecture. 3 Credits.

Architecture of computing systems. Control unit logic, input/output processors and devices, asynchronous processing, concurrency, parallelism, and memory hierarchies. Prerequisite: CS 121.

CS 224. Algorithm Design & Analysis. 3 Credits.

Comprehensive study of algorithms including greedy algorithms, divide and conquer, dynamic programming, graph algorithms and network flow. Computational intractability. Approximation, local search and randomization. Prerequisite: CS 124. Pre/Co-requisites: Recommended: CS 125; STAT 143, STAT 151, or CS 128.

CS 225. Programming Languages. 3 Credits.

The principles of programming language design and fundamental implementation concepts. Syntax, semantics, and static program analysis for various paradigms. Programming language metatheory, including confluence and type safety. Stack-based implementation and memory management issues. Prerequisites: CS 124, CS 125.

CS 228. Human-Computer Interaction. 3 Credits.

The design, implementation and evaluation of user interfaces for computers and other complex, electronic equipment. Includes a significant project. Pre/co-requisites: Programming experience and Junior standing or Instructor permission.

CS 231. Programming for Bioinformatics. 3 Credits.

Introductory course on computing (including scripting, database, and statistical analysis) for developing bioinformatics applications. Particular emphasis is given to comparative genomics and systems biology scenarios. Prerequisites: STAT 151, STAT 153 or Instructor permission. Cross-listed with: MMG 231.

CS 232. Methods in Bioinformatics. 3 Credits.

This course provides a methodological survey of bioinformatics. Particular emphasis is given to algorithms associated with sequence analysis, comparative genomics, structural biology, and systems biology. Prerequisites: STAT 151, STAT 153, or Instructor permission. Cross-listed with: MMG 232.

CS 243. Theory of Computation. 3 Credits.

Reducibility and decidability, recursion theory, time and space complexity, P, NP, NP-completeness, PSPACE, PSPACE-completeness, L and NL, advanced topics in computability and complexity. Prerequisites: CS 124 and CS 125.

CS 251. Artificial Intelligence. 3 Credits.

Introduction to methods for realizing intelligent behavior in computers. Knowledge representation, planning, and learning. Selected applications such as natural language understanding and vision. Prerequisites: CS 103 or CS 123; Prerequisites: CS 124; CS 128 or STAT 151 or STAT 143. Cross-listed with: CSYS 251.

CS 254. Machine Learning. 3 Credits.

Introduction to machine learning, including supervised and unsupervised learning algorithms, reinforcement learning, and computational learning theory. Prerequisites: CS 128 or STAT 151 or STAT 143; MATH 121; MATH 122 or MATH 124.

CS 256. Neural Computation. 3 Credits.

Introduction to artificial neural networks, their computational capabilities and limitations, and the algorithms used to train them. Statistical capacity, convergence theorems, backpropagation, reinforcement learning, generalization. Prerequisites: MATH 122 or MATH 124 or MATH 271; CS 128 or STAT 143 or STAT 151; CS 110. Cross-listed with: STAT 256, CSYS 256.

CS 260. Parallel Computing. 3 Credits.

Taxonomy of parallel computers, basic concepts for parallel computing, effectiveness and scalability, parallel algorithms for variety of problems, distributed memory and shared memory paradigms. Prerequisite: CS 124.

CS 265. Computer Networks. 3 Credits.

Introduction to the theoretical and pragmatic principles and practices of computer networking. Topics include: local area networks; the Internet; network and world-wide-web application programming. Prerequisites: CS 110; CS 121; STAT 143.

CS 266. Network Security&Cryptography. 3 Credits.

Security and secrecy in a networked environment. Cryptography: public and private key. Authentication: trusted agents, tickets. Electronic mail and digital signatures. Privacy and national security. Prerequisite: Prerequisite: CS 124.

CS 274. Computer Graphics. 3 Credits.

Graphical representation of two- and three-dimensional objects on color raster displays. Line generation, region filling, geometric transformations, hidden line and surface removal, rendering techniques. Prerequisites: CS 104 or CS 124; MATH 122 or MATH 124 or MATH 271 recommended.

CS 275. Mobile Apps & Embedded Devices. 3 Credits.

A projects-based course focused on applications development on wireless and embedded platforms, including iOS, Arduino, and Linux-based devices. Emphasis on C programming and cyber-physical systems software. Prerequisite: CS 124. Pre/Co-requisites: Recommended: CS 148 or CS 204.

CS 287. Data Science I. 3 Credits.

Data harvesting, cleaning, and summarizing. Working with non-traditional, non-numeric data (social network, natural language textual data, etc.). Scientific visualization using static and interactive "infographics." A practical focus on real datasets, and developing good habits for rigorous and reproducible computational science. Prerequisites: CS 020 or CS 021; STAT 141 or STAT 143 or STAT 211. Pre/Co-requisites: Recommended: CS 110; Math 122 or Math 124. Cross-listed with: STAT 287.

CS 294. Undergraduate Research. 1-18 Credits.

Undergraduate student work on individual or small team research projects under the supervision of a faculty member, for which credit is awarded. Offered at department discretion.

CS 295. Special Topic:Computer Science. 1-18 Credits.

See Schedule of Courses for specific titles. Subject will vary from year to year. May be repeated for credit with instructor permission.

CS 302. Modeling Complex Systems. 3 Credits.

Integrative breadth-first introduction to computational methods for modeling complex systems;numerical methods, cellular automata, agent-based computing, game theory, genetic algorithms, artificial neural networks, and complex networks. Pre/co-requisites: Computer programming in any language, calculus. (Linear algebra recommended). Cross-listed with: CSYS 302.

CS 332. Data Mining. 3 Credits.

Analytical and empirical techniques for analysis of large volumes of data. Topics include association analysis, classification, clustering, pattern discovery in sequential data, and Bayesian networks. Prerequisites: CS 128 or STAT 143 or STAT 151.

CS 352. Evolutionary Computation. 3 Credits.

Theory and practice of biologically-inspired search strategies, including genetic algorithms, genetic programming, and evolution strategies. Applications include optimization, parameter estimation, and model identification. Significant project. Students from multiple disciplines encouraged. Pre/co-requisites: Familiarity with programming, probability, and statistics. Cross-listed with: BIOL 352, CSYS 352.

CS 355. Statistical Pattern Recogntn. 3 Credits.

Analysis of algorithms used for feature selection, density estimation, and pattern classification, including Bayes classifiers, maximum likelihood, nearest neighbors, kernels, discriminants, neural networks, and clustering. Prerequisite: STAT 241 or STAT 251 or Instructor permission. Cross-listed with: STAT 355, CSYS 355.

CS 381. Seminar. 1 Credit.

Presentations by students, faculty, and guest speakers on advanced topics in Computer Science. May be repeated up to three times for credit.

CS 391. Master's Thesis Research. 1-18 Credits.

CS 392. Master's Project. 1-6 Credits.

Prerequisite: Department permission.

CS 394. Independent Study. 1-6 Credits.

Independent readings and investigation under the direction of a faculty member. Prerequisite: Instructor permission.

CS 395. Special Topics. 1-18 Credits.

Subject will vary from year to year. May be repeated for credit with Instructor permission.

CS 491. Doctoral Dissertation Research. 1-18 Credits.

Credit as arranged.