UniMate AI

COMP90038

计算机硕士课程

12.5 学分难度 超难👥 36 人学过

课程定位 COMP90038(Algorithms and Complexity)是墨尔本大学计算机方向的研究生课程,定位在专业能力深化与行业/研究应用之间。课程通常面向已有编程与基础算法背景的学习者,强调把课堂知识转化为可交付成果。它常作为后续 capstone、研究项目或岗位能力提升的关键衔接课。 技术栈与学习内容 课程内容围绕高级计算机主题展开,常见技术包括 Python、C/C++、机器学习工具链、系统设计方法、实验评估流程与学术检索写作。学习不仅要求掌握核心概念,还需要解释方法选择依据、结果可信度与局限性,训练“问题定义-方案设计-评估优化”的完整链路。 课程结构 一般按 12-13 周推进:前段建立理论框架,中段进入高密度作业与案例实践,后段做综合整合与期末评估。考核通常由 Quiz/实验、2 次作业或项目、展示及期末评估构成。即便没有明确 Hurdle,评分依旧会关注关键能力达标,不能依赖单项突击。 适合人群 适合希望在 AI、软件工程、数据与系统方向进一步深耕的硕士同学。建议每周投入 10-14 小时,采用“预习-实践-复盘”节奏。课程难点在于多任务并行与高标准输出;能稳定执行周计划并及时复盘的人,后期表现通常更稳。

Course decision

选课先看

先看考核重心、截止节奏和入门要求,再决定这门课是否适合你的学期安排。

考核总权重

100%

4 项考核

最高单项

30%

Final Assessment

期末考试

未注明

以官方 outline 为准

Hurdle

未列出

当前考核表没有 Hurdle 标记

Syllabus

每周大纲

