/cs-self-learning

Find something that lights a fire for you

Primary LanguageHTMLMIT LicenseMIT

Yeats famously said “Education is not the filling of a pail but the lighting of a fire.” He was right but wrong at the same time. You do have to “fill the pail” a bit, and these notes are certainly here to help with that part of your education; after all, when you go to interview at Google, and they ask you a trick question about how to use semaphores, it might be good to actually know what a semaphore is, right? But Yeats’s larger point is obviously on the mark: the real point of education is to get you interested in something, to learn something more about the subject matter on your own and not just what you have to digest to get a good grade in some class. As one of our fathers (Remzi’s dad, Vedat Arpaci) used to say, “Learn beyond the classroom”. We created these notes to spark your interest in operating systems, to read more about the topic on your own, to talk to your professor about all the exciting research that is going on in the field, and even to get involved with that research. It is a great field(!), full of exciting and wonderful ideas that have shaped computing history in profound and important ways. And while we understand this fire won’t light for all of you, we hope it does for many, or even a few. Because once that fire is lit, well, that is when you truly become capable of doing something great. And thus the real point of the educational process: to go forth, to study many new and fascinating topics, to learn, to mature, and most importantly, to find something that lights a fire for you.

To read more about the topic on your own, to talk to your professor about all the exciting research that is going on in the field, and even to get involved with that research. It is a great field(!), full of exciting and wonderful ideas that have shaped computing history in profound and important ways.

CS 自学指南

Everyone should enjoy CS if you have a good teacher to teach you a good course.

License Issues Stars

新冠肆虐,网课当道,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 里建立了类似群聊,可以自行选择直接加入。

Star History

Star History Chart

✨ 鸣谢

特别感谢 @AlfredThiel 为项目制作了精美的 Logo。

许可

项目贡献者编写的部分依照 MIT LICENSE

其余部分(包括但不限于书中提到的课程资源、开源书籍以及视频内容)遵循原作者规定的许可。