Requirements for the Ph.D. in Computer Science at Cornell

The Graduate Field of Computer Science seeks to produce well-rounded researchers who have demonstrated both breadth in computer science and depth in specific areas of concentration. Although the program is designed to be flexible, students in the CS Ph.D. program must complete several requirements imposed both by the Field and by the Cornell Graduate School:

Field Requirements

  • competency requirement
  • breadth requirement
  • project requirement
  • teaching requirement

Graduate School Requirements

  • residency
  • special committee
  • minor requirement
  • A exam
  • B exam

Each of these requirements is described in some detail below, followed by a FAQ that answers some of the most common student questions. Because no document can hope to cover all the nuances, students who have questions or concerns should consult their advisor and the Director of Graduate Studies (DGS).

The Field requirements were most recently updated in Fall 2009. Students matriculating in Spring 2009 or later must fulfill the new requirements.

Students who matriculated into the Ph.D. program earlier may choose to fulfill either the new requirements or the previous requirements.

Field Requirements

The Competency Requirement

The Field believes that certain areas are so fundamental to Computer Science that all students should be competent in them. Ph.D. candidates are expected to demonstrate competency at the high undergraduate level in four areas of computer science: Artificial Intelligence, Programming Languages, Systems, and Theory. This requirement can be discharged in any one of two ways:

  1. by taking a course for grade credit (acceptable courses are listed below, subject to change);
  2. by taking the final exam in one of these courses, if permitted by the instructor

Each area is required to offer the student at least one of option 2 or 3.  Whichever method is chosen, the requirement must be fulfilled with acceptable performance, as judged by the Field. For option 1,acceptable generally means with a grade of B+ or higher for graduate courses, A- or higher for undergraduate courses.

The acceptable courses are:

  • Artificial Intelligence: CS 4700 (suggest exam.  Do not take for credit without permission of DGS)
  • Programming Languages: CS 4110/5110 (suggest exam), CS 4120/5120, or CS 6110
  • Systems: CS 4410 (suggest exam), CS 6410
  • Theory: CS 4820 (suggest exam) or CS 6820

This requirement must be fulfilled by the time of the A exam.

The Breadth Requirement

Ph.D. students must take at least five 5000/6000-level Computer Science courses for grade credit.  Note that only certain 5000 level courses count. These courses must cover at least four different areas and all three research styles. The requirement is intended to expose students both to the research problems and techniques associated with different research areas, and also to the different value systems of various computer science research styles that differ in how they evaluate and validate research results.

Courses taken to satisfy the competency requirement can be used to count towards the breadth requirement. Courses at the 7000 level do not count, nor do courses from other fields (however, see Exceptions below).

The areas and relevant courses are as follows:

  • Algorithms and theory of computation: 58xx, and 68xx.
  • Artificial intelligence, including robotics, computer vision, natural language processing, information organization and retrieval, and machine learning: 5486, 5670, 5785, 5740, 5780, 5724, 5786, 6360, 67xx except 676x.
  • Systems, including concurrency, parallel computing, networks, distributed computing, and data management: 5300, 5412, 5414, 5430, 5450, 5422, 5454, 64xx, 6320, and 6322.
  • Programming languages and methodology, including applied logic, automated reasoning, and compilers: 5120, 6110, 6118, 6120, and 6860.
  • Scientific computing and applications, including graphics and computational biology: 5220, 5786, 6210, 6220, 6620, 6630, 6360, 6640, 6650, 6670, and 6758.

The research styles and relevant courses are the following:

  • Theoretical. The theoretical research style is characterized by constructing formal models of computation that are validated primarily by mathematical proof. Courses covering this style are: 5486, 58xx, 6110, 6113, 6118, 6764, 6766, and 68xx.
  • Systems. The systems research style focuses on how to improve computing platforms by making them faster, more reliable, more secure, etc. Validation is primarily empirical or experiential. Courses covering this style are: 5120, 5220, 5300, 5412, 5414, 5430, 5450, 5422, 5454, 6320, 6322, 641x, 6431, and 6751.
  • Applied. The applied research style develops new methods for using computers to solve problems of interest. Validation is achieved primarily by demonstrating empirically that these methods are effective for the problem. Courses covering this style are: 5540, 5625, 5643, 5670, 5724, 5740, 5780, 5785, 5786, 6210, 6220, 6360, 6620, 6630, 6640, 6650, 6670, 67xx except 676x & 6783.

The following table summarizing the breadth requirements may be helpful, though the lists above are definitive. Students must take five 5000/6000-level courses, covering four rows of this table and all three columns.

  Research Styles
