Skip to main content

Notice

Information on this website is posted for historical reference only. Please visit the Office of the Registrar for current requirements.

Computer Science

Chair: Thomas H. Cormen

Professors A. T. Campbell, T. H. Cormen, R. L. Drysdale III, H. Farid, P. Jayanti, D. F. Kotz, D. Rockmore, S. W. Smith, P. Winkler; Associate Professors C. J. Bailey-Kellogg, D. Balkcom, A. Chakrabarti, L. Fleischer, F. Pellacini; Assistant Professors G. Grigoryan, L. Torresani, A. J. Zomorodian; Senior Lecturer C. Heckman; Lecturers J. Denning, P. Hannaway, M. K. Johnson, J. Sorber; Research Associate Professor L. Loeb; Research Assistant Professor S. L. Bratus; Adjunct Professors M. A. Casey, E. A. Feustel, R. H. Granger, M. D. McIlroy, C. E. Palmer; Adjunct Associate Professor C. S. McDonald; Adjunct Assistant Professor S. Srinivasan.

INTRODUCTORY COURSES

Students wishing to devote one course to the study of computer science may choose Computer Science 1, 2, 3, or 4, depending on their background and interests. Students wishing to devote two or more courses to the study of computer science should begin with Computer Science 1 and 10. Students wishing to take courses in Digital Arts should start by taking Computer Science 1, 2, or 4. Students wishing to take courses in Computational Methods are advised to start by taking Computer Science 3, but may instead take Computer Science 1. Engineering Sciences 20 may substitute for Computer Science 1 in any program of study.

UNDERGRADUATE COURSES

Computer Science undergraduate courses are numbered as follows:

1–19: Introductory and non-major courses.

20–29: Courses in Digital Arts.

30–49: Courses in theory and algorithms.

50–69: Courses in systems and hardware.

70–89: Courses in applied computer science.

90–99: Reading course and culminating experience courses.

Wherever Computer Science 1 is listed as a prerequisite, it may be replaced by Computer Science 5, which is no longer offered; by Engineering Sciences 20; or by credit and placement from either the Computer Science Advanced Placement examination or a local placement examination. Wherever Computer Science 10 is listed as a prerequisite, it may be replaced by Computer Science 8, which is offered for the last time in Fall 2011.

ELECTIVE COURSES

Many of the majors and minors involving computer science allow for one or more elective courses. In all cases, an elective course is any Computer Science course numbered from 30 to 89 that is not used to fulfill another requirement. With the approval of the Department’s Undergraduate Advisor, a Mathematics course or Computer Science 94 may substitute for one elective course; at most one such substitution is allowed. With the approval of the Departmental Undergraduate Advisor, any graduate course in Computer Science (courses numbered above 100) may substitute for an elective course, as long as the graduate course is not cross-listed as an undergraduate course that is used to fulfill another requirement.

MAJOR IN COMPUTER SCIENCE

The major in computer science is intended for those students who plan careers in computer science or in fields that make use of computing, for those who plan graduate study in computer science, and also for those who simply find computer science interesting. Undergraduates majoring in computer science will have opportunities to participate with faculty in activities outside formal coursework. These activities include assisting in courses, writing a thesis or doing a project under the guidance of a faculty member, and assisting a faculty member in research or in a programming project.

To fulfill the major in computer science, a student must complete the courses prerequisite to the major and satisfy the requirements of the major. For additional requirements for the Honors Program see the section ‘The Honors Program in Computer Science’ below.

REQUIREMENTS FOR THE COMPUTER SCIENCE MAJOR

Prerequisite courses: Computer Science 1 or Engineering Sciences 20; Computer Science 10.

Requirements: A student who wishes to major in Computer Science must obtain approval of her or his program of study from the Departmental Undergraduate Advisor. To complete the major, it is necessary to pass at least ten courses in addition to taking the two prerequisite courses. Among these ten courses must be the following:

1. Two Computer Science courses numbered 30 to 49;

