The Major

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.

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 1COSC 10, and COSC 11. Students wishing to take courses in Digital Arts should start by taking COSC 1 or COSC 2ENGS 20 may substitute for COSC 1 in any program of study.

Major

Prerequisites

  1. Computer Science 1: Introduction to Programming and Computation

    This course introduces computational concepts that are fundamental to computer science and are useful for the sciences, social sciences, engineering, and digital arts. Students will write their own interactive programs to analyze data, process text, draw graphics, manipulate images, and simulate physical systems. Problem decomposition, program efficiency, and good programming style are emphasized throughout the course. No prior programming experience is assumed.

    ENGS 20 may substitute for COSC 1, though we recommend COSC 1 for students planning to take Computer Science 10.

  2. Computer Science 10: Problem Solving via Object-Oriented Programming

    Motivated by problems that arise in a variety of disciplines, this course examines concepts and develops skills in solving computational problems. Topics covered include abstraction (how to hide details), modularity (how to decompose problems), data structures (how to efficiently organize data), and algorithms (procedures for solving problems). Laboratory assignments are implemented using object-oriented programming techniques.

  3. Computer Science 11: Foundations of Applied Computer Science

    This course introduces core computational and mathematical techniques for data analysis and physical modeling, foundational to applications including computational biology, computer vision, graphics, machine learning, and robotics. The approaches covered include modeling and optimizing both linear and nonlinear systems, representing and computing with uncertainty, analyzing multi-dimensional data, and sampling from complex domains. The techniques are both grounded in mathematical principles and practically applied to problems from a broad range of areas. 

    MATH 22 or MATH 24 may substitute for COSC 11

Major

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:

  • Two theory or algorithms courses (30-49)
  • Two systems or hardware courses (50-69)
  • Two applied computer science courses (70-89)
  • Three elective courses (drawn from 30-89, and with approval from the Undergraduate Advisor, one Mathematics course or one term of COSC 94 may substitute for one elective course)
  • A culminating experience: either two 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.

You have the flexibility to construct the Computer Science major however you wish from the above requirements, though you need to make sure that you've taken the prerequisites for each course.

Complete information about the Computer Science major requirements can be found in the online ORC.

Course Categorization

Undergraduate Courses

Computer Science undergraduate courses are numbered as follows:

  • 1–19: Introductory and non-major courses
  • 20–29: Digital arts
  • 30–49: Theory and algorithms
  • 50–69: Systems and hardware
  • 70–89: Applied computer science
  • 90–99: Reading and culminating experience

Wherever COSC 1 is listed as a prerequisite, it may be replaced by ENGS 20 or by credit (for the classes of 2017 and earlier) and placement (for all classes) from either the Computer Science Advanced Placement examination or a local placement examination.

A full list of undergraduate Computer Science courses appears in the online ORC.

Off-Campus Credit Opportunities

Transfer Term at AIT-Budapest

Although the Department of Computer Science does not offer an off-campus program, a few of our undergraduates have taken a transfer term, usually in the fall, at AIT-Budapest and received transfer credit for some of the AIT courses. If you are interested in AIT-Budapest, please see Professor Cormen. Below is a list of relevant AIT courses and the (approximate) corresponding Dartmouth course. Note that each transfer credit request must be approved by the appropriate department.

AIT Course Title Our Equivalent
Advanced Applications
Applied Cryptography COSC 69
Mobile Software Development COSC 65
Structure and Dynamics of Complex Networks MATH 76
Creative Design and Entrepreneurship
Design Workshop COSC 29
User Interface Design COSC 67
Foundational Courses in Computer Science
Algorithms and Data Structures COSC 31
Combinatorial Optimization COSC 84
Computer Graphics COSC 77
Data Mining 1: Models and Algorithms + Data Mining 2: Applications COSC 74
Graph Theory MATH 38
Quantum Probability and Quantum Logic PHYS 75
Semantic and Declarative Technologies COSC 69
Theory of Computing COSC 39