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