Course Offerings

Introductory and advanced topics

Introduction to CS 2: Algorithms and Application

Embark on a deeper exploration of computer science, where the focus shifts from programming and foundations of computer science, to the intricacies of algorithms and their real-world applications. This course reinforces and builds upon the concepts introduced in Introduction to CS 1, and provides an introduction to algorithm design, data analysis, and the practical application of computational techniques.

Computability and Logic

This is not your typical class in computer science, or in formal logic; but you will learn a lot about both by taking it. Our subject will be one of the most important and influential papers that has ever been written—“On Computable Numbers, with an Application to the Entscheidungsproblem,” by Alan Turing. This is the paper that birthed computer science as a discipline. Understanding it requires that you be comfortable with some mathematical concepts (powers and roots) and with thinking abstractly; but the most important prerequisite for understanding this paper is determination. What is the best way to characterize Turing’s paper? Simple. It changed the world.

AI and Ethics

If you had a robot who always tied your shoes for you, would you ever have learned how to tie your shoes yourself? What about if that same agent did all your arithmetic and all your writing, and eventually shaped all your decisions? The promise of AI is fraught with ethical questions that strike at the very heart of what it means to be human and to act as a moral agent in society. It reveals a fundamental tension between what AI can do and what AI should do. In the modern world, that tension is growing.