Course Requirements
[Revised as of 06/01/2019]
Sixteen semester courses (64 credits) approved for graduate study are required.
Specific course requirements include six breadth courses. Three courses need to be from three different areas among the following four areas:
- Algorithms
- Systems
- Software
- Theory of Computation
Additionally, one course must be taken from any of the following areas:
- Artificial Intelligence
- Computer Graphics
- Cryptography & Security
- Data Mining & Data Management
Finally, the remaining two classes can be taken from any of the following areas:
- Algorithms
- Artificial Intelligence
- Computer Graphics
- Cryptography & Security
- Data Mining & Data Management
- Systems
- Software
- Theory of Computation
A list of what courses satisfy what areas is available below.
Any remaining courses will provide a reasonable breadth of background in computer science as well as mastery of the basic tools relevant to the research area selected, and may include research-focused courses such as Special Topic (CS591 or CS791) or Directed Study sections (CS 900+).
Students with prior graduate work may be able to transfer course credits. For details, see the GRS Transfer of Credits policy. Similarly, while not transferring credits, students with prior graduate work or experience may be able to request a waiver of a particular breadth requirement that would be redundant, or substitute a different course in lieu of those listed. Please first discuss any waiver or substitution request with your advisor and then follow the process described in the CS PhD handbook.
A minimum grade of B− is required in all courses. The GPA in the six breadth courses must be 3.5 or higher. Official program requirements are what is listed in the GRS Bulletin, should there be any conflict between the content above and the Official GRS Bulletin.
Breadth Area Courses
Algorithms Area (must take at least 1)
- CS 507 Introduction to Optimization
- CS 530 Advanced Algorithms
- CS 531 Advanced Optimization Algorithms
- CS 533 Spectral Methods
Software Area (must take at least 1)
- CS 511 Formal Methods I
- CS 512 Formal Methods II
- CS 516 Software Foundations via Formal Languages
- CS 520 Programming Languages
- CS 525 Compiler Design
Systems Area (must take at least 1)
- CS 551 Streaming and Event-driven Systems
- CS 552 Intro to Operating Systems
- CS 651 Distributed Systems
- CS 654 Embedded Systems Development
- CS 655 Graduate Networks
Theory of Computation Area (must take at least 1)
- CS 535 Complexity
- CS 537 Random Computing
Must take at least one additional course from any of the following areas:
Artificial Intelligence
- CS 505 Introduction to Natural Language Processing
- CS 542 Machine Learning
- CS 585 Image & Video Computing
- CS 640 Artificial Intelligence
Computer Graphics
- CS 581 Computational Fabrication
- CS 582 Geometry Processing
- CS 680 Graduate Graphics
Cryptography & Security
- CS 538 Cryptography
- CS 548 Cryptography 2
- CS 558 Network Security
- CS 568 Applied Cryptography
Data Mining & Data Management
- CS 504 Data Mechanics
- CS 506 Tools for Data Science
- CS 561 Data Systems Architectures
- CS 562 Advanced Databases
- CS 565 Algorithmic Data Mining
- CS 660 Graduate Databases