mirror of
https://github.com/PKUFlyingPig/cs-self-learning.git
synced 2026-02-03 02:24:53 +08:00
fix typro
This commit is contained in:
@@ -6,13 +6,13 @@
|
||||
|
||||
本书目前规划了以下部分(如果你有其他好的建议,或者想加入贡献者的行列,欢迎邮件zhongyinmin@pku.edu.cn或者在issue里提问):
|
||||
|
||||
- 必学工具:翻墙, Stackoverlfow, Git, Github, Vim, Latex, Makefile ...
|
||||
- 必学工具:翻墙, StackOverflow, Git, Github, Vim, Latex, Makefile ...
|
||||
- 环境配置:bash,环境变量,Anaconda ...
|
||||
- 培养方案替代课程:我将按照信科2021年计算机科学与技术专业的培养方案,对于每个课程列出相关替代课程学习资料,并分析如何在不影响课程绩点的情况下学习尽可能多的内容。
|
||||
- 经典书籍推荐:看过CSAPP这本书的同学一定感叹好书的重要,我将列举推荐自己看过的计算机领域的必看好书与资源链接。
|
||||
|
||||
## 梦开始的地方 —— CS61A
|
||||
大一入学时我是一个对计算机一无所知的小白,装了几十个G的Visual Studio天天和OJ你死我活。凭着高中的数学底子我数学课学得还不错,但在专业课上对竞赛大佬只有仰望。提到编程我只会打开那笨重的IDE,新建一个我也不知道具体是干啥的命令行项目,然后就是cin,cout,for循环,然后CE,RE,WA循环。当时的我就处在一种拼命想学好但不知道怎么学,课上认真听讲但题还不会做,课后做作业完全是用时间和它硬耗的痛苦状态。我至今电脑里还存着自己大一上学期计算概率大作业的源代码 —— 一个1200行的C++文件,没有头文件、没有类、没有封装、没有unit test、没有makefile、没有git,唯一的优点是它确实能跑,缺点是“能跑”的补集。我一度怀疑我是不是不适合学计算机,因为童年对于极客的所有想象,已经被我第一个学期体验彻底粉碎了。
|
||||
大一入学时我是一个对计算机一无所知的小白,装了几十个G的Visual Studio天天和OJ你死我活。凭着高中的数学底子我数学课学得还不错,但在专业课上对竞赛大佬只有仰望。提到编程我只会打开那笨重的IDE,新建一个我也不知道具体是干啥的命令行项目,然后就是cin,cout,for循环,然后CE,RE,WA循环。当时的我就处在一种拼命想学好但不知道怎么学,课上认真听讲但题还不会做,课后做作业完全是用时间和它硬耗的痛苦状态。我至今电脑里还存着自己大一上学期计算概论大作业的源代码 —— 一个1200行的C++文件,没有头文件、没有类、没有封装、没有unit test、没有makefile、没有git,唯一的优点是它确实能跑,缺点是“能跑”的补集。我一度怀疑我是不是不适合学计算机,因为童年对于极客的所有想象,已经被我第一个学期的体验彻底粉碎了。
|
||||
|
||||
这一切的转机发生在我大一的寒假,我心血来潮想学习Python。无意间看到知乎有人推荐了CS61A这门课,说是UC Berkeley的大一入门课程,讲的就是Python。我永远不会忘记那一天,打开[CS61A](https://cs61a.org/)课程网站的那个瞬间,就像哥伦布发现了新大陆一样,我开启了新世界的大门。
|
||||
|
||||
@@ -24,20 +24,20 @@
|
||||
|
||||
- 课程教授亲自编写的教材:CS61A这门课的建设老师将MIT的经典教材*Structure and Interpretation of Computer Programs*(SICP)用Python这门语言进行改编(原教材基于Schema语言),保证了课堂内容与教材内容的一致性,同时补充了更多细节,可以说诚意满满。而且全书开源,可以直接线上阅读。
|
||||
|
||||
- 丰富到让人眼花缭乱的课程作业:14个lab巩固随堂知识点,10个homework,还有4个代码量均上千行的project。与大家熟悉的OJ和word文档式的作业不同,所有作业均有完善的代码框架,保姆级的作业说明。每个Project都有详尽的handout文档、全自动的评分脚本。CS61A甚至专门开发了一个自动化的作业提交评分系统(据说还发了论文)。当然,有人会说“一个project几千行代码大部分都是助教帮你写好的,你还能学到啥?”。此言差矣,作为一个刚刚接触计算机,连安装Python都磕磕绊绊的小白来说,这样完善的代码框架既可以让你专注于巩固课堂上学习到的核心知识点,又能有“我才学了一个月就能做一个小游戏了!”的成就感,还能有机会阅读学习别人高质量的代码,从而为自己所用。我觉得在低年级,这种代码框架可以说百利而无一害。唯一的害也许是苦了老师和助教,因为这样的作业可想而知需要相当的时间投入。
|
||||
- 丰富到让人眼花缭乱的课程作业:14个lab巩固随堂知识点,10个homework,还有4个代码量均上千行的project。与大家熟悉的OJ和word文档式的作业不同,所有作业均有完善的代码框架,保姆级的作业说明。每个Project都有详尽的handout文档、全自动的评分脚本。CS61A甚至专门开发了一个自动化的作业提交评分系统(据说还发了论文)。当然,有人会说“一个project几千行代码大部分都是助教帮你写好的,你还能学到啥?”。此言差矣,作为一个刚刚接触计算机,连安装Python都磕磕绊绊的小白来说,这样完善的代码框架既可以让你专注于巩固课堂上学习到的核心知识点,又能有“我才学了一个月就能做一个小游戏了!”的成就感,还能有机会阅读学习别人高质量的代码,从而为自己所用。我觉得在低年级,这种代码框架可以说百利而无一害。唯一的害也许是苦了老师和助教,因为开发这样的作业可想而知需要相当的时间投入。
|
||||
|
||||
- discussion助教讲述考试例题:类似于北京大学ICS小班研讨,但习题全部用Latex撰写,相当规范且会明确给出solution。
|
||||
- Discussion小班助教讲解考试例题:类似于北京大学ICS小班研讨,但习题全部用Latex撰写,相当规范且会明确给出solution。
|
||||
|
||||
这样的课程,你完全不需要任何计算机的基础,你只需要努力、认真、花时间就够了。此前那种有劲没处使的感觉,那种付出再多时间却得不到回报的感觉,从此烟消云散。这太适合我了,我从此爱上了自学。
|
||||
|
||||
试想如果有人能把艰深的知识点嚼碎嚼烂,用生动直白的方式呈现给你,还有那么多听起来就很Fancy种类繁多的Project来巩固你的理论知识,你会觉得他们真的是在倾尽全力地想方设法让你完全掌握这门课,你会觉得不学好它简直是对这些课程建设者的侮辱。
|
||||
试想如果有人能把艰深的知识点嚼碎嚼烂,用生动直白的方式呈现给你,还有那么多听起来就很fancy,种类繁多的project来巩固你的理论知识,你会觉得他们真的是在倾尽全力想方设法地让你完全掌握这门课,你会觉得不学好它简直是对这些课程建设者的侮辱。
|
||||
|
||||
如果你觉得我在夸大其词,那么不妨从CS61A开始,它确实是我的梦开始的地方。
|
||||
如果你觉得我在夸大其词,那么不妨从CS61A开始,因为它是我的梦开始的地方。
|
||||
|
||||
## 为什么写这本书
|
||||
在我2020年秋季学期担任北京大学《深入理解计算机系统》(CSAPP)这门课的助教时,我已经自学一年多了。这一年多来我无比享受这种自学模式,为了分享这种快乐,我为自己的小班同学做过一个[CS自学资料整理仓库](https://github.com/PKUFlyingPig/Self-learning-Computer-Science)。当时纯粹是心血来潮,因为我也不敢公然鼓励大家翘课自学。
|
||||
|
||||
但随着又一年左右的维护,这个仓库的内容已经相当丰富,基本覆盖了计科、智能系、软工系的绝大多数课程,我也为每个课程都建了各自的Github仓库,汇总我用到的自学资料以及作业实现。
|
||||
但随着一年左右的维护,这个仓库的内容已经相当丰富,基本覆盖了计科、智能系、软工系的绝大多数课程,我也为每个课程都建了各自的Github仓库,汇总我用到的自学资料以及作业实现。
|
||||
|
||||
直到大四开始凑学分毕业的时候,我打开自己的培养方案,我发现它已经是我这个自学仓库的子集了,而这距离我开始自学也才两年半而已。于是,一个大胆的想法在我脑海中浮现:也许,我可以打造一个自学式的培养方案,把我这三年自学经历中遇到的坑、走过的路记录下来,以期能为后来的学弟学妹们贡献自己的一份微薄之力。
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
因为我坚信,既然你能坚持听我BB到这里,你一定不缺学好CS的能力,你只是没有一个好的老师,给你讲一门好的课程。而我,将力图根据我三年的体验,为你挑选这样的课程。
|
||||
|
||||
## 自学的好处
|
||||
对我来说,自学最大的好处就在于可以完全根据自己的进度来调整学习速度。对于一些疑难知识点,我可以反复回看视频,在网上谷歌相关的内容,上StackOverlow提问题,直到完全将它弄明白。而对于自己掌握得相对较快的内容,则可以两倍速甚至三倍速略过。
|
||||
对我来说,自学最大的好处就在于可以完全根据自己的进度来调整学习速度。对于一些疑难知识点,我可以反复回看视频,在网上谷歌相关的内容,上StackOverflow提问题,直到完全将它弄明白。而对于自己掌握得相对较快的内容,则可以两倍速甚至三倍速略过。
|
||||
|
||||
自学的另一大好处就是博采众长。信科俗称的四大礼包:体系、网络、操统、编译,每一门我基本都上过不同大学的课程,不同的教材、不同的知识点侧重、不同的project将会极大丰富你的视野,也会让你理解错误的一些内容得到及时纠正。
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
如果,巧之又巧,你还是北大信科的一员,那么这本书中将会根据信科计算机的培养方案为你打造通关信科之培养方案Pro,让你在自学和绩点之间取得平衡。
|
||||
|
||||
## 特别鸣谢
|
||||
在这里,我怀着崇敬之心真诚地感谢所有将课程资源无偿开源的各位教授们。这些课程倾注了他们数十年教学生涯的积淀和心血,却无私地让所有人享受到如此高质量的CS教育。没有他们,我的大学生活不会这样充实而快乐。很多教授在我给他们发了感谢邮件之后,甚至会回复上百字的长文,真的让我无比感动。
|
||||
在这里,我怀着崇敬之心真诚地感谢所有将课程资源无偿开源的各位教授们。这些课程倾注了他们数十年教学生涯的积淀和心血,他们却选择无私地让所有人享受到如此高质量的CS教育。没有他们,我的大学生活不会这样充实而快乐。很多教授在我给他们发了感谢邮件之后,甚至会回复上百字的长文,真的让我无比感动。他们也时刻激励着我,做一件事,就得用心做好,无论是科研,还是为人。
|
||||
|
||||
## 你也想加入到贡献者的行列
|
||||
一个人的力量终究是有限的,这本书也是我在繁重的科研之余熬夜抽空写出来的,难免有不够完善之处。另外,由于个人做的是系统方向,很多课程侧重系统领域,对于数学、理论计算机、高级算法相关的内容则相对少些。如果有大佬想在其他领域分享自己的自学经历与资源,欢迎和我邮件联系(zhongyinmin@pku.edu.cn)。
|
||||
Reference in New Issue
Block a user