COMP 105 pages:  Admin  Calendar  Syllabus  ML  Homework  Solutions  Coding Style 
Coding Rubric 
Lecture Notes 
Recitation Notes 
Stats 

January 2019  

Sunday  Monday  Tuesday  Wednesday  Thursday  Friday  Saturday 
30 
31 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 Introduction; programming with proof systems and algebraic laws Read:
Topic: What is a programming language; composition; proof rules 
17 Recitation: Datadriven, ruledriven programming process 
18 Recitation: Datadriven, ruledriven programming process 
19 
20 
21 No class: MLK Day 
22 
23 Operational semantics; metatheory Read:
Topic: Abstract syntax and environments; Inference rules and evaluation 
24 Recitation: Reading inference rules; programming demo; intro to algebraic laws 
25 Recitation: Reading inference rules; programming demo; intro to algebraic laws 
26 
27 
28 Operational semantics; metatheory Topic: Derivations 
29

30 Operational semantics; metatheory Topic: Metatheory; location semantics 
31 Recitation: Derivation trees, semantic rules, metatheory 
1 Grading party for impcore. Recitation: Derivation trees, semantic rules, metatheory 
2 
February 2019 → 
February 2019  

Sunday  Monday  Tuesday  Wednesday  Thursday  Friday  Saturday 
27 
28 Operational semantics; metatheory Topic: Derivations 
29

30 Operational semantics; metatheory Topic: Metatheory; location semantics 
31 Recitation: Derivation trees, semantic rules, metatheory 
1 Grading party for impcore. Recitation: Derivation trees, semantic rules, metatheory 
2 
3 
4 Scheme I: Recursive programming with lists Read:
Topic: Sexpressions; recursive functions on lists; costs 
5

6 Scheme II: firstclass and higherorder functions Read:
Topic: The 
7 Recitation: Scheme list functions, calculational proofs, functions with accumulating parameters 
8 Grading party for opsem. Recitation: Scheme list functions, calculational proofs, functions with accumulating parameters 
9 
10 
11 Scheme II: firstclass and higherorder functions Topic: Higherorder functions on lists; currying; tail calls 
12

13 Scheme III: continuation passing, semantics Topic: Tail calls; continuations 
14 Recitation: Higherorder functions on lists, abstracting over comparison functions 
15 Grading party for scheme. Recitation: Higherorder functions on lists, abstracting over comparison functions 
16 
17 
18 No class: Presidents' Day 
19

20 Scheme III: continuation passing, semantics Topic: Midterm course evaluations; continuations for solving formulas 
21 Introduction to ML Read:
Topic: Introduction to ML 
22 Grading party for hofs. Recitation: Searching with success and failure continuations 
23 Recitation: BONUS: continuations 
24 
25 Introduction to ML Topic: Constructed data; Case statements and pattern matching; Introduction and elimination; Exceptions 
26

27 Type systems Read:
Topic: Type systems and type checking 
28 Recitation: Patterns and types in Standard ML 
1 Grading party for continuations. Recitation: Patterns and types in Standard ML 
2 
← January 2019March 2019 → 
March 2019  

Sunday  Monday  Tuesday  Wednesday  Thursday  Friday  Saturday 
24 
25 Introduction to ML Topic: Constructed data; Case statements and pattern matching; Introduction and elimination; Exceptions 
26

27 Type systems Read:
Topic: Type systems and type checking 
28 Recitation: Patterns and types in Standard ML 
1 Grading party for continuations. Recitation: Patterns and types in Standard ML 
2 
3 
4 Type systems Topic: Polymorphic type checking 
5 Homework for Introduction to ML is due. 
6 Type systems Topic: Typechecking from a high level; Three environments 
7 Recitation: Type rules and type checking 
8 Grading party for ml. Midterms can be picked up in morning Recitation: Type rules and type checking 
9 
10 
11 No class: Time available for midterm Midterms can be picked up in morning 
12 Last possible pickup for midterm 
13 ML type inference Topic: Type inference by example 
14 Recitation: Programming Typed uScheme or regression testing of type checker 
15 Homework for Type systems is due. Grading party for midterm Recitation: Programming Typed uScheme or regression testing of type checker 
16 
17 
18 No class: Spring Break 
19 
20 No class: Spring Break 
21 
22 
23 
24 
25 ML type inference Topic: Making type inference precise; constraints (MAYBE solving constraints)? 
26 
27 ML type inference Topic: Solving constraints; Generalization; Instantiation; Type inference at let bindings 
28 Recitation: Solving conjunction constraints 
29 Grading party for typesys. Recitation: Solving conjunction constraints 
30 
31 
1 Modules and abstract types Read:
Topic: Introduction to data abstraction; interfaces as signatures 
2 Homework for ML type inference is due. 
3 Modules and abstract types Topic: Module implementations; functors; modules example: game solver 
4 Recitation: Abstraction functions, representation invariants 
5 Grading party for mlinf. Recitation: Abstraction functions, representation invariants 
6 
← February 2019April 2019 → 
April 2019  

Sunday  Monday  Tuesday  Wednesday  Thursday  Friday  Saturday 
31 
1 Modules and abstract types Read:
Topic: Introduction to data abstraction; interfaces as signatures 
2 Homework for ML type inference is due. 
3 Modules and abstract types Topic: Module implementations; functors; modules example: game solver 
4 Recitation: Abstraction functions, representation invariants 
5 Grading party for mlinf. Recitation: Abstraction functions, representation invariants 
6 
7 
8 Lambda calculus Read:
Topic: What's a calculus? Programming with lambda calculus. Free variables, Beta reduction, Substitution, and Smallstep Semantics 
9

10 Lambda calculus Topic: Normal forms, Reduction strategies, Fixed points, Recursion equations, and the Y combinator 
11 Recitation: Beta and etareduction, Church numerals, Y 
12 Grading party for sml. Recitation: Beta and etareduction, Church numerals, Y 
13 
14 
15 No class: Patriots' Day 
16 
17 Homework for Lambda calculus is due. Smalltalk: Objectoriented programming Read:
Topic: Objects; protocols; message passing 
18 Recitation: Getting started with Smalltalk 
19 Grading party for lambda. Recitation: Getting started with Smalltalk 
20 
21 
22 Smalltalk: Objectoriented programming Topic: Inheritance 
23 
24 Smalltalk: Objectoriented programming Topic: Class hierarchies; the collection classes 
25 Recitation: Abstract base classes, double dispatch 
26 Recitation: Abstract base classes, double dispatch 
27 
28 
29 AMA Topic: Ask the instructor anything. Especially about programming languages past, present, and future 
30

1 
2 
3 Final exam: 3:30 PM, Braker 001 
4 Grading party for small. Grading party for final 
← March 2019May 2019 → 
May 2019  

Sunday  Monday  Tuesday  Wednesday  Thursday  Friday  Saturday 
28 
29 AMA Topic: Ask the instructor anything. Especially about programming languages past, present, and future 
30

1 
2 
3 Final exam: 3:30 PM, Braker 001 
4 Grading party for small. Grading party for final 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
1 
← April 2019 