Collaborative Content

By taking this course, you will learn how to participate in interdisciplinary collaborations that depend on the techniques and results of computer science. Over the course, we will develop three important kinds of programs through hands-on case studies: an interpreter for a programming language; a web interface to a database; and a reinforcement-learning agent capable of perception, deliberation and action. We'll also present some of the theoretical background computer scientists use to understand such programs precisely - including representation, complexity, and computability - and introduce the history and culture of the field.

Course Information



Technical Discussion

Lecture 1 Quotes

Lecture 2 Quotes

Lecture 3 Quotes

Lecture 4 Quotes

Lecture 5 Quotes

Lecture 6 Quotes

Lecture 12 Quotes

Practice exercises on lists and structures

Practice with interpreters and state

Benchmark problems on production rules (first part posted)

Additional Resources

Get started with Scheme

external link: The DrScheme environment

Visualize computational mechanisms

external link: Finite state automata

external link: Turing machines

external link: Digital circuitry

Sample Programs

Sample web applications from class and recitation

A web site that asks for input, saves it, and summarizes it

Sample algorithm code

Learning example