转眼已经在家读完 Master of IT 的第三学期,每学期的选课都仿佛一次赌博,Google 搜索「Monash IT 选课」满眼都是培训机构公众号年年复用的废话文章。想想不如做一个 MIT 经验记录,总结自己也方便后来者。因为这个话题的时间跨度较长,所以可能会分多篇进行介绍,这是本系列正文的第一篇,具体介绍第一学期。

前文提过,除了最后一学年的毕业必修科目,MIT 课程总共有六门必修课。第一学期的四门科目全部都是专业必修课,没得商量。澳洲的授课型硕士的本质其实是为过去完全没有学过相关专业的无背景人士提供一个快速学习和转行的渠道,所以第一学期的这四门课也相当于专业背景快速入门。

科目

FIT9131: Programming foundations in Java

顾名思义,这门课是学习 Java 编程基础。这门课的评价比较两极化,对于没有编程基础的人来说这是好好从零开始学习编程的机会,但对于使用过其他语言的人来说可能会过于轻松。

FIT9131 包含两个作业,类型基本相同,都是通过基础的 Java 编程实现作业要求的程序,搞懂上课内容多动脑基本就能做出。因为两次作业都有面试,所以如果作业中有向同学请教来的部分,就务必需要搞懂,否则面试一问三不知可能会很难堪。

而 FIT9131 的考试主要还是围绕概念的理解和代码能力,所以同样是需要吃透教学内容,几乎没有什么走捷径的技巧和注意点可言。

如果你有编程基础

虽然 MGA 的学长学姐们在迎新周会告诉你 Java 有点难,但对于哪怕有过一点面向对象编程经验的人来说 FIT9131 的教学范围可以说是非常浅薄。FIT9131 使用 BlueJ 作为 IDE,这是一款面向教学的 IDE(和实际的专业编程环境相当脱节)。这科重点大多集中在对类和对象的理解,主要学习内容是类、对象与成员的关系和各种结构控制。相比国内大学 C 语言课程动不动教你指针考你算法,FIT9131 的 Java 直到学期结束都几乎没有讲解 Java 包、抽象类、接口、枚举等概念,实在相当阳春。

当然也不是说不用好好学习,跟着 FIT9131 系统性地学习一遍 Java 其实也是对自身知识的查漏补缺,只是 FIT9131 的教学内容作为专业基础实在有些划水,甚至与之后选修课中需要用到的 Java 内容存在很大脱节。如果后期想好好学习其他课程或者从事开发工作,还是要跳出教学范围自己在课外多花精力额外学习不少东西的。

如果你没有相关基础

对于没有任何编程经验的同学,这门课的学习可能需要花点功夫。而 FIT9131 的教学内容几乎是任何一门语言的基础部分,所以即使你未来准备转向其他语言,在这门课上消耗的脑细胞也不会是白白浪费。

此外我也遇见一些来自文科背景的同学对于编程学习相当吃劲,加上第一学期刚开始接触英语的专业教学环境导致部分术语可能很难理解,手头备一本中文 Java 入门书籍可能也会更加方便,例如《明解 Java》

FIT9132: Introduction to databases

相比 FIT9131,FIT9132 数据库这门务实很多,虽然这也可能是因为我此前除了 phpMyAdmin 以外几乎没有任何数据库操作经验。FIT9132 使用课程教学组提供的 Oracle 数据库和 Oracle 自家的 SQL Developer 作为 IDE,开篇以概念为主,首先几周主要学习关系型数据库的设计步骤和规范,然后才开始学习和实操 SQL 语句,最后再学一些 PL/SQL 作为进阶。

FIT9132 包括两次作业,第一次作业以数据库设计为主,主要覆盖 UML 数据库建模图、数据库规范化等,只要搞懂教学内容、多问老师,基本都能解决;第二次作业侧重 SQL 和 PL/SQL 语句的编写,难度跨越较大,尤其是涉及到 SQL 子句和 PL/SQL 的部分,建议尽早开始作业。

FIT9132 这门课与 FIT9131 同样都是理论与实践相对联系密切的领域,所以考试准备其实也类似,除了搞懂每一个教学内容、熟练自己的语句编写能力,其他没有太多捷径或者注意点。

就个人而言,考虑到我此前可以说完全没有数据库经验,这门课对我来说并不算轻松,加上遇到一位比较划水的 tutor,做第二次作业时甚至有点心情爆炸。

FIT9134: Computer architecture and operating systems

FIT9134 与前两门课不同,其 lecture 内容与 tutorial 内容相对割裂,这门课的 lecture 主要围绕计算机架构和操作系统的理论知识展开,而 tutorial 内容是 Linux 系统和其 bash 命令行的各种基本使用。

FIT9134 没有考核作业,但每次的 tutorial 都计入考核项目,每节课考核要点包括任务的完成以及 tutor 的随机提问,这也使得大家在考试周之前都把这门课的重点放在如何平安度过每周一次的试炼。为了避免每周的胆战心惊,你也可以在课前向其他 tutorial 在你之前的同学提前打听本周的教学内容,提前准备好再去上课。

此外这门课也最大程度地展现出在 Monash 你选到的不同 tutor 很可能直接决定你的上课体验以及科目成绩。我 FIT9134 的 tutor 同时也是这门课的 lecturer —— Andy Cheng。Andy 作为这门课的 lecturer,在 tutorial 中的讲解是非常详细且优秀的,但他在学生中的口碑也是出了名的严格和刁钻,同样的教学内容 Andy 可能讲得比其他 tutor 更加细致,但 Andy 的考核也让人更加提心吊胆。只是从我个人来说,因为折腾过不少 VPS,所以 Linux 的基础操作还算比较熟悉,能碰巧选到 Andy 的课还是挺不错的。

和日常考核不同,FIT9134 的考试更加侧重 lecture 中的理论,所以考试之前非常需要提前回顾这些此前一直被忽视的理论知识,加上这些理论知识因为平时很少用到所以非常容易遗忘,务必需要认真准备。

FIT9135: Data communication

从这门课开始,Monash 已经开始展示自己文不对题的起名技巧。FIT9135 的名字叫 Data communication,但内容实则是网络基础。课程主要围绕计算机网络通信的 OSI 分层模型和各网络层常见的通信协议展开讲解,理论知识尤其多。繁多的概念和理论讲解也导致这门课和 FIT9134 的 lecture 并列 MIT 第一学期最佳催眠素材。

但问题是即使再催眠,这门课的考核内容包括 lecture quiz,这意味着你还是需要好好听讲或者对教材 PDF 练就一手熟练的 Command + F 大法的。FIT9135 还包括两次作业考核。第一次作业包括两部分:第一部分撰写 technical report 基本较水,多上网查文献结合上课内容随便发挥基本不成问题;第二部分通过软件进行 Wi-Fi 热点信号评估,基本和 tutorial 时教的一致。第二次作业在 CORE 网络模拟器中进行网络架设和查错,需要对几层常用的网络层级理解到位。

这门课的考试与 FIT9134 类似,需要你对课堂所讲的理论知识进行复习、精心准备。

一些感言

相比之后的学期,第一学期的学习任务其实可以算是非常休闲的。但并不能因为课程任务轻松就松懈,如果上课内容不理解透彻会对后面的作业完成造成很大的麻烦。我认识的人中也不乏弄到要去校外补习班抢救甚至最后挂课重修的案例,说实话不管前者还是后者都相当没必要。