Starting in Computer Science

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 five courses that can be a student's first course in computer science:

  1. COMPSCI 94 - (two versions) offered in the Fall and Spring semesters
  2. COMPSCI 101 - offered in the Fall and Spring semesters
  3. COMPSCI 116 - offered in the Fall semester
  4. COMPSCI 201 - offered in the Fall and Spring semesters

Interested in a background in Computer Science, exploring the possibility of a major, minor, or simply wanting to understand the field? If so, pick one: COMPSCI 101, 102, or 116. None of these courses requires any previous programming experience or understanding of computer science, and all are taught with Python.

COMPSCI 101 is a typical introduction to computer science. COMPSCI 102 is an interdisciplinary version of COMPSCI 101 which combines computer science with three disciplines: neuroscience, psychology/affective computing, and digital humanities. COMPSCI 116 is an introduction to data science.

Both 101 and 102 have an associated lab; 116 does not. COMPSCI 101, 102, 116 or AP Computer Science A will prepare students for COMPSCI 201.

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 want to do more, you could then take one of our COMPSCI 100 level courses.

Note: COMPSCI 110 is a course on Information, Society and Culture that is cross-listed in computer science and does not prepare students for COMPSCI 201. It is not an introductory programming course and does not have a QS attribute.

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 94 - A Gentle Introduction to Creating Mobile Apps

This course meets twice a week and students create an a mobile application 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: 
This course explores the creation of apps for mobile devices. Students will learn how to access the world of mobile services and applications as creators, not just consumers. They will learn to create entertaining and socially useful apps that can be shared with friends and family. In addition to learning to program and how to become better problem solvers, students will also explore the exciting big ideas of computer science from the perspective of mobile computing and its increasingly important effect on society. We will utilize MIT’s open source App Inventor 2 visual programming environment which enables even novice student programmers to create powerful mobile applications that interact with the web and with other phones.
Note: COMPSCI 94 is for students with no previous programming experience. It is a gentle introduction to programming in the context of making your own smartphone apps, and we will learn everything you need to know in class. Students who have taken another CS course or have programming experience should consider taking another CS course.  Prerequisites: None-- you are expected to know nothing about programming computers or mobile phones.

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 about whether taking COMPSCI 201 as the first course is appropriate. Students with a full course of programming in high school, regardless of whether the course is an AP course, succeed and thrive in COMPSCI 201 — it's often a better course than 101 for those with programming experience. 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 116 - Foundations of Data Science

COMPSCI 116 is an introduction to data science using Python. The course meets twice a week with students working in teams to solve structured data-driven problems in class. This course will prepare you to take COMPSCI 201 or 216.

Course Description:
Given data arising from some real-world phenomenon, how does one turn that data into knowledge and that knowledge into action? Students will learn critical concepts and skills in computer programming and statistical inference in the process of conducting an analysis of real-world datasets. The course will be data and project driven. In completing projects, students will consider where data comes from, what it represents, what it does not, what the analyses mean, and how to relate this understanding to the deluge of data and analytics they encounter every day. Students will write computer programs for projects using the Python programming language. The course utilizes a structured form of small group learning that emphasizes student preparation out of class and application of knowledge in class. Topics include Visualization, Simulation, Testing Hypothesis, Sampling, Estimation, Prediction. No prior programming experience or statistics coursework is required.

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, 102, 103, 116 or AP CS A, or some prior programming experience.

Which Course?

If you have questions about which course is right for you, email the Computer Science Directors of Undergraduate Studies.