The Major

The Computer Science major is comprehensive, from theory to applications to system-building. We teach not just how to program, but how to approach problems computationally, and how to devise appropriate solutions. 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.

Students wishing to devote two or more courses to the study of Computer Science should begin with the two prerequisites, COSC 1 and COSC 10

Prerequisites

COSC 1 - Introduction to Programming and Computation

The first prerequisite course for the Computer Science major is Computer Science 1. 

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.

Prerequisites

COSC 10 - Problem Solving via Object-Oriented Programming

The second prerequisite course for the Computer Science major is Computer Science 10. 

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.

Major

Requirements

The standard Computer Science major requires the following courses after the prerequisites:

  • 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 course from 30-89)
  • A culminating experience (either a senior thesis or COSC 98)

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

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