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 学习规划 里的对应模块为其添加言简意赅的导语。如果你有想推荐的书籍,请参考 好书推荐 模块上方的注释按相应格式添加内容。
对于中英混合排版的要点规范,可以参考这个仓库,我们将会对您的 Pull Request 做相应的校对,具体原因参见这个 issue。
本书的英文版也正在翻译中,如果你想参与到翻译的队伍里,可以参考这个 issue。
同时由于个人水平有限,书中难免有笔误甚至概念错误之处,也请各位不吝赐教,在 issue 中提出来。
本书支持页面评论功能,因此如果你想自学某课程,可以自己建立群聊后(QQ 微信皆可)在对应的课程页面下方发表评论,注明你的学习目标以及加入交流群的途径。此外,过去已有不少朋友在 issue 里建立了类似群聊,可以自行选择直接加入。
特别感谢 @AlfredThiel 为项目制作了精美的 Logo。
项目贡献者编写的部分依照 MIT LICENSE。
其余部分(包括但不限于书中提到的课程资源、开源书籍以及视频内容)遵循原作者规定的许可。