CS358 Principles of Programming Languages Spring 2023

Instructor: Andrew Tolmach

Teaching Assistant

Quick Pointers

Course Information

Course Catalog Description

Syntax and semantics. Compilers and interpreters. Programs as data. Regular expressions and context free grammars. Programming paradigms, including procedural, functional, and object-oriented programming. Type systems, including dynamic and static typing disciplines. Binding, scope, data abstraction, and modularity. Denotational, operational, and axiomatic semantics. Introduction to program correctness.

Format

Textbook

There is no required textbook.

Prerequisites

CS302, CS314(=CS300), CS350 passed with grades of C or better. CS202 is an acceptable subtitute for CS302. It is assumed that you have substantial programming experience in C/C++. Experience in at least one other language, such as Python or JavaScript, is very useful. Prior knowledge of TypeScript (or JavaScript) is not required.

Requirements and Grading

Homework

Schedule

This schedule is tentative and subject to change.
Week Lecture Date Topic
1 Apr 4/6 Course Introduction; Representing Programs; Introducing TypeScript
2 Apr 11/13 Compilers & Interpreters; Variables and Scope
3 Apr 18/20 Grammars; Parsing
4 Apr 25/27 Functions; Closures
5 May 2/4 Heap; Garbage Collection
6 May 9 Midterm exam
6 May 11 Mutation
7 May 16/18 Types; Static Analysis
8 May 23/25 Safety; Program Correctness
9 May 30/Jun 1 Objects; Modules
10 Jun 6/8 Formal Semantics
11 Jun 13 Final exam 10:15-12:05

Policies

Individual work

Discrimination and Misconduct

Disabilities

Recording