Week 1Week 1: Course overview
Official weekly topics for Week 1: - Lecture: Week 1: Course overview - Phases of a compiler and introduction to interpreters. Learning outcomes: L02, L08, L10 Official timetable activities: - Applied Class | Fri 12:00 | 60 mins | 78-343 - General Purpose South - Lecture | Mon 14:00 | 60 mins | 50-T105 - Hawken Engineering Building Source: 2026 S1 UQ Course Profile - https://course-profiles.uq.edu.au/course-profiles/COMP4403-21232-7620
Week 2Weekly Applied Class / Week 1-2: Language definition / Week 2-3: Recursive descent parsing / Week 3-4: Assignment 1 compiler / Weeks 6-9: Bottom-up parsing / Weeks 6-12: Code generation / Week 10-12: Runtime organisation
No separate week-by-week topic is publicly listed for Week 2; official repeated teaching activities are shown below: - Applied Class: Weekly Applied Class - The applied classes provide weekly opportunities to apply the skills learnt in lectures to complete revision exercises with guidance from course staff. They are an essential part of the learning process in this course. They provide the basis from which you can attempt the assignments and cover questions similar to those in the final examination. - Lecture: Week 1-2: Language definition - Definition of the syntax of programming languages using context-free grammars and regular expressions. Learning outcomes: L01, L03, L04, L08 - Lecture: Week 2-3: Recursive descent parsing - Implementing a parser for an Extended Backus-Naur Form (EBNF) grammar using recursive methods, one for each non-terminal symbol in the grammar. Handling syntax error recovery and abstract syntax tree building. Learning outcomes: L04, L08, L10 - Lecture: Week 3-4: Assignment 1 compiler - Detailed discussion of the recursive descent parser used in assignment 1, including parsing, syntax error recovery, static semantics (checking the types of variables, etc.), abstract syntax tree construction and run time interpreter. - Lecture: Weeks 6-9: Bottom-up parsing - Shift/reduce parsing. LR(0) parsing. Assignment 2 compiler using parser generator tool. Parsing conflicts. Operator precedence and associativity. LR(1) parsing. LALR(1) parsing. Learning outcomes: L04, L11 - Lecture: Weeks 6-12: Code generation - Code generation for a stack machine. Code generation for expressions, control structures, and procedure calls. The material on code generation is treated incrementally throughout the course as necessary. - Lecture: Week 10-12: Runtime organisation - Stack-based runtime organisation for handling procedure calls and local variable allocation. Parameter passing mechanisms. Heap organisation for dynamically allocated variables; garbage collection. Representing objects and classes. Official timetable activities: - Applied Class | Fri 12:00 | 60 mins | 78-343 - General Purpose South - Lecture | Mon 14:00 | 60 mins | 50-T105 - Hawken Engineering Building Source: 2026 S1 UQ Course Profile - https://course-profiles.uq.edu.au/course-profiles/COMP4403-21232-7620
Week 3Weekly Applied Class / Week 1-2: Language definition / Week 2-3: Recursive descent parsing / Week 3-4: Assignment 1 compiler / Weeks 6-9: Bottom-up parsing / Weeks 6-12: Code generation / Week 10-12: Runtime organisation
No separate week-by-week topic is publicly listed for Week 3; official repeated teaching activities are shown below: - Applied Class: Weekly Applied Class - The applied classes provide weekly opportunities to apply the skills learnt in lectures to complete revision exercises with guidance from course staff. They are an essential part of the learning process in this course. They provide the basis from which you can attempt the assignments and cover questions similar to those in the final examination. - Lecture: Week 1-2: Language definition - Definition of the syntax of programming languages using context-free grammars and regular expressions. Learning outcomes: L01, L03, L04, L08 - Lecture: Week 2-3: Recursive descent parsing - Implementing a parser for an Extended Backus-Naur Form (EBNF) grammar using recursive methods, one for each non-terminal symbol in the grammar. Handling syntax error recovery and abstract syntax tree building. Learning outcomes: L04, L08, L10 - Lecture: Week 3-4: Assignment 1 compiler - Detailed discussion of the recursive descent parser used in assignment 1, including parsing, syntax error recovery, static semantics (checking the types of variables, etc.), abstract syntax tree construction and run time interpreter. - Lecture: Weeks 6-9: Bottom-up parsing - Shift/reduce parsing. LR(0) parsing. Assignment 2 compiler using parser generator tool. Parsing conflicts. Operator precedence and associativity. LR(1) parsing. LALR(1) parsing. Learning outcomes: L04, L11 - Lecture: Weeks 6-12: Code generation - Code generation for a stack machine. Code generation for expressions, control structures, and procedure calls. The material on code generation is treated incrementally throughout the course as necessary. - Lecture: Week 10-12: Runtime organisation - Stack-based runtime organisation for handling procedure calls and local variable allocation. Parameter passing mechanisms. Heap organisation for dynamically allocated variables; garbage collection. Representing objects and classes. Official timetable activities: - Applied Class | Fri 12:00 | 60 mins | 78-343 - General Purpose South - Lecture | Mon 14:00 | 60 mins | 50-T105 - Hawken Engineering Building Source: 2026 S1 UQ Course Profile - https://course-profiles.uq.edu.au/course-profiles/COMP4403-21232-7620
Week 4Week 4: Interpreters
Official weekly topics for Week 4: - Lecture: Week 4: Interpreters - Using interpreters to implement programming languages. Learning outcomes: L08, L09 Official timetable activities: - Applied Class | Fri 12:00 | 60 mins | 78-343 - General Purpose South - Lecture | Mon 14:00 | 60 mins | 50-T105 - Hawken Engineering Building Source: 2026 S1 UQ Course Profile - https://course-profiles.uq.edu.au/course-profiles/COMP4403-21232-7620
Week 5Weeks 5: Grammars and LL(1) parsing
Official weekly topics for Week 5: - Lecture: Weeks 5: Grammars and LL(1) parsing - Rewriting grammars to avoid left factors and left recursion (so that they are suitable for recursive descent parsing). First and follow sets. LL(1) grammars and parsing. Learning outcomes: L04 Official timetable activities: - Applied Class | Fri 12:00 | 60 mins | 78-343 - General Purpose South - Lecture | Mon 14:00 | 60 mins | 50-T105 - Hawken Engineering Building Source: 2026 S1 UQ Course Profile - https://course-profiles.uq.edu.au/course-profiles/COMP4403-21232-7620
Week 6Weekly Applied Class / Week 1-2: Language definition / Week 2-3: Recursive descent parsing / Week 3-4: Assignment 1 compiler / Weeks 6-9: Bottom-up parsing / Weeks 6-12: Code generation / Week 10-12: Runtime organisation
No separate week-by-week topic is publicly listed for Week 6; official repeated teaching activities are shown below: - Applied Class: Weekly Applied Class - The applied classes provide weekly opportunities to apply the skills learnt in lectures to complete revision exercises with guidance from course staff. They are an essential part of the learning process in this course. They provide the basis from which you can attempt the assignments and cover questions similar to those in the final examination. - Lecture: Week 1-2: Language definition - Definition of the syntax of programming languages using context-free grammars and regular expressions. Learning outcomes: L01, L03, L04, L08 - Lecture: Week 2-3: Recursive descent parsing - Implementing a parser for an Extended Backus-Naur Form (EBNF) grammar using recursive methods, one for each non-terminal symbol in the grammar. Handling syntax error recovery and abstract syntax tree building. Learning outcomes: L04, L08, L10 - Lecture: Week 3-4: Assignment 1 compiler - Detailed discussion of the recursive descent parser used in assignment 1, including parsing, syntax error recovery, static semantics (checking the types of variables, etc.), abstract syntax tree construction and run time interpreter. - Lecture: Weeks 6-9: Bottom-up parsing - Shift/reduce parsing. LR(0) parsing. Assignment 2 compiler using parser generator tool. Parsing conflicts. Operator precedence and associativity. LR(1) parsing. LALR(1) parsing. Learning outcomes: L04, L11 - Lecture: Weeks 6-12: Code generation - Code generation for a stack machine. Code generation for expressions, control structures, and procedure calls. The material on code generation is treated incrementally throughout the course as necessary. - Lecture: Week 10-12: Runtime organisation - Stack-based runtime organisation for handling procedure calls and local variable allocation. Parameter passing mechanisms. Heap organisation for dynamically allocated variables; garbage collection. Representing objects and classes. Official timetable activities: - Applied Class | Fri 12:00 | 60 mins | 78-343 - General Purpose South - Lecture | Mon 14:00 | 60 mins | 50-T105 - Hawken Engineering Building Source: 2026 S1 UQ Course Profile - https://course-profiles.uq.edu.au/course-profiles/COMP4403-21232-7620
Week 7Weekly Applied Class / Week 1-2: Language definition / Week 2-3: Recursive descent parsing / Week 3-4: Assignment 1 compiler / Weeks 6-9: Bottom-up parsing / Weeks 6-12: Code generation / Week 10-12: Runtime organisation
No separate week-by-week topic is publicly listed for Week 7; official repeated teaching activities are shown below: - Applied Class: Weekly Applied Class - The applied classes provide weekly opportunities to apply the skills learnt in lectures to complete revision exercises with guidance from course staff. They are an essential part of the learning process in this course. They provide the basis from which you can attempt the assignments and cover questions similar to those in the final examination. - Lecture: Week 1-2: Language definition - Definition of the syntax of programming languages using context-free grammars and regular expressions. Learning outcomes: L01, L03, L04, L08 - Lecture: Week 2-3: Recursive descent parsing - Implementing a parser for an Extended Backus-Naur Form (EBNF) grammar using recursive methods, one for each non-terminal symbol in the grammar. Handling syntax error recovery and abstract syntax tree building. Learning outcomes: L04, L08, L10 - Lecture: Week 3-4: Assignment 1 compiler - Detailed discussion of the recursive descent parser used in assignment 1, including parsing, syntax error recovery, static semantics (checking the types of variables, etc.), abstract syntax tree construction and run time interpreter. - Lecture: Weeks 6-9: Bottom-up parsing - Shift/reduce parsing. LR(0) parsing. Assignment 2 compiler using parser generator tool. Parsing conflicts. Operator precedence and associativity. LR(1) parsing. LALR(1) parsing. Learning outcomes: L04, L11 - Lecture: Weeks 6-12: Code generation - Code generation for a stack machine. Code generation for expressions, control structures, and procedure calls. The material on code generation is treated incrementally throughout the course as necessary. - Lecture: Week 10-12: Runtime organisation - Stack-based runtime organisation for handling procedure calls and local variable allocation. Parameter passing mechanisms. Heap organisation for dynamically allocated variables; garbage collection. Representing objects and classes. Official timetable activities: - Applied Class | Fri 12:00 | 60 mins | 78-343 - General Purpose South - Lecture | Mon 14:00 | 60 mins | 50-T105 - Hawken Engineering Building Source: 2026 S1 UQ Course Profile - https://course-profiles.uq.edu.au/course-profiles/COMP4403-21232-7620
Week 8Weekly Applied Class / Week 1-2: Language definition / Week 2-3: Recursive descent parsing / Week 3-4: Assignment 1 compiler / Weeks 6-9: Bottom-up parsing / Weeks 6-12: Code generation / Week 10-12: Runtime organisation
No separate week-by-week topic is publicly listed for Week 8; official repeated teaching activities are shown below: - Applied Class: Weekly Applied Class - The applied classes provide weekly opportunities to apply the skills learnt in lectures to complete revision exercises with guidance from course staff. They are an essential part of the learning process in this course. They provide the basis from which you can attempt the assignments and cover questions similar to those in the final examination. - Lecture: Week 1-2: Language definition - Definition of the syntax of programming languages using context-free grammars and regular expressions. Learning outcomes: L01, L03, L04, L08 - Lecture: Week 2-3: Recursive descent parsing - Implementing a parser for an Extended Backus-Naur Form (EBNF) grammar using recursive methods, one for each non-terminal symbol in the grammar. Handling syntax error recovery and abstract syntax tree building. Learning outcomes: L04, L08, L10 - Lecture: Week 3-4: Assignment 1 compiler - Detailed discussion of the recursive descent parser used in assignment 1, including parsing, syntax error recovery, static semantics (checking the types of variables, etc.), abstract syntax tree construction and run time interpreter. - Lecture: Weeks 6-9: Bottom-up parsing - Shift/reduce parsing. LR(0) parsing. Assignment 2 compiler using parser generator tool. Parsing conflicts. Operator precedence and associativity. LR(1) parsing. LALR(1) parsing. Learning outcomes: L04, L11 - Lecture: Weeks 6-12: Code generation - Code generation for a stack machine. Code generation for expressions, control structures, and procedure calls. The material on code generation is treated incrementally throughout the course as necessary. - Lecture: Week 10-12: Runtime organisation - Stack-based runtime organisation for handling procedure calls and local variable allocation. Parameter passing mechanisms. Heap organisation for dynamically allocated variables; garbage collection. Representing objects and classes. Official timetable activities: - Applied Class | Fri 12:00 | 60 mins | 78-343 - General Purpose South - Lecture | Mon 14:00 | 60 mins | 50-T105 - Hawken Engineering Building Source: 2026 S1 UQ Course Profile - https://course-profiles.uq.edu.au/course-profiles/COMP4403-21232-7620
Week 9Weekly Applied Class / Week 1-2: Language definition / Week 2-3: Recursive descent parsing / Week 3-4: Assignment 1 compiler / Weeks 6-9: Bottom-up parsing / Weeks 6-12: Code generation / Week 10-12: Runtime organisation
No separate week-by-week topic is publicly listed for Week 9; official repeated teaching activities are shown below: - Applied Class: Weekly Applied Class - The applied classes provide weekly opportunities to apply the skills learnt in lectures to complete revision exercises with guidance from course staff. They are an essential part of the learning process in this course. They provide the basis from which you can attempt the assignments and cover questions similar to those in the final examination. - Lecture: Week 1-2: Language definition - Definition of the syntax of programming languages using context-free grammars and regular expressions. Learning outcomes: L01, L03, L04, L08 - Lecture: Week 2-3: Recursive descent parsing - Implementing a parser for an Extended Backus-Naur Form (EBNF) grammar using recursive methods, one for each non-terminal symbol in the grammar. Handling syntax error recovery and abstract syntax tree building. Learning outcomes: L04, L08, L10 - Lecture: Week 3-4: Assignment 1 compiler - Detailed discussion of the recursive descent parser used in assignment 1, including parsing, syntax error recovery, static semantics (checking the types of variables, etc.), abstract syntax tree construction and run time interpreter. - Lecture: Weeks 6-9: Bottom-up parsing - Shift/reduce parsing. LR(0) parsing. Assignment 2 compiler using parser generator tool. Parsing conflicts. Operator precedence and associativity. LR(1) parsing. LALR(1) parsing. Learning outcomes: L04, L11 - Lecture: Weeks 6-12: Code generation - Code generation for a stack machine. Code generation for expressions, control structures, and procedure calls. The material on code generation is treated incrementally throughout the course as necessary. - Lecture: Week 10-12: Runtime organisation - Stack-based runtime organisation for handling procedure calls and local variable allocation. Parameter passing mechanisms. Heap organisation for dynamically allocated variables; garbage collection. Representing objects and classes. Official timetable activities: - Applied Class | Fri 12:00 | 60 mins | 78-343 - General Purpose South - Lecture | Mon 14:00 | 60 mins | 50-T105 - Hawken Engineering Building Source: 2026 S1 UQ Course Profile - https://course-profiles.uq.edu.au/course-profiles/COMP4403-21232-7620
Week 10Weekly Applied Class / Week 1-2: Language definition / Week 2-3: Recursive descent parsing / Week 3-4: Assignment 1 compiler / Weeks 6-9: Bottom-up parsing / Weeks 6-12: Code generation / Week 10-12: Runtime organisation
No separate week-by-week topic is publicly listed for Week 10; official repeated teaching activities are shown below: - Applied Class: Weekly Applied Class - The applied classes provide weekly opportunities to apply the skills learnt in lectures to complete revision exercises with guidance from course staff. They are an essential part of the learning process in this course. They provide the basis from which you can attempt the assignments and cover questions similar to those in the final examination. - Lecture: Week 1-2: Language definition - Definition of the syntax of programming languages using context-free grammars and regular expressions. Learning outcomes: L01, L03, L04, L08 - Lecture: Week 2-3: Recursive descent parsing - Implementing a parser for an Extended Backus-Naur Form (EBNF) grammar using recursive methods, one for each non-terminal symbol in the grammar. Handling syntax error recovery and abstract syntax tree building. Learning outcomes: L04, L08, L10 - Lecture: Week 3-4: Assignment 1 compiler - Detailed discussion of the recursive descent parser used in assignment 1, including parsing, syntax error recovery, static semantics (checking the types of variables, etc.), abstract syntax tree construction and run time interpreter. - Lecture: Weeks 6-9: Bottom-up parsing - Shift/reduce parsing. LR(0) parsing. Assignment 2 compiler using parser generator tool. Parsing conflicts. Operator precedence and associativity. LR(1) parsing. LALR(1) parsing. Learning outcomes: L04, L11 - Lecture: Weeks 6-12: Code generation - Code generation for a stack machine. Code generation for expressions, control structures, and procedure calls. The material on code generation is treated incrementally throughout the course as necessary. - Lecture: Week 10-12: Runtime organisation - Stack-based runtime organisation for handling procedure calls and local variable allocation. Parameter passing mechanisms. Heap organisation for dynamically allocated variables; garbage collection. Representing objects and classes. Official timetable activities: - Applied Class | Fri 12:00 | 60 mins | 78-343 - General Purpose South - Lecture | Mon 14:00 | 60 mins | 50-T105 - Hawken Engineering Building Source: 2026 S1 UQ Course Profile - https://course-profiles.uq.edu.au/course-profiles/COMP4403-21232-7620
Week 11Week 11: Scanning
Official weekly topics for Week 11: - Lecture: Week 11: Scanning - Regular expressions. Deterministic finite automata (DFA). Nondeterministic finite automata (NFA). Converting regular expressions into NFAs and NFAs into DFAs. Scanner for PL0. Learning outcomes: L03, L11 Official timetable activities: - Applied Class | Fri 12:00 | 60 mins | 78-343 - General Purpose South - Lecture | Mon 14:00 | 60 mins | 50-T105 - Hawken Engineering Building Source: 2026 S1 UQ Course Profile - https://course-profiles.uq.edu.au/course-profiles/COMP4403-21232-7620
Week 12Weekly Applied Class / Week 1-2: Language definition / Week 2-3: Recursive descent parsing / Week 3-4: Assignment 1 compiler / Weeks 6-9: Bottom-up parsing / Weeks 6-12: Code generation / Week 10-12: Runtime organisation
No separate week-by-week topic is publicly listed for Week 12; official repeated teaching activities are shown below: - Applied Class: Weekly Applied Class - The applied classes provide weekly opportunities to apply the skills learnt in lectures to complete revision exercises with guidance from course staff. They are an essential part of the learning process in this course. They provide the basis from which you can attempt the assignments and cover questions similar to those in the final examination. - Lecture: Week 1-2: Language definition - Definition of the syntax of programming languages using context-free grammars and regular expressions. Learning outcomes: L01, L03, L04, L08 - Lecture: Week 2-3: Recursive descent parsing - Implementing a parser for an Extended Backus-Naur Form (EBNF) grammar using recursive methods, one for each non-terminal symbol in the grammar. Handling syntax error recovery and abstract syntax tree building. Learning outcomes: L04, L08, L10 - Lecture: Week 3-4: Assignment 1 compiler - Detailed discussion of the recursive descent parser used in assignment 1, including parsing, syntax error recovery, static semantics (checking the types of variables, etc.), abstract syntax tree construction and run time interpreter. - Lecture: Weeks 6-9: Bottom-up parsing - Shift/reduce parsing. LR(0) parsing. Assignment 2 compiler using parser generator tool. Parsing conflicts. Operator precedence and associativity. LR(1) parsing. LALR(1) parsing. Learning outcomes: L04, L11 - Lecture: Weeks 6-12: Code generation - Code generation for a stack machine. Code generation for expressions, control structures, and procedure calls. The material on code generation is treated incrementally throughout the course as necessary. - Lecture: Week 10-12: Runtime organisation - Stack-based runtime organisation for handling procedure calls and local variable allocation. Parameter passing mechanisms. Heap organisation for dynamically allocated variables; garbage collection. Representing objects and classes. Official timetable activities: - Applied Class | Fri 12:00 | 60 mins | 78-343 - General Purpose South - Lecture | Mon 14:00 | 60 mins | 50-T105 - Hawken Engineering Building Source: 2026 S1 UQ Course Profile - https://course-profiles.uq.edu.au/course-profiles/COMP4403-21232-7620