# CS61A: Structure and Interpretation of Computer Programs ## 课程简介 - 所属大学:UC Berkeley - 先修要求:无 - 编程语言:Python, Scheme, SQL - 课程难度:🌟🌟🌟 - 预计学时:50 小时 伯克利 CS61 系列的第一门课程,也是我的 Python 入门课。 CS61 系列是伯克利 CS 专业的入门课,其中: - CS61A: 强调抽象,让学生掌握用程序来解决实际问题,而不关注底层的硬件细节。 - CS61B: 注重算法与数据结构以及大规模程序的构建,学生会用 Java 语言结合算法与数据结构的知识来构建千行代码级别的大型项目(一个简易的谷歌地图,一个二维版的 Minecraft)。 - CS61C: 关注计算机体系结构,让学生理解高级语言(例如 C)是如何一步步转换为机器可以理解的 01 串并在 CPU 执行的,学生将会学习 RISC-V 架构并自己用 Logism 实现一个 CPU。 CS61B 和 CS61C 在本书中均有收录。 回到 CS61A,注意这不仅仅是一门编程语言课,而是会深入到程序构造与运行的原理。最后你将在第 4 个 Project 中用 Python 实现一个 Scheme 的解释器。此外,抽象将是这门课的一大主题,你将学习到函数式编程、数据抽象、面向对象等等知识来让你的代码更易读,更模块化。当然,学习编程语言也是这门课的一大内容,你将会掌握 Python、Scheme 和 SQL 这三种编程语言,在它们的学习和比较中,相信你会拥有快速掌握一门新的编程语言的能力。 注意:CS61A并不是一门CS入门课,虽然课程并无强制的先修要求,但是课程创始人John DeNero在课上及syllabus中都强烈不建议无编程基础的同学选修CS61A。John推荐伯克利的另一门课CS10,对初学者更加友好,课程网站: 。虽然许多人都是直接学习CS61A,但这对学生的学习能力/自律要求极高,我认为一个更加的平滑的入门能带来更好的学习体验,激发兴趣,避免课程难度过高而导致的信心挫折。除去CS10,哈佛的CS50也是一门很好的CS入门课,见 。 ## 课程资源 - 课程网站: - 课程视频: 参见课程网站链接 - 课程教材: - 课程作业:课程网站会有每个作业对应的文档链接以及代码框架的下载链接。 ## 资源汇总 我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPic/CS61A - GitHub](https://github.com/PKUFlyingPig/CS61A) 中。