Lecture Notes

Notes (handout) Notes (overhead presentation) Resources
History History N/A
Functional programming Functional programming functional programming 1
Imperative models Imperative models  
Logic programming Logic programming logic programming 2
Scanning and parsing Scanning and parsing scanning and parsing
Semantic analysis Semantic analysis semantic analysis
Types and classes Types and classes types and classes
Subprograms Subprograms subprograms
Pointers, references, and memory management Pointers, references, and memory management pointers

Lecture recording

My lectures are recorded, as follows:

There are two videos for each recorded lecture, one featuring the camera feed and the other featuring a capture of the front desk screen. The audio track is the same for both videos. You should probably start with the camera stream combined with a separate view of the respective lecture notes, though for some lectures (especially in the second half of the course) the screen capture might be more appropriate. You may even want to run both streams simultaneously (one of them muted).


Here are some possibly interesting Haskell programs (with types): expressing dates and binary search trees.
Here is a definition of binary search trees in Prolog: State space search in Prolog: the cabbage, goat, and wolf problem; the Knight's tour problem.