logo
COMP9044中等6 学分

软件构造

新南威尔士大学·University of New South Wales·悉尼

COMP9044《软件构造》是 新南威尔士大学 的公开课程页面。当前可确认的信息包括 6 学分,难度 中等,公开通过率 85%。 页面已整理 10 周教学安排,3 个重点考核,方便你快速判断工作量、考核结构和适配度。 课程简介摘要:课程定位 COMP9044 被公认为 UNSW 最实用的工程课之一,被学生戏称为“Linux 黑客养成班”。

💪 压力
4 / 5
⭐ 含金量
5 / 5
✅ 通过率
0%

📖 课程概览

选课速读: COMP9044《软件构造》是 新南威尔士大学 的公开课程页面。当前可确认的信息包括 6 学分,难度 中等,公开通过率 85%。 页面已整理 10 周教学安排,3 个重点考核,方便你快速判断工作量、考核结构和适配度。 课程简介摘要:课程定位 COMP9044 被公认为 UNSW 最实用的工程课之一,被学生戏称为“Linux 黑客养成班”。
### 课程定位 COMP9044 被公认为 UNSW 最实用的工程课之一,被学生戏称为“Linux 黑客养成班”。如果你厌倦了理论,这门课将教你如何在真实的 Linux/Unix 命令行环境中极速生存、自动化日常繁琐任务,并使用 Perl/Python 构建胶水脚本。 ### 学习内容 全方位覆盖 Shell 脚本编程 (Bash/Dash)、高级文本处理工具 (Regex, Grep, Sed, Awk)、版本控制系统底层 (Git)、以及动态脚本语言编程 (主要是 Perl,少量 Python)。课程高度强调写出“短小精悍”且“极其鲁棒”的自动化工具。 ### 课程结构 课程充满实战性,每周包含密集的 Lab 和高难度的编程大作业。你可能需要仅用 50 行 Perl 脚本实现一个简单的编译器子集,或者手写一个能够自动批改别人代码的 Shell 脚本。期末为高强度的机考 (上机实操)。

🧠 大神解析

📊 课程难度与压力分析

COMP9044 的难度在于‘琐碎中的逻辑’。Shell 的语法极其奇葩(比如变量加引号 "$file" 与不加的区别),稍不留神就会导致文件被误删。难点在第二周的正则表达式(Regex),那一串乱码般的字符如果没掌握其层级匹配逻辑,你在考场上会抓狂。压力主要来自于期末机考,你需要在高压下、没有互联网的情况下,凭记忆和手册解决 10 道题,容错率极低。及格容易,但拿 HD 需要你对‘边缘情况(Edge Cases)’有近乎强迫症的处理。挂科风险显著存在于对‘Hurdle(及格线)’的忽视上。

🎯 备考重点与高分策略

高分秘籍:‘得正则表达式者得 Distinction’。期末考试中,正则表达式占了近 40% 的分值,一定要练到能秒写出匹配复杂 HTML 标签或嵌套括号的正则。重点练习‘一行代码’脚本(One-liners),因为考试中有很多小分题要求你直接在终端给出答案。对于项目,HD 的关键在于‘健壮性’——你的脚本是否能处理带空格、带星号的文件名?是否能优雅地处理权限错误?重视 Tutorial 里的每一道手算 Regex 题。考前一定要把 Andrew Taylor 提供的 Sample Exam 刷三遍。

📚 学习建议与资源推荐

神级资源:Andrew Taylor 的课程官网,那里有海量的练习题和详尽的说明。如果 Regex 不熟,强烈推荐使用在线调试工具‘Regex101’。想要系统提升 Linux 功力,去读《The Linux Command Line》一书。最重要的建议:每天花 15 分钟在终端里练习常用命令的组合,这种‘肌肉记忆’在机考中能帮你节省 30% 的时间。加入 UNSW 的 CS 社团探讨黑客思维。

⚠️ 作业与 Lab 避坑指南

项目避坑:千万不要在路径名里假设没有空格!在 Shell 脚本中,始终给变量加引号(如 "$file"),这是 9044 避坑的第一准则。Assignment 提交前,务必在学校的 CSS 服务器上跑一遍,确保环境兼容性。此外,注意 Final 考试有机考 Hurdle,如果你现场写不出一个基本的 Shell 循环,你会直接 Fail。考试时,先把简单的 Shell 命令题做完,把时间留给最后的 Python/Perl 逻辑大题。注意:分清‘单引号’与‘双引号’在 Shell 变量替换中的本质差异。

💬 过来人经验分享

学长建议:这门课是为你进入一线互联网公司(如 Google 或 Atlassian)拿的‘高级蓝领执照’。学完后,你眼中的电脑不再是图形界面,而是一个由流、管道和正则定义的无限自动化战场。建议找一个同样追求‘一行代码解决问题’的队友共同讨论。拿 HD 的关键:在作业中展现出你对‘边缘情况的极致处理’。坚持住,通关 9044,你就真正具备了挑战任何复杂系统自动化的底层能力。这张成绩单是进入 DevOps 或后端开发岗位的最有力的技术背书。记住:好的脚本,是炸不掉的代码。

📅 每周课程大纲

