UniMate AI

COMP9044

软件构造

6 学分难度 中等

课程定位 COMP9044 被公认为 UNSW 最实用的工程课之一,被学生戏称为“Linux 黑客养成班”。如果你厌倦了理论,这门课将教你如何在真实的 Linux/Unix 命令行环境中极速生存、自动化日常繁琐任务,并使用 Perl/Python 构建胶水脚本。 学习内容 全方位覆盖 Shell 脚本编程 (Bash/Dash)、高级文本处理工具 (Regex, Grep, Sed, Awk)、版本控制系统底层 (Git)、以及动态脚本语言编程 (主要是 Perl,少量 Python)。课程高度强调写出“短小精悍”且“极其鲁棒”的自动化工具。 课程结构 课程充满实战性,每周包含密集的 Lab 和高难度的编程大作业。你可能需要仅用 50 行 Perl 脚本实现一个简单的编译器子集,或者手写一个能够自动批改别人代码的 Shell 脚本。期末为高强度的机考 (上机实操)。

Course decision

选课先看

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

考核总权重

100%

3 项考核

最高单项

50%

Final Lab Examination

期末考试

以官方 outline 为准

Hurdle

2 项

需要单独满足

Deadline map

考核时间线

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

Week 9

Major Construction Project

30%

独立开发一个复杂的自动化工具(如利用 Shell/Python 模拟 Git 的部分核心功能)。

Week 10

Weekly Lab Exercises

20%

每周在 Linux 环境下完成的脚本挑战,包含高难度 Bonus 题,强调解决问题的效率。

Week 11

Final Lab Examination

50%

3 小时限时现场机考,要求在考场内手敲 10-12 道脚本编写与正则匹配难题。

Syllabus

每周大纲

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

  1. 1

    Introduction & Shell Basics

    ### 📖 核心知识点:Linux Shell 初探 打破 GUI 的束缚,拥抱终端。 - **文件系统与权限**: 深入理解 `chmod` 权限八进制表示法及文件所有权模型。掌握硬链接 (Hard Links) 与软链接 (Symbolic Links) 的底层 inode 差异。 - **流控与重定向**: 极度熟练运用 stdin, stdout, stderr (0, 1, 2) 的管道 (`|`) 拼接与重定向 (`>`, `>>`, `2>&1`)。

  2. 2

    Regular Expressions & Grep

    ### 🔍 核心知识点:正则表达式与文本搜索 这是所有文本处理工具的灵魂。 - **Regex 语法**: 掌握基础与扩展的正则表达式 (ERE)。理解 Anchor (`^`, `$`)、Quantifier (`*`, `+`, `?`, `{m,n}`) 以及 Character Classes。 - **Grep 进阶**: 使用 `egrep` 解决复杂的日志搜索问题,理解贪婪匹配 (Greedy) 与非贪婪匹配的差异。

  3. 3

    Stream Editing: Sed & Awk

    ### ✂️ 核心知识点:流编辑器大杀器 当 grep 不够用时,使用 sed 替换,使用 awk 分析。 - **Sed**: 掌握 `s/old/new/g` 替换模式,理解其针对行的模式空间 (Pattern Space) 运作原理。学习多行匹配与模式提取。 - **Awk**: 这是一门图灵完备的文本报告语言。掌握 `BEGIN`, `{action}`, `END` 结构。学会利用字段变量 `$1`, `$2` 以及内建变量 `NR`, `NF` 快速统计 CSV 格式数据。

  4. 4

    Shell Scripting I

    ### 📜 核心知识点:Shell 编程基础 将命令组合为具有逻辑的自动化脚本。 - **变量与环境**: 理解全局环境变量与局部脚本变量的区别,掌握 `$?`, `$#`, `$@` 等特殊参数。 - **逻辑控制**: 熟练编写 `if-elif-else` 判断以及 `test` 命令 (或 `[ ]`, `[[ ]]`) 的文件属性与字符串对比。 - **避坑指南**: Bash 对空格极其敏感,赋值时等号两边不能有空格,而在 `[ ]` 内两端必须有空格!

  5. 5

    Shell Scripting II

    ### 📜 核心知识点:高阶 Shell 自动化 让脚本具备工业级健壮性。 - **循环结构**: 掌握 `for`, `while` 遍历文件列表或命令输出。 - **陷阱处理**: 学习使用 `trap` 捕获用户的 `Ctrl+C` 信号以清理临时文件。 - **HD 策略**: 在大作业中,能够利用正则表达式和 `sed`/`awk` 实现复杂参数的鲁棒解析 (Argument Parsing),避免代码崩溃。

  6. 6

    Introduction to Perl

    ### 🐪 核心知识点:Perl 语言入门 Perl 号称“胶水语言之王”,是 COMP9044 的一大难关。 - **数据类型**: 掌握 Scalars (`$`), Arrays (`@`), Hashes (`%`) 的奇异语法。理解 Context (List Context vs Scalar Context) 如何在后台默默改变变量的行为。 - **文件操作**: 学习如何使用 Filehandles 高效读取和写入系统文件。

  7. 7

    Advanced Perl & Regex

    ### 🐪 核心知识点:Perl 进阶与原生正则 体验 Perl 中无缝融合的正则表达式。 - **正则匹配与替换**: 熟练使用 `=~ m//` 和 `=~ s///` 绑定操作符。掌握捕获组 (Capture Groups, `$1, $2`) 的反向引用。 - **复杂数据结构**: 处理 Hash of Arrays 或是 Array of Hashes。掌握 `map` 和 `grep` 在 Perl 中的函数式编程用法。

  8. 8

    Git Under the Hood

    ### 🌳 核心知识点:Git 底层原理 不要只会 `git commit`。我们将打开 `.git` 文件夹。 - **对象模型**: 深入剖析 Blob, Tree, Commit, Tag 四种底层对象是如何通过 SHA-1 哈希值通过链表串联起来的。 - **版本操作**: 掌握分支合并 (Merge) 与变基 (Rebase) 的原理差异。理解分离头指针 (Detached HEAD) 的本质。

  9. 9

    Web Scraping & CGI / Python Intro

    ### 🕷 核心知识点:网络抓取与 Python 初探 (根据学期调整)利用 Perl 或 Python 编写简单的网络抓取脚本。 - **模块运用**: 了解如何导入 LWP 或 Python 的 requests 库抓取网页,使用 Regex 提取特定数据块并生成分析报告。

  10. 10

    Course Review

    ### 🏆 核心知识点:机考生存指南 期末上机考试是极速编程的试炼场。串讲正则高频陷阱、Shell 参数解析模板以及 Perl 的上下文黑魔法。总结一套能在 3 小时内快速 debug Shell 脚本的最佳实践。

Assessment

考核结构

Weekly Lab Exercises

每周在 Linux 环境下完成的脚本挑战,包含高难度 Bonus 题,强调解决问题的效率。

20%

Week 10

Major Construction ProjectHurdle

独立开发一个复杂的自动化工具(如利用 Shell/Python 模拟 Git 的部分核心功能)。

30%

Week 9

Final Lab ExaminationHurdle

3 小时限时现场机考,要求在考场内手敲 10-12 道脚本编写与正则匹配难题。

50%

Week 11

Assignments

作业详情

Assignment 2

使用 Python 开发一个能够自动分析、归档并报告特定软件项目状态的工具

重点: 模块化设计, 性能效率

要求:代码需具备极高的健壮性和容错能力

⏱ 预计 35 小时

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

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

COMP9044 软件构造 — 新南威尔士大学 课程大纲 / 考核 / 学长经验 · UniMate AI