Skip to content
项目

◆ — 课程作业

课程作业,复活上线。

18 个墨尔本大学课程作业项目(2019–2024 年),2026 年重建为可以直接在浏览器里试用的在线演示。

01“复活”指什么

每个项目最初都是我在墨尔本大学提交的作业。2026 年我分三步把它们重新做出来,三步彼此分开,哪些是原作、哪些是新增,一眼就能分清。

  1. 忠实移植

    把原来的代码移植成 TypeScript,用一致性测试对照原版的 Python、C、R 或 JavaScript 逐项核对。已知 bug 按提交时的样子保留并写进文档,需要时另设修正模式。

  2. 统计复检

    用置信区间、配对检验和模拟重新核对结果(最新的两个实验室仍在补充中),并在说明里写明原结论站不住的地方。

  3. 可选的 BYOK AI

    多数实验室都加了一个可选的 AI 功能,使用访客自己的 API key 运行。它的输出会对照数据核查,或与简单基线比较打分;不少还会在本地记录每次调用。

所有复活版共用的技术栈Next.js 16 · React 19 · TypeScript · Tailwind CSS 4 · shadcn/ui · Vitest

  • 日期为最终截止日或最后提交的月份,只精确到现有记录能确认的程度。
  • 团队项目列出了每一位队友。每个项目都附在线演示,有视频导览(带字幕的操作演示)的也一并附上;公开仓库合并 2026 复活版之后,再附上源码链接。

02时间线

筛选项目

领域
阶段

显示 18 / 18 个项目

本科: 理学学士(数据科学), 2019年7月 – 2022年7月

2019年第二学期

COMP10001 计算基础

日期:

已上线

COMP10001 编程游乐场

我第一门编程课的三个项目,合成了一个交互网站:用三种规则计票,用 BFS 和一致代价搜索带 Falca 绕过恶龙拿到宝藏,再为一手牌找出最优分组。

我的角色
个人项目。原作在 Grok Learning 上完成,2026 年的复活版也由我搭建。

亮点

  • 洞穴寻宝项目是对我 2019 年留存源文件的逐行移植,连原有 bug 也保留,旁边另设按题目要求修正的模式;另外两个原稿已丢失的项目按题目重建,并明确标注。
  • 在 230 个带种子的洞穴上与 Python 原版做对照测试,再用基于属性的测试,拿独立参照实现检查各项不变式。

2020年第一学期

COMP10002 算法基础

日期:

已上线

表情消息清洗器

我的第一份 C 语言作业:一个分五个阶段的清洗程序,去掉逗号分隔消息里的杂质,只保留词典里的表情符号。现在复活成逐阶段的可视化工具,背后跑的是忠实移植的 TypeScript 版本。

我的角色
个人作业,基于教学团队提供的代码框架。解答和 2026 年的复活版都由我完成。

亮点

  • 2020 年的完整解答是从 Notability 笔记里找回来的,确认能逐字节复现两份官方样例输出。
  • 用 500 个带种子的生成输入对照编译后的 C 程序做差分测试:481 次正常运行全部逐字节一致,C 程序崩溃的 19 次则由移植版标记出来。

2020年第二学期

COMP20008 数据处理基础

日期:

已上线

数据处理实验室

数据处理基础课的两个个人项目合成一个交互实验室:重放对橄榄球赛报的广度优先爬取,调整 Abt-Buy 商品匹配和分块规则,再用世界银行指标训练 k-NN 与决策树分类器。

我的角色
个人项目。原始代码、报告和 2026 年的复活版都由我完成。

亮点

  • 通过移植 NumPy 随机数生成器和 scikit-learn 的决策树构建器,2020 年的每个数字都原样复现,连决策树的每个节点都一致。
  • 重复 10 × 5 折交叉验证表明,报告里偏好的决策树并不比 3-NN 可靠地更好(差值的 95% 区间为 -4.4 到 +10.2 个百分点)。

2021年第一学期

INFO30005 Web 信息技术

日期:

已上线

Snacks in a Van 流动餐车点单

INFO30005 小组项目做的流动餐车双端点单应用:顾客在地图上找到最近的营业餐车提前下单,摊主在实时订单看板上出餐。现已重建为单个 Next.js 应用,带演示账号、运营分析和 A/B 测试设计器。

我的角色
在 4399 小组负责摊主端设计,开发了顾客下单、待处理订单列表、顾客与摊主登录,以及地图和博客两个附加功能;2026 年由我重建。
团队
Bin Liang、Declan Gannon、Khin Liew 和 Wei Zhao

