UniMate AI

COMP4403

编译器与解释器

2 学分难度 超难👥 3 人学过

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 和避坑信息按需展开。

  1. 1

    Week 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

  2. 2

    Weekly 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

  3. 3

    Weekly 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

  4. 4

    Week 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

  5. 5

    Weeks 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

  6. 6

    Weekly 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

  7. 7

    Weekly 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

  8. 8

    Weekly 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

  9. 9

    Weekly 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

  10. 10

    Weekly 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

  11. 11

    Week 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

  12. 12

    Weekly 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

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.

10%

Assignment 1

Official due date: 17/04/2026 3:00 pm. Source: 2026 S1 UQ Course Profile.

15%

Assignment 2

Official due date: 22/05/2026 3:00 pm. Source: 2026 S1 UQ Course Profile.

20%

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.

55%

Reviews

学生评价

3.0

难度

4.0

含金量

3.0

压力

5.0

教师评分

Tutor Admin

想说的就3点 1.作业有难度有挑战,但还算容易做好,有机会取得好成绩 2.内容还挺有趣的,不太难理解 3.我好喜欢Ian!讲课很棒

From Seniors

学长留下的

基础信息谁都查得到,真正值钱的是过来人的经验。

学姐说

比你早一年的学长留下的真实经验 —— ChatGPT 给不了。

这门课还没有学长经验,你可以是第一个 —— 注册后在课内分享。

往年考点 / 踩坑

这门课暂无往年考点记录。

毕业生去向(整体)

下面是匠人学院毕业生整体去过的公司分布(来自脱敏校友证言)。这是全平台的总体去向,不代表选这门课的人一定去这些公司。

统计自 317 份脱敏校友证言

Deloitte

6 位校友

岗位:Graduate Program · Graduate Consulting · Platform Engineer · Web developer · Platform engineer

Zerologix

4 位校友

岗位:Frontend Dev · junior frontend developer · Front-end Developer · Full Stack Developer

Servian

4 位校友

岗位:Full-stack Developer · Data Engineer · Consultant

关于这块数据,我们说实话

雇主墙来自脱敏毕业生证言(testimonials)的整体分布,无法关联到具体学员或其所选课程;仅作为毕业生去向的总体社会证明展示。

我们没有"某位学长选了这门课、后来进了哪家公司"这种可查询的个人去向档案 —— 校友证言是脱敏的,无法关联到具体的人或他选过的课。所以这里只给整体分布,不给个人路径,不编。