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.

Wednesday, 1/16
Course intro; recursion
Read:
Friday, 1/18
An imperative core; abstract syntax and environments
Question for the day: What could a name or identifier possibly mean?
Monday, 1/21
Martin Luther King Day. No class.
Wednesday, 1/23
Inference rules and evaluation
Assignment for impcore: Introduction; imperative core; ASTs & environments (also in PDF) due at 11:59 PM.

Read: Ramsey, chapter 2
Friday, 1/25
Proofs and metatheory
Question for the day: How do I prove a fact that is true of any possible program?
Monday, 1/28
Semantics and metatheory review
Wednesday, 1/30
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, Chapter 3, Sections 3.1 through 3.6 (plus syntax and semantics in Sections 3.11 and 3.13)
Friday, 2/1
Scheme: Programming with recursion and lists using case analysis
Question for the day: How do you write a recursive function that consumes a list?
Assignment for opsem: Operational semantics; metatheory (also in PDF) due at 5:59 PM.
Monday, 2/4
Scheme: Cost of cons, apppend and reverse, the method of accumulating parameters
Question for the day: Why would you want to have nested functions?
Wednesday, 2/6
The let family, functions as values, introduction to lambda
Read: Ramsey, chapter 3.
Friday, 2/8
Snowstorm. No class.
Monday, 2/11
Using lambda to create escaping functions
Assignment for scheme: Scheme (also in PDF) due at 11:59 PM.
Wednesday, 2/13
Higher-order functions on lists
Friday, 2/15
Tail calls and continuations
Monday, 2/18
Presidents' Day. No class.
Wednesday, 2/20
Operational semantics of uScheme
Thursday, 2/21
ML: algebraic data types
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, Chapter 5
  • Browse the Standard ML Basis Library for SML'97. Some of this material is summarized in Ullman, Chapter 9.
Friday, 2/22
ML: introduction and elimination; making types work for you
Assignment for hofs: Scheme II: first-class and higher-order functions, continuation passing (also in PDF) due at 5:59 PM.
Monday, 2/25
ML: traps and pitfalls; ML from 10,000 feet
Wednesday, 2/27
type basics
Question for the day: Could you effectively use types to detect errors in Scheme programs?
Read: Ramsey, Chapter 6
Friday, 3/1
type systems and type checking
Question for the day: How can type checking be made simple?
Saturday, 3/2
Not a class day, but Assignment for ml: ML (also in PDF) due at 11:59 PM.
Monday, 3/4
Interlude: midterm review. Plus In-class course evaluations at 1:30 PM
Wednesday, 3/6
Midterm exam in class: operational semantics, functional programming
Friday, 3/8
polymorphic type checking
Question for the day: What are the drawbacks of type checking?
Monday, 3/11
more polymorphic type checking
Wednesday, 3/13
type-checking from a high level; three environments
Thursday, 3/14
Not a class day, but Assignment for typesys: Type systems (also in PDF) due at 11:59 PM.
Friday, 3/15
Type inference using constraints (key book pages: 301, 303-309)
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?
Read: Ramsey, Chapter 7
Monday, 3/18
Spring Break. No class.
Wednesday, 3/20
Spring Break. No class.
Friday, 3/22
Spring Break. No class.
Monday, 3/25
Constraint solving and type inference (key book pages: 312-317)
Wednesday, 3/27
Constraint standardization (key book pages: 312-317)
Friday, 3/29
Splitting constraints at let bindings (key book pages: 298-300; 307; 310-311; 319; 322-323)
Monday, 4/1
Lambda calculus: programming with lambda calculus; what's a calculus
Question for the day:
Assignment for ml-inf: ML type inference (also in PDF) due at 11:59 PM.

Read:
Wednesday, 4/3
Lambda calculus: free variables; beta reduction; substitution; small-step semantics
Question for the day: How would you write an operational semantics without values?
Friday, 4/5
Lambda calculus: normal form; reduction strategies
Question for the day: How would you define integer addition in the lambda calculus?
Monday, 4/8
Lambda calculus: Fixed points, recursion equations, and the Y combinator
Tuesday, 4/9
Not a class day, but Assignment for lambda: Lambda calculus (also in PDF) due at 11:59 PM.
Wednesday, 4/10
Smalltalk: inheritance
Read: Ramsey, Chapter 10. Introctory sections: 10.1, 10.2. Key material for some parts of homework is in Sections 10.3 and 10.5. But you do not need to digest all of those sections. The remaining sections are there in case you find them useful. Section 10.4 contains an extended example, and section 10.6 answers all detailed questions about the semantics of the language.
Friday, 4/12
Smalltalk: class hierarchies
Monday, 4/15
Patriots' Day. No class.
Wednesday, 4/17
Smalltalk: the collection classes
Friday, 4/19
Manhunt for dangerous fugitive. No class.
Monday, 4/22
Standard ML: Introduction to modules
Assignment for small: Smalltalk (also in PDF) due at 11:59 PM.

Read:
Wednesday, 4/24
Standard ML: Structures, signatures, functors
Friday, 4/26
Standard ML: Modules example: error-producing computations
Monday, 4/29
Programming-languages retrospective
Wednesday, 5/1
Not a class day, but Assignment for sml: Standard ML (also in PDF) due at 11:59 PM.
Monday, 5/6
Final exam: 12:00 Noon, Lane 100