diff --git a/docs/index.md b/docs/index.md index db376b77..00bfe67a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,7 +10,6 @@ - **国外高质量CS课程汇总**:我将把我上过的所有高质量的国外CS课程分门别类进行汇总,并给出相关的自学建议,大部分课程都会有一个独立的仓库维护相关的资源以及我的作业实现。 - 环境配置:Linux基础,bash,环境变量,Anaconda ... - 经典书籍推荐:看过CSAPP这本书的同学一定感叹好书的重要,我将列举推荐自己看过的计算机领域的必看好书与资源链接。 -- 培养方案替代课程(北大信科专享):我将按照信科2021年计算机科学与技术专业的培养方案,对于每个课程列出相关替代课程学习资料,并分析如何在不影响课程绩点的情况下学习尽可能多的内容。 ## 梦开始的地方 —— CS61A 大一入学时我是一个对计算机一无所知的小白,装了几十个G的Visual Studio天天和OJ你死我活。凭着高中的数学底子我数学课学得还不错,但在专业课上对竞赛大佬只有仰望。提到编程我只会打开那笨重的IDE,新建一个我也不知道具体是干啥的命令行项目,然后就是cin,cout,for循环,然后CE,RE,WA循环。当时的我就处在一种拼命想学好但不知道怎么学,课上认真听讲但题还不会做,课后做作业完全是用时间和它硬耗的痛苦状态。我至今电脑里还存着自己大一上学期计算概论大作业的源代码 —— 一个1200行的C++文件,没有头文件、没有类、没有封装、没有unit test、没有makefile、没有git,唯一的优点是它确实能跑,缺点是“能跑”的补集。我一度怀疑我是不是不适合学计算机,因为童年对于极客的所有想象,已经被我第一个学期的体验彻底粉碎了。 @@ -36,7 +35,7 @@ 如果你觉得我在夸大其词,那么不妨从[CS61A](https://cs61a.org/)开始,因为它是我的梦开始的地方。 ## 为什么写这本书 -在我2020年秋季学期担任北京大学《深入理解计算机系统》(CSAPP)这门课的助教时,我已经自学一年多了。这一年多来我无比享受这种自学模式,为了分享这种快乐,我为自己的小班同学做过一个[CS自学资料整理仓库](https://github.com/PKUFlyingPig/Self-learning-Computer-Science)。当时纯粹是心血来潮,因为我也不敢公然鼓励大家翘课自学。 +在我2020年秋季学期担任《深入理解计算机系统》(CSAPP)这门课的助教时,我已经自学一年多了。这一年多来我无比享受这种自学模式,为了分享这种快乐,我为自己的小班同学做过一个[CS自学资料整理仓库](https://github.com/PKUFlyingPig/Self-learning-Computer-Science)。当时纯粹是心血来潮,因为我也不敢公然鼓励大家翘课自学。 但随着又一年时间的维护,这个仓库的内容已经相当丰富,基本覆盖了计科、智能系、软工系的绝大多数课程,我也为每个课程都建了各自的Github仓库,汇总我用到的自学资料以及作业实现。 @@ -49,12 +48,10 @@ ## 自学的好处 对我来说,自学最大的好处就在于可以完全根据自己的进度来调整学习速度。对于一些疑难知识点,我可以反复回看视频,在网上谷歌相关的内容,上StackOverflow提问题,直到完全将它弄明白。而对于自己掌握得相对较快的内容,则可以两倍速甚至三倍速略过。 -自学的另一大好处就是博采众长。信科俗称的四大礼包:体系、网络、操统、编译,每一门我基本都上过不同大学的课程,不同的教材、不同的知识点侧重、不同的project将会极大丰富你的视野,也会让你理解错误的一些内容得到及时纠正。 +自学的另一大好处就是博采众长。计算机系的几大核心课程:体系、网络、操统、编译,每一门我基本都上过不同大学的课程,不同的教材、不同的知识点侧重、不同的project将会极大丰富你的视野,也会让你理解错误的一些内容得到及时纠正。 自学的第三个好处是时间自由,具体原因省略。 -但与此同时,我也清楚绩点的压力是自学不可忽视的一大阻力。从理想状况来说,如果你超前自学高质量的课程,你将从原理上透彻地理解那些知识点,再加上动手实践的反复巩固,应付校内课程的考试是绰绰有余的。但这一切的前提是:“考试考察了你对知识原理本质的理解”。如果考试是细碎知识点的堆砌,是政治要点式的默写,那就需要“另辟蹊径”了。因此,为了这套自学方式的可操作性,我将在[培养方案Pro](培养方案Pro.md)中,根据北大信科2021年最新版的培养方案并结合自身经历分析如何无伤自学。 - ## 自学的坏处 当然,作为CS自学主义的忠实拥趸者,我不得不承认自学也有它的坏处。 @@ -62,12 +59,12 @@ 第二就是这些自学的课程基本都是英文的。从视频到slides到作业全是英文,所以有一定的门槛。不过我觉得这个挑战如果你克服了的话对你是极为有利的。因为在当下,虽然我很不情愿,但也不得不承认,在计算机领域,很多优质的文档、论坛、网站都是全英文的。养成英文阅读的习惯,在赤旗插遍世界之前,还是有一定好处的(狗头保命)。 -第三,也是我觉得最困难的一点,就是自律。因为没有DDL有时候真的是一件可怕的事情,特别是随着学习的深入,国外的很多课程是相当虐的。北大信科引以为傲的第一虐课ICS只是CMU的系统入门课,你觉得它虐只是因为你还没有习惯除了OJ之外的编程。你得有足够的驱动力强迫自己静下心来,阅读几十页的Project Handout,理解上千行的代码框架,忍受数个小时的debug时光。而这一切,没有学分,没有绩点,没有老师,没有同学,只有一个信念 —— 你在变强。 +第三,也是我觉得最困难的一点,就是自律。因为没有DDL有时候真的是一件可怕的事情,特别是随着学习的深入,国外的很多课程是相当虐的。你得有足够的驱动力强迫自己静下心来,阅读几十页的Project Handout,理解上千行的代码框架,忍受数个小时的debug时光。而这一切,没有学分,没有绩点,没有老师,没有同学,只有一个信念 —— 你在变强。 ## 这本书适合谁 -正如我在前言里说的,任何有志于自学计算机的朋友都可以参考这本书。如果你只是对某个特定的领域感兴趣,当然可以选择性地挑选你感兴趣的内容进行学习。当然,如果你是一个像我当年一样对计算机一无所知的小白,初入大学的校门,我希望这本书能成为你的攻略,让你花最少的时间掌握你所需要的知识和能力。某种程度上,这本书更像是一个根据我的体验来排序的课程搜索引擎,帮助大家足不出户,体验世界顶级名校的计算机优质课程。 +正如我在前言里说的,任何有志于自学计算机的朋友都可以参考这本书。如果你只是对某个特定的领域感兴趣,可以选择性地挑选你感兴趣的内容进行学习。当然,如果你是一个像我当年一样对计算机一无所知的小白,初入大学的校门,我希望这本书能成为你的攻略,让你花最少的时间掌握你所需要的知识和能力。某种程度上,这本书更像是一个根据我的体验来排序的课程搜索引擎,帮助大家足不出户,体验世界顶级名校的计算机优质课程。 -如果,巧之又巧,你还是北大信科的一员,那么这本书中将会根据信科计算机的培养方案为你打造通关信科之培养方案Pro,让你在自学和绩点之间取得平衡。 +当然,作为一个还未毕业的本科生,我深感自己没有能力也没有权利去宣扬一种学习方式,我只是希望这份资料能让那些同样有自学之心和毅力朋友可以少走些弯路,收获更丰富、更多样、更满足的学习体验。 ## 特别鸣谢 在这里,我怀着崇敬之心真诚地感谢所有将课程资源无偿开源的各位教授们。这些课程倾注了他们数十年教学生涯的积淀和心血,他们却选择无私地让所有人享受到如此高质量的CS教育。没有他们,我的大学生活不会这样充实而快乐。很多教授在我给他们发了感谢邮件之后,甚至会回复上百字的长文,真的让我无比感动。他们也时刻激励着我,做一件事,就得用心做好,无论是科研,还是为人。