Deloitte
6 位校友岗位:Graduate Program · Graduate Consulting · Platform Engineer · Web developer · Platform engineer
COMP4403
Compiler modules; programming language specifications; lexical analysis, parsing - recursive descent and table driven; static semantics - symbol tables and type checking; error handling; introduction to code generation and optimisation; compiler generators; interpreters.
Course decision
先看考核重心、截止节奏和入门要求,再决定这门课是否适合你的学期安排。
考核总权重
100%
4 项考核
最高单项
55%
Final Examination Hurdle Identity Verified In-person
期末考试
有
以官方 outline 为准
Hurdle
1 项
需要单独满足
Syllabus
默认只展示每周独有的知识重点;节奏、考核、Tutorial 和避坑信息按需展开。
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
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
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
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
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
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
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
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
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
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
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
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
Assessment
Online quizzes Online
Official due date: 13/03/2026 3:00 pm 20/03/2026 3:00 pm 27/03/2026 3:00 pm 24/04/2026 3:00 pm 8/05/2026 3:00 pm 29/05/2026 3:00 pm. Source: 2026 S1 UQ Course Profile.
Assignment 1
Official due date: 17/04/2026 3:00 pm. Source: 2026 S1 UQ Course Profile.
Assignment 2
Official due date: 22/05/2026 3:00 pm. Source: 2026 S1 UQ Course Profile.
Final Examination Hurdle Identity Verified In-personHurdle
Official due date: End of Semester Exam Period 6/06/2026 - 20/06/2026. Source: 2026 S1 UQ Course Profile.
Reviews
3.0
难度
4.0
含金量
3.0
压力
5.0
教师评分
想说的就3点 1.作业有难度有挑战,但还算容易做好,有机会取得好成绩 2.内容还挺有趣的,不太难理解 3.我好喜欢Ian!讲课很棒
From Seniors
基础信息谁都查得到,真正值钱的是过来人的经验。
比你早一年的学长留下的真实经验 —— ChatGPT 给不了。
这门课还没有学长经验,你可以是第一个 —— 注册后在课内分享。
这门课暂无往年考点记录。
下面是匠人学院毕业生整体去过的公司分布(来自脱敏校友证言)。这是全平台的总体去向,不代表选这门课的人一定去这些公司。
统计自 317 份脱敏校友证言
岗位:Graduate Program · Graduate Consulting · Platform Engineer · Web developer · Platform engineer
岗位:Frontend Dev · junior frontend developer · Front-end Developer · Full Stack Developer
岗位:Full-stack Developer · Data Engineer · Consultant
关于这块数据,我们说实话
雇主墙来自脱敏毕业生证言(testimonials)的整体分布,无法关联到具体学员或其所选课程;仅作为毕业生去向的总体社会证明展示。
我们没有"某位学长选了这门课、后来进了哪家公司"这种可查询的个人去向档案 —— 校友证言是脱敏的,无法关联到具体的人或他选过的课。所以这里只给整体分布,不给个人路径,不编。