Computer Science offers incredible opportunities as both a field of study and as a foundation for continued work in academic and professional areas. Computation and Computer Science are helping to change nearly all aspects of the world we live in including science, business, society, communication, the humanities and social sciences. Students who have taken computer science courses at Duke have helped change the world and are continuing to do so.
Computer Science Majors
The Computer Science department revised its major requirements for the class entering in 2012, but these new requirements can be used by any student at Duke.
Both the AB and BS degrees require a core of five courses for which the prerequisite is Compsci 101. Our Compsci 101 course is an introduction to Computer Science that uses programming in Python as a foundation for understanding Computer Science and the huge impact it has on society, science, and the world. No previous programming experience or familiarity with computer science is required of students enrolling in Compsci 101.
The five-course core is Compsci 201 (Data Structures and Algorithms), Compsci 230 (Discrete Math for Computer Science), Compsci 250 (Computer Organization), Compsci 310 (Introduction to Systems) and Compsci 330 (Design and Analysis of Algorithms).
Compsci 201 should be taken as the first course in the core. Subsequently the core courses have a paired sequence structure of (250,310) --- 250 then 310; and (230,330) --- 230 then 330. But the order in which these pairs is taken doesn't matter, so you can enroll in either 250 or 230 or both before taking the next course in each paired sequence.
For the BS degree students must take one statistics course at or above Stat 111; and one Math course from Math 202, Math 216 or Math 221.
After the core the AB degree requires three electives and the BS degree requires five electives. For the AB one of the electives must be a course in Computer Science that is not an independent study course whereas for the BS degree there are three such electives. The other electives can be from Computer Science, Mathematics, Statistics, or courses approved by the Director of Undergraduate Studies. Such courses typically include courses that have a rich computational or quantitative component to them, students have had courses in Economics, Arts of the Moving Image, Engineering, Physics, and other departments approved as electives.
A First Course in Computer Science
Students interested in a background in Computer Science typically choose Compsci 101 as the first course. Students with credit via the AP exam can get credit for Compsci 101 and take Compsci 201. Students without AP credit, but with extensive experience in Computer Science, can talk to the Director of Undergraduate studies about whether taking Compsci 201 as the first course is appropriate. It's often possible for students with extensive experience to take Compsci 201 without getting credit for Compsci 101. Occasionally students with deep and extraordinary experience can place out of Compsci 201. This requires a conversation with the Director of Undergraduate Studies, completion of a large programming project in Java, and demonstration of understanding aspects of algorithm analysis that typically are beyond what students cover in most high school courses.