亮点

  • 把 2021 年的业务规则(最近餐车、订单状态、修改时限、计价)移植成 TypeScript,对照测试会让原版 JavaScript 并排运行。
  • 运营分析包括 Kaplan-Meier 出餐时间曲线和各餐车的迟到折扣率,每个数字都标出不确定性和样本量。

2021年第二学期

MAST30034 应用数据科学

日期:

已上线

纽约出租车 2019

我对 2019 年纽约全部黄色出租车行程的个人分析项目,如今复活成交互网站:用同一套清洗规则重新处理 8,400 多万条记录,关联天气、获批活动和交通事故数据,配有出租车分区地图和路线视图,还能在浏览器里用 2021 年的回归模型估算行程时间。

我的角色
个人项目。原始 PySpark notebook 和 2026 年的复活版都由我完成。

亮点

  • 把 2021 年的清洗规则改写成 DuckDB SQL,在 TLC 现行的 2019 年数据上重跑。除了 TLC 后来重新发布的原始文件,其余每一步的行数都与 notebook 相差不到 0.003%,并与原数字并排记录。
  • 2021 年的回归模型在浏览器里运行,每个预测背后的各项都能看到;2026 年新增的评估包括时间留出集、稳健标准误、残差诊断和共形区间,结果发现一张简单的查找表反而更准。

MAST30034 应用数据科学

日期:

已上线

信号源分离实验室

应用数据科学课的个人作业:从一组模拟的 fMRI 式时空数据中还原隐藏的信号源。现在做成交互式实验室,可以自己生成数据,再用最小二乘、岭回归、Lasso 和主成分回归还原时间序列与空间图,所有计算都在浏览器里重新跑一遍。

我的角色
个人作业。原始分析、notebook 和报告都由我完成,2026 年的复活版也由我搭建。

亮点

  • 逐位移植 NumPy 旧版随机数生成器,重现 2021 年的噪声,报告里的每个数字都能在浏览器里原样算出来。
  • 在 50 组带种子的配对数据上,以事先固定的对照值重新审视 Lasso 惩罚的选择:当年选的 ρ = 0.625 比 ρ = 0.60 的 MSE 高约 10%,50 组数据全部更差。

COMP30022 IT 项目

日期:

已上线

4399 CRM 个人关系管理

COMP30022 IT 项目里我们做的移动优先个人 CRM:管理联系人,记录带地点的见面,在地图和日历上查看,还能扫二维码互加联系人。现已重建为单个 Next.js 应用,点“访客试用”就能直接体验,另有 Insights 统计页和可选的 AI 助手。

我的角色
4399 团队(第 49 组)的 Scrum Master,负责前端的联系人、见面记录和地图部分;2026 年由我重建。
团队
Bin Liang、Hongji (Harrison) Huang、Wei Zhao 和 Yixiao Tian

亮点

  • 移植了原有的搜索、排序、校验和联系人同步逻辑,对照测试直接从课程代码目录加载 2021 年的函数来比对结果。
  • 移植时补上了发现的安全漏洞:查询只限登录用户自己的数据,重置密码接口不再接受固定的验证标记,会话改用 httpOnly cookie。

2022年第一学期

COMP30024 人工智能

日期:

已上线

Cachex 对战场

COMP30024 课上我们为 Cachex(一种带吃子和换手规则的类 Hex 连线棋)写的智能体,如今复活成浏览器里的对战场。可以和 minimax 智能体下棋、看 AI 互搏、逐步查看 A* 搜索,还能跑带随机种子的循环赛,胜率都附置信区间。

我的角色
与 Wei Zhao 组队(_4399)完成,A* 求解器、minimax 智能体和 Part A 报告由两人共同完成;2026 年由我重建为 Cachex Arena。
团队
Wei Zhao

亮点

  • 把 Python 写的智能体和 A* 求解器逐行移植成在 Web Worker 中运行的 TypeScript;在 184 次 A* 搜索、40 局裁判对局和 179 次 minimax 搜索上与原版结果完全一致。
  • 用带随机种子的 1,200 局循环赛(Wilson 与 bootstrap 区间)复盘后发现:动态深度搜索几乎从不超过一层,一行代码的 bug 让 alpha-beta 的窗口始终收不紧。这些都写进了文档,智能体保持提交时的原样。

硕士: 数据科学硕士, 2023年2月 – 2024年7月

2023年第一学期

COMP90051 统计机器学习

日期:

已上线

人还是机器?

Team 27 为课内 Kaggle 竞赛做的检测器:在每个词都被换成数字编号的情况下,判断一段文字出自人还是模型。如今复活成实验室,原始权重在浏览器里实时给文本打分,另有类别不平衡沙盒和无泄漏的重新评估。

