北美水硕上水课

USC CS37是一个授课硕士项目,俗称水硕,两年半的项目共37学分。作为比较,我本科一学期最多选32学分。为什么来这个项目之前提过,最主要的原因是我比较菜,绩点又很低;不过水也有水的好处,有时间干别的。本学期我选了两门课,CSCI 455和CSCI 570。

  • CSCI 455: Introduction to Programming System Design

由于项目面向转码人群,第一学期必选这门先导课,前12周讲Java,后四周讲C++。每周去助教那验收一个小lab(考试周除外),还有几个较大的programming assignment,最后是期中期末考试。4学分的课既教Java又教C++,颇有几分电子系的风范(逃)。总的来说,这门课包含大量上机内容,还可以在office hour问助教和老师,对零基础的人来说是相当不错的,也具有一定挑战性。但对有基础的人来说就,emmm。不过这门课人相对较少,每个时间段二三十人,给我们提供了充分的社交机会,大家等验收的时候就在座位上聊天吹水。此外,这门课没什么负担,减轻了我这学期的压力。

  • CSCI 570: Analysis of Algorithms

这门算法课也是CS37项目的必修,上课的教授是Shawn Shamsian,算是USC风评不错的一门课。和《数据与算法》、《数据结构》相比,570内容更加深入。比如NP,本科只是一笔带过,这里就要讲各种NP-complete问题以及polynomial reduction的奇技淫巧。唯一不好的地方就是选课的人太多,几百人挤在一个大会堂,这种课堂只在环保与可持续发展体验过。我比较讨厌这种课堂环境,因此后面都是听回放。workload方面,每周一次作业,三次midterm考试,外加一次大作业。课上讲的内容就很深,作业也不简单,难的时候要花费一两天的时间。很多问题完全没有头绪,上网搜也不会做。好在作业是PF制,拿到每次作业60%的分数就喜提总评+1。考试比课后的discussion和作业略微简单一些,允许带一张cheatsheet,但考场只有一个小桌板,对我这种偏胖的人来说十分难受。相比之下,大作业倒显得很trivial,我一个人就写完了代码。这是一门需要花很多精力的课,不过收获还是蛮大的(虽然现在都忘了)。