前言#

声明:大部分资源来自官网公开资料,版权归原作者所有。

《CS100:SICP》讲授计算之原理(the principles of computation),完成课程后,你将能够解释编程语言的基本方法,并将其用于分析计算系统(computational systems),同时你也应该能够使用计算思维对问题进行抽象。

课程关注的重点是抽象(abstraction),这将鼓励程序员在问题(problem)层面进行思考,而不是拘泥于计算机硬件(computer hardware)的底层操作。

本课程算是计算机科学中较为特殊的课程,不仅适合没有编程经验的新手,对于拥有多年编程经验的熟手,也能从中获取很多真知灼见。以现今流行的本科课程体系来看,课程包含的内容涵盖了从入门到进阶的多个主题,其教授的思想将影响程序员整个职业生涯。

本课程可以算是《UCB CS 61A》和《MIT 6.001 SICP》的课程伴侣,整理该课程的目的是为了方便大家进行编程入门相关内容的学习。

课程网站会逐步更新随堂笔记、实验、作业和项目等相关文件,文档说明也会优化为中文版本,并增加一部分知识点和提示。最终,本站包含的内容将会远远大于原版课程内容,方便大家理解和学习。

参考教材#

  • SICP, 2nd》,原汁原味,其思想将影响程序员整个职业生涯

  • Composing Programs》,用 Python 改写的 SICP,由于 CS 61A 定位本科一年级入门课,或许并没有完美地展现原版 SICP 的精髓

进阶课程#

  • CS101:C++ 编程抽象思维》参考了 Stanford CS106B 的课程大纲,关注更高级的编程思想和软件工程,例如常见的数据结构、算法分析、软件测试等。

  • CS102:计算机组成与系统》参考了 Stanford CS107 和 CMU 15-213 的课程大纲,从软件的视角揭秘计算机的底层原理,为操作系统和网络等高阶课程打下坚实的基础。