FCNSMAQFR4 credits Programming language fundamentals are studied as abstract concepts using the programming language Scheme. Included are the notions of closures, first-class data structures, procedure and data abstraction, object-oriented programming, continuations, compilation and interpretation, and syntactic extension. Some advanced control structures such as coroutines and asynchronous interrupts may also be included.