Lecture Resources

Note that the last time the course was offered there were numerous interruptions due to weather and covid issues, so we might have to tinker with the schedule a bit, but the breakdown below should be pretty close.

Week Topics and resources
Jan 6-10 Course overview, administrivia
Compilation
- overview: youtube, slides
- key steps: youtube, slides
Intro to grammars, lex, and yacc
- Formal descriptions of languages: youtube, slides
- Regular expressions: youtube, slides
**No labs this week**
Jan 13-17 - Context free grammars: youtube, slides
- lex and yacc (old webnotes/examples)
- lex/flex (tokenizer): youtube, slides
- yacc/bison (parser): youtube, slides
Jan 20-24 - Augmented context-free grammars: youtube, slides
Ad hoc context-sensitive analysis: youtube, slides
Handling types and type checking: youtube, slides
Language features: viutube, slides
Jan 27-31 Scanners/tokenizing
- intro: youtube, slides
- FSM practice: youtube, slides
- a simple hand-crafted tokenizer youtube
Transforming regexes to minimized DFAs: youtube, slides
Feb 3-7 - Thompson's construction: youtube, slides
- Subset construction: youtube, slides
- Hopcroft's algorithm: youtube, slides
**Quiz 1 is in the lab this week**
Feb 10-14 Scanner code generation (from DFA)
- intro: youtube, slides
- table-driven scanners: youtube, slides
- direct-coded scanners: youtube, slides
- hand-coded scanners: youtube, slides
Feb 17-21**Study break, no labs or lectures**
Feb 24-28 Parsers/parsing
- intro: youtube, slides
- Top-down parsing: youtube, slides - recursive descent, LL(1): youtube, slides
A simple hand-crafted parser: youtube
**Quiz 2 is in the lab this week**
Mar 3-7 Bottom-up parsing
- intro youtube, slides
- using action/goto tables: youtube, slides
- parsing considerations: youtube, slides
Mar 10-14 Attribute grammar frameworks: youtube, slides
Intermediate representations
- intro: youtube, slides
- Syntax trees, graphs: youtube, slides
- Linear codes: youtube, slides
Mar 17-21 - modeling and application: youtube, slides
- Subroutine abstraction: youtube, slides
- Activation records: youtube, slides
Mar 24-28 Code generation and structure
- Code shape and storage allocation: youtube, slides - Code generation, tree walking: youtube, slides
- Primitive types and operators (arithmetic, booleans, characters): youtube, slides
- other types: arrays, structs, unions, pointers: youtube, slides

- Iteration and selection: youtube, slides
- Subroutine calls: youtube, slides
**Quiz 3 is in the lab this week**

Mar 31-A4 Optimization I:
- overview: levels of optimization youtube, slides
- Local/block optimization: youtube, slides
- Regional optimization: youtube, slides
- Intraprocedural("global") optimization: youtube, slides
- Interprocedural (whole-program) optimization: youtube, slides
- Data flow analysis: iterative: youtube, slides
- SSA and uses: youtube, slides
- Whole-program analysis, optimizations, register allocation: youtube, slides
Apr 7-11

Course wrap-up/review
- review of content
- prep for final exam

Project presentation schedule: Mon/Wed lecture and Wed lab
        Mon lecture    Wed lecture            Wed lab
11:30   review/wrap     tba             1:30   tba
11:42   review/wrap     tba             1:42   tba
11:54   tba             tba             1:54   tba
12:06   tba             tba             2:06   tba
12:18   tba             tba
12:30   tba             tba
    
Supplemental: - Heap management: youtube, slides
Case study: GNU malloc approach
- memory organization: slides, youtube
- allocate/free algorithms: slides, youtube
External resource: GNU malloc (sourceware.org)
Aggregate data types
- arrays: slides, C++ example, youtube
- records/structures: slides, C++ example, youtube
- OO languages/issues: youtube, slides
- C++ OO implementation: slides, youtube
    (whoops: in slide 3, the definition of foo inside the class is incomplete, it was supposed to be returning x+i)