- Tue, 09/06: Overview and course organization.
Assignment 1: Problems posted, due Wed, 09/21, by 11:59 pm. Software for Assignment 1 (tar.gz).
Assignment 1: Solutions.- Thu, 09/08: Reading assignment: set and list comprehension, higher-order functions, lazy vs. call-by-value vs. call-by-reference evaluation (from material available on the Web for both Python and Haskell).
- Tue, 09/13: Reading assignment: Python is, strictly speaking, neither call-by-value nor call-by-reference (two very common and easy to understand parameter-passing mechanisms), Python is called a call-by-object-reference language (Why? Answer from material available on the Web).
- Thu, 09/15: Reading assignment: pattern-matching and wildcards, and types and type classes in Haskell (from material available on the Web).
Assignment 2: Problems posted, due Mon, 10/03, by 11:59 pm.
Assignment 2: Solutions.- Tue, 09/20 Reading assignment: regular expressions and how they are handled in Python (from material available on the Web).
- Thu, 09/22: Reading assignment: memoization (from material available on the Web), tail recursion (from here and from material available on the Web).
- Tue, 09/27: Laziness = Non-Strictness + Sharing. Reading assignment: strict evaluation, non-strict evaluation, sharing (from here and from material available on the Web).
Assignment 3: Problems posted, due Wed, 10/12, by 11:59 pm.
Assignment 3: Solutions.- Thu, 09/29: Reading assignment: foldr, foldl, and foldl' (from here and from material available on the Web).
- Tue, 10/04: Reading assignment: recursive datatypes and generalizations of fold (from here and from material available on the Web).
- Thu, 10/06: Reading assignment: More on generalizations of fold (from here) making a user-defined datatype an instance of pre-defined typeclasses (from here).
Assignment 4: Problems posted, due Sat, 10/22, by 11:59 pm.
Assignment 4: Solutions.- Tue, 10/11: No Lecture. Monday Schedule.
- Tuesday, October 09: LAST DAY TO DROP COURSE WITHOUT "W" GRADE.
- Thu, 10/13: Reading assignment: pre-defined (library) classes (from here), user-defined (library) classes (from here), class instances (from here).
- Tue, 10/18: Reading assignment: principal type property (from here).
- Thu, 10/20: Reading assignment: Haskell does not support polymorphic recursion (from here), topics covered so far (from here).
- Tuesday, October 25, 12:30 pm - 2:00 pm. MID-TERM EXAMINATION. Solutions.
- Thu, 10/27: Reading assignment: Unification and constraint-solving for type inference (from here).
Assignment 5: Problems posted, due Sat, 11/12, by 11:59 pm.
Assignment 5: Solutions.- Tue, 11/01: Reading assignment: Unification and constraint-solving for type inference (continued) (from here), examples of typing derivations (from here).
- Thu, 11/03: Reading assignment: Rules for static analysis and monomorphic type checking (from here, here, and here, extracted from Andrei Lapets' lecture notes), type inference through unification (from here).
- Tue, 11/08: Reading assignment: Sequential vs. simultaneous declarations (from here), fix-point operator (from here).
- Thu, 11/10: Reading assignment: Fix-point operator again (from here), formal semantics (background to call-by-value and call-by-name) (from here, here, here, here, here, and here, extracted from Andrei Lapets' lecture notes).
Assignment 6: Problems posted, due Mon, 11/21, by 11:59 pm. Software package for Assignment 6 (tar.gz).
Assignment 6: Solutions.- Friday, November 09: LAST DAY TO DROP COURSE WITH "W" GRADE.
- Tue, 11/15: Reading assignment: Invariants (from here and from the Web).
- Thu, 11/17: Reading assignment: Lambda Calculus posted by Hanwen (from here, here, and here), this is material for a first-year graduate course at Cornell, so go very easy!
Assignment 7 Problems posted, due Mon, 12/05, by 11:59 pm.
Assignment 7: Solutions.- Tue, 11/22: Continuation of the Lambda Calculus and its reduction strategies.
- From Wednesday, 11/23, to Sunday, 11/27: Thanksgiving break.
- Tue, 11/29: Reading assignment: Referential transparency and side effects (from here), programming language paradigms (from here, here, here, and here).
- Thu, 12/01: Reading assignment: Reasoning about programs (from here and here).
Assignment 8 Problems posted, due Wednesday, 12/14, by 11:59 pm. Software package for Assignment 8 (tar.gz).
Assignment 8: Solutions.- Tue, 12/06: Reading assignment: Reasoning about programs (from here, here, and here).
- Thu, 12/08: Examples of monadic computations (from here). Topics covered during the semester (from here and here).
- Sat, December 17, 12:30 pm - 2:30 pm. END-OF-TERM EXAMINATION. Solutions.