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