The course is organized around the following themes:
In this course, there will be three types of class periods:
-
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 rarely see a
line of code in these lectures.
-
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
functional programming language, Standard 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.
-
Lab sessions are listed with a gray background. Labs
have the purpose of reinforcing the notions introduced in
lecture. You will be given a series of practice exercises that you
will solve in class. Most will be programming exercises, but there
will occasionally be paper-based exercises. The instructor and TA
will be there to provide assistance. Each lab has a threshold: you
get 1 point if you reach this threshold, and 0 points otherwise. If
you are done early you can either leave, or ask for additional
exercises. Lab attendance is mandatory.