Schedule for CSC 2/454, Fall 2023

The following is my best guess as to the schedule for this fall.
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
     Wed. Aug. 30 Introduction PLP 1.0–1.5 T0: administration;
A0: Unix tools
     (Mon. Sep. 4 Labor Day)
 
     Wed. Sep. 6 Structure of a compiler PLP 1.6–1.7 T0 due;
Q1 due;
A1: comparing languages;
T1 due Friday evening




Syntax
     Mon. Sep. 11 Review of scanning and of CFGs PLP 2.0–2.2; CS 2.4.0–2.4.1
     Wed. Sep. 13 Top-down and bottom-up parsing; recursive descent PLP 2.3.0–2.3.2; CS 2.3.5 (pp. 1–6)
     Mon. Sep. 18 Error recovery, table-driven LL(1) parsing PLP 2.3.3; CS 2.3.5 (except pp. 10–12) Q2 due




Semantics
     Wed. Sep. 20 Static analysis, action routines PLP 4.0–4.5 A1 due last night;
A2: syntax error recovery
T2 due Friday evening
     Mon. Sep. 25 Decorating a syntax tree
PLP 4.6–4.7 Q3 due




Functional programming
     Wed. Sep. 27 Intro to OCaml
PLP 11.0–11.2, 7.2.4, 8.6, 11.4
     Mon. Oct. 2 Evaluation order, higher-order functions PLP 11.5–11.6, 11.8–11.9 Q4 due




Names
     Wed. Oct. 4 Binding time, scope rules PLP 3.0–3.4
     Mon. Oct. 9 Binding rules, separate compilation
(Prof. Scott out of town)
PLP 3.5–3.9; CS 3.8 A2 due last night;
Q5 due;
A3: interpretation (in OCaml)




Control flow
     Wed. Oct. 11 Expressions, sequencing, and selection
(Prof. Scott out of town)
PLP 6.0–6.4 T3 due
      
(Mon. Oct. 16 Fall Break)
 
     Wed. Oct. 18 Iteration and recursion PLP 6.5–6.8




Scripting languages
     Mon. Oct. 23 Overview, Perl PLP 14.0–14.1, 14.2.4 (Perl), 14.4.2, 14.4.3 Q6 due




     Wed. Oct. 25 Midterm review A3 due
     Mon. Oct. 30 Midterm Exam (in class)




Type Systems
     Wed. Nov. 1 Type systems, type checking PLP 7.0–7.2 A4: Disassembler
     Mon. Nov. 6 Polymorphism/Generics
US citizens: Don't forget to vote tomorrow
PLP 7.3–7.5; CS 7.3.2 T4 due Friday evening;




Composite Types
     Wed. Nov. 8 Records and arrays PLP 8.0–8.4 Q7 due
     Mon. Nov. 13 Pointers, references, and dynamic storage management PLP 8.5 Q8 due




Concurrency
     Wed. Nov. 15 Threads PLP 13.0–13.2.3, 9.5, 13.2.4
     Mon. Nov. 20 Synchronization PLP 13.3
     Wed. Nov. 22 Language mechanisms PLP 13.4 Q9 due
A4 due at noon




     (Thur. Nov. 23 Thanksgiving)




Subroutines
     Mon. Nov. 27 Stack management, parameter passing PLP 9.0–9.3 A5: concurrency (in Java)
     Wed. Nov. 29 Exceptions, events PLP 9.4.3, 9.6 T5 due




Objects
     Mon. Dec. 4 Asynchronous programming; intro to objects PLP 10.1–10.3




Code generation and run-time systems
     Wed. Dec. 6 Constructors & destructors; Virtual methods
PLEASE be sure to fill out your on-line course evaluation.  (You should have received an email directing you to rochester.aefis.net/.)  Surveys close on Dec. 15.
PLP 10.4–10.6.1; 14.4.4 Q10 due
     Mon. Dec. 11 Code generation, assembly PLP 15.0–15.3, 15.5




     Wed. Dec. 13 Last day of class.  Linking; the JVM;
Final exam prep. 
PLP 15.6, 16.1.1 Q11 due;
A5 due Friday night




     Tue. Dec. 19 Final exam, 12:30–3:30pm


Back to the course home page

Last Change: 10 December 2023 / Michael Scott's email address