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.

Schedule

Date

Topic

Reading

Assignments

9/2

Course Overview

OCP 1.1, 1.2, 1.3, 2.1, 2.3

Assignment 0

9/3

Week 1 Lab: Installation Party

9/4

Basics I: Introducing OCaml

OCP 2.2, 2.4, 2.6, 2.7

Assignment 1

9/9

Basics II: Designing functions

9/10

Week 2 Lab

9/11

Basics III: Inference Rules

Assignment 2 (A1 due)

9/16

Basics IV: Lists, Tail-Recursion

OCP 3.1, 3.5, 3.7, 3.8

9/17

Week 3 Lab

9/18

Basics V: Derivations

Assignment 3 (A2 due)

9/23

Data I: Unions, Products, Algebraic Data Types

OCP 3.2, 3.4, 3.9

9/24

Week 4 Lab

9/25

Data II: ADTs in practice

OCP 3.6, 3.11, 3.12, 8.3

Assignment 4 (A3 due)

9/30

Quiz 1

10/1

Week 5 Lab

10/2

HOP I: Maps and Filters

OCP 4.1, 4.2, 4.3, 4.6, 4.7

Assignment 5 (A4 due)

10/7

HOP II: Folds

OCP 4.4, 4.5

10/8

Week 6 Lab

10/9

Intermediate OCaml

OCP 3.3, 3.7, 3.10, 5.1, 5.2, 5.4

Practice Midterm (A5 due)

10/14

No Lecture (Substitute Monday)

10/15

Week 7 Lab: Midterm Review

10/16

Midterm

Assignment 6

10/21

Parsing I: In Theory

10/22

Week 8 Lab

10/23

Parsing II: In Practice

Mini-Project 1 (A6 due)

10/28

Semantics I: Operational Semantics

OCP 10.1

10/29

Week 9 Lab

10/30

Semantics II: Substitution

OCP 10.3

MP1 Check-in due

11/4

Semantics III: Variables, Scope, Closures

OCP 10.4

11/5

Week 10 Lab

11/6

Semantics IV: Environments

OCP 10.4

Mini-Project 2 (MP1 due)

11/11

Types I: Simple Types

OCP 10.5

11/12

Week 11 Lab

11/13

Types II: Progress and Preservation

OCP 10.5

MP2 Check-in due

11/18

Quiz 2

11/19

Week 12 Lab

11/20

Inference I: Hindley-Milner (Light)

OCP 10.6

Mini-Project 3 (MP2 due)

11/25

Inference II: Unification

OCP 10.6

11/26

No Lab (Thanksgiving Recess)

11/27

No Lecture (Thanksgiving Recess)

12/2

Inference III: Constraint-Based Inference

OCP 10.6

12/3

Week 14 Lab

12/4

Inference IV: Extended Example

OCP 10.6

MP3 Check-in due

12/9

Advanced: Byte-Code Interpretation

12/10

Week 15 Lab: Final Exam Review

MP3 due

TBD

Final Exam

Calendar

Course Staff

Note. Please do not reach out to course staff directly except in extenuating circumstances. If you have questions/concerns about the course, please reach out via Piazza.