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, P. Winkler; Associate Professors C. J. Bailey-Kellogg, A. Chakrabarti, L. Fleischer, F. Pellacini, S. W. Smith; Assistant Professors D. Balkcom, T. Choudhury, L. Torresani, A. J. Zomorodian; Instructor P. C. Johnson; 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.

INTRODUCTORY COURSES

Students wishing to devote one course to the study of computer science may choose Computer Science 2, 3, 4 or 5, 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 5 and 8. Students wishing to take courses in Digital Arts should start by taking Computer Science 2, 4, or 5. Students wishing to take courses in Computational Methods are recommended to start by taking Computer Science 3, but may instead take Computer Science 5 or Engineering Sciences 20.

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.

Students planning advanced work in computer science should start by taking Computer Science 5. Normally, the next courses taken are Computer Science 8 and Computer Science 19, taken in either order or concurrently. Prerequisites for most upper-level courses are drawn from these two courses, along with Computer Science 23 and Computer Science 37. Computer Science 23 may be taken any time after Computer Science 8, and Computer Science 37 may be taken any time after Computer Science 5.

REQUIREMENTS FOR THE COMPUTER SCIENCE MAJOR

Prerequisite courses: A student must complete Computer Science 5, 8, and 19, or the equivalent advanced placement course. (Mathematics 19 may substitute for Computer Science 19.)

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 nine courses in addition to taking the three prerequisite courses. Among these nine courses must be the following:

1. Computer Science 23;

2. Computer Science 25;

3. Computer Science 37;

4. Computer Science 39;

5. Computer Science 58 or 78;

6. One of the following courses: Mathematics 20, 22, 25, 26, 28, 31, 38, 39, 40, 46, 50, 56, or their honors equivalent; Computer Science 36, 46;

7. Two other Computer Science courses numbered from 33 to 88, but not 42 or 72. These may include 58 or 78, if not used to satisfy requirement 5, and 36 or 46, if not used to satisfy requirement 6;

8. Computer Science Culminating Experience Course (two terms of Computer Science 98) or Thesis (Computer Science 97).

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 students majoring in Computer Science. Students may modify the Computer Science major with Digital Arts. For each minor, the prerequisites and required courses are listed below. Approval of a minor can be obtained through the Undergraduate Advisor.

I. Computer Science

Prerequisites: Computer Science 5, 8, and 19. (Mathematics 19 may substitute for Computer Science 19.)

Courses: Computer Science 23, 25, 37; any one of Computer Science 39, 48, 58, 68, 78, or 85; plus one other Computer Science course numbered from 33 to 88, but not 42 or 72.

II. Digital Arts

Prerequisites: Computer Science 2, 4, or 5.

Courses: Computer Science 22, 32, 42; 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 12, Computer Science 52, Computer Science 82, Psychology 21.

III. Computational Methods

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

Courses: Computer Science 36, 46; one of Computer Science 25, 26, or 34; and two courses from one of the following groups:

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

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

3. Engineering Sciences 22, 23, 26, 27, 41, 52, 68, 91 (if Computer Science 26 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, and Computer Science 19. (Mathematics 19 may substitute for Computer Science 19.)

Courses: Computer Science 25, 46; Mathematics 20, 22; and one of Mathematics 38 or 88 or Computer Science 85 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. Students must meet the College requirements for Honors work. 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/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 97, 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 97), 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

Most graduate departments of computer science require applicants to take the Graduate Record Examination in Computer Science. This examination primarily covers material in Computer Science 5, 8, 19, 23, 25, 33, 37, 39, 48, 58, and 68, plus material in Engineering Sciences 31. Those considering graduate school should take many of these courses. Less emphasis is placed on material in Computer Science 44, 52, and 78, and the various advanced topics covered in Computer Science 85 and 88 (although advanced topics are very good preparation for graduate study). Material from mathematics courses related to computer science, such as those fulfilling requirement 6 of the Computer Science major, 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.

A modified major with Computer Science as the primary part must satisfy the first three requirements of the Computer Science major, one of requirements 4 and 5, and both of requirements 7 and 8. Students should discuss their plans with the Department’s Undergraduate Advisor to ensure a coherent major.

A modified major with Computer Science as the secondary part normally contains Computer Science 23, 25, and 37, and must contain at least two of these courses.

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 5, 8, 19 (Mathematics 19 may substitute for Computer Science 19); Mathematics 3, 8, 13; and Physics 13, 14. The requirements are as follows:

1. Computer Science 23;

2. Computer Science 25;

3. Computer Science 37;

4. One of Computer Science 39, 58, or 78;

5. Two other Computer Science courses numbered from 33 to 88, but not 42, 47 (which is identical to requirement 7—Engineering Sciences 31), or 72. These may include 39, 58, or 78 if not used to satisfy requirement 4;

6. Engineering Sciences 22;

7. Engineering Sciences 31;

8. Engineering Sciences 62 or 63;

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

10. Computer Science Culminating Experience Course (two terms of Computer Science 98) or Thesis (Computer Science 97).

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 5, 8, 19. (Mathematics 19 may substitute for Computer Science 19.) The requirements are as follows:

1. Computer Science 23;

2. Computer Science 25;

3. Computer Science 37;

4. Computer Science 52;

5. Two of the following:

a) Computer Science 39;

b) Computer Science 58 or 78 (but not both);

c) Computer Science 36;

d) Computer Science 82;

6. Computer Science 22;

7. Computer Science 32;

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

9. Computer Science Culminating Experience Course (two terms of Computer Science 98) or Thesis (Computer Science 97).

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. Completion of a course of study that includes:

(a) Computer Science 105, 107, 108.

(b) Two of Computer Science 104, 106, and 109. If 109 is not taken then Computer Science 39 must be taken, unless the departmental advisor to Ph.D. students certifies that the student has taken an equivalent course elsewhere.

(c) Five additional courses, which may be chosen from Computer Science courses numbered between 100 and 199 and the courses Computer Science 33, 38, 52, 54, and 78 taken for graduate credit (which involves additional work not required of undergraduates). These can include whichever of Computer Science 104, 106, and 109 is not used to satisfy requirement (b) above. At most two of these courses can be numbered below 100.

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

3. 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 paper is selected in the area of Computer Science that the student chooses to be examined in. 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 repeats this exam until he/she eventually passes the exam. In each 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 5 below). For more details on this exam, consult the Computer Science department web page.

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

5. Each student must display readiness for research in one area by giving a written and a public oral presentation of his/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.

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

7. 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 181-188). 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 181-188). 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 the Graduate Student Handbook, “three faculty members from the student’s department/program (including the dissertation advisor). One of the three may be from outside the department/program, but this is not a requirement.”

(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, 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. 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.