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 depth through their doctoral research and breadth through coursework in a variety of topics. Although the program is designed to be flexible, the field nonetheless adheres to the philosophy that certain areas are so fundamental to Computer Science that all students should demonstrate competence in them.

This document describes the area proficiency requirement, graduate course requirements, and other requirements for the Ph.D. in Computer Science. The last page of the document is a copy of the checklist that we use to track your progress; it includes tables listing the specific courses that satisfy requirements described below.

The field expects that most students will complete the area proficiency requirement within two years and the graduate course requirements within three years. Students are strongly encouraged to affiliate with a research group as early as possible and to begin research even before satisfying the various requirements.

Area Proficiency Requirement

Students in the CS Ph.D. program must demonstrate competence in the following areas: theory, languages, systems, scientific computing, and artificial intelligence. Most students satisfy this requirement within 18 months. The requirement in each area is satisfied by taking an exam or by taking courses. Courses may be employed in at most two of the five areas.

Some areas designate the final of a single 400-level course as the proficiency exam, in which case the exam is taken with the students in that course, on the designated day of the final. The areas that offer a separate qualifying exam do so once each year, in January, during the week prior to the start of the semester. The syllabus for each exam includes references to texts that can be used to prepare for that exam.

To satisfy an area proficiency requirement using coursework, the student must take a set of 400-level courses designated by the area and receive a grade of B+ or better in each. The courses are listed on the "student progress checklist" (page 4). The checklist also includes a table of acceptable substitutions, specifying permitted substitutions in cases where a student has previously taken one of the listed courses.

Graduate Course Requirement

Cornell graduate students are expected to take a minimum of six 600-level graduate courses for letter grades early in their program of studies. If desired, a single 500-level course can be substituted for one of the 600-level courses. These courses need not all be in Computer Science, and they may include courses that are being counted toward a graduate "minor" field, as described below.

A studentís program must include one graduate-level course in each of the following areas: theory, programming languages, and systems. Each area has developed a list of courses that can be used to satisfy this requirement; this list is included as part of the "student progress checklist" on page 4. Typically, students take two or three courses at a time in their first year or two at Cornell, mostly at the 600 level, but also at the 400, 500 and 700 level. For this reason, many students will take more than six CS graduate courses, thus exceeding the minimum requirements.

Project Requirement

You also are required to do a significant CS project. One way to satisfy this project requirement is either by taking a course with a significant project component for a grade (B- or better). For example, the projects in the courses CS 632, CS 513, CS524, CS 519, CS 664 satisfy the requirement. You can also satisfy this requirement by projects outside of classes, for example, by doing an independent project as part of your research, or part of a summer job. To use such an independent project you need a CS field member to certify that your project satisfied the requirement.

Other Requirements

Students are encouraged to identify a special committee chair early in their studies, and most students should have their entire committee appointed within their first 18 months at Cornell.  The full committee needs to be formed by the first 24 months at Cornell.  A full committee will consist of the faculty research advisor (chair), who can be any Computer Science field member, and two or more additional faculty members.  One of the additional members should be a computer science field member who is not directly in the studentís main research area; another one of the additional members is the minor field advisor (see below).

Students normally aim to take the A exam, thereby being "admitted into candidacy", in their third year of graduate studies. The University mandates a minimum residency prior to taking the A exam (2 units of residency credit), and they must attempt the exam before the beginning of their 7th semester of study. A residency unit is equivalent to 1 semester of full-time study. In addition, the University mandates a minimum of 2 units of residency credit between the A exam and the B exam.

The A exam is oral. During the A exam the student needs to demonstrate his/her understanding of the chosen general area of research. Depending on the special committee, the student may be asked to prepare a short written thesis proposal and/or to do a presentation about his/her proposed area of research this to the special committee. The committee will then pose questions both on the proposal itself and on any other topic they believe to be appropriate.

