Everyone should enjoy CS if you have a good teacher to teach you a good course.
新冠肆虐,网课当道,CS爆火,这一系列的事件都让自学计算机成为了一种潮流。
随着欧美众多名校将质量极高的计算机课程全部开源,自学CS成了一件可操作性极强的事情。毫不夸张的说,只要你有毅力和兴趣,自学的成果完全不亚于你在国内任何一所大学受到的本科CS教育(当然,这里单指计算机专业领域,大学带给你的显然不止是专业知识)。
我很庆幸在自己大一的时候就选择了自学CS这条路,它让我爱上了计算机这门学科,也无比丰富了我的视野。
但同时,自学这条路也有很多困难和阻力:课程繁多不知如何选择,资料零散甚至残缺,作业难度不知深浅,课内任务还需要花时间应付······这些主客观因素叠加到一起,使得好课虽多,却只能在收藏夹里吃灰。
在北大信科的第四个年头,我想把这一路自学走来的经验和教训,把那些让我受益终身的课程记录下来,分享给大家,形成了这本CS自学指南,以期能给所有想自学计算机的朋友一点帮助。
我的目标是让一个刚刚接触计算机的小白,可以完全凭借这些开源社区的优质资源,少走弯路,在2-3年内成长为一个有扎实的数学功底和代码能力,经历过数十个千行代码量的Project的洗礼,掌握至少C/C++/Java/JS/Python/Go/Rust等主流语言,对算法、电路、体系、网络、操统、编译、人工智能、机器学习、计算机视觉、自然语言处理、强化学习、密码学、信息论、博弈论、数值分析、统计学、分布式、数据库、图形学、Web开发、云服务、超算等等方面均有所涉猎的全能程序员。此后,无论是选择科研还是就业,我相信你都会有相当的竞争力。
你可以在线免费阅读这本书。
英文版请移步这里。
一个人的力量终究是有限的,对于书中任意章节你若有想要补充的内容,欢迎各位提出Pull Request。如果你想贡献一门新的课程,可以参考目前repo中的template文件作为模版,并在mkdocs.yml文件中添加其navigation,当然你还可以在CS学习规划里的对应模块为其添加言简意赅的导语。
同时由于个人水平有限,书中难免有笔误甚至概念错误之处,也请各位不吝赐教,在issue中提出来。
考虑到大家自学的需求、内容、方向参差不齐且众口难调,如果建立一个统一的QQ群会显得较为杂乱且难以管理。而考虑到大家建立交流群的目的大多是为了能结识志同道合的好友共同学习某一项课程,交流心得的同时起到互相监督的作用。因此如果你想自学某课程A,可以自己建立群聊后(QQ微信皆可)在issue里以help wanted
绿色label的形式提交(在编写issue界面右侧可以选择label,这样方便后来人搜索过滤)。当然如果issue里已经有前人建立了类似群聊,可以直接加入。我在issue里提交了一个简单的例子(在closed issue
中通过label过滤搜索即可找到),供大家参考。
北大内部群可以在树洞内搜索原帖#2958483
对Yasmine
的回复。