Home | Lectures | Written Assignments | Programming Assignments | Exams | Cool

CS 4610 - Programming Languages - Lectures

Discussion Section Notes

A discussion section will be held Mondays, 5:00-6:00, in OLS 009 (the normal lecture classroom). The notes are available on the Collab discussion group.

Lectures and Syllabus

Date # Topic Homework Due Reading For The Next Class
Thu Aug 20 No Lecture Start PA1 No, really. Start PA1
Tue Aug 25 01 Course Overview Chapters 10.1 - 10.3, 10.5 - 10.8
Joel Spolsky's The Perils of JavaSchools (optional)
Thu Aug 27 02 History of PL
Functional Programming
The Cool Reference Manual
J. W. Backus. Speedcoding. Journal of the ACM 1(1) pp. 4-6, 1954.
Tue Sep 01 03 Functional Programming
Overview of Cool
Chapters 2.1 - 2.2
Edsger Dijkstra. How do we tell truths that might hurt? EWD498, 1975. (optional)
Wed Sep 02 PA0 (Rosetta) Due P. J. Landin. The next 700 programming languages. Communications of the ACM 9(3) pp. 157-166, 1966. (very optional, about functional programming)
Thu Sep 03 04 Lexical Analysis & Finite Automata (Part 1)
Tue Sep 08 05 More Finite Automata (Part 2) Chapters 2.4 - 2.4.1 (13 CD - 15 CD) (1 page in book + 3 pages on CD)
Wed Sep 09 PA1 (Rosetta) Due
Thu Sep 10 06 Context-Free Grammars, Parsing, Derivations, Ambiguity Chapters 2.3 - 2.3.2
Wikipedia's LL Parsing (optional)
Mike Clark's Removing Left Recursion (optional)
Robert Ball's First Sets, Follow Setes and LL(1) Tables (optional)
Tue Sep 15 07 Top-Down Parsing WA1 Due Chapter 2.3.3
Wikipedia's LR Parsing (optional)
Wed Sep 16 PA2 (Lexing) Due
Thu Sep 17 08 LR Parsing Chapters 2.3.4 - 2.3.5, 2.4.2 - 2.4.3 (16 CD - 18 CD) (3 pages on CD)
Tue Sep 22 09 LR Table Construction WA2 Due Chapters 3.1 - 3.6
Wikipedia's Scope (programming) (optional)
Thu Sep 24 10 Scoping & Types Chapters 4 - 4.1, 7 - 7.1
Luca Cardelli's Type Systems (optional but recommended)
Tue Sep 29 Midterm 1 (in class) (Wes at Stanford/Berkeley)
Wed Sep 30 PA3 (Parsing) Due
Thu Oct 01 11 Type Checking & Static Semantics WA3 Due Chapter 7.2
Wikipedia's Type system (optional)
Sat Oct 03 Reading Days Begin
Tue Oct 06 Reading Days End
Thu Oct 08 12 More Static Semantics Chapters 8.1 - 8.3
Chapter 6 of Grant & Smith's Programming Languages (optional)
Tue Oct 13 13 Cool Type Checking, Runtime Organization Chapters 7.3, 9 - 9.3
Bjarne Stroustrup. What is "Object-Oriented Programming"?. 1991
Wikipedia's Object-oriented programming (optional)
Wed Oct 14 WA4 (Semantics Checkpoint) Due (11:50pm)
Thu Oct 15 14 Operational Semantics Chapters 9.4 - 9.7
Wikipedia's Virtual method table (optional)
Wikipedia's Aspect-oriented programming (optional)
Tue Oct 20 15 Introduction to Game Theory The Cool Reference Manual, Chapters 2 - 2.2.2 of Grant & Smith's Programming Languages
Chapters 2.3 - 2.4.4 of Grant & Smith's Programming Languages (optional)
Thu Oct 22 16 Code Generation (Part 1) USC CS 410 Lecture Notes: "Code Generation for a Stack Machine" (optional)
Tue Oct 27 17 Code Generation (Part 2)
Wed Oct 28 PA4 (Semantics) Due
Thu Oct 29 18 Basic Blocks, Local Optimizations WA5 Due Wikipedia's Basic block and Data-flow analysis
Tue Nov 03 19 Dataflow Analysis, Global Optimizations Chapter 7.7
David F. Bacon, Perry Cheng, V. T. Rajan. A unified theory of garbage collection. In OOPSLA, pp. 50-68, 2004. (optional)
Thu Nov 05 20 Automatic Memory Management
also Daniel Lee
WA6 Due Chapter 8.5
Tue Nov 10 21 Exceptions and Error Handling Susan L. Graham, Peter B. Kessler, Marshall K. McKusick. gprof: a call graph execution profiler. In Best of PLDI 1979-1999, pp. 49-57, 2004.
Thu Nov 12 22 Debuggers and Profilers WA7 Due Chapter 14.6, 14.7 (195 CD - 199 CD) (one chapter in the book, one on the CD)
INST 1550-5: Social and Cultural Impacts of Video Games Syllabus (optional; 2 credit pass/fail class in the Spring)
Tue Nov 17 23 Linking, Loading and Shared Libraries Aleph One. Smashing The Stack For fun And Profit. In Phrack 7(49):14, 1996.
Software Usability II by Tom Davis (optional; a description of how software engineering (and shared libaries, called "DSO"s) played out as Silicon Graphics was developing the IRIX Operating System for the SGI Indy workstation)
Wed Nov 18 Fireside Chat — Hazelwood and Weimer
5:00 - 6:00 pm, OLS 228e/236d
Thu Nov 19 24 Language Security WA8 Due
PA5 Checkpoint Due
(hello-world.cl)
Tue Nov 24 Midterm 2 (in class)
(1 hour 30 minutes if needed)
Ken Thompson. Reflections on Trusting Trust. ACM Turing Award Speech. (optional)
Wes at CREST, King's College London
Wed Nov 25 Thanksgiving Recess Begins
Sun Nov 29 Thanksgiving Recess Ends
Tue Dec 01 25 Internet Security
Wed Dec 02 PA5 (Compiler) Due
Thu Dec 03 26 Ranom Analyses
Quantum Computing I
Fri Dec 04 PL Fencing
4:30pm, Darden Court
Tue Dec 08 27 Quantum Computing II
Romance Novels
Wed Dec 09 All Except Optimizer+Final Due at Midnight
Sat Dec 12 Optimizer (Extra Credit) Due at Midnight
Mon Dec 14 Final Exam Due At Noon

Three-Credit Due Dates

Students taking the course for three credits only (instead of a total of five) should use the following due dates:

If you are such a student, you must separately email one of us when you submit your assignment so that we don't mistakely mark you late.

Textbook

All readings are from Michael L. Scott's Programming Language Pragmatics (second edition) unless otherwise specified.