默认只展示每周独有的知识重点;节奏、考核、Tutorial 和避坑信息按需展开。

  1. 1

    算法分析基础 (Algorithm Analysis)

    ### 📊 核心知识点:渐近复杂性 探讨算法分析的基石。深入理解大O、大Ω、大Θ记号(Big-O, Big-Omega, Big-Theta notation)。 - **核心概念/公式**: Asymptotic Notation, Master Theorem, Recurrence Relations. ⏰ **本周节奏**: 难度 ⭐⭐⭐ | 预计投入 12h 🎯 **考试关联**: 利用主定理求解递推关系的复杂度。 🧪 **Tutorial/Lab**: 练习从伪代码推导时间复杂度。 📌 **作业关联**: 培养严格的算法证明习惯。 ⚠️ **易错点**: 混淆最坏情况(Worst-case)与大O记号的概念。

  2. 2

    分治策略 (Divide and Conquer)

    ### 🔀 核心知识点:分治与递归 学习如何将大问题拆解为子问题。重点分析归并排序(Merge Sort)、快速排序(Quick Sort)及其平均情况复杂度。 - **核心概念/公式**: Randomized Quicksort, Median of Medians, Closest Pair of Points. ⏰ **本周节奏**: 难度 ⭐⭐⭐ | 预计投入 12h 🎯 **考试关联**: 手写归并排序的合并过程与复杂度证明。 🧪 **Tutorial/Lab**: 实现求解数组中第 K 大元素的线性时间算法。 📌 **作业关联**: Project 1 的基础。 ⚠️ **易错点**: 递归基础情况(Base case)处理遗漏导致无限递归。

  3. 3

    动态规划 I (Dynamic Programming)

    ### 🧠 核心知识点:最优子结构与重叠子问题 引入动态规划(DP)思想。学习自底向上的打表法与自顶向下的备忘录法。 - **核心概念/公式**: Overlapping Subproblems, Optimal Substructure, Bellman Equation. ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐ | 预计投入 15h 🎯 **考试关联**: 写出 DP 状态转移方程(Recurrence relation)。 🧪 **Tutorial/Lab**: 解决经典问题:最长公共子序列(LCS)和矩阵链乘法。 📌 **作业关联**: 复杂数据处理中的最优解问题。 ⚠️ **易错点**: 状态定义不清晰,导致状态转移方程无法涵盖所有情况。

  4. 4

    动态规划 II & 贪心算法 (DP & Greedy)

    ### 🎯 核心知识点:背包问题与贪心选择 对比 DP 与贪心算法。解析 0/1 背包问题(必须用 DP)与分数背包问题(可用贪心)。 - **核心概念/公式**: Greedy-choice Property, Knapsack Problem, Huffman Coding. ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐ | 预计投入 14h 🎯 **考试关联**: 证明某特定问题可以使用贪心算法(交换论证法 Exchange Argument)。 🧪 **Tutorial/Lab**: 实现哈夫曼树进行数据压缩。 📌 **作业关联**: **Assignment 1 发布**,考察 DP 与图算法基础。 ⚠️ **易错点**: 错误地将贪心策略应用于不具备贪心选择性质的问题(如 0/1 背包)。

  5. 5

    图算法 I:遍历与拓扑排序 (Graph Algorithms)

    ### 🕸️ 核心知识点:BFS 与 DFS 系统学习图的表示方法(邻接矩阵与邻接表)。深入探索广度优先搜索(BFS)与深度优先搜索(DFS)的应用。 - **核心概念/公式**: Topological Sorting, Strongly Connected Components (SCC), Kosaraju's Algorithm. ⏰ **本周节奏**: 难度 ⭐⭐⭐ | 预计投入 12h 🎯 **考试关联**: 给出有向图,画出强连通分量。 🧪 **Tutorial/Lab**: 利用有向无环图(DAG)寻找任务的执行顺序。 📌 **作业关联**: 为处理复杂网络网络数据打底。 ⚠️ **易错点**: 混淆有向图中的树边、后向边、前向边与交叉边。

  6. 6

    图算法 II:最短路径 (Shortest Paths)

    ### 📍 核心知识点:Dijkstra 与 Bellman-Ford 解决单源最短路径(SSSP)与多源最短路径(APSP)问题。处理带负权边的图网络。 - **核心概念/公式**: Dijkstra's Algorithm, Bellman-Ford, Floyd-Warshall, Negative Cycles. ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐ | 预计投入 15h 🎯 **考试关联**: 追踪 Dijkstra 算法中优先队列的状态变化。 🧪 **Tutorial/Lab**: 编写算法检测外汇交易中的套利机会(负权环)。 📌 **作业关联**: **Assignment 1 截止**。 🔥 ⚠️ **易错点**: 将 Dijkstra 算法用于包含负权边的图。

  7. 7

    图算法 III:最小生成树 (MST) & 网络流 (Network Flow)

    ### 💧 核心知识点:Kruskal, Prim 与最大流 学习贪心算法在 MST 中的经典应用。引入最大流/最小割定理(Max-flow Min-cut Theorem)。 - **核心概念/公式**: Kruskal's, Prim's, Disjoint-Set Data Structure (Union-Find), Ford-Fulkerson. ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐ | 预计投入 15h 🎯 **考试关联**: 给定流量网络,寻找增广路径并计算最大流。 🧪 **Tutorial/Lab**: 使用并查集优化 Kruskal 算法。 📌 **作业关联**: 二分图匹配问题(Bipartite Matching)。 ⚠️ **易错点**: 混淆网络流中的反向边容量更新逻辑。

  8. 8

    字符串匹配算法 (String Matching)

    ### 🔤 核心知识点:KMP 算法与前缀函数 处理大规模文本搜索问题。学习朴素字符串匹配、Rabin-Karp 滚动哈希以及 KMP 算法。 - **核心概念/公式**: Knuth-Morris-Pratt (KMP) Algorithm, Prefix Function (Pi array), Rabin-Karp. ⏰ **本周节奏**: 难度 ⭐⭐⭐ | 预计投入 12h 🎯 **考试关联**: 计算给定模式串的 KMP 前缀数组。 🧪 **Tutorial/Lab**: 比较不同字符串算法在长文本中的执行时间。 📌 **作业关联**: **Assignment 2 发布**,重点考察图论高级应用与高级数据结构。 ⚠️ **易错点**: KMP 算法中状态回退(Fallback)的逻辑边界错误。

  9. 9

    计算复杂性理论 I (Complexity Theory)

    ### ⏱️ 核心知识点:P 与 NP 类问题 跨越算法设计,进入计算理论领域。探讨多项式时间可解问题(P)与多项式时间可验证问题(NP)。 - **核心概念/公式**: P vs NP, Deterministic vs Non-deterministic Turing Machines, Polynomial-time Verification. ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐⭐ | 预计投入 18h 🎯 **考试关联**: 简述 NP 类的严格数学定义。 🧪 **Tutorial/Lab**: 理论推演,无编程代码。 📌 **作业关联**: 理解某些问题的不可解性边界。 ⚠️ **易错点**: 误以为 NP 问题就是“Non-Polynomial(非多项式)”问题。

  10. 10

    计算复杂性理论 II:NP-Hardness

    ### 🧱 核心知识点:NP 完全性与归约 (Reductions) 学习多项式时间归约(Polynomial-time Reductions)。证明问题的 NP-Complete (NPC) 性质。 - **核心概念/公式**: NP-Complete, NP-Hard, SAT Problem, Clique, Vertex Cover. ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐⭐ | 预计投入 20h 🎯 **考试关联**: 证明问题 B 是 NP-Hard(通过将已知 NPC 问题 A 归约到 B)。 🧪 **Tutorial/Lab**: 练习经典的图论问题归约链条。 📌 **作业关联**: 证明某些算法任务不存在多项式精确解。 ⚠️ **易错点**: 归约方向搞反(必须从已知难问题归约到未知问题)。

  11. 11

    近似算法与随机化算法 (Approximation & Randomized Algorithms)

    ### 🎲 核心知识点:应对 NP 难问题 既然 NPC 问题无法在多项式时间内完美解决,我们学习如何寻找有性能保证的近似解(Approximation Ratio)及随机化策略。 - **核心概念/公式**: Approximation Ratio, Vertex Cover Approximation, Randomized Algorithms (Las Vegas vs Monte Carlo). ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐ | 预计投入 14h 🎯 **考试关联**: 证明某种贪心近似算法的近似比界限。 🧪 **Tutorial/Lab**: 实现 TSP(旅行商问题)的近似算法。 📌 **作业关联**: **Assignment 2 截止**。 🔥 ⚠️ **易错点**: 混淆 Las Vegas 算法(时间随机,结果一定正确)与 Monte Carlo 算法。

  12. 12

    期末复习与全课程串讲 (Review)

    ### 📝 复习周:算法思想大一统 串联分治、DP、贪心三大设计范式;总结图论与字符串匹配;回顾 P/NP 的理论天花板。 - **核心概念/公式**: Algorithm Design Paradigms, Reductions summary, Exam Strategy. ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐ | 预计投入 20h+ 🎯 **考试关联**: 综合设计题:给定一个全新的问题,要求分析其复杂度并设计最优算法。 🧪 **Tutorial/Lab**: 历年 Final 真题冲刺解析。 📌 **作业关联**: 查漏补缺。 ⚠️ **易错点**: 考试时只写代码不写证明。COMP90038 极度强调算法正确性的数学证明。

