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