Schedule for CSC 2/454, Spring 2025

The following is my best guess as to the schedule for this semester.
I will do my best to keep it up to date if things change.
I encourage you to check back here on a regular basis. 

PLP refers to the textbook.  CS refers to the companion site

Click on the unit name to see my lecture notes.

Unit Topics Reading (to be completed
before class)
Assignments (handed
out or [where indicated] due)




Introduction
     Tue. Jan. 21 Introduction PLP 1.0–1.5 T0: administration;
A0: Unix tools
     Thu. Jan. 23 Structure of a compiler PLP 1.6–1.7 T0 due;
A1/T1: comparing languages;
Q1 and T1 due Sunday evening




Syntax
     Tue. Jan. 28 Review of scanning and of CFGs PLP 2.0–2.2; CS 2.4.0–2.4.1
     Thu. Jan. 30 Top-down and bottom-up parsing; recursive descent PLP 2.3.0–2.3.2
     Tue. Feb. 4 Table-driven LL(1) parsing; error recovery PLP 2.3.3, 2.5; CS 2.3.5 (pp. 1–6) Q2 due




Names
     Thu. Feb. 6 Binding time, scope rules PLP 3.0–3.4 A1 due Sunday evening
     Tue. Feb. 11 Binding rules, separate compilation PLP 3.5–3.9; CS 3.8 A2/T2: table-driven parsing and error recovery;
Q3 due




Semantics
     Thu. Feb. 13 Syntax trees, action routines PLP 4.0–4.2 T2 due
     Tue. Feb. 18 Formal semantics PLP 4.3–4.5 (skim), 4.7 Q4 due




Control flow
     Thu. Feb. 20 Expressions, sequencing, and selection PLP 6.0–6.4
     Tue. Feb. 25 Iteration and recursion PLP 6.5–6.8
Q5 due




Functional programming
     Thu. Feb. 27 Intro to OCaml
PLP 11.0–11.2, 7.4–7.5, 8.6, 11.4 A2 due Sunday evening
     Tue. Mar. 4 Evaluation order, higher-order functions PLP 11.5–11.6, 11.8–11.9 Q6 due




     Thu. Mar. 6 Midterm Exam (in class)
      
(Mar. 10–14 Spring Break)
 




Type Systems
     Tue. Mar. 18 Type systems, type checking PLP 7.0–7.2 A3/T3: interpretation
     Thu. Mar. 20 Polymorphism/Generics PLP 7.3, 7.6; CS 7.3.5 T3 due;
Q7 due




Subroutines
     Tue. Mar. 25 Stack management; parameter passing PLP 9.0–9.3
     Thu. Mar. 27 Exceptions, events, & asynchronous programming PLP 9.4, 9.6–9.8 Q8 due




Concurrency
     Tue. Apr. 1 Threads PLP 13.0–13.2.3, 9.5, 13.2.4
     Thu. Apr. 3 Synchronization PLP 13.3
     Tue. Apr. 8 Language mechanisms PLP 13.4, 13.6 Q9 due;
A3 due Wednesday evening




Composite Types
     Thu. Apr. 10 Records and arrays PLP 8.0–8.4 A4/T4: concurrency;
T4 due Sunday evening
     Tue. Apr. 15 Pointers, references, and dynamic storage management PLP 8.5, 8.8 Q10 due




Objects and Scripting
     Thu. Apr. 17 Scoping; constructors & destructors; virtual methods PLP 10.0–10.5, 10.8
     Tue. Apr. 22 Pattern matching; scripting objects PLP 14.0–14.1, 14.4–14.5 Q11 due




Code generation and run-time systems
     Thu. Apr. 24 Code generation, assembly
PLEASE be sure to fill out your on-line course evaluation.  (You should have received an email with instructions.)
PLP 15.0–15.3, 15.5
     Tue. Apr. 29 Linking; the JVM PLP 15.6, 16.0–16.1.1 Q12 due




     Thu. May 1 Last day of class: questions, final exam prep.  A4 due Friday evening




     TBA Final exam, in the official time slot


Back to the course home page

Last Change: 12 February 2025 / Michael Scott's email address