Programming Languages and Compilers

CS 164 @ UC Berkeley, Fall 2023

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 24
1 Reflection Activity
OCaml Activity 2 (Types, Custom Types)
Tue Aug 29
Thu Aug 31 Homework 0 Drill 1
2 S-Expressions
Unary Operations
Correctness and Testing
Booleans: Interpreter Edition
Tue Sep 5
Thu Sep 7 Drill 2
3 Booleans: Compiler Edition
Conditionals
Tue Sep 12
Wed Sep 13 Deadline to Drop Courses
Thu Sep 14 Homework 1 Drill 3
4 Binary Operations
Reflecting on Binary Operations
Naming Expressions (Let): Interpreter Edition
Naming Expressions (Let): Compiler Edition
Tue Sep 19
Thu Sep 21 Homework 2 Drill 4
Fri Sep 22 Deadline to Change School of Eng Grading Options
5 Pairs
Handling Errors
Tue Sep 26
Thu Sep 28 Drill 5
6 Interacting with the Environment (Input)
Memory Understanding Activities
Interacting with the Environment (Output)
Tue Oct 3
Thu Oct 5 Homework 3 Drill 6
7 Functions Tue Oct 10
Thu Oct 12 Homework 4 Drill 7
8 Tail Call Optimization
Parsing
Tue Oct 17
Thu Oct 19 Homework 5 Drill 8
9 Midterm Week
Regular Expressions Activity
Tue Oct 24
Thu Oct 26 No Drill (Midterm Week)
Fri Oct 27 Deadline to Change L&S Grading Options
10 Parsing
First-Class Functions (Function Pointers)
Tue Oct 31
Thu Nov 2 Homework 6 Drill 9
11 First-Class Functions (Lambdas) Tue Nov 7
Thu Nov 9 Homework 7 Drill 10
12 Optimization
Optimization (Constant Folding)
Intermediate Representations
Register Allocation Activity
Tue Nov 14
Thu Nov 16 Task 1 of HW 8 Drill 11
13 Garbage Collection Activity Tue Nov 21
Thu Nov 23 Thanksgiving break No Drill (Break)
14 Type Checking Activity
Reflections on Trusting Trust
Tue Nov 28
Thu Nov 30 Homework 8 No Drill (Read Reflections on Trusting Trust)
Fri Dec 1 Deadline to Submit L&S or School of Eng Late Change of Class Schedule
15 RRR Week Tue Dec 5
Thu Dec 7
16 Fri Dec 15 Final Exam, 7-10pm, Location TBA

🚩 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. Tracing Assembly #1: Stack and Heap
  6. How do you refer to the heap?
  7. Tracing Assembly #2
  8. Midterm Review #1
  9. Rest after Midterm!
  10. Parser Generators
  11. First-Class Functions
  12. Peephole Optimization
  13. Screen Reader

Synchronous Events