我的角色
与 Yifei Du、Huihui He 组成 Team 27。我负责 MPI 预处理和 CNN 实验,与 Yifei 一起做词袋特征,并与两位一起完成 SMOTE 与欠采样的比较;Yifei 负责 SVM 和 SGD 模型,Huihui 负责逻辑回归和词向量。2026 年的复活版由我搭建。
团队
Yifei Du 和 Huihui He

亮点

  • 一次性导出六个原始检测器的权重,在浏览器里打分;全部 6,000 个测试预测(六个模型各 1,000 条文本)与 2023 年的文件一致。
  • 交互式检测器把人写和机器生成的词编号分布混合成样本,实时显示哪些词编号把结果推向哪一边。

COMP90024 集群与云计算

日期:

已上线

Spartan 推文并行分析

与 Wei Zhao 合作的作业:在学校的 Spartan 超算上用 MPI 并行处理 909 万条带地理标签的推文。复活版展示原始结果和扩展性分析,还能在浏览器里用 Web Worker 跑同一套算法。

我的角色
与 Wei Zhao 合作完成,MPI 程序和报告由两人共同完成;2026 年的复活版由我搭建。
团队
Wei Zhao

亮点

  • 原程序按字节范围把 18.74 GB 的文件分给各个 MPI 进程,单核 11:01 的运行时间在 8 核上降到 1:41(每种配置只跑了一次)。
  • 移植时发现一个分块边界 bug:同一条推文可能被两个进程重复计数(大约每 500 个边界出现一次)。移植版保留了这个行为,用测试固定下来,实验页面也会解释。

COMP90024 集群与云计算

日期:

已上线

Social Sense 社媒情绪看板

Team 57 的云计算项目:给 240 万条带地理标签的推文和 170 万条 Mastodon 帖子打情感分,再和官方收入、犯罪数据对照。复活版是一个只读网站,有地图、联动图表和可复现的数据管线。

我的角色
在 Team 57 负责 React 前端,同时参与数据处理和 API 工具开发;2026 年的复活版由我搭建。
团队
Xuan Wang、Wei Zhao、Zongchao Xie 和 Runqiu Fei

亮点

  • 在留存的数据上重跑团队原来的 Python 代码,对照 2023 年看板做了 18 项一致性检查,最终得到一个 1.7 MB 的只读 SQLite 数据库。
  • 把 NLTK 的分词、WordNet 词形还原和 VADER 移植成 TypeScript,在 44,156 条真实 Mastodon 帖子上与原 Python 结果零差异。

COMP90051 统计机器学习

日期:

已上线

多臂老虎机实验室

统计机器学习课的个人项目:能应对延迟或丢失反馈的逐次淘汰(successive elimination)算法、Thompson 采样和 Doubly-Adaptive Thompson Sampling,2023 年通过回放 30 万条真实新闻点击日志来评估。如今复活成浏览器里的实验室,算法在带种子的合成日志上比拼,可以调整延迟分布,让最多七个算法同场比较。

我的角色
个人项目。原始 notebook 和 2026 年的复活版都由我完成。

亮点

  • 把五个算法逐行移植成在 Web Worker 中运行的 TypeScript,并精确复现 NumPy 的 PCG64 生成器、ziggurat 正态抽样和成对求和,浏览器打印的结果与 notebook 分毫不差。
  • 原 notebook 每个算法只跑一次;现在每个算法用 20 次带种子的重复回放,给出 bootstrap 区间、与 Thompson 采样的配对比较、效应量和延迟敏感性热力图。

MAST90139 数据科学统计建模

日期:

已上线

GLM 演练场

三份广义线性模型作业,如今复活成六个交互案例:逻辑回归、对数线性、多项、比例优势和 GEE 模型都在浏览器里实时重新拟合,并对照我 2023 年提交的 R 代码核对。

我的角色
个人作业。原始 R Markdown 分析和 2026 年的复活版都由我完成。

亮点

  • 用约 1,300 行无依赖的 TypeScript 重新实现 glm、nnet::multinom、MASS::polr 和 geepack::geeglm;49 项一致性检查把结果与 R 的输出对齐,误差通常在 1e-9 以内。
  • 每个案例都可以改动输入,当场重算估计值、区间和检验,从甲虫剂量反应实验到呈现辛普森悖论的三维列联表。

2023年第二学期

MAST90083 计算统计与数据科学

日期:

已上线

计算统计演练场

两份作业,涵盖岭回归与 Lasso、自回归模型定阶、支持向量机和 bootstrap,代码从 R 逐行移植过来。拖动 λ、重跑蒙特卡洛模拟或重新训练 SVM,网站给出的数字仍与原 PDF 一致。

