COMP 105 Schedule
- Monday, 1/25
- Course intro; recursion; an imperative core; unit-testing; abstract syntax and environments
- Wednesday, 1/27
- Inference rules and evaluation; proofs and metatheory
Question for the day: How can we define the meaning of a program?
Read: Ramsey, Chapter 2
- Monday, 2/1
- Semantics and metatheory
Question for the day: How do I prove a fact that is true of any possible program?
Assignment for impcore: Introduction; imperative core; unit-testing; ASTs and environments (also in PDF) due at 11:59 PM.
- Wednesday, 2/3
- Scheme: 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)
- Monday, 2/8
- Scheme: The cost of cons, append and reverse, the method of accumulating parameters
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 11:59 PM.
- Wednesday, 2/10
- The let family, functions as values, introduction to lambda, using lambda to create escaping functions
Read: Ramsey, Chapter 3.
- Monday, 2/15
- Presidents' Day. No class.
- Wednesday, 2/17
- Higher-order functions on lists and Tail Calls
Assignment for scheme: Scheme (also in PDF) due at 6:00 PM.
- Thursday, 2/18
- Monday, 2/22
- Operational semantics of uScheme
- Wednesday, 2/24
- ML: Introduction to ML
- 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 6
- Browse the Standard ML Basis Library for SML'97. Some of this material is summarized in Ullman, Chapter 9.
- Sunday, 2/28
- Not a class day, but Assignment for hofs: Scheme II: first-class and higher-order functions, continuation passing, semantics (also in PDF) due at 11:59 PM.
- Monday, 2/29
- ML: Interlude: Midterm Review.
In-class course evaluations at 10:00 AM
- Wednesday, 3/2
- Midterm exam in class: Operational Semantics, Functional Programming
- Monday, 3/7
- ML: Algebraic data types; Case statements and pattern matching; Introduction and elimination; Exceptions
- Wednesday, 3/9
- Type systems and type checking
Question for the day: Could you effectively use types to detect errors in Scheme programs?
Read: Ramsey, Chapter 7.
- Monday, 3/14
- Polymorphic type checking
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/16
- Type-checking from a high level; Three environments
- Monday, 3/21
- Spring Break. No class.
- Wednesday, 3/23
- Spring Break. No class.
- Monday, 3/28
- Inference: Type inference using constraints; Constraint solving 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?
Read: Ramsey, Chapter 8
- Tuesday, 3/29
- Not a class day, but Assignment for typesys: Type systems (also in PDF) due at 11:59 PM.
- Wednesday, 3/30
- Inference: Constraint standardization; Splitting constraints at let bindings
- Monday, 4/4
- Smalltalk: Guest Lecture: Inheritance
Read: Ramsey, Chapter 12. Introctory sections: 12.1, 12.2. Key material for some parts of homework is in Sections 12.3 and 12.5. But you do not need to digest all of those sections. The remaining sections are there in case you find them useful. Section 12.4 contains an extended example, and section 12.6 answers all detailed questions about the semantics of the language.
- Wednesday, 4/6
- Smalltalk: Guest Lecture: Class hierarchies; The collection classes
Assignment for ml-inf: Inference (also in PDF) due at 11:59 PM.
- Monday, 4/11
- Standard ML: Introduction to modules
- Wednesday, 4/13
- Standard ML: Structures, signatures, functors
- Sunday, 4/17
- Not a class day, but Assignment for small: Smalltalk (also in PDF) due at 11:59 PM.
- Monday, 4/18
- Patriots' Day. No class.
- Wednesday, 4/20
- Standard ML: Modules example: error-producing computations
- Monday, 4/25
- Programming with lambda calculus. What's a calculus? Free variables, Beta reduction, Substitution, and Small-step Semantics
- Wednesday, 4/27
- Normal forms, Reduction strategies, Fixed points, Recursion equations, and the Y combinator
Assignment for sml: Standard ML (also in PDF) due at 11:59 PM.
- Monday, 5/2
- Programming-languages retrospective
Assignment for lambda: Lambda Calculus (also in PDF) due at 11:59 PM.
- Friday, 5/6
- Final exam: 8:30 to 10:30. Braker 001.