Guide for First-Year Students

We offer five courses in 2018-2019 that can be a student's first course in computer science: Compsci 94, 101, 103, 116, and 201. Compsci 101 and 201 are offered in the fall and the spring. Compsci 94 and 116 are offered in the fall. Compsci 103 is typically offered in the spring.

Students interested in a background in Computer Science, exploring the possibility of a major, minor, or simply wanting to understand the field typically choose Compsci 101 as the first course. No previous programming experience or understanding of computer science is required.

CompiSci 103 is a version of CompSci 101 that focuses on Neuroscience. CompSci 116 is a version of CompSci 101 that focuses on Data Science. CompSci 101, 103 or 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 101

There is a mandatory 75 minute lab associated with this course. We currently use the Python programming language Python 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 at 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 201

There is a mandatory 75 minute lab associated with this course. We currently use the Java programming language Java 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, 103, 116 or AP CS A, or some prior programming experience.

Compsci 94

Introduction 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 103 - Computing and the Brain

Compsci 103 is a version of CompSci 101 that explores the concepts from CompSci 101 in the context of Neuroscience. There is a required lab associated with Compsci 103.

Course Description:

Introductory programming based on problems in neuroscience. Provides foundational skills for using computers to collect and analyze neuroscience data. Study of how computational processes are implemented by information-processing entities: both brains and computers. Python programming to generate sensory stimuli and collect/analyze behavioral and neural data. Scientific and Software Engineering best practices for conducting and verifying neuroscience experiments. Not open to students who have taken Computer Science 101. Prerequisite: Neuroscience 101/Psychology 106 or Neuroscience 102/Psychology 107.

Compsci 116 - Foundations of Data Science

CompSci 116 is an introduction to data science. 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.

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

Which Course?

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