Graduate courses are divided into two groups:

  1. The Diversity courses listed below can be used to satisfy the diversity requirements of either the Ph.D. or the Masters 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 Catalogue. One course deserves special mention here: CS 395T is a topics course. Each semester, the faculty offer CS 395T sections on a variety of topics that span their research interests. For examples of recent topics, look at the 395T section of the listing of Class Home Pages. Note that CS 395T is different from CS 395 (Conference Course).

Diversity Courses

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

There are three Diversity areas: Theory, Systems, and Applications, with at least four threads in each area.

Ph.D. students must take 5 diversity courses from the 3 areas. These are to be listed on the Research Qualification form (PDF). The courses taken must fall within the following rules:

  1. Two courses from one area, two courses from a second area, and 1 course from a third area.
  2. Within the areas where 2 courses are taken, they must be from different threads. The threads are numbered below.
  3. It is permitted to take as many diversity courses as you need for your research with the approval of your supervising professor, but only the courses that follow these rules may be counted towards the degree plan.

Masters students must take at least one Diversity course from each of the three areas. Additional Diversity courses may be taken as part of the coursework for the Masters degree.


  1. CS 388G Algorithms: Techniques & Theory; CS 388R* Randomized Algorithms
  2. CS 388T Theory of Computation; CS 388C Combinatorics & Graph Theory; CS 388M* Communication Complexity
  3. CS 388P* Parallel Algorithms; CS 388H Cryptography
  4. CS 388L Introduction to Mathematical Logic; CS 389R Recursion & Induction I; CS 388S Formal Semantics & Verification; CS 389L* Automated Logical Reasoning


  1. CS 380L Advanced Operating Systems; CS 380N Systems Modeling; CS 380J* Operating Systems Implementation
  2. CS 380D Distributed Computing I; CS 386C Dependable Computing Systems; CS 380P* Parallel Systems
  3. CS 386M Communication Networks; CS 396M Advanced Networking Protocols; CS 386W* Wireless Networking
  4. CS 386L Programming Languages; CS 380C Compilers
  5. CS 380S* Theory and Practice of Secure Systems; CS 386S Network Protocol Security
  6. CS 382M Advanced Computer Architecture


  1. 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).
  2. CS 383C Numerical Anaylsis: Linear Algebra; CS 383D Numerical Analysis: Interpolation, Approximation, Quadrature,and Differential Equations
  3. 384G Computer Graphics; CS 384R* Geometric Modeling & Visualization; CS 384P Physical Simulation*
  4. 391L Machine Learning; CS 394N Neural Networks; CS 394R* Reinforcement Learning: Theory and Practice; C S 391D* Data Mining: A Mathematical Perspective
  5. CS 388* Natural Language Processing; CS 393R* Autonomous Robots; *CS 381V Visual Recognition
  6. CS 381K Artificial Intelligence; CS 393C* Agent-Based Electronic Commerce; CS 394F Knowledge Representation & Reasoning
  7. CS 394P Automatic Programming; CS 392F* Automated Software Design (formerly Feature Oriented Programming)
  8. CS 394C Algorithms for Computational Biology (Originally named Computational Biology)

*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.