Deloitte
6 位校友岗位:Graduate Program · Graduate Consulting · Platform Engineer · Web developer · Platform engineer
COMP90041
课程定位 COMP90041(Programming and Software Development)是墨尔本大学计算机方向的研究生课程,定位在专业能力深化与行业/研究应用之间。课程通常面向已有编程与基础算法背景的学习者,强调把课堂知识转化为可交付成果。它常作为后续 capstone、研究项目或岗位能力提升的关键衔接课。 技术栈与学习内容 课程内容围绕高级计算机主题展开,常见技术包括 Python、C/C++、机器学习工具链、系统设计方法、实验评估流程与学术检索写作。学习不仅要求掌握核心概念,还需要解释方法选择依据、结果可信度与局限性,训练“问题定义-方案设计-评估优化”的完整链路。 课程结构 一般按 12-13 周推进:前段建立理论框架,中段进入高密度作业与案例实践,后段做综合整合与期末评估。考核通常由 Quiz/实验、2 次作业或项目、展示及期末评估构成。即便没有明确 Hurdle,评分依旧会关注关键能力达标,不能依赖单项突击。 适合人群 适合希望在 AI、软件工程、数据与系统方向进一步深耕的硕士同学。建议每周投入 10-14 小时,采用“预习-实践-复盘”节奏。课程难点在于多任务并行与高标准输出;能稳定执行周计划并及时复盘的人,后期表现通常更稳。
Course decision
先看考核重心、截止节奏和入门要求,再决定这门课是否适合你的学期安排。
考核总权重
100%
4 项考核
最高单项
30%
Final Assessment
期末考试
未注明
以官方 outline 为准
Hurdle
未列出
当前考核表没有 Hurdle 标记
Syllabus
默认只展示每周独有的知识重点;节奏、考核、Tutorial 和避坑信息按需展开。
### 💻 核心知识点:编译与 JVM 从零起步,学习 Java 的强类型系统、基本数据类型、控制流结构以及 JDK/JVM 的工作原理。 - **核心概念/公式**: Java Virtual Machine (JVM), Bytecode, Primitive Types, Control Flow. ⏰ **本周节奏**: 难度 ⭐ | 预计投入 10h(Lecture 2h + Lab 4h + 自学 4h) 🎯 **考试关联**: 基础语法排错与输出预测。 🧪 **Tutorial/Lab**: 配置 IntelliJ IDEA 或 VS Code,编写并运行第一个控制台程序。 📌 **作业关联**: 熟悉开发流。 ⚠️ **易错点**: 混淆按值传递(Primitive)与按引用传递(Object)。
### 🧩 核心知识点:类、对象与封装 正式进入 OOP 世界。掌握类的定义、构造函数(Constructors)、方法重载(Overloading)以及访问修饰符(public/private)。 - **核心概念/公式**: Classes and Objects, Encapsulation, Methods, `this` keyword. ⏰ **本周节奏**: 难度 ⭐⭐ | 预计投入 12h 🎯 **考试关联**: 给定需求,设计出合理的类结构与私有成员。 🧪 **Tutorial/Lab**: 编写一个简单的学生信息管理类。 📌 **作业关联**: **Project 1 发布**,构建基础的面向对象系统模型。 ⚠️ **易错点**: 破坏封装原则,将内部状态变量暴露为 public。
### 🧬 核心知识点:代码复用与动态绑定 学习 `extends` 关键字,理解方法重写(Overriding)与动态方法调度(Dynamic Method Dispatch)。 - **核心概念/公式**: Inheritance, Polymorphism, Method Overriding, `super` keyword, Upcasting/Downcasting. ⏰ **本周节奏**: 难度 ⭐⭐⭐ | 预计投入 12h 🎯 **考试关联**: 考察父类引用指向子类对象时的函数调用优先级。 🧪 **Tutorial/Lab**: 建立一个包含父类 Animal 和子类 Dog/Cat 的继承树,体验多态数组。 📌 **作业关联**: 在 Project 1 中优化代码结构。 ⚠️ **易错点**: 在向下转型(Downcasting)时不使用 `instanceof` 检查,导致 `ClassCastException`。
### 📐 核心知识点:契约式设计 区分抽象类与接口的适用场景。学习 Java 8+ 中的默认方法(Default methods)以及多重继承的替代方案。 - **核心概念/公式**: Interfaces, Abstract Classes, Multiple Interface Implementation. ⏰ **本周节奏**: 难度 ⭐⭐⭐ | 预计投入 12h 🎯 **考试关联**: 简答题:Interface 与 Abstract Class 的五大区别。 🧪 **Tutorial/Lab**: 使用接口实现策略模式(Strategy Pattern)的雏形。 📌 **作业关联**: **Project 1 截止**。 🔥 ⚠️ **易错点**: 在接口中定义普通实例变量(接口中只能是 static final 常量)。
### 🛡️ 核心知识点:鲁棒性与持久化 学习受检异常(Checked)与非受检异常(Unchecked)。掌握 Try-Catch-Finally 块及 Java I/O 流体系。 - **核心概念/公式**: Exception Hierarchy, `throw` vs `throws`, Byte Streams vs Character Streams, Serialization. ⏰ **本周节奏**: 难度 ⭐⭐⭐ | 预计投入 14h 🎯 **考试关联**: 分析异常抛出后的代码执行路径(特别是 Finally 块的执行机制)。 🧪 **Tutorial/Lab**: 编写程序从 CSV 文件读取数据,处理格式异常,并将结果写入新文件。 📌 **作业关联**: 为 Project 2 的数据持久化做准备。 ⚠️ **易错点**: 捕获宽泛的 `Exception` 而掩盖了深层错误;忘记关闭文件流导致内存泄漏。
### 📦 核心知识点:类型安全与高级数据结构 掌握泛型(Generics)消除强制类型转换的安全机制。深入剖析 Java Collections Framework (List, Set, Map)。 - **核心概念/公式**: Generics, Type Erasure, ArrayList vs LinkedList, HashSet, HashMap. ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐ | 预计投入 15h 🎯 **考试关联**: 根据场景选择最合适的集合框架(如:需要快速查找键值对选 HashMap)。 🧪 **Tutorial/Lab**: 实现自定义的泛型类,并比较 HashMap 和 TreeMap 的遍历顺序。 📌 **作业关联**: **Project 2 发布**,通常是一个复杂度较高的数据处理系统。 ⚠️ **易错点**: 泛型中的类型擦除(Type Erasure)导致运行时无法获取泛型的真实类信息。
### 🔍 核心知识点:文本解析 理解 String 对象的不可变性(Immutability)。学习使用 StringBuilder/StringBuffer 优化性能,以及 Regex 的高级匹配。 - **核心概念/公式**: Immutability, String Pool, Regular Expressions (Pattern/Matcher). ⏰ **本周节奏**: 难度 ⭐⭐⭐ | 预计投入 12h 🎯 **考试关联**: 运用 Regex 匹配复杂的输入格式(如邮箱、日期)。 🧪 **Tutorial/Lab**: 编写基于正则的词法分析器,提取代码中的关键字。 📌 **作业关联**: Project 2 中的大规模文本清洗模块。 ⚠️ **易错点**: 在大规模循环中使用 `+` 拼接字符串导致产生大量废弃对象(触发频繁 GC)。
### 🧪 核心知识点:JUnit 与测试驱动开发 跨出单纯编程,进入软件工程规范。学习编写单元测试(Unit Testing)、断言(Assertions)以及 TDD 理念。 - **核心概念/公式**: JUnit, Test-Driven Development (TDD), Code Coverage, Mocking basics. ⏰ **本周节奏**: 难度 ⭐⭐⭐ | 预计投入 14h 🎯 **考试关联**: 给定一段存在缺陷的方法,写出能捕获该缺陷的 JUnit 测试用例。 🧪 **Tutorial/Lab**: 为之前编写的类补充完整的测试套件,达到 80%+ 的覆盖率。 📌 **作业关联**: Project 2 的评分极其看重代码测试覆盖率。 ⚠️ **易错点**: 测试用例不够独立,不同测试间产生了状态污染。
### ⚡ 核心知识点:并发执行与锁机制 学习创建线程(Thread 类与 Runnable 接口)。探讨竞态条件(Race Conditions)、死锁,并掌握 `synchronized` 关键字。 - **核心概念/公式**: Threads, Concurrency, `synchronized`, `wait()`/`notify()`, Deadlock. ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐⭐ | 预计投入 18h 🎯 **考试关联**: 分析多线程代码中存在的安全隐患(如非原子操作)。 🧪 **Tutorial/Lab**: 实现一个经典的多线程“生产者-消费者”模型。 📌 **作业关联**: 提升复杂系统的执行效率。 ⚠️ **易错点**: 滥用同步锁导致程序并发性能退化为串行执行。
### 🏗️ 核心知识点:解耦与界面编程 学习将数据模型、界面展示与控制逻辑分离的模型-视图-控制器 (MVC) 模式。简要接触 Java GUI (如 JavaFX 或 Swing)。 - **核心概念/公式**: Model-View-Controller (MVC) Pattern, Event-driven Programming, Listeners. ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐ | 预计投入 15h 🎯 **考试关联**: 简述 MVC 各层的职责边界及双向数据流。 🧪 **Tutorial/Lab**: 将旧的控制台系统重构为 MVC 架构的 GUI 应用。 📌 **作业关联**: **Project 2 截止**。 🔥 ⚠️ **易错点**: 将数据库读写逻辑直接写在 UI 的按钮点击事件中(严重违背 MVC)。
### 💡 核心知识点:经典解决方案 学习由 GoF 提出的经典设计模式,重点掌握单例模式(Singleton)、工厂模式(Factory)与观察者模式(Observer)。 - **核心概念/公式**: Singleton, Factory Method, Observer, Software Design Principles (SOLID). ⏰ **本周节奏**: 难度 ⭐⭐⭐ | 预计投入 12h 🎯 **考试关联**: 给定业务场景,说明应采用哪种设计模式并画出 UML 类图。 🧪 **Tutorial/Lab**: 实现单例模式并确保其在多线程环境下的安全性(Double-Checked Locking)。 📌 **作业关联**: 构建工业级软件思维。 ⚠️ **易错点**: 过度设计(Over-engineering),在简单问题上强行套用模式。
### 📝 复习周:高质量代码之道 梳理全学期的 Java 特性与 OOP 原则。探讨代码重构(Refactoring)技巧与 Clean Code 实践。 - **核心概念/公式**: Refactoring, Code Smells, Exam Review. ⏰ **本周节奏**: 难度 ⭐⭐⭐⭐ | 预计投入 20h+ 🎯 **考试关联**: 期末闭卷考试(通常要求手写代码逻辑并分析复杂的面向对象体系)。 🧪 **Tutorial/Lab**: 历年考卷综合演练。 📌 **作业关联**: 无。 ⚠️ **易错点**: 考试时手写代码忘记处理边界条件或未捕获潜在异常。
Assessment
Quiz / Lab
阶段性理解与实践能力检查。
Assignment 1
专题分析与实现任务。
Assignment 2 / Project
综合项目或实验报告。
Final Assessment
期末综合评估。
Assignments
完成 COMP90041 对应主题的实验与分析任务。
重点: 方法应用与结果解释
要求:提交结构化报告与代码
⏱ 预计 16 小时
完成综合项目并给出性能与风险分析。
重点: 系统化实现与评估
要求:提交报告/展示材料
⏱ 预计 22 小时
Reviews
3.3
难度
4.9
含金量
3.0
压力
3.8
教师评分
讲object-oriented的编程课,大学毕业之后找工作时,极其实用!!!
对于没有编程经验的人来说,这门课程应该非常困难。 需要去仔细研究每个示例,直到理解为止。
不可或缺的必上科目,也可以叫 JAVA的OOP programming,对于Java的新手来说,有点困难。 但是了解了核心概念后,会觉得还可以!
我个人认为这是对软件开发人员的课程。 但是讲师Thomas Christy,他擅长Java,所以你在考试前根本没有任何反馈,所以选择这门课需要慎重。
这是一门非常优秀的课程,教授OOP的基础知识,但反馈的组织性很差,并且讲师的承诺很多,但尚未兑现。
这是必不可少的课程之一,如果你获得成功,你将在“分布式系统”课程等进一步的学习中以及您的职业生涯中均获胜。 我要说的是,该主题的另一个名称应该是Java中的OOP编程。 对于Java的新手来说,这有点困难。 但是,当你了解Java的核心概念时,就会发现它很简单。 另外,它的期末考试有些困难,因此请及时完成。
这门课是面向对象的编程课程。 当你完成uni并准备工作时。...你的第一份工作可能是OO开发人员(99%的机会...),因为它是如此有用!!!
对于没有编程经验的人来说,这门课程可能非常困难。 实践是完美的,仔细研究每个示例,直到你理解为止。 但是,不要花太长时间,向某人求助总是更快,花2个小时试图弄清楚某件事,然后向某人求助会更有效,而不是浪费5个小时并不会成功。
IS选修IT必修,IT课程的又一个爸爸。教面向对象的编程,虽然语言用的是Java,建议学过COMP90059并且感兴趣的同学都来学一下,里面面向对象编程的思想非常重要,贯穿之后代码的学习和工作。课程的信息量较大,不过特别实战 考点虽然不难但信息量大而且比较细,需要多留时间复习。
教面向对象的编程,面向对象编程的思想非常重要,贯穿之后代码的学习和工作,课程的信息量较大,不过特别实战。 考点虽然不难但信息量大而且比较细,需要多留时间复习。
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)的整体分布,无法关联到具体学员或其所选课程;仅作为毕业生去向的总体社会证明展示。
我们没有"某位学长选了这门课、后来进了哪家公司"这种可查询的个人去向档案 —— 校友证言是脱敏的,无法关联到具体的人或他选过的课。所以这里只给整体分布,不给个人路径,不编。