Students are required to pass the Q-exam (Area Proficiency Requirement) prior to taking the A exam. Normally, a student will have made substantial progress on the graduate coursework requirement prior to taking this exam and most students will have also completed their minor prior to doing so. However, there is no restriction on taking additional courses for grades after the A exam, and the special committee may allow a student to take the A exam prior to finishing coursework requirements provided that there is an acceptable plan for doing so.

The CS field requires that each Ph.D. student have a minor in a field other than CS. Related fields such as Operations Research, Mathematics, Cognitive Studies or Electrical Engineering are common choices. However, any minor field is acceptable. The minor field member on the special committee will work with you in setting the requirements for the minor field. 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.

Most student engage in research well before they are ready to take the A exam. Having passed the A exam, the student will continue his/her program of research that ultimately leads to writing a doctoral dissertation and defending it, in the B exam. The dissertation should be written prior to taking this exam, and in most cases, 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 dissertation itself. The Ph.D. degree is awarded after the student has passed the B exam and filed an approved dissertation with the University. Most students complete their studies within four to six years after arrival at Cornell.

Students are strongly encouraged to look for opportunities to publish their ideas and work. In Europe, it is common to require that a candidate for the Ph.D. present some number of published papers. Cornell has no explicit publication requirement. Nonetheless, publications are the most important tool for communicating a good idea and for demonstrating that the broader research community considers an idea to be important and well developed. The feedback obtained from referee reports or a conference presentation can be extremely helpful in appreciating the best way to "sell" a research result. It is not uncommon for a graduate from the program to have two or more publications before starting to interview for jobs.

Finally, although not a requirement of the field, all students are also encouraged to serve as TAís at least once in every four semesters, and/or to consider teaching a course during the summer months. Contact with students is valuable both as preparation for a possible academic career and also for experience in communicating ideas to groups. The latter talent will be important in any setting, academic or otherwise.

Annual Review of Progress

A Computer Science field meeting is held annually, in January. At this time, the field examines the progress of each student toward satisfying area proficiency and course requirements, and also toward establishing a program of research expected to lead to successful completion and defense of a doctoral thesis.

During this annual review, the field sometimes identifies a student who has failed to make satisfactory progress. Each case is considered separately and is handled in a manner appropriate to the specific situation. If the field is convinced that the problem is relatively minor, the student may be asked to take additional courses or to serve as a TA to rectify the deficiency. In cases where a broader pattern of unsatisfactory performance is found, the student may receive some form of warning or, if the situation is sufficiently serious, be asked to withdraw from the program.


Every policy needs to have provisions for unanticipated special cases. In developing this policy, the field has tried to anticipate many special cases and, through a separate "frequently asked questions" document, developed standardized means for dealing with them. In rare situations that fall outside of those covered by the FAQ sheet, the normal procedure is as follows. The student will start by discussing the matter with the chairman of the special committee or, if the committee has not yet been established, with the director of graduate studies. The committee chair and/or DGS will either resolve the matter or will bring it to the attention of suitable members of the field.


Requirements for the PhD in Computer Science: Progress Summary

Student name: _______________________________________________________

Semester when you entered the Ph.D. Program: ___________________________


Area proficiency requirements

For each area, you are required to either take a Q exam or a series of courses for grades of B+ or better. Give the date you passed the exam or list the courses taken in satisfaction of this requirement. You can use courses in lieu of exams in at most two areas out of the five.


Q exam date?

Courses taken in lieu of Q exam.



(CS 481 or CS682) and (CS482 or CS681)



CS314 and CS414 and CS432*



(CS411 or CS611) and (CS412 or CS612)

Scientific Computing


CS421 or CS621 or CS622




*Students who enter the program prior to January 2002 may take CS632 in place of CS432.

**Students who enter the program prior to January 2002 may take CS672 in place of CS472.

Graduate course and project requirements

