跳到主要内容

计算机科学基础

把这页当作检查清单,而不是课程大纲。真正持久的核心其实很小:

  1. 表示:位、数值、文本、指令和数据格式。
  2. 执行:表达式、状态、控制流、函数、递归和抽象。
  3. 资源:时间、内存、存储、网络及其相互权衡。
  4. 组合:接口、模块、进程、协议和分层。
  5. 可靠性:不变量、测试、失效模式、可观测性和安全边界。

接下来可以看 数据结构算法编程语言。如果想系统入门,Berkeley CS 61A 是个不错的参考。

把检查清单变成阅读路径

这是一张编程基础地图,不是对硬件、操作系统、网络和安全的完整论述。可以从零开始,但最好选一门语言实际运行例子,不要同时学习所有层次。

问题阅读起点怎样判断自己理解了
给变量赋值,会复制数据吗?Python 名称与对象预测修改一个有别名的列表后,两个名称看到的值是否都会变化。
函数怎样产生结果?函数区分参数、局部名称、返回值与副作用。
为什么输入越多,工作量越大?时间复杂度写复杂度之前,先说明输入规模和计算的操作。
修改后哪些事实必须保持成立?链表解释删除最后一个元素时头尾指针应怎样变化。
怎样发现程序违反约定?单元测试分别测试普通输入、空输入和非法输入。

不变量是每个合法状态、或每一步循环结束后都必须保持的性质。测试检查选定的执行情况;基于不变量的论证则解释为什么所有满足假设的执行都正确。两者都需要先说明程序应该做什么。 还需要论证算法会逐步接近停止条件;只有不变量,不能证明算法一定会结束。

探索关联

引用了 (8)

被引用 (1)

同主题的其他笔记 (33)

打开关联网络