CS PhD Course Guidelines

The following program guidelines (a.k.a model pogram) serve as a starting point for a discussion with the faculty about areas of interest.  This description of the Computer Science PhD course guidelines augments the school-wide PhD course requirements.  Students should make themselves familiar with both.

Course Guidelines for Ph.D. Students in Computer Science

We expect students to obtain broad knowledge of computer science by taking graduate level courses in a variety of sub-areas in computer science, such as systems, networking, databases, algorithms, complexity, hardware, human-computer interaction, graphics, or programming languages.

Within our school, CS courses are roughly organized according to sub-area by their middle digit, so we expect students to take courses in a minimum of three distinct sub-areas, one of which should be theory (denoted by the middle digit of 2, or CS 231). Theory is specifically required as we expect all students to obtain some background in the mathematical foundations that underlie computer science. The intention is not only to give breadth to students, but to ensure cross-fertilization across different sub-disciplines in Computer Science.

Just as we expect all students obtaining a Ph.D. to have experience with the theoretical foundations of computer science, we expect all students to have some knowledge of how to build large software or hardware systems, on the order of thousands of lines of code, or the equivalent complexity in hardware. That experience may be evidenced by coursework or by a project submitted to the CHD for examination. In almost all cases a course numbered CS 26x or CS 24x will satisfy the requirement (exceptions will be noted in the course description on my.harvard). Students may also petition to use CS 161 for this requirement.  For projects in other courses, research projects, or projects done in internships the student is expected to write a note explaining the project, include a link to any relevant artifacts or outcomes, describe the student's individual contribution, and where appropriate obtain a note from their advisor, their class instructor, or their supervisors confirming their contributions.  The project must include learning about systems concepts, and not just writing many lines of code.  Students hoping to invoke the non-CS24x/26x/161 option must consult with Prof. MickensProf, Kung, or Prof. Idreos well in advance of submitting their Program Plan to the CHD.  

Computer science is an applied science, with connections to many fields. Learning about and connecting computer science to other fields is a key part of an advanced education in computer science. These connections may introduce relevant background, or they may provide an outlet for developing new applications.

For example, mathematics courses may be appropriate for someone working in theory, linguistics courses may be appropriate for someone working in computational linguistics, economics courses may be appropriate for those working in algorithmic economics, electrical engineering courses may be appropriate for those working in circuit design, and design courses may be appropriate for someone working in user interfaces.


The Graduate School of Arts & Sciences (GSAS) requires all Ph.D. students to complete 16 half-courses (“courses”, i.e., for 4 units of credit) to complete their degree. Of those 16 courses, a Ph.D. in Computer Science requires 10 letter-graded courses. (The remaining 6 courses are often 300-level research courses or other undergraduate or graduate coursework beyond the 10 required courses.)

The requirements for the 10 letter-graded courses are as follows:

  • 8 of the 10 courses must be disciplinary, and at least 7 of those must be technical courses drawn from the Harvard John A. Paulson School of Engineering and Applied Sciences, FAS or MIT.
    • Of the 7 technical courses, at least 3 must be 200-level Computer Science courses, with 3 different middle digits (from the set 2,3,4,5,6,7,8), and with one of these three courses either having a middle digit of 2 or being CS 231 (i.e., a “theory” course).  Note that CS courses with a middle digit of 0 are valid technical courses, but do not contribute to the breadth requirement.
    • At least 5 of the 8 disciplinary courses must be SEAS or SEAS-equivalent 200-level courses. A “SEAS equivalent” course is a course taught by a SEAS faculty member in another FAS department. 
    • For any MIT course taken, the student must provide justification why the MIT course is necessary (i.e. SEAS does not offer the topic, the SEAS course has not been offered in recent years, etc.). MIT courses do not count as part of the 5 200-level SEAS/SEAS-equivalent courses. 
  • 2 of the 10 courses must constitute an external minor (referred to as "breadth" courses in the SEAS “Policies of the Committee on Higher Degrees [CHD]”) in an area outside of computer science. These courses should be clearly related; generally, this will mean the two courses are in the same discipline, although this is not mandatory. These courses must be distinct from the 8 disciplinary courses referenced above.
  • Students must demonstrate practical competence by building a large software or hardware system during the course of their graduate studies. This requirement will generally be met through a class project, but it can also be met through work done in the course of a summer internship, or in the course of research.
  • Ordinarily up to 2 of the 10 courses can be SEAS/FAS 100-level courses with the CHD’s approval. Up to 1 SEAS/FAS 100-level course can be counted toward the 8 disciplinary courses. Up to 1 SEAS/FAS 100-level course can be counted toward the 2 external minor courses. 
    • In particular, for Computer Science graduate degrees, Applied Computation courses may be counted as 100-level courses, not 200-level courses.
  • Up to 2 of the 10 courses can be 299r courses, but only 1 of the up to 2 allowed 299r courses can count toward the 8 disciplinary courses. 299r courses do not count toward the 5 200-level SEAS/SEAS-equivalent courses. If two 299r’s are taken, they can be with the same faculty but the topics must be sufficiently different.
  • A maximum of 3 graduate-level transfer classes are allowed to count towards the 10 course requirement.
  • All CS Ph.D. program plans must adhere to the SEAS-wide Ph.D. requirements, which are stated in the SEAS Policies of the Committee on Higher Degrees (CHD). These SEAS-wide requirements are included in the items listed above, though students are encouraged to read the CHD document if there are questions, as the CHD document provides further explanation/detail on several of the items above.
  • All program plans must be approved by the CHD. Exceptions to any of these requirements require a detailed written explanation of the reasoning for the exception from the student and the student’s research advisor. Exceptions can only be approved by the CHD, and generally exceptions will only be given for unusual circumstances specific to the student’s research program.

Requirement Notes

  • Courses below the 100-level are not suitable for graduate credit.
  • For students who were required to take it, CS 2091/2092 (formerly CS 290a/b or 290hfa/hfb may be included as one of the 10 courses but it does not count toward the 200-level CS or SEAS/SEAS-equivalent course requirements nor toward the SM en route to the PhD.

Your program plan must always comply with both our school's General Requirements, in addition to complying with the specific requirements for Computer Science. All program plans must be approved by the Committee on Higher Degrees [CHD]. Exceptions to the requirements can only be approved by the CHD, and generally will only be given for unusual circumstances specific to the student’s research program