# COMP 105 Schedule

January 2019
SundayMondayTuesdayWednesdayThursdayFridaySaturday
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

Topic: What is a programming language; composition; proof rules

17

Recitation: Data-driven, rule-driven programming process

18

Recitation: Data-driven, rule-driven programming process

19
20
21

No class: MLK Day

22
23

Operational semantics; metatheory

• Ramsey, Chapter 1, Section 1.4 (Operational Semantics)

• Ramsey, Chapter 1, Section 1.6 (Operational Semantics Revisited)

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

Recitation: Derivation trees, semantic rules, metatheory

2

February 2019
SundayMondayTuesdayWednesdayThursdayFridaySaturday
27
28

Operational semantics; metatheory

Topic: Derivations

29
30

Operational semantics; metatheory

Topic: Metatheory; location semantics

31

Recitation: Derivation trees, semantic rules, metatheory

1

Recitation: Derivation trees, semantic rules, metatheory

2
3
4

Scheme I: Recursive programming with lists

Topic: S-expressions; recursive functions on lists; costs

5
6

Scheme II: first-class and higher-order functions

Topic: The `let` family, functions as values, introduction to `lambda`, using `lambda` to create escaping functions

7

Recitation: Scheme list functions, calculational proofs, functions with accumulating parameters

8

Recitation: Scheme list functions, calculational proofs, functions with accumulating parameters

9
10
11

Scheme II: first-class and higher-order functions

Topic: Higher-order functions on lists; currying; tail calls

12
13

Scheme III: continuation passing, semantics

Topic: Tail calls; continuations

14

Recitation: Higher-order functions on lists, abstracting over comparison functions

15

Recitation: Higher-order 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

Topic: Introduction to ML

22

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

Topic: Type systems and type checking

28

Recitation: Patterns and types in Standard ML

1

Recitation: Patterns and types in Standard ML

2

March 2019
SundayMondayTuesdayWednesdayThursdayFridaySaturday
24
25

Introduction to ML

Topic: Constructed data; Case statements and pattern matching; Introduction and elimination; Exceptions

26
27

Type systems

Topic: Type systems and type checking

28

Recitation: Patterns and types in Standard ML

1

Recitation: Patterns and types in Standard ML

2
3
4

Type systems

Topic: Polymorphic type checking

5
6

Type systems

Topic: Type-checking from a high level; Three environments

7

Recitation: Type rules and type checking

8

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

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

Recitation: Solving conjunction constraints

30
31
1

Modules and abstract types

Topic: Introduction to data abstraction; interfaces as signatures

2
3

Modules and abstract types

Topic: Module implementations; functors; modules example: game solver

4

Recitation: Abstraction functions, representation invariants

5

Recitation: Abstraction functions, representation invariants

6

April 2019
SundayMondayTuesdayWednesdayThursdayFridaySaturday
31
1

Modules and abstract types

Topic: Introduction to data abstraction; interfaces as signatures

2
3

Modules and abstract types

Topic: Module implementations; functors; modules example: game solver

4

Recitation: Abstraction functions, representation invariants

5

Recitation: Abstraction functions, representation invariants

6
7
8

Lambda calculus

Topic: What's a calculus? Programming with lambda calculus. Free variables, Beta reduction, Substitution, and Small-step Semantics

9
10

Lambda calculus

Topic: Normal forms, Reduction strategies, Fixed points, Recursion equations, and the Y combinator

11

Recitation: Beta- and eta-reduction, Church numerals, Y

12

Recitation: Beta- and eta-reduction, Church numerals, Y

13
14
15

No class: Patriots' Day

16
17

Smalltalk: Object-oriented programming

Topic: Objects; protocols; message passing

18

Recitation: Getting started with Smalltalk

19

Recitation: Getting started with Smalltalk

20
21
22

Smalltalk: Object-oriented programming

Topic: Inheritance

23
24

Smalltalk: Object-oriented 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

May 2019
SundayMondayTuesdayWednesdayThursdayFridaySaturday
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

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