Week 1 1.1 -- The Art of Language Design 1.2 -- The Programming Language Spectrum 1.3 -- Why Study Programming Languages 1.4 -- Compilation and Interpretation 1.5 -- Programming Environments 1.6 -- An Overview of Compilation Week 2 2.1 -- Specifying Syntax: Regular Expressions and Context-Free Grammars 2.2 -- Scanning 2.3 -- Parsing 2.4 -- Theoretical Foundations Week 3 3.1 -- The Notion of Binding Time 3.2 -- Object Lifetime and Storage Management 3.3 -- Scope Rules 3.4 -- Implementing Scope 3.5 -- Meaning of Names within a Scope 3.6 -- The Binding of Referencing Environments 3.7 -- Macro Expansion 3.8 -- Separate Compilation Week 4 4.1 -- The Role of the Semantic Analyzer 4.2 -- Attribute Grammars 4.3 -- Evaluating Attributes 4.4 -- Action Routines 4.5 -- Space Management for Attributes 4.6 -- Tree Grammars and Syntax Tree Decoration Week 5 6.1 -- Expression Evaluation 6.2 -- Structured and Unstructured Flow 6.3 -- Sequencing 6.4 -- Selection 6.5 -- Iteration 6.6 -- Recursion 6.7 -- Nondeterminacy Week 6 7.1 -- Type Systems 7.2 -- Type Checking 7.3 -- Parametric Polymorphism 7.4 -- Equality Testing and Assignment Week 7 8.1 -- Records (Structures) 8.2 -- Arrays 8.3 -- Strings 8.4 -- Sets 8.5 -- Pointers and Recursive Types 8.6 -- Lists 8.7 -- Files and Input/Output Week 8 9.1 -- Review of Stack Layout 9.2 -- Calling Sequences 9.3 -- Parameter Passing 9.4 -- Exception Handling 9.5 -- Coroutines 9.6 -- Events (The midterm will have material only through chapter 9, although we should have started chapter 10 by the time of the exam.) Week 9 10.1 -- Object-oriented Programming 10.2 -- Encapsulation and Inheritance 10.3 -- Initialization and Finalization 10.4 -- Dynamic Method Binding 10.5 -- Mix-In Inheritance 10.6 -- True Multiple Inheritance 10.7 -- Object-Oriented Programming Revisited Week 10 11.1 -- Historical Origins 11.2 -- Functional Programming Concepts 11.3 -- A Bit of Scheme 11.4 -- A Bit of OCaml 11.5 -- Evaluation Order Revisited 11.6 -- Higher-Order Functions 11.7 -- Theoretical Foundations 11.8 -- Functional Programming in Perspective Week 11 12.1 -- Logic Programming Concepts 12.2 -- Prolog 12.3 -- Theoretical Foundations 12.4 -- Logic Programming in Perspective Week 12 14.1 -- What is a Scripting Language? 14.2 -- Problem Domains 14.3 -- Scripting the World Wide Web 14.4 -- Innovative Features Week 13 15.1 -- Back-End Compiler Structure 15.2 -- Intermediate Forms 15.3 -- Code Generation 15.4 -- Address Space Organization 15.5 -- Assembly 15.6 -- Linking 15.7 -- Dynamic Linking (The final is comprehensive.)