Programming Languages and Compilers

CS 164 @ UC Berkeley, Fall 2022

Schedule

Important Dates

Week # Activities, Class Compiler Implementation Guides Date Notes Homework Due(Due @ 9 PM PT) Drill Due(Due @ 9 PM PT)
0 What is a compiler?
FP in OCaml §1.1–1.5
FP in OCaml §2.1–2.21
OCaml Activity 1 (Pattern Matching)
Thu Aug 25
1 Reflection Activity
OCaml Activity 2 (Types, Custom Types)
Tue Aug 30
Thu Sep 1 Homework 0 Drill 1
2 S-Expressions
Unary Operations
Correctness and Testing
Booleans: Interpreter Edition
Tue Sep 6
Thu Sep 8 Drill 2
3 Booleans: Compiler Edition
Conditionals
Tue Sep 13
Wed Sep 14 Deadline to Drop Courses
Thu Sep 15 Homework 1 Drill 3
4 Binary Operations
Reflecting on Binary Operations
Naming Expressions (Let): Interpreter Edition
Naming Expressions (Let): Compiler Edition
Tue Sep 20
Thu Sep 22 Homework 2 Drill 4
5 Pairs
Handling Errors
Tue Sep 27
Thu Sep 29 Drill 5
6 Interacting with the Environment (Input)
Memory Understanding Activities
Interacting with the Environment (Output)
Tue Oct 4
Thu Oct 6 Homework 3 Drill 6
7 Functions Tue Oct 11
Thu Oct 13 Mid-Semester Survey Homework 4 Drill 7
8 Tail Call Optimization
Parsing
Tue Oct 18
Thu Oct 20 Homework 5 Drill 8
9 Midterm Week
Regular Expressions Activity
Tue Oct 25 Midterm
Thu Oct 27 No Drill (Midterm Week)
Fri Oct 28 Deadline to Change Grading Options
10 Parsing
First-Class Functions (Function Pointers)
Tue Nov 1
Thu Nov 3 Homework 6 Drill 9
11 First-Class Functions (Lambdas) Tue Nov 8
Thu Nov 10 Homework 7 Drill 10
12 Optimization
Optimization (Constant Folding)
Intermediate Representations
Register Allocation Activity
Tue Nov 15
Thu Nov 17 Task 1 of HW 8 Drill 11
13 Garbage Collection Activity Tue Nov 22
Thu Nov 24 Thanksgiving break No Drill (Break)
14 Type Checking Activity
Reflections on Trusting Trust
Tue Nov 29
Thu Dec 1 Homework 8 No Drill (Read Reflections on Trusting Trust)
Fri Dec 2 Deadline to Submit Late Change of Class Schedule
15 RRR Week Tue Dec 6
Thu Dec 8

🚩 indicates a particularly difficult homework! We encourage you to start early!

Sections

  1. Introduction to OCaml
  2. Testing
  3. Compiler Infrastructure and Testing
  4. Detective Work (Debugging Assembly)
  5. Stack vs. Heap
  6. How do you refer to the heap?
  7. Tracing Assembly
  8. Midterm Review #1
  9. Rest after Midterm!
  10. Parser Generators
  11. First-Class Functions
  12. Peephole Optimization
  13. Garbage Collection
  14. Final Review

Synchronous Events