Harvard CS50: Week 1 + 2 + 3

第一周的课程介绍了 C 语言的基础语法,比如 include 库,声明变量,基础数据类型等,这部分需要赘述的内容不多,且大部分语言的基础都是类似的。

让我印象最深刻的是,整节课程从一开始就在强调代码风格的重要性,包括提交作业时,除了检查代码的准确性,还会检查代码风格是否与仓库风格一致。比如 include 的顺序,括号的位置(这部分对于习惯了 js 的我来说真的是非常不习惯,平时敲完 for 循环或 if 就顺手敲大括号了,现在必须另起一行)。

其次是课程并没有因为是概论课程而忽略了原理的讲解,课上以 include <stdio.h> 为例讲解了编译的流程,每一步计算机完成了什么。

同时,由于每一周的课程结束都需要提交一份作业,因此在第一周的课上就介绍了如何有效地 debug,具体介绍了 printfdebugger 和小黄鸭三种最有效的 debug 方法。

第二周介绍了数组这一数据类型,比较特别的地方是,课上详细介绍了它的实现方式,比如如何存储数组里的内容,如何标记一个数组的完结。

这几课学下来的感受和 Week 0 一样,课程的讲解方式非常高效,但对于零基础的人能学到的内容更多,对于了解编程基础知识的人来说新信息不多。