Theoretical Systems Applied
Areas Algorithms/Theory 58xx, 68xx    
AI 5486, 676x, 6783 6751 5540, 5670, 5724, 5740, 5780, 5785, 5786, 6360, 67xx\{676x, 6783}
Systems   5300, 5412, 5414, 5430, 5450, 5422, 5454, 632x, 641x, 6431  
PL 611x 5120  
Sci. Comp. and Apps   5220 5625, 5643, 62xx, 65xx, 66xx

As with the competency requirement, the breadth requirement must be fulfilled with acceptable performance, as judged by the Field. A grade of B or better is generally acceptable. Students must take at least two courses each semester in their first year or two at Cornell at the 6000+ level, making the breadth requirement easy to fulfill. Exceptions can only be made upon request from the research advisor and after approval from the DGS during the first week of classes.

The list of courses that satisfy the area and research style requirements of the breadth requirement are subject to change as faculty develops new courses.

The Project Requirement

Ph.D. students are required to satisfy the project requirement by writing a significant piece of software. One way to satisfy the project requirement is by taking a course with a significant coding component and having the instructor for the course certify that the project satisfied the project requirement. The student is typically expected to get a grade of B- or better in the course. The project requirement can also be satisfied by projects outside of classes, for example, as part of independent research, your thesis research, or as part of a summer job. In these cases, the chair of your special committee needs to certify that you satisfied the project requirement.

The Teaching Requirement

Ph.D. students must serve as a teaching assistant for at least two semesters or teach a course for at least one semester. Contact with students is valuable both as preparation for a possible academic career and for the experience in communicating ideas to groups, which is important in any setting, academic or otherwise.


We recognize that the Field requirements as stated above may not be universally appropriate, especially in nontraditional areas such as computational biology that may require significant coursework outside of computer science. In such exceptional cases, students are encouraged to formulate an alternative course of study in consultation with the special committee and to present a proposal to the Field for approval.

Graduate School Requirements


As a Ph.D. student, you must be in residence for at least six semesters, or four if you already hold a Master's degree at the time of enrollment. The advisor or DGS awards one residence unit after the satisfactory completion of each semester of full-time study. Fractional units may be awarded for unsatisfactory progress.

The Special Committee

Before the start of your fourth semester, you must form a special committee. The special committee consists of a chair and two or more minor members.

When you specify the members of your committee, you must specify the areas of concentration they represent.  These must be areas officially recognized by the Graduate School associated with the committee member's field.  The Field of Computer Science has six official areas of concentration, listed here along with their associated subareas:


  • operating systems
  • fault tolerance
  • distributed systems
  • database systems
  • digital libraries
  • machine architecture
  • networks
  • parallel computing
  • security

Theory of Computation

  • algorithms
  • complexity theory
  • cryptography

Artificial Intelligence

  • robotics
  • human-computer interaction
  • information retrieval
  • natural language processing
  • computer vision
  • machine learning
  • knowledge representation and reasoning

Programming Languages and Logics

  • programming methodology
  • programming environments
  • program logic and verification
  • automated reasoning
  • compilers
  • type theory and program analysis
  • programming language design

Scientific Computing and Applications

  • computer graphics
  • computational biology and bioinformatics
  • scientific computing


Computer Science

The chair of your special committee represents your major area of concentration and is normally your thesis advisor.  The chair can be any member of the Field of Computer Science.  The Computer Science area is only for graduate students in other fields who wish to minor in Computer Science.  It may not be specified as either a major or minor area of concentration for Ph.D. students in CS.

The two minor members of your special committee represent your minor subjects (see The Minor Requirement below).

While it suffices to have only three people on your special committee, there are many advantages to having more. Your committee members can often provide useful advice. Being on your committee also means they are more likely to know your work better, which helps if you want them to write letters of reference for you. Note that only three special committee members need to be from Cornell. The rest can be from other institutions or from industry.

The Minor Requirement

The minor requirement is a Graduate School requirement, not a CS Field requirement. All Ph.D. students at Cornell must have two minors. For Ph.D. students in Computer Science, the Field requires one of these to be external to Computer Science and one to be internal.

The external minor must be in a field other than CS. The minor requirements are up to the minor field. Related fields such as Operations Research, Mathematics, Cognitive Studies or Electrical and Computer Engineering are common choices. However, any minor field is acceptable. When you choose your minor field, you must also choose an area of concentration in that field and minor advisor who is a member of that field. The minor advisor serves on your special committee and will work with you in setting your minor requirements. Typically, this involves knowledge of 3-4 graduate courses in the field, but expectations can vary depending upon the field. Before settling on a minor field, a student should find out about that field's requirements.

