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] |