Programming Languages: Principles and Paradigms

Syllabus

Date Topic and readings
Functions
Jan 09 Intro and JavaScript crash course
[ notes | intro slides | JavaScript slides | function code ]
Jan 11 JavaScript crash course (cont)
[ JavaScript (cont) slides | obj code | nono code]
Jan 16 MLK- no class
Jan 18 Foundations and the lambda calculus
[ readings: 4.1.2, 4.2, optional additional material | slides]
Jan 23 Lambda calculus (cont)
[ slides | notes on currying ]
Jan 25 Lambda calculus (cont)
[ slides | notes on currying ]
Jan 30 Scope, storage management, and function implementation
[ readings: chapter 7 | slides | great online scope-learning tool]
Types
Feb 01 Haskell crash course
[ readings: new chapter 5 | slides | notes]
Feb 06 Haskell crash course (cont) [ code | notes]
Feb 08 Haskell and introduction to types
[ readings: new chapter 6 | slides]
Feb 13 Type polymorphism and type inference
[ readings: new chapter 7 | slides]
Feb 15 Type classes
[ readings: new chapter 7 | slides | type-classes-1.hs | type-classes-2.hs ]
Feb 20 President's day - no class
Feb 22 Type classes (cont)
[ using type classes | desugaring type classes ]
Feb 27 Midterm exam
Objects and program organization
Mar 01 Objects
[ readings: chapters 10, 11 | optional reading: OOP history, Smalltalk history | slides ]
Mar 06 Objects (cont)
[ slides ]
Mar 08 Vtables, subtyping and inheritance
[ readings: chapters 11, 12 | slides ]
Control flow and side-effects
Mar 13 Control flow, exceptions, and continuations
[ readings: sections 8.1-8.3, CPS in JavaScript | slides ]
Mar 15 Continuations and monads
[ readings: Tackling the Awkward Squad | continuation slides | IO monad slides ]
Mar 22 Final exam

Please note that this syllabus is subject to change.