近来我重新“找到”了CS自学指南这本书,翻看之下,思考颇多。
其实大概一年前我就在学长的推荐下得知这本书了,当时点进去看着众多不认识的名词,带着一种难言的恐慌,我把他关掉了。于是这本书在我的收藏夹中吃灰了一年。
在这一年的学习中,我接触了许多计算机的核心课程,我感觉自己总算是有点入门CS了。今天翻看Github,偶然再次看到了这本书,于是带着一种复杂的心情,我重新翻开了他。
这次阅读带给我的感受是完全不一样的。我感觉书里说的所有东西我就算不懂,也好歹是有所涉猎;但我还是有触目惊心之感,因为通过阅读指南中的描述,我深刻意识到:我大学学习的并不深入!但是和一年前那种迷茫的感觉终归是不同的,现在我也绝不会再次采用鸵鸟策略,我想我应该按照书里所讲做点什么,以弥补自己大学时的空缺。
书里的内容真的太多了,可以说汇集了全世界的CS精品课程。而几乎每个课程链接点开,很可能都是一个月+的学习时间(非脱产),即使是从大一开始自学,在应对大学课程的同时,想要全部学完也是很困难的。而我现在可以说大学仅剩1年的时光,想要完成“自救”,必须做好取舍,从中选择真正对自己有益的内容进行学习。
顺便说一下,即使是从大一开始跟着这份指南自学,与传统意义上的大学生评判标准可以说是相违背的。现在很多学生都把出国或者保研作为比较成功的大学出路,而二者基本都需要通过科研论文、竞赛获奖以及高绩点这些外在的标准来提高竞争力。根据我的大学经历,想要顾好绩点、竞赛和科研三者对于普通人几乎是不可能的,甚至好几届学生才能出这样一个神人;而额外进行如此大规模的自学,其需要的精力绝不比以上三者任何一项低。可能有人想说,我通过优质的自学资源大大提升了专业素养,想要取得好成绩、竞赛取得好名次、科研做出好成果,不是水到渠成的吗?按理说应该是这样,可是事实却是:好成绩往往来源于“好”报告,竞赛获奖或科研出成果更需要在某一领域刻苦钻研,而不是在全方面达到较好的水准。我想,这种高质量的自学更像是在苦练“内功”,他大大提升了你的学科综合素养,并帮助你寻找到自己感兴趣的方向,最终在研究生阶段提供极大的帮助。按照我现在的想法,本科阶段能够做到广泛涉猎并找到自己的方向,已经可以说是莫大的成功了。
那么接下来的一年我应该如何合理的利用这份《指南》完成“自救”呢?虽然我可以不受考研困扰,但终究时间少任务重,需要认真辨别仔细取舍。我的想法是:夯实基础、巩固方向、扩展新路。
虽然从高中开始我就通过信息竞赛对CS相关知识有所接触,大学三年中我也进行了比较合理的学科训练,我还是感觉我的基础并不够好,其中最主要的一点就是在大一时我没有学好数学类(微积分、线性代数等)课程,而这一点虽然后来通过我的自学有一定改观,但实际上在大一后的两年学习中一直让我有所困扰。为了不让基础问题成为限制我日后上限的瓶颈,《指南》中的基础部分我应该进行学习。我目前的想法是:认真学习《指南》中的微积分以及线性代数课程,快速过一下电子电路、离散数学和基础工具类课程。前者我确实学的不好,后者我则是在大学学习中有所瑕疵。哦对了,还要学一下《CSAPP》,这个算是CS体系的基础了,其实大多内容也都明白,但是还是需要串一下,因此想要较快的过一遍。
如果不出意外的话,我日后的研究方向很可能是计算机系统的可行性以及安全性,当然我对于图形学以及静态分析也有一定的兴趣(这么看来我的兴趣点都好传统啊……),因此这三点我也要学习。我的想法是,最最重点的就是学习指南中的系统部分,尤其是使用Rust语言构建系统的课程,因为这很可能是我未来的方向。图形学至少真正把Games101看完吧,再顺便把看了一半的learn OpenGL补完,弥补当初课程的遗憾。静态分析则是打算跟着南大的程序设计网课走一遍,未来我还是很想试试能不能去跟着两位讲课老师做研究的。
扩展新学部分,主要就是人工智能方向了。现在想来大学阶段人工智能类的课程我也算接触不少了,但我总感觉自己学的零零碎碎,没有把握到要点,完全没有真正入门。现在别人问我,我总是说我对AI方向兴趣不高,可是真的是这样吗?其实我内心一直都很清楚,真实情况是我自我感觉这方面没入门,很多东西不太敢大谈特谈;真要说有没有兴趣,还得是真正入门了才能知道。好在通过大学几门课的学习,相关的理论我总算是了解了一点,想要入门应该也会稍微轻松点吧。这里我的想法是,从深度学习理论学起,了解几个常用网络的特点及使用;然后学习一下计算机视觉以及nlp的内容,大学阶段没有接触这两部分真是我的一大遗憾。
至于说其他课程,鉴于我自认为大学中不管怎么说还是学了一遍的,即使不够深入但是对于我日后的发展来说基本算是够用了,因此优先级往后放放,大概会在研究生阶段或是日后工作后当成课余兴趣看一看吧。
总体来说,我接下来一年想要学习的课程的优先级如下:
- Rust与操作系统
- CSAPP
- 基础类
- 数学类
- 程序分析
- 人工智能类
- 图形学
- 其他
俗话说“适合自己的才是最好的”,我能从这份《指南》中找到适合自己的“自救之路”,至少算是有些意义吧。真的很想把这份指南推荐给大一的新生或是其他想要接触CS的人,顺便反过来想想,如果是我大一的时候拿到这份《指南》,现在的我又会有什么不同呢?