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
EDIT: no lecture Jan. 15th as Dave is unavailable |
Jan 20-24 |
- lex and yacc (old webnotes/examples)
- lex/flex (tokenizer): youtube, slides - yacc/bison (parser): youtube, slides - Augmented context-free grammars: youtube, slides |
Jan 27-31 |
Ad hoc context-sensitive analysis:
youtube,
slides
Handling types and type checking: youtube, slides |
Feb 3-7 |
Scanners/tokenizing
- intro: youtube, slides - FSM practice: youtube, slides - a simple hand-crafted tokenizer youtube Transforming regexes to minimized DFAs: youtube, slides - 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 | largely spent reviewing the regex->minimized DFA process from previous week |
Feb 17-21 | **Study break, no labs or lectures** |
Feb 24-28 |
Scanner code generation (from DFA)
- intro: youtube, slides - table-driven scanners: youtube, slides - direct-coded scanners: youtube, slides - hand-coded scanners: youtube, slides Parsers/parsing
|
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 Language features: viutube, slides Course wrap-up/review
|
Apr 7-11 |
Project presentation schedule: Mon/Wed lecture and Wed lab Mon lecture Wed lecture Wed lab 11:30 tba tba 1:30 tba 11:42 tba 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) |