2. Two Computer Science courses numbered 50 to 69;

3. Two Computer Science courses numbered 70 to 89;

4. Three elective courses (see ‘Elective Courses’ above);

5. Computer Science culminating experience: either two terms of Computer Science 98, or one or two terms of Computer Science 99 (Honors Thesis Research).

MINORS IN COMPUTER SCIENCE

The Computer Science, Computational Methods, and Operations Research minors are available to all students who are not majoring in Computer Science and who do not have a modified major with Computer Science. The Digital Arts minor is available to all students, including those majoring in Computer Science. Students may modify any major, including Computer Science, with Digital Arts. For each minor, the prerequisites and required courses are listed below. Approval of a minor can be obtained through the Departmental Undergraduate Advisor.

I. Computer Science

Prerequisites: Computer Science 1 or Engineering Sciences 20; Computer Science 10.

Courses: Any five elective courses (see ‘Elective Courses’ above) as approved by the Departmental Undergraduate Advisor and drawn from at least two of the following three sets of courses: Computer Science 30 to 49; Computer Science 50 to 69; Computer Science 70 to 89.

II. Digital Arts

Prerequisites: Computer Science 1, 2, or 4, or Engineering Sciences 20.

Courses: Computer Science 22, 24, 27; one of Film Studies 31, Film Studies 35, Film Studies 38, Studio Art 16, Studio Art 29, Theater 30; and one other course from the following list: Film Studies 31, Film Studies 35, Film Studies 38, Studio Art 16, Studio Art 29, Theater 30, Computer Science 20, Computer Science 77, Psychology 21.

III. Computational Methods

Prerequisites: One of Computer Science 1, Computer Science 3, Engineering Sciences 20, or equivalent; one of Mathematics 22 or 24.

Courses: Computer Science 70 and 84; one of Computer Science 31, 71, or 74; and two courses from one of the following groups:

1. Biology 39, 47, 75; Computer Science 75;

2. Earth Sciences 64, 66, 67, 76;

3. Engineering Sciences 22, 23, 26, 27, 41, 52, 67, 68, 91 (if Computer Science 71 is not used as one of the courses above), 104, 105, 106, 110, 145, 150;

4. Linguistics 22, 25, 26;

5. Mathematics 75 and one of Mathematics 25, 31, 71, 81;

6. Mathematics 23, 46, 53, 76;

7. Mathematics 36, 76, 86, 96;

8. Physics 68, 73, 74, 75; Astronomy 74, 75;

9. Psychology 28, 40, 60;

10. Two other courses, as approved for inclusion in the minor by the offering department(s) and the Computer Science department.

IV. Operations Research

Prerequisites: Mathematics 3, 8, 13; Computer Science 1 or Engineering Sciences 20; Computer Science 10.

Courses: Computer Science 30 or Mathematics 19; Computer Science 31; Computer Science 84; Mathematics 20, 22; and one of Mathematics 38 or 88 or Computer Science 49 with approval of the Undergraduate Advisor.

THE HONORS PROGRAM IN COMPUTER SCIENCE

For completion of the Honors Program in Computer Science, and to be eligible to graduate with Honors or High Honors, a student must complete either an independent study project or a written thesis (for High Honors the thesis is required), and have his or her program of study approved as an Honors Program by the Undergraduate Advisor. In addition, the recommendation of the thesis/project advisor to award Honors or High Honors must be ratified by a departmental vote. College requirements for the Honors Program are discussed in the Regulations section of this bulletin. The Honors project is undertaken by a student under the guidance of a faculty member. The subject of the project or thesis often will be motivated by the concepts or content of an advanced course taken as a part of the student’s major, though a variety of activities can lead to a project or thesis. Student suggestions for both projects and theses are welcome. The project or thesis will normally be completed over a period of two or three terms. The student should consult with his or her prospective project advisor and submit to the Undergraduate Advisor a brief written proposal of the project that has the written approval of the project advisor. The Undergraduate Advisor will review the student’s proposal and the courses that have been selected for the Honors major. Approval of the proposal and course selection will constitute formal admission into the Honors Program. This procedure is normally completed before the end of fall term, senior year. The student may then register for (at most two terms of) Computer Science 99, Honors Thesis Research.

