注:每周平均用时是根据校方官方统计平均。好学生 用时应该少些。
- Freshman integration course (1学分)
- 这门课分2部分,
- 前一部分是Dean介绍SCS的各种学术活动,学生的各种机会(RA,TA,科研,选课等等),
- 后半部分是 SCS 7个系的教授,分别每周介绍他们的研究领域,他们每天正在研究的主要课题,以及当今 CS 的新发展,新动向
- 平均每周 用时 2.5小时
- Principal imperative computation (C programming + algorithm) (12学分)
- CMU SCS 核心必修课程,虽然很多学生都会了,但几乎不可免
- 经验:培养使用 contracts 和 invariants 的 defensive programming
- 成绩:学生成绩分化严重,平均成绩70%,90分以上和40分以下的各占15%
- 平均每周 总共学习用时 15.0 小时
- Mathematics Foundations for Computer Science (discrete math) (12学分)
- 授课老师teaching prof. Mackey广受好评,几乎所有的老师和学生都对他超高好评。我曾经在此贴出和他长聊,被各位抨击,原因仅仅因为他是teaching prof.
- 另一门CMU SCS核心必须课程,是CS理论、算法、proof based math的基础
- 又一门成绩严重分化的课程,成绩往往不是由学习时间决定的,而是数学天分决定的。
- 这门课成绩是 被 SCS 学生成绩统计表明,和学生最终GPA最相关的成绩。也就是说,SCS教授们认为,这门课的成绩,最能预测 是否能在 CS学习上成功。
- 平均每周 总共学习用时 13.5 小时
- Matrix and Linear Transformation (10学分)
- 矩阵和线性代数课,既有和其他大学、系科一样的内容,又有SCS特有的一些特色
- 额外的内容
- 使用 Julia 语言编程,这是集 C语言的快,和 Python的强大支援于一身,特别在CS理论,数值计算,矩阵运算,图像处理上非常强大。课程有一个project 必须用 Julia 完成
- 重点讲授了 SVD (曾经是 Machine Learning最强大武器)和 spectral clustering. 并需要完成 这些 Projects
- 平均每周 总共学习用时 9.5 小时
- Calculus in 3-D (9学分)
- 这门 21-259 课原则上是不让一年级新生选的,由于我小孩没有其他可选的课,我给advisor打了电话,特许 第一学期 选了这门课
- 这门课和以下课程是 Counter Requisite。就是只能选一门:21-254,21-266,21-268,21-269. 其中 21-269 比其他课程难,只有矩阵和线性代数得 A的,并且数学测试优胜者才可以选这门课。我孩子当时数学测试优胜,但矩阵课刚刚上(后来也是得了A),并且没打算在数学上深耕,所以主动放弃了 269. 还有就是 后来的 computer graphics 要求 pre-requiste 必须有 Calculus in 3D,所以我们选了这门课。
- 这门课相对挺容易的,平均每周用时 9.1 小时
- Writing About Data
- 写作课之一,感觉 枯燥、无趣
- 平均每周 总共学习用时 6.5 小时
- Writing About Public Problems
- 另一门写作课,同样的 枯燥、无趣
- 平均每周 总共学习用时 6.6 小时。 花的时间比 writing about data 略多
- Discrete Math Primer
- 离散数学入门
- 这门课的一个目的是给学生分流:根据这门课考试成绩,学生被分配到不同的数学学习路径:
- 分数最低的去学 21108 (introduction to math concepts)
- 好一点的去学 21127 (concepts of mathematics)
- 再好一点的去学 21128 (math concepts and proofs)
- 再好一点的去学 15151 (Mathematics Foundations for Computer Science)
- 最好的 去学 21228 (Discrete Mathematics)
- 平均每周 总共学习用时 3.8 小时
- Computing at Carnegie Mellon
- 熟悉CMU各种 计算资源,硬软件工具,各种设备使用方法以及限制,比如 cyber security, 打印机,学校电脑能否下载电影,黄片等等
- 还有很多政治正确性的东西
- 平均每周 总共学习用时 3.5 小时
- Fundations of Robotics
- 边学边做的机器人课,主要是用 Romi Robot 进行 编程、传感、电机控制 来实现一个自动行走的机器车。儿子秋假和寒假时带回家 玩,可以自动行驶,绕过房间的障碍物,用激光 和 可见光 computer vision, detection etc
- 充满乐趣,又有成就感的一门课
- Lean Programming
- Lean, 是一个 typed functional programming language, 也是用于 数学,统计、机器学习的 theorem prover. 算得上是一门 purely functional programming language. 对于初学者而言,有非常大的 learning curve. 而且首先需要扎实的 type theory 数学准备
- 我儿子之前几乎没有什么functional programming的经验,也没有学过 type theory,所以没有什么准备就上了这门课,结果上课如同听天书,根本不懂。一共有 6个projects,秋假时,前3个projects都不会做。秋假回家时,孩子说,准备 drop 这门课。我查了一下规定,已经过了 drop deadline了,只能 withdraw了,那样就有一个 w 的不好记录了,看来你只能 硬啃了。于是孩子在秋假中,天天钻研 lamda calculus 和 type theory,以及 Lean 语言, 终于把 3个 projects 补上了。后来的课程也跟上了。
- Putnam Seminar
- 著名数学教头 PoShen Loh的课,为 Putnam 竞赛准备的
- 课程不难,但最后参加 Putnam 竞赛夺得好成绩,还是比较难的
- Loh名气很大,对学生很好,但感觉作为数学教头,他的严厉不够,难度也不够。