- Wednesday, 1/14
- Course intro; recursion; an imperative core; unit-testing; abstract syntax and environments
*Read:*- Ramsey, Chapters 1 and 2
- Paul Graham, Beating the Averages
- Tips for COMP 105 students

- Monday, 1/19
**Martin Luther King Day. No class.**- Wednesday, 1/21
- Inference rules and evaluation; proofs and metatheory

Question for the day:*How can we define the**meaning*of a program?

Assignment for impcore: Introduction; imperative core; unit-testing; ASTs & environments (also in PDF) due at 11:59 PM.*Read: Ramsey, Chapter 2* - Monday, 1/26
- Semantics and metatheory review

Question for the day:*How do I prove a fact that is true of**any*possible program? - Wednesday, 1/28
**Winter Storm Juno. No class.**- Monday, 2/2
**Winter Storm, Take 2. No class.**- Wednesday, 2/4
- Scheme:
**Guest Instructor.**S-expressions, cons, and its algebraic laws; Programming with recursion and lists using case analysis

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/6
*Not a class day, but Assignment for opsem: Operational semantics; metatheory (also in PDF) due at 5:59 PM.*- Monday, 2/9
**Winter Storm, Take 3. No class.**- Wednesday, 2/11
- Scheme: The cost of cons, append and reverse, the method of accumulating parameters; the
`let`family

Question for the day:*How do you write a recursive function that consumes a list?* - Monday, 2/16
**Presidents' Day. No class.**- Wednesday, 2/18
- Functions as values, introduction to
`lambda`; Using`lambda`to create escaping functions

Assignment for scheme: Scheme (also in PDF) due at 11:59 PM.*Read: Ramsey, Chapter 3.* - Thursday, 2/19
- Higher-order functions on lists; Tail calls and continuations
- Monday, 2/23
- Operational semantics of uScheme
**In-class course evaluations**at 11:30 PM - Wednesday, 2/25
- ML: Introduction to ML
*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.

- Monday, 3/2
- ML: Algebraic data types; Case statements and pattern matching; Introduction and elimination; Exceptions

Assignment for hofs: Scheme II: first-class and higher-order functions, continuation passing, semantics (also in PDF) due at 11:59 PM. - Wednesday, 3/4
- Types: Basics; Type systems and type checking

Question for the day:*Could you effectively use types to detect errors in Scheme programs?**Read: Ramsey, Chapter 6. Corrected page 283.* - Monday, 3/9
- Interlude: Midterm Review.

Question for the day:*How can type checking be made simple?*

Assignment for ml: ML (also in PDF) due at 11:59 PM. - Wednesday, 3/11
**Midterm exam in class: operational semantics, functional programming**- Monday, 3/16
**Spring Break. No class.**- Wednesday, 3/18
**Spring Break. No class.**- Monday, 3/23
- Types: Polymorphic type checking
- Wednesday, 3/25
- Types: Type-checking from a high level; Three environments

Question for the day:*What are the drawbacks of type checking?* - Monday, 3/30
- Inference: Type inference using constraints (key book pages: 314-315, 318-327); Constraint solving and type inference (key book pages: 327-330)

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* - Wednesday, 4/1
- Inference: Constraint standardization (key book pages: 327-330); Splitting constraints at let bindings (key book pages: 323-327)

Assignment for typesys: Type systems (also in PDF) due at 11:59 PM. - Monday, 4/6
- 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.* - Wednesday, 4/8
- Smalltalk: class hierarchies; the collection classes
- Friday, 4/10
*Not a class day, but Assignment for ml-inf: Inference (also in PDF) due at 11:59 PM.*- Monday, 4/13
- Standard ML: Introduction to modules
*Read:*- Ullman, Chapter 8, except section 8.5.3
- Tofte, Tips for Computer Sciences on Standard ML. This is more like a "quick reference card" than anything else.
- Ramsey, ML Module Mania (optional reading for cultural enrichment, i.e., what is all this good for?)

- Wednesday, 4/15
- Standard ML: Structures, signatures, functors
- Sunday, 4/19
*Not a class day, but Assignment for small: Smalltalk (also in PDF) due at 11:59 PM.*- Monday, 4/20
**Patriots' Day. No class.**- Wednesday, 4/22
- Standard ML: Modules example: error-producing computations
- Monday, 4/27
- Overview of the Lambda Calculus
- Wednesday, 4/29
- Programming-languages retrospective

Assignment for sml: Standard ML (also in PDF) due at 11:59 PM. - Monday, 5/4
**Final exam: 3:30 to 5:30. Anderson Hall 206.**