Schedule
- Week 1: Feb 26 - Mar 2:
- Introduction to programming language implementation and to this course:
interpreters and compilers, real and virtual machines, generic compiler
architecture, intermediate program representations, C, Scheme, study, assessment.
Lecture 1
Tutorial 1
- Week 2: Mar 5 - Mar 9:
- Lexical analysis: tasks, regular expressions, finite automata,
implementation, tools lex and flex.
Lecture 2
Tutorial 2
- Week 3: Mar 12 - Mar 16:
- Parsing I: Context-free grammars, context-free languages, ambiguous
grammars, parse trees, EBNF, first and follow sets, and recursive descent parsing.
Lecture 3
(see also 2004's lecture: part 1
and part 2.)
Tutorial 3
- Week 4: Mar 19 - Mar 23:
- Parsing II: Bottom-up parsing techniques, parsing table construction,
SLR(1) grammars, and tools yacc and bison.
Lecture 4
(see also 2004's lecture)
Tutorial 4
- Week 5: Mar 26 - Mar 30:
- Meta-circular Scheme interpreters, run-time environments.
Lecture 5
Tutorial 5
Assignment 1
- Week 6: April 2 - Apr 6:
- Semantic analysis I: Attributes and attribute grammars
Semantic analysis II: Data structures and algorithms: scope rules,
name analysis, type inference and type checking
Lecture 6 (2004 lecture)
Lecture 7
Tutorial 6
Mid-semester break
- Week 7: Apr 16 - Apr 20:
- Run-time environments: Stack frames, procedures and parameters, static
and dynamic links, etc.
Lecture 8
(see Figures 7.5 and 7.11)
(see also 2004 lecture)
Tutorial 6 (cont.)
Tutorial 8
Louden, Chapter 7.
Assignment 1 due
- Week 8: Apr 23 - Apr 27:
- Run-time environments: Data representation,
heap storage management, garbage collection.
Lecture 9
Tutorial 8 (cont).
Louden, Chapter 7 (cont.).
- Week 9: April 30 - May 4:
- Code generation I: Translation to intermediate code
Lecture 10
Tutorial 9
Assignment 2
- Week 10: May 7 - May 11:
- Code generation II: Translation to target machine code
Lecture 11
Tutorial 9 (cont.)
- Week 11: May 14 - May 18:
-
Efficient interpretation, and compilation, in Scheme.
Lecture 7 (review)
Lecture 12
Tutorial 10
- Week 12: May 21 - May 25:
- Optimisation:
TM description, TM simulator, TINY code generator and optimiser.
Lecture 13
Tutorial 11
Assignment 2 due
- Week 13: May 28 - Jun 1:
- Functional, object-oriented and concurrent languages.
Conclusion: Case studies, review, exam preparation.
2005 examination questions
2006 examination questions
Study week - tutorial?
Examination
Last modified: $Date: 2008/01/25 02:21:46 $, by Rodney Topor