UniMate AI

COMP3141

软件系统设计与实现

6 学分难度 超难

课程定位 COMP3141 是 UNSW 计算机专业最具‘极客灵魂’的高阶设计课。如果说 COMP2511 是教你如何用面向对象(OOP)做设计,这门课则是教你如何利用‘函数式编程 (Functional Programming)’与‘强类型系统’构建无 Bug、可证明的系统。它解决了大规模软件开发中最根本的痛点:如何通过类型设计而非冗余测试来消灭错误。它是通往高级编译器开发、分布式架构及顶级科技公司(如 Jane Street, Google)研发岗位的必经之路。 技术栈与学习内容 课程以 Haskell 为核心载体,深度攻克:代数数据类型 (Algebraic Data Types)、高阶函数、Monads(这是全课最难也最核心的概念)、基于类型的属性测试 (Property-based Testing with QuickCheck)、类型级编程、以及软件正确性的形式化证明基础。此外,课程强调‘声明式设计’,要求学生利用函数式思维重构传统的命令式算法。学生将学习如何利用范畴论(Category Theory)的直觉来设计极其稳健的软件接口。 课程结构 10 周极致脑力训练。前期扫盲 Haskell 语法与递归思维,中期全面攻克 Monads 与副作用管理(这是分水岭),后期转向大规模系统的属性驱动开发。评估体系极其硬核:包含每周的‘智力竞赛’级别 Lab、一个要求极高抽象能力的个人/小组项目(Assignment,通常涉及编写一个领域特定语言 DSL 或复杂的编译器后端)、以及一场极其考验逻辑推演能力的期末笔试。该课极其看重‘代码的简洁度与数学美感’。 适合人群 计算机专业大三学生、数学爱好者。如果你觉得主流语言太笨重、渴望探索计算的数学本质,这门课会彻底重塑你的编程观。建议每周投入 20 小时以上,做好‘换脑’的心理准备。

Course decision

选课先看

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

考核总权重

100%

3 项考核

最高单项

40%

Final Examination

期末考试

以官方 outline 为准

Hurdle

1 项

需要单独满足

Deadline map

考核时间线

按截止周排列作业节点;持续考核会保留在下方完整考核结构中。

Week 10

Weekly Coding Lab Challenges

25%

涵盖每章函数式逻辑实现的编程任务,强调代码的优雅度与测试覆盖率。

Week 11

Final Examination

40%

考察类型推导、Monad 组合及属性测试定义的深度笔试,含大量手写 Haskell 证明。

Syllabus

每周大纲

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

  1. 1

    函数式编程导论与 Haskell 基础

    纯函数定义,惰性求职 (Lazy Evaluation),Haskell 类型系统扫盲,递归与模式匹配。

  2. 2

    代数数据类型 (ADT)

    Sum types 与 Product types,构造健壮的域模型,消灭非法状态的代码设计技巧。

  3. 3

    高阶函数与列表处理

    Map, Filter, Fold (Left/Right) 的深度推导,函数柯里化 (Currying) 与组合 (Composition)。

  4. 4

    类型类 (Type Classes) 与多态

    Eq, Ord, Show 协议,Functor 范畴论背景,利用类型类实现灵活的接口扩展。

  5. 5

    Applicative 与 Monad 巅峰

    上下文计算模型,Do-notation,处理可选值 (Maybe) 与错误 (Either) 的 Monad 逻辑。

  6. 6

    灵活性周 (Flex Week)

    复习递归与 ADT,冲刺第一个编译器设计 Assignment,练习类型推演。

  7. 7

    状态与副作用管理

    State Monad, IO Monad, 纯净世界与肮脏世界的隔离边界设计。

  8. 8

    属性驱动开发 (QuickCheck)

    Property-based Testing 原理,如何通过随机化测试证明算法的通用正确性。

  9. 9

    解析器组合子 (Parser Combinators)

    利用函数组合构建复杂的文本解析器,实现简单的领域特定语言 (DSL)。

  10. 10

    系统架构与全课总结

    类型驱动设计 (Type-driven Design) 实战;全学期函数式思维大复盘。

Assessment

考核结构

Weekly Coding Lab Challenges

涵盖每章函数式逻辑实现的编程任务,强调代码的优雅度与测试覆盖率。

25%

Week 10

Software Implementation Project

独立或小组实现一个复杂系统(如一个小型的图处理库或解释器),重点考核类型设计。

35%

Final ExaminationHurdle

考察类型推导、Monad 组合及属性测试定义的深度笔试,含大量手写 Haskell 证明。

40%

Week 11

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

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