Lectures

Date Topic and Notes Homework Due This Class Reading For This Class
Thu Jan 21  Course Overview
Tue Jan 26 History of PL
Functional Programming
Required:
  • Chapters 10.1 - 10.3, 10.5 - 10.8, 13.2.4
Required for Compilers Only: Optional:
Thu Jan 28 Functional Programming
Overview of Cool
  1. PA1c (Rosetta Checkpoint) Due
Required: Optional: Required for Compilers Only:
Tue Feb 02 Lexical Analysis & Finite Automata (Part 1)
  1. PA1 (Rosetta) Due
Required:
  • Chapters 2.1 - 2.2
On-Line: Optional:
Thu Feb 04 More Finite Automata (Part 2) On-Line: Required for Compilers Only:
  • Chapter 14.2
Tue Feb 09 Context-Free Grammars, Parsing, Derivations, Ambiguity
  1. RS1 Recommended
  2. PA2 (Lexing) Due
  3. CA1 (Dead Code) Due
Required: On-Line:
Thu Feb 11 Top-Down Parsing, History, Earley
(Earley Handout)
  1. (Start PA3 early; look at the Midterm schedule to see why.)
Required:
  • Chapters 2.3 - 2.3.2
On-Line: Optional:
Tue Feb 16 Earley Parsing and Examples
  1. RS2 Recommended
Required: Required for Compilers Only: On-Line: Optional:
Thu Feb 18 Midterm 1 (in class)
(1 hour 30 minutes if needed)
  1. (Do not forget PA3.)
Tue Feb 23 Code Generation (Part 1)
  1. RS3 Recommended
  2. PA3 (Parsing) Due
Required: Required for Compilers Only:
Thu Feb 25 Code Generation (Part 2)
  1. CA2 (Three-Address) Due
Required for Compilers Only:
Tue Mar 01 Scoping & Types
  1. PA4t (Semantics Test-Driven) Due
Required:
  • Chapters 3.1 - 3.6
On-Line: Required for Compilers Only: Optional:
Thu Mar 03 Type Checking & Static Semantics
  1. PA4c (Semantics Checkpoint) Recommended (leaving it until after Spring Recess is unwise)
  2. CA3 (ASM Generator) Due
Required:
  • Chapters 4 - 4.1, 7 - 7.1
Required for Compilers Only: Optional:
Tue Mar 08 no class, Spring Recess
Thu Mar 10 no class, Spring Recess
Tue Mar 15 More Static Semantics
  1. PA4c (Semantics Checkpoint) Due
Required:
  • Chapters 7.2 - 7.3
Optional:
Thu Mar 17 Cool Type Checking, Runtime Organization
  1. RS4 Recommended
Required:
  • Chapters 8.1 - 8.3
Optional:
Tue Mar 22 Multi-Language Projects
  1. PA4 (Semantics) Due
Required: Optional:
Thu Mar 24 Operational Semantics Required: Optional:
Tue Mar 29 Introduction to Game Theory
  1. PA5t (Interpreter Test-Driven) Due
Optional:
Thu Mar 31 Basic Blocks, Local Optimizations
Real-World Day (5pm)
  1. RS5 Recommended
Required: On-Line:
Tue Apr 05 Dataflow Analysis, Global Optimizations Required:
Thu Apr 07 Automatic Memory Management
Productivity (5pm)
  1. RS6 Recommended
  2. CA4 (Compiler) Due
Required:
  • Chapter 7.7
  • See Piazza forum for required Productivity readings
Optional:
Tue Apr 12 Exceptions and Error Handling Required:
  • Chapter 8.5
Thu Apr 14 Debuggers and Profilers
  1. RS7 Recommended
  2. PA5c (Interpreter Checkpoint) Due
Required: On-Line:
Tue Apr 19 Linking, Loading and Shared Libraries Required: Optional:
Thu Apr 21 Language Security Required:
Tue Apr 26 Midterm 2 (in class)
(1 hour 30 minutes if needed)
Thu Apr 28 Internet Security Required: On-Line:
Tue May 03 Quantum Computing, and/or Romance Novels
Tue May 10
  1. PA5 (Interpreter) Due 11:50pm
  2. CA5 (Optimizer) Due 11:50pm
  3. Late Electronic/PA Submissions Due 11:50pm