Week | Date | Topic | Assignment / Exam |
---|---|---|---|
Week 1 | Monday, January 20 | No class Martin Luther King, Jr. Day |
|
Monday, January 20 | No lab | ||
Wednesday, January 22 | Class: Introduction Welcome! The Why, What, and How of PLs | ||
Week 2 | Monday, January 27 | Class: Lambda Calculus 1 Introduction, Encodings |
|
Monday, January 27 | Lab: lc | ||
Wednesday, January 29 | Class: Lambda Calculus 2 Computing Free Vars, Sets, Recursion (Y). S-K Combinators | ||
Week 3 | Monday, February 03 | Class: Haskell 1 Lambda Calculus + Syntactic Sugar + Types + Lazy Evaluation = Haskell Language |
|
Monday, February 03 | Lab: GHCI | ||
Wednesday, February 05 | Class: Haskell 2 Types & Typeclasses | ||
Week 4 | Monday, February 10 | Class: Programs as Structured Data Datatypes review. Concrete vs Abstract Syntax. Representing the Lambda Calculus |
|
Monday, February 10 | Lab: Interpreters | ||
Wednesday, February 12 | Class: Interpreters 1 Adding features and syntactic sugar to a simple programming language | ||
Week 5 | Monday, February 17 | Class: Interpreters 2 Environments, Closures |
|
Monday, February 17 | Lab: pic & PS | ||
Wednesday, February 19 | Class: Introduction to Parsing Tokenization, Hand-Written Recursive Descent | ||
Week 6 | Monday, February 24 | Class: Building a Parsing Library 1 Primitive parsers and parser combinators |
|
Monday, February 24 | Lab: Parsing | ||
Wednesday, February 26 | Class: Building a Parsing Library 2 More parser combinators | ||
Week 7 | Monday, March 02 | Class: Monads 1 Abstracting from parsing to Functor, Alternative, and Monad |
|
Monday, March 02 | Lab: Monads | ||
Wednesday, March 04 | Class: Monads 2 Applicative, do notation, Side effects, Referential transparency | ||
Week 8 | Monday, March 09 | Class: Types 1 Introduction to Types & Type Systems |
|
Monday, March 09 | Lab: C pre-processor | ||
Wednesday, March 11 | No class | ||
Spring Break | |||
Week 9 | Monday, March 23 | No class | |
Monday, March 23 | No lab | ||
Wednesday, March 25 | No class | ||
Week 10 | Monday, March 30 | Class: Types review A recap from before Spring Break, A simple type system, Subtyping | |
Monday, March 30 | No lab | ||
Wednesday, April 01 | Class: Types 2 Subtyping continued, Dynamic dispatch | ||
Week 11 | Monday, April 06 | Class: Dispatch Coercion vs Overloading vs Genericity vs Dynamic Dispatch |
|
Monday, April 06 | Lab: Moses | ||
Wednesday, April 08 | Class: Objects without Classes JavaScript, Prototype-based OOP | ||
Week 12 | Monday, April 13 | Class: Introduction to Control Flow Order of effects, Alternative control-flow mechanisms, Continuations |
|
Monday, April 13 | Lab: Visitor pattern | ||
Wednesday, April 15 | Class: Abstracting Iteration Generators and Coroutines | ||
Week 13 | Monday, April 20 | Class: Concurrency Coroutines and Concurrency via Cooperative Threading, Semaphores |
|
Monday, April 20 | Lab: script and Lua | ||
Wednesday, April 22 | Class: Asynchrony vs Concurrency vs Simultaneity vs Parallelism Monitors, Preemption, Data Races and Memory Ordering, Amdahl's Law | ||
Week 14 | Monday, April 27 | Class: Parallelism Worldview ≠ Concurrency Worldview Coordination vs. Speedup |
|
Monday, April 27 | No lab | ||
Wednesday, April 29 | Class: Conclusion Review and wrap-up. |