CS 164: Compilers and Programming Languages

Lecture slides

Frequently there will be other material covered in the lecture based on live demonstrations of programs (like those in the class software directories or in the assignments). I will generally try to indicate (by the presence of unreadably dense slides with code on them) that something went on at this point.

# Topic Files
1. Introduction [PPT] [PDF]
2. Introduction: Parsing and more [PPT] [PDF]
3. A brief survey of languages: motivation and design [PPT] [PDF]
4. Overview of MiniJava [PPT] [PDF]
5. Lexical analysis [PPT] [PDF]
6. Implementation of regular expression recognizers [PPT] [PDF]
7. More finite automata / lexical analysis / intro to parsing [PPT] [PDF]
8. Top-down parsing [PPT] [PDF]
9. Bottom-up parsing [PPT] [PDF]
10. LR parsing, LALR parser generators [PPT] [PDF]
11. Syntax to simple semantics [PPT] [PDF]
12. Overview of semantic analysis [PPT] [PDF]
13. Types [PPT] [PDF]
14. Language definition by interpreter [PPT] [PDF]
15. Language definition by interpreter, translator, continued [PPT] [PDF]
16. Properly tail recursive interpreter; timings of compilation versus interpretation [PPT] [PDF]
17. Memory allocation and garbage collection [PPT] [PDF]
18. Functional MiniJava, calling variations [PPT] [PDF]
19. Introduction to intermediate code, virtual machine implementation [PPT] [PDF]
20. Virtual machine structure [PPT] [PDF]
21. Local optimizations [PPT] [PDF]
22. Global optimization [PPT] [PDF]
23. Intro to lambda calculus [PPT] [PDF]
24. Throw, catch, continuations, and call/cc [PPT] [PDF]
25. Language as a tool for SW engineering: object-oriented programming [PPT] [PDF]
26. Macro expansion and macro languages [PPT] [PDF]