Graduate courses are divided into two groups:

  1. Diversity courses (listed below) can be used to satisfy the Diversity requirements of either the PhD or the Master's degree. They may also be used as part of a student's Depth or elective program.
  2. Non-diversity courses can be used to fulfill Depth or elective requirements.

A full listing of all of the department's graduate classes can be found in the CS section of the University's Graduate Catalog. One course deserves special mention here: CS 395T is a non-diversity topics course. Each semester, the faculty offer CS 395T sections on a variety of topics that span their research interests. Note that CS 395T is different from CS 395 Conference Course.

Diversity Courses

The courses that are currently approved to fulfill the Diversity requirements of both the Ph.D. and the Masters degree are shown below.

There are three Diversity areas: Theory, Systems, and Applications. PhD and Master's students must take at least one Diversity course from each of the three areas. Additional Diversity courses may also be used to fulfill a student's Depth or elective program.


CS 388C Combinatorics & Graph Theory
CS 388D Data-Driven Algorithm Design
CS 388E* Approximation Algorithms and Complexity
CS 388G Algorithms: Techniques & Theory
CS 388H Cryptography
CS 388J* Optimization (MCSO Only)
CS 388K* Online Learning and Optimization (MCSO Only)
CS 388L Introduction to Mathematical Logic
CS 388M* Communication Complexity
CS 388P* Parallel Algorithms
CS 388R* Randomized Algorithms
CS 388S Formal Semantics & Verification
CS 388T Theory of Computation (Required prerequisite: undergraduate Theory of Computation or a similar complexity theory course)
CS 389L* Automated Logical Reasoning
CS 389R Recursion & Induction I
CS 390S* Sublinear Algorithms
CS 388Q* Quantum Information Science


CS 380C Compilers
CS 380D Distributed Computing I
CS 380J* Operating Systems Implementation
CS 380L Advanced Operating Systems
CS 380N Systems Modeling
CS 380P* Parallel Systems
CS 380S* Theory and Practice of Secure Systems
CS 382M Advanced Computer Architecture
CS 386C Dependable Computing Systems
CS 386L Programming Languages
CS 386M Communication Networks
CS 386P* Android Programming (MCSO Only)
CS 386S Network Protocol Security
CS 386W* Wireless Networking
CS 396M Advanced Networking Protocols
CS 380V* Virtualization (MCSO Only)
CS 380I* Structure and Implementation of Modern Programming Languages (MCSO Only)


CS 381K Artificial Intelligence
CS 381V* Visual Recognition
CS 383C Numerical Analysis: Linear Algebra
CS 383D Numerical Analysis: Interpolation, Approximation, Quadrature, and Differential Equations
CS 384G Computer Graphics
CS 384P* Physical Simulation
CS 384R* Geometric Modeling & Visualization
CS 386D Database Systems (This course takes the place of courses CS 386 and CS 387H which will no longer be taught. Students who have taken these courses may still apply them toward their degree; however they cannot also get credit for CS 386D).
CS 388* Natural Language Processing
CS 391D* Data Mining: A Mathematical Perspective
CS 391L Machine Learning
CS 391R* Robot Learning
CS 392F* Automated Software Design (formerly Feature Oriented Programming)
CS 393C* Agent-Based Electronic Commerce
CS 393R* Autonomous Robots
CS 393P/395T Program Synthesis (beginning Spring 2021)
CS 394C Algorithms for Computational Biology (Originally named Computational Biology)
CS 394F Knowledge Representation & Reasoning
CS 394N Neural Networks
CS 394P Automatic Programming
CS 394R* Reinforcement Learning: Theory and Practice

*These courses were originally taught as topic courses (CS 395T). Students should be aware that they will not receive dual credit for retaking the course under the new course number.