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