CAS CS 320: Concepts of Programming Languages
CAS CS 320 is a course about programming languages, particularly the design and implementation of programming languages. In this course, we take up the programming language as an object of formal study. See the course manual and the schedule below for more details.
Links
Schedule
| Date | Topic | Reading/Material | Notes |
|---|---|---|---|
| 1/20 | Introducing OCaml | COPL 1, OCP 1, 2 | Read the course manual |
| 1/22 | Recursion and Lists | OCP 3.1, 3.8 | Assignment 1 (A1) out |
| 1/26 | Lab 1: Verifying your Set-up | ||
| 1/27 | Designing Functions (Workshop) | ||
| 1/29 | Polymorphism | A2 out, A1 due | |
| 2/2 | Lab 2: Mutual Recursion | ||
| 2/3 | Inference Rules | COPL 2.1 | |
| 2/5 | Derivations | COPL 2.2, 2.3 | A3 out, A2 due |
| 2/9 | Lab 3: Derivations Worksheet | ||
| 2/10 | Products and Sums | ||
| 2/12 | Algebraic Data Types (Workshop) | A4 out, A3 due | |
| 2/16 | No Lab | Presidents’ Day | |
| 2/17 | Lab 4: Midterm Review | Substitute Monday | |
| 2/19 | Midterm 1 | ||
| 2/23 | Lab 5: S-Expressions | ||
| 2/24 | Higher-Order Programming | ||
| 2/26 | Practical FP (Workshop) | A5 out, A4 due | |
| 3/2 | Lab 6: When2Meet | ||
| 3/3 | Formal Grammar | ||
| 3/5 | Grammatical Ambiguity | A6 out, A5 due | |
| 3/9 | No Lab | Spring recess | |
| 3/10 | No Lecture | Spring recess | |
| 3/12 | No Lecture | Spring recess | |
| 3/16 | Lab 7: Parser Generators | ||
| 3/17 | Operational Semantics | ||
| 3/19 | Substitution | Mini-Project 1 (MP1) out, A6 due | |
| 3/23 | Lab 8: Grammar worksheet | ||
| 3/24 | Closures and Environments (Workshop) | ||
| 3/26 | Simple Types | MP1 check-in due | |
| 3/30 | Lab 9: Midterm Review | ||
| 3/31 | Midterm 2 | ||
| 4/2 | Progress and Preservation | MP2 out, MP1 due | |
| 4/6 | Lab 10: Closures Worksheet | ||
| 4/7 | Pattern Matching | ||
| 4/9 | Exhaustiveness Checking | MP2 check-in due | |
| 4/13 | Lab 11: Pattern Matching Worksheet | ||
| 4/14 | Hindley-Milner | ||
| 4/16 | Unification (Workshop) | MP3 out, MP2 due | |
| 4/20 | No Lab | Patriots’ Day | |
| 4/21 | Principle Types | ||
| 4/22 | Lab 12: Principle Types Worksheet | ||
| 4/23 | Specialization | MP3 check-in due | |
| 4/27 | Lab 13: Final Exam Review | ||
| 4/28 | Bytecode Interpreters | ||
| 4/30 | Final Exam Review Session (Workshop) | MP3 due |
Calendar
Course Staff
- Instructor: Nathan Mull
- Teaching Fellow: Anthony DeRossi
- Teaching Assistant: Vivian Tvedt
- Course Assistants: Miranda Quimbar and Shiyun Yang