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.
Practice exercises on lists and structures
Practice with interpreters and state
Benchmark problems on production rules (first part posted)
Sample web applications from class and recitation
A web site that asks for input, saves it, and summarizes it
Sample algorithm code
Learning example