Assessment

考核结构

Quiz / Lab

阶段性理解与实践能力检查。

20%

Assignment 1

专题分析与实现任务。

25%

Assignment 2 / Project

综合项目或实验报告。

25%

Final Assessment

期末综合评估。

30%

Assignments

作业详情

Assignment 1

完成 COMP90038 对应主题的实验与分析任务。

重点: 方法应用与结果解释

要求:提交结构化报告与代码

⏱ 预计 16 小时

Assignment 2

完成综合项目并给出性能与风险分析。

重点: 系统化实现与评估

要求:提交报告/展示材料

⏱ 预计 22 小时

Reviews

学生评价

4.3

难度

4.7

含金量

3.0

压力

4.9

教师评分

匿名同学

这是一个非常有趣的课程,尽管我很惊讶它没有某种微积分的先决条件。 这个学期(在Covid-19期间)出现了一些管理员打ic,但总体而言这是一个受过良好教育的学科。

匿名同学

这是教算法基础知识的课程非常有用。 对数学有扎实的理解对于在这个学科上取得良好的成绩至关重要!

匿名同学

这是一个非常好的课程。 你可以输入任何大公司,例如microsoft,facebook,以基于此主题找到工作。 甚至谷歌也问了很多与本学科讲授的分类技术有关的问题。 它被视为开发编程,研究和IT基础知识的核心主题。

匿名同学

这门课程对你的未来非常方便。 但它们涵盖了许多课程内容,如果你没有数学或CS的背景,这门课对你可能会非常具有挑战性。 因此,我建议学习不仅要解决问题,而且要尽快解决。 如果你非常擅长算法,那么你可能会发现它是一门非常有趣的课程。

匿名同学

这个课程是很有趣的。 Grok的工作表设计得非常好,它也是一个非常酷的学习工具。 有趣而有用的讲座和客座讲师。 还有可选的高级内容(这意味着如果您决定不参加那些讲座,可以腾出数周的时间来从事作业)。 重要的是要注意,这个课程在整个学期都需要持续的参与,因为工作表大约每两周到期一次,但是只要你不落后就可以了。

Zihan Tang

这门是IT必修。是必修里对转专业同学杀伤力最大的一门课但是也是最有用的一门课。内容主要是各种常见的数据结构和相关算法。教这门课的教授Toby和Michael讲的挺好的,slides也做的不错。但奈何算法本身理解起来不是那么容易所以上课很容易get lost。最后都是要回家反复的听recording加Google和Youtube才能搞懂。这门课虽然难,但是workshop很有用。这门课是非常重要的一门课,必须花时间去努力搞懂。算法是很多高级课的基础。

Yue Han

必修课,主要是各种常见的数据结构和相关算法,为了理解算法,做好准备听很多遍recording和看youtube。作业通常来说是让你设计一个算法或者计算某个给定算法的输出。会有写伪代码的题也会有概念题,算法是很多高级课的基础。可还是要动手算!!多画图!!

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)的整体分布,无法关联到具体学员或其所选课程;仅作为毕业生去向的总体社会证明展示。

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