We require that you take a total of six graduate courses (500 or 600 level) for a grade (B- or better), including at most one 500-level course. You also need to take one course from each of the lists of courses shown below in Theory, Languages and Systems. A single course can be used to satisfy both the area proficiency and graduate course requirements. As you take courses that satisfy this requirement, list them here. The courses that can be listed under "other" are not restricted to the field of CS. You also are required to do a significant CS project.

Courses satisfying the area proficiency requirement

Theory of Computation Analysis of Algorithms

CS681 or CS682

Programming Paradigms and Languages

CS611 or CS612

Computer Systems

601 or 614 or 632*

Other Courses




*Students who enter the program prior to January 2001 are not subject to the project requirement, and may use the old course list to satisfy the systems course requirement that included CS 514 or CS 519 or CS 617 or CS 631 or CS 664 in addition to the above courses.



Frequently Asked Questions

This document lists some of the more common questions and answers concerning the computer science field requirements for the Ph.D. degree in computer science. Although exceptions can be made with the approval of the studentís graduate committee, the policy document, together with this FAQ document, are intended to cover almost all situations expected to arise commonly, and exceptions to cases covered here would only be granted in genuinely unusual situations.

  1. I took several courses prior to coming to Cornell that appear to be identical to the ones listed under the course-based exemptions for one or more of the area proficiency exams. Do I need to take the exam in this case?

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 the area proficiency exam to ensure that despite the varied emphasis and coverage of undergraduate programs from which our students come, the graduate program can assume a basic level of broad competence among the students. Thus, it would be normal to take the Q exam in this case, and with such a good background, it shouldnít be a difficult matter to pass it. Some students may find that they need to take an undergraduate course to fill a gap, but then they will pass the proficiency exam rather than taking the full set of undergraduate courses for the area.

  1. I am taking courses to satisfy the area proficiency 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?

The answer to this depends upon the specific course and area. Included as part of the "student progress checklist" is a table of courses that are used to demonstrate area proficiency and the field policy for people who have already taken an equivalent course and wish to substitute a graduate-level course. As you will see, in some cases this is not a problem, but in others the graduate-level course is not considered an acceptable substitute.

As an example, consider CS414 and the graduate courses that correspond to it, CS514 and CS614. CS414, 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 CS514 and CS614 are also systems courses, these tend to specialize on only a few topics, and in fact the reason for the CS414 systems area requirement is precisely so that courses like CS614 can assume that students have a broad grounding. One could earn a high grade in CS614 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 terms of exploiting modern computing platforms. For these reasons, the systems area does not consider CS614 to be an acceptable substitute for CS414 in demonstrating area proficiency.

On the other hand, there are areas for which the graduate versions of courses extend the undergraduate versions that success in the graduate course makes it clear that the student knows the undergraduate material. In such cases, the graduate course can be substituted for the undergraduate one. An example is CS682, which can be used to satisfy the same theory area requirement as CS481.

In general, the policy of a given area is controlled by that area, and the faculty member responsible for the proficiency exam in a given year is also the person most knowledgeable about the areaís position on substitutions.

  1. Is it possible to count a course taken to satisfy an area proficiency requirement or a minor toward a graduate course requirement?

Yes, this is acceptable.

  1. How does one create a special committee?

Most students enter Cornell with a good idea of what area they want to work in, and those that enter without a sense of this still have 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, in areas for which you believe you have talent, good ideas, or interest. TAíing 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 arenít working out, you or your committee chair (advisor) may decide to reconstitute the committee. This isnít considered a bad thing and wonít leave a blot on your record. All the faculty members in the field 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.

  1. 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 course 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!) If a student still has a small amount of coursework left to complete, and has a plan for doing so, the special committee will often let you schedule the A exam prior to the coursework being completed. It is expected that most students will have finished all coursework requirements after three and one-half years at Cornell.

  1. What is the rational for having a minor requirement? Some fields at Cornell donít have such a requirement.

The minor requirement is not purely a CS invention: The University itself requires that there be a member on each special committee "representing each of a studentís minor field(s)". Many departments interpret this to be a de-facto University requirement for a serious minor, and each field sets its own requirements which the minor committee member is expected to enforce.

