## 15-212: Principles of Programming |

*Readings* are from: Hansen and Rischel,
*Introduction to Programming Using SML*.

*Notes* include references to the on-line textbook
*Programming in Standard ML* by
Professor Robert Harper, as well as
links to the older webnotes.

*Notes* also include links to handouts and sample code.

This schedule is an approximate plan, and is subject to change during the semester.

Lecture # |
Day |
Date |
Topic |
Reading |
Notes |

1 | T | 11 Jan | Introduction; Evaluation & Typing | Chapter 1 | Lecture 1 |

Recitation | W | 12 Jan | Practice; Style; Hints. | ||

2 | R | 13 Jan | Binding, Scope, Functions | Chapter 2 | Lecture 2 |

3 | T | 18 Jan | Recursion & Induction | see Notes |
Lecture 3 |

Recitation | W | 19 Jan | Scoping in recursive functions; Complete induction. | ||

4 | R | 20 Jan | Datatypes & Patterns; Lists | Chapters 3, 5, 7.1-7.5 | Lecture 4 |

5 | T | 25 Jan | Structural Induction and Tail Recursion | Chapter 17 | Lecture 5 |

- | W | 26 Jan | Assignment 1 due |
Solution 1 | |

Recitation | W | 26 Jan | Lists; Equality types. | ||

6 | R | 27 Jan | Higher Order Functions and Staged Computation | Chapter 9 | Lecture 6 |

7 | T | 1 Feb | Data Structures | Chapters 8, 10, 11.1-11.3 | Lecture 7 |

Recitation | W | 2 Feb | Currying, folding, and mapping. | ||

8 | R | 3 Feb | Representation Invariants | as above |
Lecture 8 |

9 | T | 8 Feb | Continuations | see Notes |
Lecture 9 |

- | W | 9 Feb | Assignment 2 due |
Solution 2 | |

Recitation | W | 9 Feb | Tail Recursion vs Continuations. | ||

10 | R | 10 Feb | Regular Expressions | see Notes |
Lecture 10 |

11 | T | 15 Feb | Review |
||

Recitation | W | 16 Feb | Practice for the midterm. | ||

- | R | 17 Feb | Midterm |
Midterm sample solution | |

12 | T | 22 Feb | Combinators | Lecture 12 | |

Recitation | W | 23 Feb | Searching, failing, and stopping early. | ||

13 | R | 24 Feb | Exceptions, n-Queens | Sections 7.6-7.7 | Lecture 13 |

14 | T | 1 Mar | Functors and Substructures | Chapter 11 | Lecture 14 |

- | W | 2 Mar | Assignment 3 due |
Solution 3 | |

Recitation | W | 2 Mar | Ascription, where, and functors. | ||

15 | R | 3 Mar | Game Tree Search | Lecture 15 | |

- | T | 8 Mar | No Class (Spring Break) |
||

- | W | 9 Mar | No Recitation (Spring Break) |
||

- | R | 10 Mar | No Class (Spring Break) |
||

16 | T | 15 Mar | Mutation and State | Chapter 18, 5.5 | Lecture 16 |

Recitation | W | 16 Mar | Arrays and mutable state. | ||

17 | R | 17 Mar | Ephemeral Data Structures | as in previous lecture |
Lecture 17 |

18 | T | 22 Mar | Streams, Demand-Driven Computation | Chapter 14 | Lecture 18 |

- | W | 23 Mar | Assignment 4 due |
Solution 4 | |

Recitation | W | 23 Mar | Operations on streams; Sequences and flip-flops. | ||

19 | R | 24 Mar | Streams, Laziness and Memoization | Lecture 19 | |

20 | T | 29 Mar | Lexical Analysis & Grammars | also look at next lecture |
Lecture 20 |

Recitation | W | 30 Mar | Languages | ||

21 | R | 31 Mar | Grammars & Parsing | also look at next lecture |
Lecture 21 |

22 | T | 5 Apr | Evaluation, Interpreters, and Recursion | see code for lectures 23&24 |
Lecture 22 |

- | W | 6 Apr | Assignment 5 due |
Solution 5 | |

Recitation | W | 6 Apr | TBA | ||

23 | R | 7 Apr | Language Properties | Lecture 23 | |

24 | T | 12 Apr | Interpreters and Recursion | Lecture 24 | |

Recitation | W | 13 Apr | TBA | ||

- | R | 14 Apr | No Class (Spring Carnival Break) |
||

25 | T | 19 Apr | Computability, Part I | see Notes |
Lecture 25 |

Recitation | W | 20 Apr | Decidability, tractability, and tiling. | ||

26 | R | 21 Apr | Computability, Part II | see lecture 25 material |
none |

- | F | 22 Apr, 5pm | Assignment 6 due |
Solution 6 | |

27 | T | 26 Apr | Review for the FINAL |
||

Recitation | W | 27 Apr | Review for the FINAL | ||

28 | R | 28 Apr | Categories, Topology, and Adversarial Games | ||

- | M | 2 May | Final sample solution |

Legend: T=Tuesday, W=Wednesday, R=Thursday.

[ CS 15-212 Home page | schedule | language | assignments | handouts | hints etc ]