Admission to the Honors Program requires a general College average of B, and a B average in the major at the time of admission and at the time of graduation. Moreover, a B+ average is required in the work of the Honors project/thesis. The B average in the major is determined as follows: Courses prerequisite to the major are not counted, but all other courses used as part of the major are counted, as are all courses titled Computer Science (beyond prerequisites, excluding 99), including courses cross-listed with Computer Science. Note that in the case of modified majors, courses used as part of the major may include courses from other departments. The B+ average required in the work of the Honors program is defined to be a grade of B+ given by the thesis/project advisor on the thesis or project. Questions about this requirement should be addressed to the Departmental Undergraduate Advisor.

PREGRADUATE STUDY IN COMPUTER SCIENCE

Some graduate departments of computer science require applicants to take the Graduate Record Examination in Computer Science. This examination primarily covers material in Computer Science 1, 10, 30, 31, 39, 50, 51, 57, 58, 59, 60, and 61, plus material in Engineering Sciences 31. Those considering graduate school should take many of these courses. Less emphasis is placed on material in other courses and the various advanced topics covered in Computer Science 49, 69, and 89 (although advanced topics are very good preparation for graduate study). Material from mathematics courses related to computer science may appear on the examination, though it is hard to recommend any particular mathematics course over the others. This examination is only one part of an application for graduate school. Letters of recommendation, particularly from professors who know you well through an advanced class or work on a project, usually are given more weight.

MODIFIED MAJORS

Many students have created modified majors with Computer Science being either the primary or the secondary part. Particularly common modified majors are with engineering, mathematics, or economics, but modified majors with philosophy, music, film studies, psychology, physics, geography, studio art, and many other subjects have been approved.

MODIFIED MAJOR WITH COMPUTER SCIENCE AS THE PRIMARY PART

A modified major with Computer Science as the primary part must satisfy the following requirements, and it must be approved by the Departmental Undergraduate Advisor to ensure a coherent major.

Prerequisites: Computer Science 1 or Engineering Sciences 20; Computer Science 10.

Requirements: Along with at least four modifying courses, as approved, the requirements are as follows:

1. One Computer Science course numbered 30 to 49;

2. One Computer Science course numbered 50 to 69;

3. One Computer Science course numbered 70 to 89;

4. Three elective courses (see ‘Elective Courses’ above);

5. Computer Science culminating experience: either two terms of Computer Science 98, or one or two terms of Computer Science 99 (Honors Thesis Research).

MODIFIED MAJOR WITH COMPUTER SCIENCE AS THE SECONDARY PART

Prerequisites: Computer Science 1 or Engineering Sciences 20; Computer Science 10.

Requirements: Four electives (see ‘Elective Courses’ above) that complement the primary part of the modified major, subject to the approval of the Departmental Undergraduate Advisor.

THE COMPUTER SCIENCE MAJOR MODIFIED WITH ENGINEERING

The Computer Science major modified with Engineering requires satisfying most of the requirements of the Computer Science major, along with four Engineering courses related to computer science. The prerequisites are Computer Science 1 or Engineering Sciences 20; Computer Science 10; Mathematics 3, 8, 13; and Physics 13, 14. The requirements are as follows:

1. One Computer Science course numbered 30 to 49;

2. One Computer Science course numbered 50 to 69, but not including Com puter Science 56, which is identical to Engineering Sciences 31;

3. One Computer Science course numbered 70 to 89;

4. Three elective courses (see ‘Elective Courses’ above), not including Computer Science 56;

5. Engineering Sciences 22;

6. Engineering Sciences 31;

7. Engineering Sciences 62 or 63;

8. Engineering Sciences 26, 32, 61, 62, 63 or 91. (The same course cannot satisfy both requirements 5 and 6);

