The course is organized around the following themes:
Weeks 1-4
Weeks 5-7
Weeks 8-10
Weeks 11-14
Inductive definitions
Functions
Beyond induction
Languages and Computation
In this course, there will be two types of lectures:
Problem solving lectures are listed below with a blue
background. They will look at Computer Science problems from a
mathematical perspective, emphasizing an abstract, logical,
understanding of problems and solutions. You will not see a single
line of code in these lectures.
Each problem solving lecture is followed by a
problem solving recitation (in light blue) dedicated to
reinforcing the introduced concepts through exercises.
Programming techniques lectures are listed with a green
background. They serve two purposes: first they introduce some
advanced, but language-independent, programming concepts (e.g.,
polymorphism and modularity); second they expose you to a
non-imperative programming language, currently ML. Here, we will use
the abstract problem solving techniques you have learned in the blue
lectures and the advanced programming concepts to solve real problems.
Each programming techniques lecture is
followed by a programming techniques recitation (in light
green) dedicated to reinforcing the introduced concepts through
exercises.