我的角色
个人作业(作业 1 与作业 3)。原始 R Markdown 和 2026 年的复活版都由我完成。

亮点

  • 把 glmnet 的坐标下降、LIBSVM 的 SMO 求解器、cv.glmnet 和 e1071::tune 移植成 TypeScript,并逐位重现 R 的 Mersenne-Twister 播种,set.seed(10) 抽出的交叉验证折和模拟序列与 2023 年完全相同。
  • Vitest 用从 R 导出的参考结果和原 PDF 上的数字检验移植版,精度从 1e-10 的相对误差到计数完全相等。

MAST90125 贝叶斯统计学习

日期:

已上线

通往后验的四条路

贝叶斯统计学习课的作业:用 Laplace 近似、Metropolis-Hastings、哈密顿蒙特卡洛和期望传播四种方法,为一个小型剂量反应试验拟合逻辑回归。现在做成交互讲解站,可以逐次重现 2023 年的抽样链。

我的角色
个人作业。原始 R Markdown 分析和 2026 年的复活版都由我完成。

亮点

  • 把 R 的随机数生成器、mvtnorm 和 QUADPACK 数值积分移植成 TypeScript,浏览器结果与原 R 输出相差约 1e-11。
  • 找出并记录了 2023 年代码里五处数据编码和似然函数的 bug;“按原样提交”开关保留原始行为,可以和修正后的分析对照。

MAST90138 面向数据科学的多元统计

日期:

已上线

多元统计实验室

两份关于协方差、主成分分析和高维分类的作业,如今复活成三个实验室:协方差与特征分解演练场、小麦种子 PCA 浏览器,以及用一年 365 天降雨量区分澳大利亚南北气象站的分析故事。

我的角色
个人作业(作业 1 与作业 3)。原始 R Markdown 由我完成,2026 年的复活版也由我搭建,目前仍在完善中。

亮点

  • 把 Jacobi 特征值求解器、R 的 glm.fit(含 LINPACK 选主元 QR)、核 PLS 和 rpart 的建树算法移植成 TypeScript,并在测试中对照 R 核对,浏览器可以重算小麦数据的 PCA、每个逻辑回归拟合和 PLS 树。
  • 凡是 2023 年作业有 bug 的地方,实验室都提供“按原样提交”与“修正后”切换;协方差演练场还纠正了原答案中的一处错误。

2024年第一学期

COMP90042 自然语言处理

日期:

已上线

NLP 实验场

两份 NLP 个人作业重做成三个浏览器演示:话题标签切分、用朴素贝叶斯和逻辑回归判断推文来自哪个国家,以及由 n-gram 语言模型来猜词的 Hangman。2026 年的升级补上了置信区间、配对检验、校准评估和可选的 LLM 评测。

我的角色
个人作业。两份原始 notebook 和 2026 年的复活版都由我完成。

亮点

  • 把 NLTK 的 TweetTokenizer、WordNet 词形还原和两个分类器移植成 TypeScript,与提交的 notebook 在每条测试推文上的预测完全一致。
  • 补做的分析显示,在 142 条测试推文上两种分类器无法区分(精确 McNemar 检验 p = 1.00),而朴素贝叶斯明显过度自信。

COMP90042 自然语言处理

日期:

已上线

气候声明核查器

我们小组为气候科学声明做的两阶段事实核查系统:先用 TF-IDF 在约 120 万条维基百科段落中检索证据,再由从零训练的 Transformer 给声明打标签。复活后访客可以输入自己的声明,也可以浏览 154 条开发集声明;原始流程如实重跑,薄弱的结果也照样呈现。

我的角色
与 Wei Zhao、Xuan Wang 合作的小组项目。我负责系统设计、预处理、TF-IDF 证据检索以及报告和展示;Wei 负责 Transformer 与 LSTM 分类器,Xuan 负责检索的测试与调试和文献综述,并参与报告和展示。2026 年的复活版由我搭建,目前仍在完善中。
团队
Wei Zhao 和 Xuan Wang

亮点

  • 把 2024 年 notebook 的每一步移植成 TypeScript,并对照原版 Python 核对,细到 NLTK 的 Porter 词干提取器和 NumPy 处理并列值的顺序。在全部 119 万条段落上重跑检索规则,开发集的证据 F 值与报告中印出的每一位都一致。
  • 2026 年重跑发现,Transformer 编码器混合的是同一批次里的不同声明,而不是同一条声明里的词;因此对单条声明而言,它等价于一张逐词打分的查找表,网站上的每个预测都能完整解释。