9. Computer Science culminating experience: either two terms of Computer Science 98, or one or two terms of Computer Science 99 (Honors Thesis Research).

THE COMPUTER SCIENCE MAJOR MODIFIED WITH DIGITAL ARTS

The Computer Science major modified with Digital Arts requires satisfying most of the requirements of the Computer Science major, along with four courses from the Digital Arts minor. The prerequisites are Computer Science 1 or Engineering Sciences 20; and Computer Science 10. The requirements are as follows:

1. Two Computer Science courses, either both numbered 30 to 49 or both numbered 50 to 69;

2. Computer Science 22;

3. Computer Science 24;

4. Computer Science 27;

5. Computer Science 77;

6. One Computer Science course numbered 70 to 89, but not 77;

7. One elective course (see ‘Elective Courses’ above);

8. Two of the following courses: Film and Television Studies 31, 35, 38; Studio Art 16, 29; Theater 30; Computer Science 20; Psychology 21;

9. Computer Science culminating experience: either two terms of Computer Science 99, or one or two terms of Computer Science 99 (Honors Thesis Research).

GRADUATE STUDY IN COMPUTER SCIENCE

The Department of Computer Science offers programs leading to the Ph.D. and M.S. degrees in Computer Science. Each is described below.

REQUIREMENTS FOR THE DOCTOR’S DEGREE (PH.D.)

During the first year, students engage in research projects with faculty and start to take a set of core graduate courses and topics courses. In the second year and beyond, students become progressively more engaged in research while completing their course requirements. The requirements for the Ph.D. degree in Computer Science are as follows:

1. Admission to the degree program by an admissions committee of the Computer Science faculty.

2. Students should take a minimum of two terms of research in both their first and second years and be supervised by a tenure-track faculty member.

3. By the beginning of the second year each student should

(a) Write a high-quality paper that describes in detail his or her research efforts and results to date, including motivation, relation of the student’s work to the work of others, and specifics about results or obstacles faced in obtaining results, unless given an exemption by his or her Ph.D. research advisor; and

(b) Either give a talk or present a poster at the Computer Science Research Symposium.

4. By the end of spring term of the second year, each student must have a Ph.D. advisor who is a member of the tenure-track faculty in Computer Science. Students may change advisors after this point, but they should not be without an advisor for more than a term.

5. Completion of a course of study that includes the following:

(a) Computer Science 170, 231, and 258. These are the breadth courses. Note that these courses have prerequisites that are listed with the description of each course.

(b) All students must pass at least eight courses numbered between 100 and 199 or between 211 and 294, including the breadth courses listed in requirement (a) above. The special topics courses, numbered 149, 169, and 189, may be taken multiple times and will be counted as distinct courses for this purpose. At most one course from outside Computer Science may be substituted, with permission of the departmental advisor to Ph.D. students.

A student’s course of study is subject to the approval of the departmental advisor to Ph.D. students. Students normally take the breadth courses specified in requirement (a) above by the end of their second year.

6. Students are expected to pass the Research Presentation Exam by the end of the winter term of their third year. An examining committee consisting of three faculty members, appointed by the departmental advisor to Ph.D. students, will select a paper for the student to present. The student will have a month to read the paper, and will then present the paper to the committee and will orally answer questions on the paper. The committee will evaluate the student’s presentation and performance answering questions, and will determine whether the student passes the examination. A student is allowed two attempts to pass the exam. In a second attempt, the student is assigned a new paper, but not necessarily a new committee. Passing the Research Presentation Exam is a prerequisite to thesis proposal (see requirement 8 below). For more details on this exam, consult the Computer Science department web page.

7. At least one term of participation in undergraduate teaching. That is, the student must pass Computer Science 296.

8. Each student must display readiness for research in one area by giving a written and a public oral presentation of his or her research plan. This thesis proposal will be judged by a faculty committee chosen by the student; the rules used for the composition of this committee are the same as for a Ph.D. defense committee; this committee does not require the approval of the Dean of Graduate Studies, but must be approved by the departmental advisor to Ph.D. students. The presentation will be followed by a question period in which the student demonstrates mastery of the relevant area and defends the proposed thesis plan.

