Computer Science - Undergraduate
Chair: Devin Balkcom
Professors D. Balkcom, S. L. Bratus, A. Breuer, A. T. Campbell, M. Casey, A. Chakrabarti, D. Chakrabarty, H. Chang, H. Farid, C. Hauser, W. Jarosz, P. Jayanti, S. Jayanti, S. Jin, K. Kim, D. F. Kotz, A. Pediredla, B. Plancher, S. Preum, A. Quattrini Li, D. Rockmore, S. Shan, N. Singh, S. W. Smith, Y-W. Tai, S. Vosoughi, T. Vu, P. Winkler, Y. Yan, Y. Yang; Research Professors L. Loeb, T. Pierson, O. Saydjari; Lecturers J. Brady, Y.C. Huang, V. Kommineni, J. Mahoney, C. Preston, K. Salesin, T. Tregubov; Adjunct Professors J. Bell, I. Bhattacharya, H. Chang, P. Chin, R. Coto Solano, G. Cybenko, J. Gui, Y. Halchenko, S. Hassanpour, N. Jacobson, K. Keller, I. Khayal, D. Kraemer, M. D. McIlroy, E. Murnane, J. O'Malley, E. Santos, L. Song, T. Thesen, O. Zhaxybayeva.
To view the Computer Science Undergraduate courses, click here.
To view the Computer Science Graduate requirements, click here.
To view the Computer Science Graduate courses, click here.
Learning Objective/Mission Statement
Computer Science is fundamentally about problem-solving. As a CS major, you learn to tackle complex challenges by understanding the mathematical underpinnings of a problem and the engineering required to build a solution that is scalable, reliable, secure, and easy to use. You will learn how to use mathematical tools to model real-world data, gain a deep understanding of how software interacts with hardware, and how to choose the right implementation approach for any given task. Our graduates design, implement, and analyze the reliable systems that run our world—from the underlying software that powers our devices to envisioning the next generation of paradigms, such as artificial intelligence and quantum computing, that shape how we live, work, and communicate.
IMPORTANT INFORMATION FOR ACADEMIC YEAR 2026-2027
For the academic year 2026-27, the following courses named below will be offered with a different set of numbers which were used in the previous few years:
This paragraph will be removed from the ORC once the courses are renumbered. Please refer to our website for more information: https://web.cs.dartmouth.edu/undergraduate/undergraduate-courses
Introductory Courses
Students wishing to devote one course to the study of Computer Science may choose COSC 1 or COSC 2, depending on their background and interests. Students wishing to devote two or more courses to the study of Computer Science should begin with COSC 1 and COSC 3. Students wishing to take courses in Digital Arts should start by taking COSC 1 or COSC 2. ENGS 20 may substitute for COSC 1 in any program of study.
Undergraduate Courses
Computer Science undergraduate courses are numbered as follows:
1–9: Introductory and non-major courses.
10–19: Core Courses in Computer Science.
30–49: Advanced courses in algorithmic foundations.
50–69: Advanced courses in systems, software and hardware.
70–89: Advanced courses in applied computer science.
90–99: Independent Study courses and culminating experience courses.
Wherever COSC 1 is listed as a prerequisite, it may be replaced by ENGS 20, or placed out of either via the Computer Science Advanced Placement examination or a local placement examination.
Core Courses
Courses numbered COSC 10 to COSC 19 are core courses that teach the fundamental principles of computer science. All majors and modified majors with CS as the primary part must take the six core courses COSC 10 , COSC 11, COSC 12, COSC 14, COSC 15, and COSC 17. All elective courses (see below) will have one or more core courses as a prerequisite.
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. Any lecture-based graduate course (as determined by the Department Undergraduate Advisor) in Computer Science (courses numbered above 100 or higher) 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. With the approval of the Departmental Undergraduate Advisor, majors, but not minors or modified majors, may substitute a reading course (COSC 94) for an elective course; at most one COSC 94 substitution may be made.
Placing out of Core Courses
In some rare and exceptional circumstances, a student may place out of one or more of the above core courses via an administered exam. In that case, the student will have to take an equivalent number of advanced elective courses so that they pass at least the required number of CS courses among the core and elective ones. In particular,
●If a student places out of COSC 10, then they will have to take one extra elective course in the COSC 30-89 range.
●If a student places out of COSC 11 or/and COSC 12, then they will be required to take one/two extra elective courses in the COSC 30-49 range.
●If a student places out of COSC 14 or/and COSC 15, then they will be required to take one/two extra elective courses in the COSC 50-69 range.
●If a student places out of COSC 17, then they will be required to take one extra elective course in the COSC 70-89 range.
Computer Science Culminating Experience
Students must choose from one of three options:
Option 1) two consecutive terms of COSC 98.
Option 2) two consecutive terms of COSC 99 (Thesis Research). A written thesis is required for thesis research, the Honors program, or the High Honors program.
Option 3) two additional advanced topics courses. Eligible courses include courses in the ranges 49.01 through 49.99, 69.01 through 69.99, and 89.01 through 89.99. Each such course will include components in the faculty member’s area of research expertise, and will give the opportunity to students to engage with current research. These two courses will be taken only after all the core courses (see ‘Core Courses’) have been taken, unless an exception is approved by the departmental major advisor. These two courses are in addition to the courses used to satisfy the other requirements of the major, and cannot be used to satisfy any other major requirements.
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: COSC 1 or ENGS 20; MATH 8 or MATH 9 or MATH 11 or MATH 13
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 twelve courses in addition to passing the two prerequisite courses. These courses are
- Six core courses: (see `Core Courses’ above);
- Four elective courses: (see ‘Elective Courses’ above);
- Two courses for a culminating experience, as described above.
In the rare and exceptional case a student places out of a core course, then they will need to take an elective course so that they pass at least twelve CS courses among the core and elective ones (see ‘Placing out of Core Courses’ above)
Minors in Computer Science
The Computer Science minor is 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 in Computer Science can be obtained through the Departmental Undergraduate Advisor. Approval of a minor in Digital Arts can be obtained through the Director of the Digital Arts Minor.
I. Computer Science.
Prerequisites: COSC 1 or ENGS 20; MATH 8 or MATH 9 or MATH 11 or MATH 13
Courses: COSC 10 ; and any four other courses drawn from at least two of the following three sets: COSC 11,12,30-49; COSC 14,15,50-69; COSC 17,70-89
In the rare and exceptional case a student places out of a core course, then they will need to take an elective course so that they pass at least six CS courses among the core and elective ones (see ‘Placing out of Core Courses’ above)
II. Digital Arts
Prerequisites: COSC 1, COSC 2, or ENGS 20.
Courses: Any three CSDA courses plus two from the following list: FILM 30, FILM 31, FILM 32, FILM 35, FILM 36, FILM 38, FILM 39, FILM 51, MUS 14, MUS 34, SART 15, SART 16, SART 20, SART 21, SART 22, SART 23, SART 25, SART 29, SART 30, SART 31, SART 65, SART 66, ENGS 12, ENGS 75, THEA 26, THEA 27, THEA 30, THEA 31, THEA 34, THEA 42, THEA 43, THEA 44, THEA 45, CSDA 29, COSC 77, COSC 83. No more than one of the two courses may be COSC. Additional courses may be counted towards the Digital Arts Minor with permission of the Advisor.
The Honors Program in Computer Science
To be eligible for departmental Honors or High Honors, a student must:
- Have an overall GPA of at least 3.33 and a GPA of at least 3.33 in the major, both at the time of graduation;
- Have an average grade of at least B+ in COSC 98 or 99;
- Complete a written thesis; and
- Meet College requirements for Honors, presented in the Regulations section of this catalog.
The GPA in the major is determined as follows: course prerequisites to the major are not counted, COSC 98, COSC 99 are not counted, but all other courses used as part of the major (which might include courses in other departments) are counted.
The written thesis is typically completed as part of the requirements for COSC 99 (Thesis Research), but at the recommendation of the instructor for COSC 98, students doing work in COSC 98 with a substantial independent component may also complete a written thesis based on that work. The subject of the thesis is often motivated by the content of an advanced course of the student's major, though a variety of activities can lead to a thesis. Student suggestions for theses are welcome. A student interested in pursuing thesis research should consult with their prospective adviser and get their approval for the thesis advising arrangement, along with the approval of the Departmental Undergraduate Advisor before enrolling in COSC 99.
Honors are awarded only if the work is of high quality and was done substantially independently. High Honors additionally requires presentation to a thesis committee of three CS faculty members and the work should be deemed publishable or, if it is a project, useful. The recommendation of the thesis adviser to award Honors or High Honors must be ratified by a departmental vote.
Modified Majors
Many students have created modified majors with Computer Science being either the primary or the secondary part. Particularly common modified majors are 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 Undergraduate Program Director to ensure a coherent major.
Prerequisites: COSC 1 or ENGS 20; MATH 8 or MATH 9 or MATH 11 or MATH 13
Requirements: Along with at least four modifying courses, as approved by the Departmental Undergraduate Advisor, the requirements are as follows:
- COSC 10, COSC 11, COSC 12, COSC 14, COSC 15, COSC 17
- Computer Science Culminating Experience: (see ‘Computer Science Culminating Experience’ above)
In the rare and exceptional case a student places out of a core course, then they will need to take an elective course so that they pass at least six CS courses among the core and elective ones (see ‘Placing out of Core Courses’ above)
Modified Major with Computer Science as the Secondary Part
Prerequisites: COSC 1 or ENGS 20; MATH 8 or MATH 9 or MATH 11 or MATH 13
Requirements: COSC 10; any three courses either core or elective that complement the primary part of the modified major, subject to the approval of the Departmental Undergraduate Advisor.
Modified Major with Digital Arts as the Secondary Part
Prerequisites: COSC 1 or COSC 2, or ENGS 20.
Requirements: Any three courses between CSDA 20 and CSDA 29. Consultation with the DA Advisor is recommended for choosing three courses that build on each other. Two other courses, at most one of which is COSC/CSDA, from the following list of approved additional courses for the Digital Arts Minor: FILM 30, FILM 31, FILM 32, FILM 35, FILM 36, FILM 38, FILM 39, FILM 51, MUS 14, MUS 34, SART 15, SART 16, SART 20, SART 21, SART 22, SART 23, SART 25, SART 29, SART 30, SART 31, SART 65, SART 66, ENGS 12, ENGS 75, THEA 26, THEA 27, THEA 30, THEA 31, THEA 34, THEA 42, THEA 43, THEA 44, THEA 45, CSDA 20, CSDA 22, CSDA 23.01, CSDA 24, CSDA 25.01, CSDA 25.02, CSDA 29, COSC 77, COSC 83. If students aren't counting them as one of the courses in Section 2 above, students can take CSDA 23.01 or CSDA 24 as one of the courses meeting this requirement. Use of other courses towards the Digital Arts Minor requires the approval of the Director of the Digital Arts Minor.
The Computer Science Major Modified with Engineering Sciences
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 COSC 1 or ENGS 20; MATH 8, MATH 13; and PHYS 13, PHYS 14. The requirements are as follows:
- Six Core Courses: COSC 10, COSC 11, COSC 12, COSC 14, COSC 15, COSC 17
- ENGS 22;
- ENGS 31;
- ENGS 62;
- ENGS 26, ENGS 32, ENGS 61, ENGS 62, or ENGS 91.
- Computer Science culminating experience: either two consecutive terms of COSC 98, or two terms of COSC 99 (Thesis Research). A written thesis is required for thesis research, the Honors program, or the High Honors program.
In the rare and exceptional case a student places out of a core course, then they will need to take an elective course so that they pass at least six CS courses among the core and elective ones (see ‘Placing out of Core Courses’ above)
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 COSC 1 or ENGS 20; and COSC 10;. The requirements are as follows:
CS Portion:
Prerequisites: COSC 1 or ENGS 20; MATH 8 or MATH 9 or MATH 11 or MATH 13
Requirements:
- COSC 10
- COSC 11 and COSC 12; or COSC 14 and COSC 15
- COSC 17
- Computer Science Breadth: Two additional computer science courses: one numbered from 30-69, and one numbered from 71-89;
- Visual computing courses: Two from COSC: 73, 77, 87, 89.18, 89.19, 89.22. With the approval of the Digital Arts Advisor, other courses in the range COSC 70 to 89 related to visual computing may be substituted;
- Computer Science culminating experience, as described above.
Digital Arts Portion
- Any three CSDA courses
- Digital Arts electives: One Digital Arts elective outside the Computer Science department, listed above as additional courses under the description of the Digital Arts Minor;
In the rare and exceptional case a student places out of a core course, then they will need to take an elective course so that they pass at least six CS courses among the core and elective ones (see ‘Placing out of Core Courses’ above)