cs-self-learning/docs/编程入门/CS61A.md
RZII e97cae6fa3
Update CS61A.md
我本人并没上过CS10,所以我认为可以建议大家先学习cs50(加上作者本人上过这门课)。另外我的文笔不是很好,还需要作者稍微修改一下语言。
2022-05-08 11:15:27 -04:00

34 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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对初学者更加友好课程网站<https://cs10.org/sp22/> 。虽然许多人都是直接学习CS61A但这对学生的学习能力/自律要求极高我认为一个更加的平滑的入门能带来更好的学习体验激发兴趣避免课程难度过高而导致的信心挫折。除去CS10哈佛的CS50也是一门很好的CS入门课<https://csdiy.wiki/编程入门/CS50/>
## 课程资源
- 课程网站:<https://inst.eecs.berkeley.edu/~cs61a/su20/>
- 课程视频: 参见课程网站链接
- 课程教材:<http://composingprograms.com/>
- 课程作业:课程网站会有每个作业对应的文档链接以及代码框架的下载链接。
## 资源汇总
我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPic/CS61A - GitHub](https://github.com/PKUFlyingPig/CS61A) 中。