Week 9
Major Construction Project
30%
独立开发一个复杂的自动化工具(如利用 Shell/Python 模拟 Git 的部分核心功能)。
COMP9044
课程定位 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
30%
独立开发一个复杂的自动化工具(如利用 Shell/Python 模拟 Git 的部分核心功能)。
Week 10
20%
每周在 Linux 环境下完成的脚本挑战,包含高难度 Bonus 题,强调解决问题的效率。
Week 11
50%
3 小时限时现场机考,要求在考场内手敲 10-12 道脚本编写与正则匹配难题。
Syllabus
默认只展示每周独有的知识重点;节奏、考核、Tutorial 和避坑信息按需展开。
### 📖 核心知识点:Linux Shell 初探 打破 GUI 的束缚,拥抱终端。 - **文件系统与权限**: 深入理解 `chmod` 权限八进制表示法及文件所有权模型。掌握硬链接 (Hard Links) 与软链接 (Symbolic Links) 的底层 inode 差异。 - **流控与重定向**: 极度熟练运用 stdin, stdout, stderr (0, 1, 2) 的管道 (`|`) 拼接与重定向 (`>`, `>>`, `2>&1`)。
### 🔍 核心知识点:正则表达式与文本搜索 这是所有文本处理工具的灵魂。 - **Regex 语法**: 掌握基础与扩展的正则表达式 (ERE)。理解 Anchor (`^`, `$`)、Quantifier (`*`, `+`, `?`, `{m,n}`) 以及 Character Classes。 - **Grep 进阶**: 使用 `egrep` 解决复杂的日志搜索问题,理解贪婪匹配 (Greedy) 与非贪婪匹配的差异。
### ✂️ 核心知识点:流编辑器大杀器 当 grep 不够用时,使用 sed 替换,使用 awk 分析。 - **Sed**: 掌握 `s/old/new/g` 替换模式,理解其针对行的模式空间 (Pattern Space) 运作原理。学习多行匹配与模式提取。 - **Awk**: 这是一门图灵完备的文本报告语言。掌握 `BEGIN`, `{action}`, `END` 结构。学会利用字段变量 `$1`, `$2` 以及内建变量 `NR`, `NF` 快速统计 CSV 格式数据。
### 📜 核心知识点:Shell 编程基础 将命令组合为具有逻辑的自动化脚本。 - **变量与环境**: 理解全局环境变量与局部脚本变量的区别,掌握 `$?`, `$#`, `$@` 等特殊参数。 - **逻辑控制**: 熟练编写 `if-elif-else` 判断以及 `test` 命令 (或 `[ ]`, `[[ ]]`) 的文件属性与字符串对比。 - **避坑指南**: Bash 对空格极其敏感,赋值时等号两边不能有空格,而在 `[ ]` 内两端必须有空格!
### 📜 核心知识点:高阶 Shell 自动化 让脚本具备工业级健壮性。 - **循环结构**: 掌握 `for`, `while` 遍历文件列表或命令输出。 - **陷阱处理**: 学习使用 `trap` 捕获用户的 `Ctrl+C` 信号以清理临时文件。 - **HD 策略**: 在大作业中,能够利用正则表达式和 `sed`/`awk` 实现复杂参数的鲁棒解析 (Argument Parsing),避免代码崩溃。
### 🐪 核心知识点:Perl 语言入门 Perl 号称“胶水语言之王”,是 COMP9044 的一大难关。 - **数据类型**: 掌握 Scalars (`$`), Arrays (`@`), Hashes (`%`) 的奇异语法。理解 Context (List Context vs Scalar Context) 如何在后台默默改变变量的行为。 - **文件操作**: 学习如何使用 Filehandles 高效读取和写入系统文件。
### 🐪 核心知识点:Perl 进阶与原生正则 体验 Perl 中无缝融合的正则表达式。 - **正则匹配与替换**: 熟练使用 `=~ m//` 和 `=~ s///` 绑定操作符。掌握捕获组 (Capture Groups, `$1, $2`) 的反向引用。 - **复杂数据结构**: 处理 Hash of Arrays 或是 Array of Hashes。掌握 `map` 和 `grep` 在 Perl 中的函数式编程用法。
### 🌳 核心知识点:Git 底层原理 不要只会 `git commit`。我们将打开 `.git` 文件夹。 - **对象模型**: 深入剖析 Blob, Tree, Commit, Tag 四种底层对象是如何通过 SHA-1 哈希值通过链表串联起来的。 - **版本操作**: 掌握分支合并 (Merge) 与变基 (Rebase) 的原理差异。理解分离头指针 (Detached HEAD) 的本质。
### 🕷 核心知识点:网络抓取与 Python 初探 (根据学期调整)利用 Perl 或 Python 编写简单的网络抓取脚本。 - **模块运用**: 了解如何导入 LWP 或 Python 的 requests 库抓取网页,使用 Regex 提取特定数据块并生成分析报告。
### 🏆 核心知识点:机考生存指南 期末上机考试是极速编程的试炼场。串讲正则高频陷阱、Shell 参数解析模板以及 Perl 的上下文黑魔法。总结一套能在 3 小时内快速 debug Shell 脚本的最佳实践。
Assessment
Weekly Lab Exercises
每周在 Linux 环境下完成的脚本挑战,包含高难度 Bonus 题,强调解决问题的效率。
Week 10
Major Construction ProjectHurdle
独立开发一个复杂的自动化工具(如利用 Shell/Python 模拟 Git 的部分核心功能)。
Week 9
Final Lab ExaminationHurdle
3 小时限时现场机考,要求在考场内手敲 10-12 道脚本编写与正则匹配难题。
Week 11
Assignments
使用 Python 开发一个能够自动分析、归档并报告特定软件项目状态的工具
重点: 模块化设计, 性能效率
要求:代码需具备极高的健壮性和容错能力
⏱ 预计 35 小时
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)的整体分布,无法关联到具体学员或其所选课程;仅作为毕业生去向的总体社会证明展示。
我们没有"某位学长选了这门课、后来进了哪家公司"这种可查询的个人去向档案 —— 校友证言是脱敏的,无法关联到具体的人或他选过的课。所以这里只给整体分布,不给个人路径,不编。