More broadly, the minor requirement reflects a CS field philosophy, namely that our students should demonstrate breadth of knowledge. The area proficiency requirements relate to breadth within the CS area itself, but we want our students to be scholars familiar with a world beyond their area in CS. The minor requirement reflects that requirement.

The CS field accepts any proposed minor, even one unrelated to the studentís program of studies.

  1. The written policy suggests that the field would be concerned if a student elected to use coursework to satisfy requirements in more than two areas. Why does the field have this bias in favor of exams? I dislike exams and would rather use coursework to minimize the number I need to take.

We want you to get started on research without much delay. The exams focus on undergraduate material basic to our program. When a student is admitted, we confirm that their CS background is adequate, so it would be a surprise if a student needed to take courses to satisfy many of the area requirements.

  1. Will areas like systems, which base their exam on several courses, have several Q exams?

No. If an area covers more than one course, the Q exam would normally be made up and administered specifically for the Q requirement, and offered in January.

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

The DGS 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 DGS office will update these checklists.

  1. I took graduate courses as part of my studies before coming to Cornell. Can I count these towards the graduate course requirements here?

Courses taken as part of some other degree program (an undergraduate or masterís level degree) will not be counted towards the Ph.D. in Computer Science at Cornell. Moreover, the field believes that Cornellís 600-level courses are an important part of our program and that graduate courses taken at other institutions may not be of comparable content or emphasis. Exceptions can be made for students who transfer into the Cornell Ph.D. program from some other Ph.D. program and who might experience a substantial delay if subjected to our area course requirements. Such cases are uncommon and will be dealt with on an individual basis by the DGS.

Another uncommon situation involves students who completed an undergraduate or masterís degree program at Cornell prior to entering the Ph.D. program and who may have taken some of our 600-level courses as part of their prior studies. In such cases, the courses taken can be counted towards the graduate course requirement.

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

All our students are asked to take six or more graduate courses, three of which will often be courses in the minor field. This works 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. The theory, systems and languages 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 dialog with other computer scientists. We donít see this as a "penalty" being imposed on people who work outside the core areas, but rather as a type of background that one needs in order to interact with colleagues in a future professional life.

  1. How is "grandfathering" being handled?

These policies apply to students who are entering their first, second or third year as of fall 1998. Students entering their fourth year or beyond in fall of 1998 are not expected to take more than one course per semester (even if this means that a student may complete a Ph.D. without satisfying the new course requirements), and students in their final semester, who are writing a dissertation, need not take any courses, again, even if this leaves the course requirements unsatisfied.

Obviously, any student who has already passed the qualifying exam need not be concerned with the area proficiency requirements. We will continue to enforce any "conditional pass" requirements that were imposed on students who passed the Q exam conditional on taking some course. Students who have passed part of the Q exam should complete the area proficiency requirements under the conditions of the new policy.

  1. I have a situation that simply falls outside the policy and is not covered by the FAQ. What do I do?

After you appoint a special committee, the committee can request that the DGS approve an exception to the rules. (Prior to this, exceptions would be by approval of the DGS). If the matter is not straightforward, the DGS may consult with the CS field as a whole before approving the request. As noted earlier, exceptions are intended to be just that: exceptional, uncommon solutions to unexpected problems. Thus, requests of this sort will not routinely be granted.

  1. What happens during the annual field meetings?

During the annual field review of the graduate students, the field meets to discuss the progress of each student in the program. The DGS summarizes progress towards requirements, presents a summary of courses taken and grades received and indicates whether the student has taken (or scheduled) 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 and launching a research program that will lead to a dissertation. Normally, the studentís current advisor will briefly describe the status of their research. Faculty members who were impressed by the student in a class will often bring this up. The emphasis of the review is to put the studentís progress in a positive light.

Our goal is to understand how we can help the students in the field 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 would always depend upon the specific situation.