9. Six terms in residence at Dartmouth. (This is a College requirement.)

10. Preparation of a thesis acceptable to a faculty committee and a public defense of this thesis. The committee shall be formed for the purpose of guiding the student’s research, according to the rules of the College. This committee must be approved by the Dean of Graduate Studies. All members of the committee shall read and sign the thesis in its final form.

REQUIREMENTS FOR THE MASTER OF SCIENCE DEGREE (M.S.)

We have two tracks in the M.S. program: a coursework track and a thesis track.

1. For the coursework track, the student must satisfactorily complete thirteen Computer Science courses taken for graduate credit. At least five of these courses must be numbered above 100. At least one of these thirteen must be an advanced topics graduate course in Computer Science (listed as Computer Science 149, 169, and 189). Any courses taken outside of the Computer Science department must be approved by the departmental advisor to Master’s students. The student may use up to two research credit courses (e.g., 297–299) to satisfy these requirements, but only if the student earns an HP and the M.S. advisor approves the substitution. Per department policy, selected upper-level undergraduate courses may count for graduate credit for the M.S. degree.

2. For the thesis track, the student must satisfy these coursework and research requirements:

(a) The student must satisfactorily complete nine Computer Science courses taken for graduate credit. At least three of these courses must be numbered above 100. At least one of these nine must be an advanced topics graduate course in Computer Science (listed as Computer Science 149, 169, and 189). Any courses taken outside of the Computer Science department must be approved by the departmental advisor to Master’s students. No research credit courses (e.g., 297–299) may be used to satisfy these requirements. Per department policy, selected upper-level undergraduate courses may count for graduate credit for the M.S. degree.

(b) By the end of the third term of enrollment, the student must petition to and be accepted for the thesis track by the departmental Master’s committee.

(c) The student must successfully complete at least six course equivalents of research from Computer Science 297–299.

(d) By the end of the fourth term of study, the student must complete a thesis proposal, consisting of a written document and a public presentation. This thesis proposal will be judged by a faculty committee chosen by the student; the rules used for the composition of this committee are the same as for an M.S. defense committee as noted in requirement (e) below.

(e) The student must prepare a thesis acceptable to a faculty committee and give a public defense of this thesis. The thesis should represent mostly independent work, and be of sufficient quality to merit publication (with suitable revision) in a refereed venue. The committee shall be formed for the purpose of guiding the student’s research. The chair of this committee, who is the student’s primary research advisor, must be a tenure-track or research-track faculty member in the Computer Science department. In addition to the chair, the committee must include at least one other tenure-track or research-track Computer Science faculty member. The committee must comprise at least three faculty members, one of whom may be from outside the Computer Science department, though an outside member is not required. This committee must be approved by the departmental advisor to M.S. students and by the Dean of Graduate Studies. All members of the committee shall read and sign the thesis in its final form. We expect that the thesis, including a copy of the signature page, shall be published as a departmental Technical Report.

All students start out in the coursework track. As noted in 2(b) above, students may then apply to move to the thesis track. (Students may also petition to move back to the coursework track, although we expect that will be uncommon.)

Students are expected to complete the M.S. degree in a maximum period of seven consecutive terms.

Students who are currently enrolled in a Ph.D. program in a department other than Computer Science at Dartmouth may apply for a tuition scholarship and to be considered for concurrent enrollment.

The Computer Science M.S. degree is not intended to be an outlet for students leaving the Computer Science Ph.D. program (nor is it intended to be a degree concurrent with a Computer Science Ph.D.).

We encourage Dartmouth undergraduates to consider staying on for a Computer Science M.S. degree. Students may transfer up to five courses taken while an undergraduate to the M.S. program, as long as these satisfy the policy established by the Office of Graduate Studies and the department.