Week | Topics | Lecture | Tutorial |
---|---|---|---|
1 | Introduction to Programming Languages concepts Introduction to Scheme: variables, procedures, evaluation |
no tutorial held | |
2 | Evaluating programming languages Basic Scheme: procedures, variables, conditionals, predicates |
Exercises | |
3 | Scheme: lists (cons, car, cdr), higher-order functions (apply, map, for-each) | Exercises | |
4 | Scheme: symbols, quoting, recursion, trees | Exercises | |
5 | Scheme: closures, mutations (set!), iteration, macros (define-syntax) | Notes | Exercises |
6 | Scheme: symbolic list processing, pattern matching, named let, continuations | Notes | Exercises |
-- | Reading week - no class | ||
7 | Midterm Test Scheme: continuations, cooperative multitasking |
Notes | Exercises |
8 | Typing, C++ generics | Notes | Intro to C++ |
9 | Objects, polymorphism | Exercises (C++) | |
10 | Type inference, unification
(ML examples) Introduction to Prolog (Prolog example) |
Notes | Intro to Prolog |
11 | Prolog: resolution trees, continuation, cuts | Notes | Exercises |
12 | Grammars (BNF), syntax specification | Notes | Exercises |
13 | Other PL concepts: garbage collection, passing parameters, exceptions Final review |
Notes | no tutorial held |
-- | Final exams -- April 17-29 -- check exam schedule |
Resources to supplement lectures and tutorials, or to use as reference, are listed on the Resources page. A number of resources are also in the reserve section of the library.
Tutorials tend to include several exercises, which you are encouraged to try yourself and understand. Try writing code for each question, and then reading the answer/discussion in the tutorial notes.
|