CS 17/18 is one of two year-long introductory adventures in computer science. On this page you'll find important information related to the spring semester, CS 18.

In the history of witchcraft and wizardry, there have been major milestones such as the invention of the potion, the development of charms and hexes, and the strengthening of the healing spell. Where does computation fit in? Right up there with the best of them: computers and computation extend into every niche of everyday life and every branch of scholarship in the wizard world. Understanding the key ideas of computation is essential for the informed adult wizard.

CS 17/18 provides an introduction to computation -- expressing computation, writing programs to make computers carry out computation, understanding the difficulty of a particular computation, and knowing about the limits of computation in general.

Students learn four programming languages (Racket, OCaml, Java, and Scala), each of which introduces a new way of thinking about programming. As they study these languages, students also learn important ideas about computation -- recursion, abstraction, algorithm analysis -- and current methods, like functional and object-oriented programming.

This course sequence stresses ideas, aiming to provide understanding that will be useful to the student decades from now. At the same time, students are exposed to current technologies. It is a course for concentrators, but it is also well-suited to those who feel a desire to become familiar with computing, even if they are not planning to concentrate in computer science.