Week 1Introduction & Shell Basics
### 📖 核心知识点:Linux Shell 初探 打破 GUI 的束缚,拥抱终端。 - **文件系统与权限**: 深入理解 `chmod` 权限八进制表示法及文件所有权模型。掌握硬链接 (Hard Links) 与软链接 (Symbolic Links) 的底层 inode 差异。 - **流控与重定向**: 极度熟练运用 stdin, stdout, stderr (0, 1, 2) 的管道 (`|`) 拼接与重定向 (`>`, `>>`, `2>&1`)。
Week 2Regular Expressions & Grep
### 🔍 核心知识点:正则表达式与文本搜索 这是所有文本处理工具的灵魂。 - **Regex 语法**: 掌握基础与扩展的正则表达式 (ERE)。理解 Anchor (`^`, `$`)、Quantifier (`*`, `+`, `?`, `{m,n}`) 以及 Character Classes。 - **Grep 进阶**: 使用 `egrep` 解决复杂的日志搜索问题,理解贪婪匹配 (Greedy) 与非贪婪匹配的差异。
Week 3Stream Editing: Sed & Awk
### ✂️ 核心知识点:流编辑器大杀器 当 grep 不够用时,使用 sed 替换,使用 awk 分析。 - **Sed**: 掌握 `s/old/new/g` 替换模式,理解其针对行的模式空间 (Pattern Space) 运作原理。学习多行匹配与模式提取。 - **Awk**: 这是一门图灵完备的文本报告语言。掌握 `BEGIN`, `{action}`, `END` 结构。学会利用字段变量 `$1`, `$2` 以及内建变量 `NR`, `NF` 快速统计 CSV 格式数据。
Week 4Shell Scripting I
### 📜 核心知识点:Shell 编程基础 将命令组合为具有逻辑的自动化脚本。 - **变量与环境**: 理解全局环境变量与局部脚本变量的区别,掌握 `$?`, `$#`, `$@` 等特殊参数。 - **逻辑控制**: 熟练编写 `if-elif-else` 判断以及 `test` 命令 (或 `[ ]`, `[[ ]]`) 的文件属性与字符串对比。 - **避坑指南**: Bash 对空格极其敏感,赋值时等号两边不能有空格,而在 `[ ]` 内两端必须有空格!
Week 5Shell Scripting II
### 📜 核心知识点:高阶 Shell 自动化 让脚本具备工业级健壮性。 - **循环结构**: 掌握 `for`, `while` 遍历文件列表或命令输出。 - **陷阱处理**: 学习使用 `trap` 捕获用户的 `Ctrl+C` 信号以清理临时文件。 - **HD 策略**: 在大作业中,能够利用正则表达式和 `sed`/`awk` 实现复杂参数的鲁棒解析 (Argument Parsing),避免代码崩溃。
Week 6Introduction to Perl
### 🐪 核心知识点:Perl 语言入门 Perl 号称“胶水语言之王”,是 COMP9044 的一大难关。 - **数据类型**: 掌握 Scalars (`$`), Arrays (`@`), Hashes (`%`) 的奇异语法。理解 Context (List Context vs Scalar Context) 如何在后台默默改变变量的行为。 - **文件操作**: 学习如何使用 Filehandles 高效读取和写入系统文件。
Week 7Advanced Perl & Regex
### 🐪 核心知识点:Perl 进阶与原生正则 体验 Perl 中无缝融合的正则表达式。 - **正则匹配与替换**: 熟练使用 `=~ m//` 和 `=~ s///` 绑定操作符。掌握捕获组 (Capture Groups, `$1, $2`) 的反向引用。 - **复杂数据结构**: 处理 Hash of Arrays 或是 Array of Hashes。掌握 `map` 和 `grep` 在 Perl 中的函数式编程用法。
Week 8Git Under the Hood
### 🌳 核心知识点:Git 底层原理 不要只会 `git commit`。我们将打开 `.git` 文件夹。 - **对象模型**: 深入剖析 Blob, Tree, Commit, Tag 四种底层对象是如何通过 SHA-1 哈希值通过链表串联起来的。 - **版本操作**: 掌握分支合并 (Merge) 与变基 (Rebase) 的原理差异。理解分离头指针 (Detached HEAD) 的本质。
Week 9Web Scraping & CGI / Python Intro
### 🕷 核心知识点:网络抓取与 Python 初探 (根据学期调整)利用 Perl 或 Python 编写简单的网络抓取脚本。 - **模块运用**: 了解如何导入 LWP 或 Python 的 requests 库抓取网页,使用 Regex 提取特定数据块并生成分析报告。
Week 10Course Review
### 🏆 核心知识点:机考生存指南 期末上机考试是极速编程的试炼场。串讲正则高频陷阱、Shell 参数解析模板以及 Perl 的上下文黑魔法。总结一套能在 3 小时内快速 debug Shell 脚本的最佳实践。

📋 作业拆解

Assignment 2

35h
核心考察
模块化设计, 性能效率
使用 Python 开发一个能够自动分析、归档并报告特定软件项目状态的工具
要求
代码需具备极高的健壮性和容错能力

📋 课程信息

学分
6 Credit Points
含金量
5 / 5
压力指数
4 / 5
课程类型
elective

💬 学生评价

💭

还没有同学评价这门课,成为第一个分享体验的人吧

写点评