Click here for the course schedules, including the current semester.

We offer a variety of introductory classes for students with different interests and preparation. The class that exposes students to the heart of the discipline and is a gateway to all advanced classes is CS111: Computer Programming and Problem Solving, which introduces students to Python programming and more importantly, the big ideas that run through the rest of the curriculum.

Students seeking a broader exposure to the fundamental concepts of computer science may be interested in CS110: Computers and the Internet, or in CS114: The Socio-Techno Web.

Students who want a good command of tools necessary to use computers in scientific and other quantitative work should consider CS112: Computation in the Sciences, which introduces the MATLAB programming language.

Students interested in exploring programming and the big ideas of computer science through the creation of apps for mobile devices should consider CS117: Inventing Mobile Apps.

None of CS110, CS111CS112CS114 or CS117 has any prerequisites, but all assume a basic familiarity with using computers as tools. You should consult our guide for Choosing an Introductory CS Course for more information (and feel free to talk to a faculty member about your options!).

Intermediate courses cover data structures, which are the foundation of algorithms, and machine organization, which is the key to understanding how computers work.

Advanced courses explore the topics that form the core of Computer Science: algorithms, computer architecture, programming languages, compiler design, artificial intelligence, computer vision, operating systems, parallel systems, databases, networks, security, multimedia, computer graphics, and computer science theory.