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 continue to do so.
We offer three courses that can be a student's first course in computer science:
- COMPSCI 94 - offered in the Fall semesters (offered this Fall 2026)
- COMPSCI 101 - offered in the Fall and Spring semesters (offered this Fall 2026)
- COMPSCI 201 - offered in the Fall and Spring semesters (offered this Fall 2026)
Interested in obtaining a background in computer science, exploring the possibility of a major or minor, or simply wanting to understand the field?
If so, take either COMPSCI 101 or COMPSCI 102. Neither of these courses requires any previous programming experience or understanding of computer science, and both are taught with Python.
COMPSCI 101 is a typical Introduction to Computer Science. While COMPSCI 102 is an interdisciplinary version of COMPSCI 101 that combines computer science with three other disciplines: neuroscience, psychology/affective computing, and digital humanities.
Both COMPSCI 101 and COMPSCI 102 have an associated lab. COMPSCI 101, COMPSCI 102, or AP Computer Science A will prepare students for COMPSCI 201.
Alternatively, taking COMPSCI 94 as your first course allows you to explore computer science for the first time at a slower pace and in the context of animation. If you like COMPSCI 94 and would like to go further, you could then take one of our COMPSCI 100-level* courses.
COMPSCI 94 - Intro to Programming via Animation and Virtual Worlds
This course meets twice a week and students create an animation in each lecture. This course is a slower introduction to programming than the 100-level courses. If a student wants to continue in computer science then they would need to take one of the 100-level programming courses next.
Course Description:
COMPSCI 94 is an introductory programming course that teaches fundamental computer science concepts. This version of COMPSCI 94 uses the tool Alice to create 3-D virtual worlds. You will learn programming constructs such as repetition (calculating how many steps a person needs to walk to their car), selection (deciding which animal is the tallest), and organizing data (grouping penguins to waddle together), along with how to control objects (raise hands, flap wings, move, turn, spin, walk, etc.). No previous programming experience required.
COMPSCI 101 - Intro to Computer Science
We currently use the Python programming language in this course. There is a required 75-minute lab associated with COMPSCI 101.
Course Description:
Introduction to the practices and principles of computer science and programming and their impact on and potential to change the world. Algorithmic, problem-solving, and programming techniques in domains such as art, data visualization, mathematics, natural and social sciences. Programming using high-level languages and design techniques emphasizing abstraction, encapsulation, and problem decomposition. Design, implementation, testing, and analysis of algorithms and programs. No previous programming experience required.
Students with credit via the AP CS A exam can get credit for COMPSCI 101 and take COMPSCI 201.
Students without AP credit, but with experience in programming and Computer Science, can talk to the Director of Undergraduate Studies (DUS) about whether taking COMPSCI 201 as the first course is appropriate. We recommend COMPSCI 201 for those students with a year or more of formal study of computer science or programming who are contemplating further study in computer science.
COMPSCI 201 - Intro to Data Structures & Algorithms
There is a mandatory 75-minute discussion section associated with this course. We currently use the Java programming language in this course.
Course Description:
Analysis, use, and design of data structures and algorithms using an object-oriented language like Java to solve computational problems. Emphasis on abstraction including interfaces and abstract data types for lists, trees, sets, tables/maps, and graphs. Implementation and evaluation of programming techniques including recursion. Intuitive and rigorous analysis of algorithms. Prerequisite: COMPSCI 101, COMPSCI 102, COMPSCI 103, AP Computer Science A, OR some prior programming experience.
Questions?
If you still have questions about which course is right for you, email the Computer Science Director of Undergraduate Studies (DUS) at dus@cs.duke.edu.