COMP 105 Schedule

Note: This schedule is subject to change without notice at any time. Expect it to change approximately weekly throughout the semester. For pointers to lecture notes, and for more information about what's going on, consult the syllabus.

Friday, 1/21
Course intro
Read:
  • Ramsey and Kamin, chapters 1 and 2
  • Paul Graham, Beating the Averages
Monday, 1/24
An imperative core; abstract syntax and environments
Question for the day: What could a name or identifier possibly mean?
Wednesday, 1/26
Inference rules and evaluation (guest lecturer Geoff Mainland)
Friday, 1/28
Proofs and metatheory (guest lecturer Geoff Mainland)
Question for the day: How do I prove a fact that is true of any possible program?
Monday, 1/31
Semantics and metatheory review
Assignment for intro: Introduction; imperative core; ASTs, environments, and semantics (also in PDF) due at 11:59 PM.
Wednesday, 2/2
Tufts University might melt in the rain. No class.
Friday, 2/4
Scheme: S-expressions, cons, and its algebraic laws
Question for the day: In language design, what are the connections between data and control?
Read: Ramsey and Kamin, chapter 3.
Monday, 2/7
Scheme: Programming with recursion and lists using case analysis; the method of accumulating paraemeters
Question for the day: How do you write a recursive function that consumes a list?
Wednesday, 2/9
Scheme: functions as values, closures, programming with higher-order functions
Question for the day: Why would you want to have nested functions?
Friday, 2/11
Scheme: more fun with lambda
Question for the day: How do you program a search algorithm for fast cutoff?
Monday, 2/14
Scheme: more higher-order functions on lists; introduction to continuations
Question for the day: How would you implement nested functions?
Wednesday, 2/16
Scheme: finishing continuations; semantics; implementing closures
Friday, 2/18
Scheme: real Scheme; optimized tail calls
Sunday, 2/20
Not a class day, but Assignment for scheme: Scheme (also in PDF) due at 11:59 PM.
Monday, 2/21
Presidents' Day. No class.
Wednesday, 2/23
ML: a whirlwhind tour
Read:
  • Ullman, chapters 1, 2, 3, 5, and 6. You can skip Section 5.7
  • Ullman, section 4.2.5 (for option, not for input1)
  • The Supplement to Ullman
  • Ramsey and Kamin, Chapter 5
  • Browse the Standard ML Basis Library for SML'97. Some of this material is summarized in Ullman, Chapter 9.
Thursday, 2/24
ML: the tour of ML continued
Friday, 2/25
ML: the tour concluded
Monday, 2/28
type basics
Question for the day: Could you effectively use types to detect errors in Scheme programs?
Read: Ramsey and Kamin, Chapter 6
Wednesday, 3/2
type systems and type checking
Question for the day: How can type checking be made simple?
Thursday, 3/3
Not a class day, but Assignment for ml: ML (also in PDF) due at 11:59 PM.
Friday, 3/4
polymorphic type checking
Question for the day: What are the drawbacks of type checking?
Monday, 3/7
Cultural enrichment: Type classes and automated testing
Question for the day: Why are + and = special and magical?
Wednesday, 3/9
Midterm exam in class: operational semantics, functional programming
Friday, 3/11
Midterm exam in class: more operational semantics, more functional programming
Monday, 3/14
type systems wrapup
Read: Ramsey and Kamin, Chapter 7
Wednesday, 3/16
ML type rules, substitution
Question for the day: If you don't know the identity of all types, what does it mean for two types to be possibly equal?
Thursday, 3/17
Not a class day, but Assignment for typesys: Type systems (also in PDF) due at 11:59 PM.
Friday, 3/18
unification and type inference
Question for the day: Where does a new, unknown type come from in an ML program? When do two types have to be equal in an ML program?
Monday, 3/21
Spring Break. No class.
Wednesday, 3/23
Spring Break. No class.
Friday, 3/25
Spring Break. No class.
Monday, 3/28
type inference example
Wednesday, 3/30
Lambda calculus: introduction, operational semantics
Question for the day: How would you write an operational semantics without values?
Read:
Friday, 4/1
Lambda calculus: Church-Rosser, normalization
Question for the day: How would you define integer addition in the lambda calculus?
Sunday, 4/3
Not a class day, but Assignment for ml-inf: ML type inference (also in PDF) due at 11:59 PM.
Monday, 4/4
Lambda calculus: Church encoding of pairs
Wednesday, 4/6
Lambda calculus: computing with lambda calculus, into to semantics
Friday, 4/8
Semantics: complete partial orders (lattices), function domains, fixpoint construction
Question for the day: Is Joel Spolsky correct when he writes: ``If you thought pointers are hard, wait until you try to prove things about fixed-point theory.''?
Read: Definitional interpreters for denotational semantics
Sunday, 4/10
Not a class day, but Assignment for lambda: Lambda calculus (also in PDF) due at 11:59 PM.
Monday, 4/11
Semantics: simple programs, environments
Wednesday, 4/13
Semantics: locations, continuations
Friday, 4/15
Semantics: expression continuations, definitional interpreters Class moved to H108 to accommodate EE poster session.
Sunday, 4/17
Not a class day, but Assignment for sem: Semantics (also in PDF) due at 11:59 PM.
Monday, 4/18
Patriots' Day. No class.
Wednesday, 4/20
Smalltalk: inheritance
Read: Ramsey and Kamin, Chapter 9
Friday, 4/22
Smalltalk: class hierarchies
Monday, 4/25
Smalltalk: implementing OOP
Tuesday, 4/26
Not a class day, but Assignment for small: Smalltalk (also in PDF) due at 11:59 PM.
Wednesday, 4/27
Smalltalk: real Smalltalk
Friday, 4/29
Standard ML: Structures, signatures, functors
Read:
  • Ullman, chapter 8, except section 8.5.3
  • Tofte, Four Lectures on Standard ML. Don't worry too much about the ``decoration'' stuff in Section 3.
  • Ramsey, ML Module Mania (optional reading for cultural enrichment, i.e., what is all this good for)
Monday, 5/2
Standard ML: Sharing and matching
Tuesday, 5/3
Not a class day, but Assignment for sml: Standard ML (also in PDF) due at 11:59 PM.
Monday, 5/9
Final exam: 12:00 Noon, Halligan 111A