03技能矩阵

每项技能都标出体现它的项目,按时间先后排列。点选技能即可筛选上方的时间线。

每个项目都有对照原版逐项核对的忠实移植

统计

  • COMP10001 编程游乐场 · 表情消息清洗器 · 数据处理实验室 · Snacks in a Van 流动餐车点单 · 纽约出租车 2019 · 信号源分离实验室 · 4399 CRM 个人关系管理 · Cachex 对战场 · 人还是机器? · Spartan 推文并行分析 · Social Sense 社媒情绪看板 · 多臂老虎机实验室 · 计算统计演练场 · NLP 实验场

  • 表情消息清洗器 · 数据处理实验室 · Snacks in a Van 流动餐车点单 · 信号源分离实验室 · 4399 CRM 个人关系管理 · Cachex 对战场 · 人还是机器? · Social Sense 社媒情绪看板 · 多臂老虎机实验室 · 计算统计演练场 · NLP 实验场

  • COMP10001 编程游乐场 · Snacks in a Van 流动餐车点单 · 信号源分离实验室 · Spartan 推文并行分析 · 多臂老虎机实验室 · GLM 演练场 · 计算统计演练场

  • Snacks in a Van 流动餐车点单 · Cachex 对战场 · Spartan 推文并行分析 · 多臂老虎机实验室 · NLP 实验场

  • 纽约出租车 2019 · 信号源分离实验室 · Social Sense 社媒情绪看板 · GLM 演练场 · 计算统计演练场

  • 多臂老虎机实验室 · 通往后验的四条路

  • Social Sense 社媒情绪看板

  • Snacks in a Van 流动餐车点单

人工智能与机器学习

  • 数据处理实验室 · 人还是机器? · 计算统计演练场 · 多元统计实验室 · NLP 实验场 · 气候声明核查器

  • 数据处理实验室 · 纽约出租车 2019 · 信号源分离实验室 · 人还是机器? · 多臂老虎机实验室 · GLM 演练场 · 计算统计演练场 · 通往后验的四条路 · 多元统计实验室 · NLP 实验场 · 气候声明核查器

  • 数据处理实验室 · 信号源分离实验室 · 多元统计实验室

  • 人还是机器? · Social Sense 社媒情绪看板 · NLP 实验场 · 气候声明核查器

算法

  • COMP10001 编程游乐场 · Cachex 对战场

  • 表情消息清洗器 · 数据处理实验室 · Spartan 推文并行分析 · NLP 实验场 · 气候声明核查器

测试与可复现性

  • COMP10001 编程游乐场 · 表情消息清洗器

  • 数据处理实验室 · 信号源分离实验室 · 多臂老虎机实验室 · 计算统计演练场 · 通往后验的四条路

数据工程

  • Spartan 推文并行分析 · Social Sense 社媒情绪看板

  • 数据处理实验室 · 纽约出租车 2019 · Social Sense 社媒情绪看板

  • 数据处理实验室

  • Snacks in a Van 流动餐车点单 · 纽约出租车 2019 · 4399 CRM 个人关系管理 · Social Sense 社媒情绪看板 · 气候声明核查器

Web 开发

  • Snacks in a Van 流动餐车点单 · 4399 CRM 个人关系管理 · Social Sense 社媒情绪看板

  • COMP10001 编程游乐场 · 表情消息清洗器 · Snacks in a Van 流动餐车点单 · 4399 CRM 个人关系管理

  • Snacks in a Van 流动餐车点单 · 纽约出租车 2019 · 4399 CRM 个人关系管理 · Social Sense 社媒情绪看板

生成式 AI 评测

  • COMP10001 编程游乐场 · 表情消息清洗器 · 数据处理实验室 · 4399 CRM 个人关系管理 · Cachex 对战场 · Spartan 推文并行分析 · Social Sense 社媒情绪看板 · 多臂老虎机实验室 · NLP 实验场

  • Snacks in a Van 流动餐车点单 · 信号源分离实验室 · Cachex 对战场 · Spartan 推文并行分析 · Social Sense 社媒情绪看板 · GLM 演练场 · 通往后验的四条路

  • COMP10001 编程游乐场 · 表情消息清洗器 · 数据处理实验室 · Snacks in a Van 流动餐车点单 · 纽约出租车 2019 · 信号源分离实验室 · 4399 CRM 个人关系管理 · Cachex 对战场 · Spartan 推文并行分析 · Social Sense 社媒情绪看板 · 多臂老虎机实验室 · GLM 演练场 · 计算统计演练场 · 通往后验的四条路 · NLP 实验场