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. At least one course must be taken from the following four areas

  • Algorithms (at least one course)
  • Systems (at least one course)
  • Software (at least one course)
  • Theory of Computation (at least one course)

Additionally, at least one course must be taken from any of the following areas:

  • Artificial Intelligence
  • Computer Graphics
  • Cryptography & Security
  • Data Mining & Data Management

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/or Director of Graduate Studies before completing a PhD Course Petition Form.

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 two additional courses from any of the following:

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