Week 1 5/12, 5/14 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 5/19, 5/21 2.1 -- Specifying Syntax: Regular Expressions and Context-Free Grammars 2.2 -- Scanning 2.3 -- Parsing 2.4 -- Theoretical Foundations Week 3 5/26, 5/28 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 6/2, 6/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 -- Decorating a Syntax Tree Week 5 6/9, 6/11 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 6/16, 6/18 7.1 -- Type Systems 7.2 -- Type Checking 7.3 -- Records (Structures) and Variants (Unions) 7.4 -- Arrays 7.5 -- Strings 7.6 -- Sets 7.7 -- Pointers and Recursive Types 7.8 -- Lists 7.9 -- Files and Input/Output 7.10 -- Equality Testing and Assignment Week 7 6/23, 6/25 8.1 -- Review of Stack Layout 8.2 -- Calling Sequences 8.3 -- Parameter Passing 8.4 -- Generic Subroutines and Modules 8.5 -- Exception Handling 8.6 -- Coroutines 8.7 -- Events Week 8 6/30, 7/2 10.1 -- Historical Origins 10.2 -- Functional Programming Concepts 10.3 -- A Review/Over of Scheme 10.4 -- Evaluation Order Revisited 10.5 -- Higher-Order Functions 10.6 -- Theoretical Foundations 10.7 -- Functional Programming in Perspective Week 9 7/7, 7/9 11.1 -- Logic Programming Concepts 11.2 -- Prolog 11.3 -- Theoretical Foundations 11.4 -- Logic Programming in Perspective Week 10 7/14, 7/16 12.1 -- Background and Motivation 12.2 -- Concurrent Programming Fundamentals 12.3 -- Implementing Synchronization 12.4 -- Language-Level Mechanisms 12.5 -- Message Passing Week 11 7/21, 7/23 13.1 -- What is a Scripting Language? 13.2 -- Problem Domains 13.3 -- Scripting the World Wide Web 13.4 -- Innovative Features Week 12 7/28, 7/30 14.1 -- Back-End Compiler Structure 14.2 -- Intermediate Forms 14.3 -- Code Generation 14.4 -- Address Space Organization 14.5 -- Assembly 14.6 -- Linking 14.7 -- Dynamic Linking