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

CS 415 - Programming Languages - Lectures

Discussion Section Notes

The discussion section is Thursday, 10:00 to 11:00 in Olsson 228-E.
  1. Functional Programming and Cool
  2. DFAs and Regular Expressions
  3. Context-Free Languages
  4. LR Parsing DFA and Table Construction
  5. Type Checking and SELF_TYPE
  6. Operational Semantics

Lectures and Syllabus

Date # Topic Homework Due Reading For The Next Class
Thu Jan 17 No Lecture Start PA1 No, really. Start PA1
Tue Jan 22 01 Course Overview Chapters 10.1 - 10.3, 10.5 - 10.8
Joel Spolsky's The Perils of JavaSchools (optional)
Thu Jan 24 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 Jan 29 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 Jan 30 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 Jan 31 04 Lexical Analysis & Finite Automata (Part 1)
Tue Feb 05 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 Feb 06 PA1 (Rosetta) Due
Thu Feb 07 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 Feb 12 07 Top-Down Parsing WA1 Due Chapter 2.3.3
Wikipedia's LR Parsing (optional)
Wed Feb 13 PA2 (Lexing) Due
Thu Feb 14 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 Feb 19 09 LR Table Construction WA2 Due Chapters 3.1 - 3.6
Wikipedia's Scope (programming) (optional)
Thu Feb 21 10 Scoping & Types Chapters 4 - 4.1, 7 - 7.1
Luca Cardelli's Type Systems (optional but recommended)
Tue Feb 26 11 Type Checking & Static Semantics WA3 Due Chapter 7.2
Wikipedia's Type system (optional)
Wed Feb 27 PA3 (Parsing) Due
Thu Feb 28 Midterm 1 (in class)
Sat Mar 01 Spring Recess Begins
Sun Mar 09 Spring Recess Ends
Tue Mar 11 12 More Static Semantics Chapters 8.1 - 8.3
Chapter 6 of Grant & Smith's Programming Languages (optional)
Thu Mar 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)
Tue Mar 18 14 Operational Semantics Chapters 9.4 - 9.7
Wikipedia's Virtual method table (optional)
Wikipedia's Aspect-oriented programming (optional)
Wed Mar 19 WA4 (Semantics Checkpoint) Due (11:50pm)
Thu Mar 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)
Tue Mar 25 16 Basic Blocks, Local Optimizations WA5 Due Wikipedia's Basic block and Data-flow analysis
Wed Mar 26 PA4 (Semantics) Due
Thu Mar 27 17 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)
Tue Apr 01 18 Automatic Memory Management WA6 Due Chapter 8.5
Thu Apr 03 19 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.
Tue Apr 08 20 Debuggers and Profilers WA7 Due Chapter 14.6, 14.7 (195 CD - 199 CD) (one chapter in the book, one on the CD)
Thu Apr 10 21 Linking, Loading and Shared Libraries
Tue Apr 15 Midterm 2 (in class) Aleph One. Smashing The Stack For fun And Profit. In Phrack 7(49):14, 1996.
Ken Thompson. Reflections on Trusting Trust. ACM Turing Award Speech. (optional)
Thu Apr 17 22 Language Security WA8 Due
Tue Apr 22 23 Internet Security
Wed Apr 23 PA5 (Interpreter) Due
Thu Apr 24 24 Security Analyses
Tue Apr 29 25 Quantum Computing
Romance Novels
Sat May 3 Final Exam: 9am - Noon (list of exam topics)

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