可汗学院里,Computing板块的内容大致分为:计算机科学原理、信息理论(information theory)、互联网(Internet)、数据分析(analysis)、编程(programming)、算法(algorithm)、密码学(cryptography)+信息安全(security)。
各部分之间会有一定概念是重合的。
大部分都属于理论讲解,而“编程”属于实践,包括编程语言:JS、HTML、CSS、SQL,基本都是搭建网络的前端项目(HTML+CSS、HTML+JS)。
理论类的当然是比实践类的要有趣很多。
1. 先看的AP课程里的digital information,这部分讲了二进制(binary)、编码/信息存储、压缩(compression)。虽然不是第一次学习“压缩”了,但是还是觉得很有趣,和以前看的汉明码也有关,不由地佩服人类在这些微小细节上的简单智慧。
2. 接着看了computer & Internet,这部分和高中学的差不多,主要讲了各种protocol的出现与功能,看的时候和现在的快递系统做了一个对比,感受到了系统化思维的重要性。顺便感慨一下美国普通人对于网络的概念理解非常奇异。
3. 然后是编程基础。这块比较杂,包含了伪代码(pseudocode,作为教学和演示工具)、变量(variable)、字符串(string)、列表(list)、条件句(if等)、逻辑运算、程序(procedure,也讲了参数)等。总体来说都是老熟人了,没啥感觉。
4. 算法部分比高中时期学的更基础(fundamental),讲了算法的有效性和高效性、启发式、不可解问题/停机问题、并行与分布式计算等。有点哲学的那种烧脑。看的时候拉上了自己的学生,所以整个复习过程非常愉快。
不过可汗有两个不同的算法板块,我只看了其中一个,还有一个更加具体,会讲二分法(binary search)、渐近(asymptotic notation)、排序(sort,选择、冒泡、快速)、递归(recursive algorithm)、广度优先(breadth-first search)等,几乎都是高中接触过的,算是应用数学范畴的了。不过由于现在在学习软工,以使用工具为主,就先暂时放下,等有空再复习。
5. 现在正在看information theory,也是会让人产生“理念的世界好神奇”想法的。这部分百分之九十都是视频还挺容易卡的,但是B站的相关视频真的是点开就让人犯困了,可汗学院的从历史开始讲起就比较吸引人。
TBC
p.s. B站上的搬运是通过python切入的代码学习,确实会更方便理解,毕竟是更接近自然语言的机器语言,不过还是要注意避免染上不严谨的毛病。