There are no additional requirements for the internal minor, except that the minor area of concentration must be different from the major area of concentration.

The A Exam

The A exam (Admission to Candidacy Exam) is an oral exam.  It is a final test of your preparedness for undertaking thesis research. The content and coverage of the A exam is determined by the special committee and discussed with the student beforehand. Often, the student at an A-exam will describe the problem to be attacked in the thesis and give some preliminary research results. But an A-exam might instead have the student present an in-depth survey of a research area. Occasionally the A-exam serves as an opportunity to present completed research that is unrelated to the thesis topic.  Some committees expect the student to prepare a written document prior to the exam, which might cover content that will be discussed at the exam or complement that content.

Students normally aim to take the A exam in their third year of graduate study. Students are required to have completed the competency requirement and to have at least two units of residency prior to the A exam. In addition, students must attempt the A exam before finishing their seventh semester of study. (More details of the university's requirements can be found in Cornell's Guide to Graduate's Study.) Although students have normally made substantial progress towards completing the breadth requirement before taking their A exam, it is not necessary to have completed this requirement before the A exam. (Note that your minor advisor may require you to have taken some courses in your minor before your A exam; you should check with him/her.)

The B Exam

The B exam is your thesis defense. While it is not required, it is strongly recommended that a draft of your thesis be provided to your committee prior to the B exam. In most cases, it should require only minor editing after the exam. However, during a B exam, the committee may ask for revisions, in which case it is possible that the student will pass the B exam but not yet have full approval of the thesis itself. The Ph.D. degree is awarded after you have passed the B exam and filed an approved dissertation with the University, and completed all the other requirements above. The University requires a minimum of two units of residency between the A exam and the B exam. Most students complete their B exam within four to six years after their arrival at Cornell.


Frequently Asked Questions

Here are answers to some of the more common questions and concerns that students have. Again, you are encouraged to consult with your advisor or the Director of Graduate Studies if you have concerns not covered here.

What should I do over the summer?

There are lots of opportunities. Some popular options include doing research with a faculty member, often your advisor or potential advisor (this is particularly appropriate as you get further along in the program), teaching a course, or doing a summer internship. We believe that it is in your interest to spend one or more summers as an intern in an industry research lab or at some other University. Doing so exposes you to other perspectives on the field and to the priorities driving the industry; it can really help later when you enter the job market. We'll suggest many options and can help you find a good match to your interests. Your advisor may also have contacts that would lead to interesting internship opportunities. For foreign students, internships should satisfy the requirements for practical training under a student visa, hence no special visa approvals should be required. Most students spend at least one or two summers as interns, usually during their first three years at Cornell.

What happens at the annual Field meetings?

The Field of Computer Science meets annually in January. At the meeting, the progress of each student is examined. The DGS summarizes progress towards requirements, presents a summary of courses taken and grades received, and indicates whether the student has taken or is scheduled to take an A exam. For students who have been at Cornell for a few semesters, the emphasis of the discussion is on progress toward identifying a research topic, forming a special committee, and launching a research program that will lead to a dissertation. Normally, the student's current advisor will briefly describe the student's recent progress.

The goal of this meeting is to understand how we can best help the students establish themselves as researchers, publish their work, and graduate within the normal time period. If a consensus emerges that a particular student may not be heading toward successful completion of the degree program, the field will discuss appropriate action, which always depends on the specific situation. While students are occasionally asked to leave the program, this happens very rarely. In any case, no student is ever asked to leave the program without first being given a warning and time to correct the situation, except in the case of serious violations of the University code of conduct.

I took some courses as an undergraduate prior to coming to Cornell that appear to be identical to the ones listed under the competency requirement. Can I get out of those parts of the requirement?

No. Most Ph.D. students will have extensive coursework in computer science prior to arrival at Cornell, hence this situation is the norm, not the exception. The field established these requirements as a way of certifying that, despite the varied emphasis and coverage of undergraduate programs from which our students come, our graduates are broadly educated.  Besides, you do not need to retake the course, you only need to take the exam.

I was enrolled as a Ph.D. student at another institution for two years before transferring to the Ph.D. program at Cornell.  I took several graduate courses as part of my studies. Can I count these towards my requirements here?

Maybe, if we are familiar enough with the institution you are transferring from to calibrate the quality of the program. You should negotiate the transfer of credit with the DGS and your advisor.

I am taking courses to satisfy the competency requirement in an area for which I have some prior undergraduate background. Is it possible to substitute a graduate-level course for one or more of the undergraduate area courses listed?

No courses can be used other than those listed explicitly. To understand why this is not allowed in general, consider CS 4410 (old 414) and the graduate courses that correspond to it, CS 5410 (old 514) and CS 6410 (old 614). CS 4410 (old 414), an undergraduate operating systems course, spends a lot of time on concurrency and techniques for protecting concurrent programs against bugs caused by race conditions, unprotected shared variables, and reentrancy. It delves deeply into memory management and virtual memory mechanisms and looks at questions of protection, performance, and general O/S structure and functionality. Although CS 5410 (old 514) and CS 6410 (old 614) are also systems courses, these tend to specialize on only a few topics, and in fact the reason for the CS 4410 (old 414) systems area requirement is precisely so that courses like CS 6410 (old 614) can assume that students have a broad grounding. One could earn a high grade in CS 6410 (old 614) without ever needing to demonstrate a good understanding of concurrency, despite the fact that such a weakness in one's background would be a real problem in exploiting modern computing platforms. For these reasons, the systems area does not consider CS 6410 (old 614) to be an acceptable substitute for CS 4410 (old 414) in demonstrating area proficiency.

How do I create a special committee?

Most students enter Cornell with a good idea of what area they want to specialize in.  Those who do not still have strong areas of interest. By reading recent research papers, the annual report, and course descriptions, you should pick courses taught by faculty members you might enjoy working with.  Focus on areas for which you believe you have talent, good ideas, or interest. Being a TA for a faculty member with whom you may want to work is often a good idea, especially if the course is in the general area of your interests and talents.

Faculty members are always available to talk to graduate students about potential research topics in their area, and most students will talk to a few before joining a research group. It is common for a faculty member to suggest working with the student for a period of time, perhaps a semester, before considering the relationship "official". Some students will approach a potential advisor soon after arriving on campus, but others may take some time to shop around. All students should try to identify an advisor by the end of their first year at Cornell.

If your interests change over time, or things just are not working out, you or your committee chair (advisor) may decide to reconstitute your committee. This is not considered a bad thing and will not leave a blot on your record. All field members have an interest in seeing our students do the best and most innovative work they are capable of, and if this means changing advisors or topics, so be it.

Do I need to complete my graduate coursework prior to taking the A exam?

Most students who take an A exam will have satisfied the majority of their field requirements, and many will have completed their minor (for some minor fields, this is a requirement; read the rules published by the minor field that you select!) The special committee will typically let you schedule the A exam prior to the completion of your coursework, although it is expected that most students will have finished all coursework requirements after three and one-half years at Cornell.

What is the rationale for having an external minor requirement?  Some fields at Cornell don't require that.

The competency and breadth requirements relate to the CS field itself, but we want our students to be scholars familiar with a world beyond their area in CS. The minor requirement reflects that philosophy. Note that the CS Field accepts any proposed minor, even one completely unrelated to the student's program of study.

How do I report on my progress towards satisfying the requirements?

This is not your problem. The graduate office maintains a file on each student which includes a checklist for the various requirements. Each year, prior to the annual review of student progress that occurs in January, the graduate office will update these checklists. Of course, if you think that your record is missing pertinent information (e.g., if you are told you need to take a course that you have already taken), you should let us know.

I am primarily interested in [vision/graphics/AI/concurrency/logic/architecture] and was disappointed to see that the competency requirement emphasizes other areas. Why am I being penalized, in the sense that a theory, systems or languages student would have fewer requirements than I do?

The competency requirements reflect the field's consensus that the corresponding courses cover a core set of concepts and material with which any computer scientist needs to be familiar and comfortable, simply to be able to participate in normal dialogue with other computer scientists. We do not view this as a "penalty" on people who work outside these core areas, but rather as a type of common background that provides a context for interacting with colleagues.

The requirements are designed to be flexible.  Our course requirements work out to fewer than one per semester for an average student. Obviously, some courses will prove to be more interesting or more directly relevant than others, but our hope is that many students will discover new areas of interest by taking courses outside of a narrow research focus.

In any case, there is the Exceptions clause; if you can make a strong case that the requirements as we have stated them will inhibit your progress in research in your chosen area of study, and if you are able to formulate a good-faith alternative program in consultation with your advisor, then the Field will be happy to entertain a proposal.

Why are there requirements in [AI/programming languages/theory...] and not in [graphics/databases/...]

We recognize that computer science is evolving rapidly. Areas that were considered central ten years ago may be more peripheral now. While the areas for the competency requirement represent the faculty's consensus of material that every computer scientist should know, this is a topic we frequently revisit.