Merge pull request #1 from PKUFlyingPig/master

update
This commit is contained in:
tangfqj 2022-09-17 12:57:26 +08:00 committed by GitHub
commit 47aeed6949
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
58 changed files with 614 additions and 196 deletions

View file

@ -1,8 +1,12 @@
<div align="center">
<img src=./docs/images/title.png >
</div>
# CS 自学指南 # CS 自学指南
> *Everyone should enjoy CS if you have a good teacher to teach you a good course.* > *Everyone should enjoy CS if you have a good teacher to teach you a good course.*
[![License](https://img.shields.io/github/license/PKUFlyingPig/cs-self-learning)](https://github.com/PKUFlyingPig/cs-self-learning) [![License](https://img.shields.io/github/license/PKUFlyingPig/cs-self-learning)](https://github.com/PKUFlyingPig/cs-self-learning/blob/master/LICENSE)
[![Issues](https://img.shields.io/github/issues/PKUFlyingPig/cs-self-learning)](https://github.com/PKUFlyingPig/cs-self-learning/issues) [![Issues](https://img.shields.io/github/issues/PKUFlyingPig/cs-self-learning)](https://github.com/PKUFlyingPig/cs-self-learning/issues)
[![Stars](https://img.shields.io/github/stars/PKUFlyingPig/cs-self-learning)](https://github.com/PKUFlyingPig/cs-self-learning) [![Stars](https://img.shields.io/github/stars/PKUFlyingPig/cs-self-learning)](https://github.com/PKUFlyingPig/cs-self-learning)
@ -24,9 +28,11 @@
## 如何成为贡献者 ## 如何成为贡献者
一个人的力量终究是有限的,对于书中任意章节你若有想要补充的内容,欢迎各位提出 [Pull Request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork)。如果你想贡献一门新的课程,可以参考目前 repo 中的 [template](./template.md) 文件作为模版,并在 [mkdocs.yml](./mkdocs.yml) 文件中添加其navigation当然你还可以在 [CS 学习规划](./docs/CS学习规划.md) 里的对应模块为其添加言简意赅的导语。 一个人的力量终究是有限的,对于书中任意章节你若有想要补充的内容,欢迎各位提出 [Pull Request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork)。如果你想贡献一门新的课程,可以参考目前 repo 中的 [template](./template.md) 文件作为模版,并在 [mkdocs.yml](./mkdocs.yml) 文件中添加其navigation当然你还可以在 [CS 学习规划](./docs/CS学习规划.md) 里的对应模块为其添加言简意赅的导语。如果你有想推荐的书籍,请参考 [好书推荐](https://raw.githubusercontent.com/PKUFlyingPig/cs-self-learning/master/docs/%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90.md) 模块上方的注释按相应格式添加内容。
对于中英混合排版的要点规范,可以参考[这个仓库](https://github.com/lhajh/chinese-copywriting-guidelines/blob/master/README.md),我们将会对您的 Pull Request 做相应的校对,具体原因参见这个 [issue](https://github.com/PKUFlyingPig/cs-self-learning/issues/114)。 对于中英混合排版的要点规范,可以参考[这个仓库](https://github.com/sparanoid/chinese-copywriting-guidelines/blob/master/README.zh-Hans.md),我们将会对您的 Pull Request 做相应的校对,具体原因参见这个 [issue](https://github.com/PKUFlyingPig/cs-self-learning/issues/114)。
本书的英文版也正在翻译中,如果你想参与到翻译的队伍里,可以参考这个 [issue](https://github.com/PKUFlyingPig/cs-self-learning/issues/222)。
同时由于个人水平有限,书中难免有笔误甚至概念错误之处,也请各位不吝赐教,在 issue 中提出来。 同时由于个人水平有限,书中难免有笔误甚至概念错误之处,也请各位不吝赐教,在 issue 中提出来。
@ -34,9 +40,17 @@
本书支持页面评论功能因此如果你想自学某课程可以自己建立群聊后QQ 微信皆可)在对应的课程页面下方发表评论,注明你的学习目标以及加入交流群的途径。此外,过去已有不少朋友在 issue 里建立了类似群聊,可以自行选择直接加入。 本书支持页面评论功能因此如果你想自学某课程可以自己建立群聊后QQ 微信皆可)在对应的课程页面下方发表评论,注明你的学习目标以及加入交流群的途径。此外,过去已有不少朋友在 issue 里建立了类似群聊,可以自行选择直接加入。
## 鸣谢 ## Star History
[![contributors](https://opencollective.com/cs-self-learning/contributors.svg?width=890)](https://github.com/PKUFlyingPig/cs-self-learning/graphs/contributors) [![Star History Chart](https://api.star-history.com/svg?repos=PKUFlyingPig/cs-self-learning&type=Timeline)](https://star-history.com/#PKUFlyingPig/cs-self-learning&Timeline)
## ✨ 鸣谢
特别感谢 @[AlfredThiel](https://github.com/AlfredThiel) 为项目制作了精美的 Logo。
<!-- support by https://contrib.rocks -->
<a href="https://github.com/PKUFlyingPig/cs-self-learning/graphs/contributors">
<img src="https://contrib.rocks/image?repo=PKUFlyingPig/cs-self-learning"/>
</a>
## 许可 ## 许可

View file

@ -12,9 +12,9 @@
[MIT-Missing-Semester](编程入门/MIT-Missing-Semester.md) 这门课覆盖了这些工具中绝大部分,而且有相当详细的使用指导,强烈建议小白学习。 [MIT-Missing-Semester](编程入门/MIT-Missing-Semester.md) 这门课覆盖了这些工具中绝大部分,而且有相当详细的使用指导,强烈建议小白学习。
[翻墙](必学工具/翻墙.md)由于一些众所周知的原因谷歌、GitHub 等网站在大陆无法访问。然而很多时候,谷歌和 StackOverflow 可以解决你在开发过程中遇到的 95% 的问题。因此,学会翻墙几乎是一个内地 CSer 的必备技能。(考虑到法律问题,这个文档提供的翻墙方式仅对拥有北大邮箱的用户适用)。 [翻墙](必学工具/翻墙.md)由于一些众所周知的原因谷歌、GitHub 等网站在大陆无法访问。然而很多时候,谷歌和 StackOverflow 可以解决你在开发过程中遇到的 99% 的问题。因此,学会翻墙几乎是一个内地 CSer 的必备技能。(考虑到法律问题,这个文档提供的翻墙方式仅对拥有北大邮箱的用户适用)。
命令行:熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际上,它会提高极大地提高你作为工程师的灵活性以及生产力。[命令行的艺术](https://github.com/jlevy/the-art-of-command-line/blob/master/README-zh.md)是一份非常经典的教程,它源于 Quora 的一个提问,但在各路大神的贡献努力下已经成为了一个 GitHub 十万 stars 的顶流项目,被翻译成了十几种语言。教程不长,非常建议大家反复通读,在实践中内化吸收。同时,掌握 shell 脚本编程也是一项不容忽视的技术,可以参考这个[教程](https://www.shellscript.sh/)。 命令行:熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际上,它会极大地提高你作为工程师的灵活性以及生产力。[命令行的艺术](https://github.com/jlevy/the-art-of-command-line/blob/master/README-zh.md)是一份非常经典的教程,它源于 Quora 的一个提问,但在各路大神的贡献努力下已经成为了一个 GitHub 十万 stars 的顶流项目,被翻译成了十几种语言。教程不长,非常建议大家反复通读,在实践中内化吸收。同时,掌握 Shell 脚本编程也是一项不容忽视的技术,可以参考这个[教程](https://www.shellscript.sh/)。
IDE (Integrated Development Environment)集成开发环境说白了就是你写代码的地方。作为一个码农IDE 的重要性不言而喻,但由于很多 IDE 是为大型工程项目设计的,体量较大,功能也过于丰富。其实如今一些轻便的文本编辑器配合丰富的插件生态基本可以满足日常的轻量编程需求。个人常用的编辑器是 VS Code 和 Sublime前者的插件配置非常简单后者略显复杂但颜值很高。当然对于大型项目我还是会采用略重型的 IDE例如 Pycharm (Python)IDEA (Java) 等等(免责申明:所有的 IDE 都是世界上最好的 IDE IDE (Integrated Development Environment)集成开发环境说白了就是你写代码的地方。作为一个码农IDE 的重要性不言而喻,但由于很多 IDE 是为大型工程项目设计的,体量较大,功能也过于丰富。其实如今一些轻便的文本编辑器配合丰富的插件生态基本可以满足日常的轻量编程需求。个人常用的编辑器是 VS Code 和 Sublime前者的插件配置非常简单后者略显复杂但颜值很高。当然对于大型项目我还是会采用略重型的 IDE例如 Pycharm (Python)IDEA (Java) 等等(免责申明:所有的 IDE 都是世界上最好的 IDE
@ -28,12 +28,14 @@ IDE (Integrated Development Environment):集成开发环境,说白了就是
[CMake](必学工具/CMake.md):一款功能比 GNU Make 更为强大的构建工具,建议掌握 GNU Make 之后再加以学习。 [CMake](必学工具/CMake.md):一款功能比 GNU Make 更为强大的构建工具,建议掌握 GNU Make 之后再加以学习。
[LaTex](必学工具/LaTeX.md)~~逼格提升~~ 论文排版工具。 [LaTex](必学工具/LaTeX.md)<del>逼格提升</del> 论文排版工具。
[Docker](必学工具/Docker.md):一款相较于虚拟机更轻量级的软件打包与环境部署工具。 [Docker](必学工具/Docker.md):一款相较于虚拟机更轻量级的软件打包与环境部署工具。
[实用工具箱](必学工具/tools.md):除了上面提到的这些在开发中使用频率极高的工具之外,我还收集了很多实用有趣的免费工具,例如一些下载工具、设计工具、学习网站等等。 [实用工具箱](必学工具/tools.md):除了上面提到的这些在开发中使用频率极高的工具之外,我还收集了很多实用有趣的免费工具,例如一些下载工具、设计工具、学习网站等等。
[Thesis](必学工具/thesis.md):毕业论文 Word 写作教程。
## 好书推荐 ## 好书推荐
> 私以为一本好的教材应当是以人为本的,而不是炫技式的理论堆砌。告诉读者“是什么”固然重要,但更好的应当是教材作者将其在这个领域深耕几十年的经验融汇进书中,向读者娓娓道来“为什么”以及未来应该“怎么做”。 > 私以为一本好的教材应当是以人为本的,而不是炫技式的理论堆砌。告诉读者“是什么”固然重要,但更好的应当是教材作者将其在这个领域深耕几十年的经验融汇进书中,向读者娓娓道来“为什么”以及未来应该“怎么做”。
@ -46,13 +48,17 @@ IDE (Integrated Development Environment):集成开发环境,说白了就是
> >
> 实际上的开发 —— 配环境配几天还没开始写代码。 > 实际上的开发 —— 配环境配几天还没开始写代码。
推荐一个非常不错的 GitHub 项目 [DevOps-Guide](https://github.com/Tikam02/DevOps-Guide),其中涵盖了非常多的运维方面的基础知识和教程,例如 Docker, Kubernetes, Linux, CI-CD, GitHub Actions 等等。 ### PC 端环境配置
如果你是 Mac 用户,那么你很幸运,这份[指南](https://sourabhbajaj.com/mac-setup/) 将会手把手地带你搭建起整套开发环境。如果你是 Windows 用户,可以参考这个相对简略的[教程](https://github.com/orlp/dev-on-windows/wiki)。
另外大家可以参考一份灵感来自 [6.NULL MIT-Missing-Semester](编程入门/MIT-Missing-Semester.md) 的 [环境配置指南][guide],重点在于终端的美化配置。此外还包括常用软件源(如 GitHub, Anaconda, PyPI 等)的加速与替换以及一些 IDE 的配置与激活教程。 另外大家可以参考一份灵感来自 [6.NULL MIT-Missing-Semester](编程入门/MIT-Missing-Semester.md) 的 [环境配置指南][guide],重点在于终端的美化配置。此外还包括常用软件源(如 GitHub, Anaconda, PyPI 等)的加速与替换以及一些 IDE 的配置与激活教程。
[guide]: https://taylover2016.github.io/%E6%96%B0%E6%9C%BA%E5%99%A8%E4%B8%8A%E6%89%8B%E6%8C%87%E5%8D%97%EF%BC%88%E6%96%B0%E6%89%8B%E5%90%91%EF%BC%89/index.html [guide]: https://taylover2016.github.io/%E6%96%B0%E6%9C%BA%E5%99%A8%E4%B8%8A%E6%89%8B%E6%8C%87%E5%8D%97%EF%BC%88%E6%96%B0%E6%89%8B%E5%90%91%EF%BC%89/index.html
More contents under construction. ### 服务器端环境配置
推荐一个非常不错的 GitHub 项目 [DevOps-Guide](https://github.com/Tikam02/DevOps-Guide),其中涵盖了非常多的运维方面的基础知识和教程,例如 Docker, Kubernetes, Linux, CI-CD, GitHub Actions 等等。
## 课程地图 ## 课程地图
@ -60,7 +66,7 @@ More contents under construction.
以下课程类别中除了含有 *基础**入门* 字眼的以外,并无明确的先后次序,大家只要满足某个课程的先修要求,完全可以根据自己的需要和喜好选择想要学习的课程。 以下课程类别中除了含有 *基础**入门* 字眼的以外,并无明确的先后次序,大家只要满足某个课程的先修要求,完全可以根据自己的需要和喜好选择想要学习的课程。
另外由于贡献者的不断增加,这份课程地图已经从最初我的学习经历,发展成为很多 CS 自学者的资源合集,其中难免有内容交叉甚至重复的。之所以都列出来,还是希望集百家之长,给大家尽可能多的选择与参考。 另外由于贡献者的不断增加,这份课程地图已经从最初我的学习经历,发展成为很多 CS 自学者的资源合集,其中难免有内容交叉甚至重复的。之所以都列出来,还是希望集百家之长,给大家尽可能多的选择与参考。
### 数学基础 ### 数学基础
@ -78,7 +84,7 @@ More contents under construction.
集合论、图论、概率论等等是算法推导与证明的重要工具,也是后续高阶数学课程的基础。但我觉得这类课程的讲授很容易落入理论化与形式化的窠臼,让课堂成为定理结论的堆砌,而无法使学生深刻把握理论的本质,进而造成学了就背,考了就忘的怪圈。如果能在理论教学中穿插算法运用实例,学生在拓展算法知识的同时也能窥见理论的力量和魅力。 集合论、图论、概率论等等是算法推导与证明的重要工具,也是后续高阶数学课程的基础。但我觉得这类课程的讲授很容易落入理论化与形式化的窠臼,让课堂成为定理结论的堆砌,而无法使学生深刻把握理论的本质,进而造成学了就背,考了就忘的怪圈。如果能在理论教学中穿插算法运用实例,学生在拓展算法知识的同时也能窥见理论的力量和魅力。
[UCB CS70 : discrete Math and probability theory](./数学进阶/CS70.md) 和 [UCB CS126 : Probability theory](./数学进阶/CS126.md) 是 UC Berkeley 的概率论课程前者覆盖了离散数学和概率论基础后者则涉及随机过程以及深入的理论内容。两者都非常注重理论和实践的结合有丰富的算法实际运用实例后者还有大量的Python编程作业来让学生运用概率论的知识解决实际问题。 [UCB CS70 : discrete Math and probability theory](./数学进阶/CS70.md) 和 [UCB CS126 : Probability theory](./数学进阶/CS126.md) 是 UC Berkeley 的概率论课程,前者覆盖了离散数学和概率论基础,后者则涉及随机过程以及深入的理论内容。两者都非常注重理论和实践的结合,有丰富的算法实际运用实例,后者还有大量的 Python 编程作业来让学生运用概率论的知识解决实际问题。
#### 数值分析 #### 数值分析
@ -88,7 +94,7 @@ More contents under construction.
上完上面的体验课之后,如果意犹未尽的话,不妨试试 MIT 的 [18.330 : Introduction to numerical analysis](./数学进阶/numerical.md),这门课的编程作业同样会用 Julia 编程语言不过难度和深度上都上了一个台阶。内容涉及了浮点编码、Root finding、线性系统、微分方程等等方面整门课的主旨就是让你利用离散化的计算机表示去估计和逼近一个数学上连续的概念。这门课的教授还专门撰写了一本配套的开源教材 [Fundamentals of Numerical Computation](https://fncbook.github.io/fnc/frontmatter.html),里面附有丰富的 Julia 代码实例和严谨的公式推导。 上完上面的体验课之后,如果意犹未尽的话,不妨试试 MIT 的 [18.330 : Introduction to numerical analysis](./数学进阶/numerical.md),这门课的编程作业同样会用 Julia 编程语言不过难度和深度上都上了一个台阶。内容涉及了浮点编码、Root finding、线性系统、微分方程等等方面整门课的主旨就是让你利用离散化的计算机表示去估计和逼近一个数学上连续的概念。这门课的教授还专门撰写了一本配套的开源教材 [Fundamentals of Numerical Computation](https://fncbook.github.io/fnc/frontmatter.html),里面附有丰富的 Julia 代码实例和严谨的公式推导。
如果你还意犹未尽的话,还有 MIT 的研究生课程 [18.335: Introduction to numerical method][18.335] 供你参考。 如果你还意犹未尽的话,还有 MIT 的数值分析研究生课程 [18.335: Introduction to numerical method][18.335] 供你参考。
[18.335]: https://ocw.mit.edu/courses/mathematics/18-335j-introduction-to-numerical-methods-spring-2019/index.htm [18.335]: https://ocw.mit.edu/courses/mathematics/18-335j-introduction-to-numerical-methods-spring-2019/index.htm
@ -139,11 +145,12 @@ More contents under construction.
#### Python #### Python
- [Harvard CS50: This is CS50x](编程入门/CS50.md) 最好的计算机基础入门课,你绝对会爱上的。 - [Harvard CS50: This is CS50x](编程入门/CS50.md)
- [UCB CS61A: Structure and Interpretation of Computer Programs](编程入门/CS61A.md) - [UCB CS61A: Structure and Interpretation of Computer Programs](编程入门/CS61A.md)
#### C++ #### C++
- [Stanford CS106B/X: Programming Abstractions](编程入门/CS106B_CS106X.md)
- [Stanford CS106L: Standard C++ Programming](编程入门/CS106L.md) - [Stanford CS106L: Standard C++ Programming](编程入门/CS106L.md)
#### Rust #### Rust
@ -174,7 +181,6 @@ More contents under construction.
#### 数据结构与算法 #### 数据结构与算法
- [Stanford CS106B/X: Programming Abstractions](数据结构与算法/CS106B_CS106X.md)
- [UCB CS61B: Data Structures and Algorithms](数据结构与算法/CS61B.md) - [UCB CS61B: Data Structures and Algorithms](数据结构与算法/CS61B.md)
- [Coursera: Algorithms I & II](数据结构与算法/Algo.md) - [Coursera: Algorithms I & II](数据结构与算法/Algo.md)
@ -212,15 +218,17 @@ More contents under construction.
### 操作系统 ### 操作系统
操作系统作为所有应用软件和底层硬件交互的掌舵者,了解它的内部原理和设计原则对于一个不满足于调包侠的程序员来说是很有帮助的。同时,国外操统课程的质量也是让上了多年网课的我也感到瞠目结舌 操作系统作为各类纷繁复杂的底层硬件虚拟化出一套规范优雅的抽象,给所有应用软件提供丰富的功能支持。了解操作系统的设计原则和内部原理对于一个不满足于当调包侠的程序员来说是大有裨益的。出于对操作系统的热爱,我上过国内外很多操作系统课程,它们各有侧重和优劣,大家可以根据兴趣各取所需
[MIT 6.S081: Operating System Engineering](操作系统/MIT6.S081.md)MIT 著名 PDOS 实验室出品11 个 Project 会让你在一个 2 万多行的教学用迷你操作系统上增加各类功能模块。这门课也让我深刻认识到,做系统不是靠 PPT 念出来的,是得几万行代码一点点累起来的。 [MIT 6.S081: Operating System Engineering](操作系统/MIT6.S081.md)MIT 著名 PDOS 实验室出品11 个 Project 让你在一个实现非常优雅的类Unix操作系统xv6上增加各类功能模块。这门课也让我深刻认识到,做系统不是靠 PPT 念出来的,是得几万行代码一点点累起来的。
[UCB CS162: Operating System](操作系统/CS162.md),伯克利的操作系统课,采用和 Stanford 同样的 Project —— 一个教学用操作系统 Pintos。我作为下学期北京大学操作系统实验班的助教会尝试引入这个 Project欢迎大家选课尝试同时课程资源也会全部开源目前[课程网站](https://pkuos.systems)正在建设当中。 [UCB CS162: Operating System](操作系统/CS162.md),伯克利的操作系统课,采用和 Stanford 同样的 Project —— 一个教学用操作系统 Pintos。我作为北京大学2022年春季学期操作系统实验班的助教引入并改善了这个 Project课程资源也会全部开源具体参见[课程网站](https://pkuos.systems)。
[NJU: Operating System Design and Implementation](操作系统/NJUOS.md),南京大学的蒋炎岩老师开设的操作系统课程。蒋老师以其独到的系统视角结合丰富的代码示例将众多操作系统的概念讲得深入浅出,此外这门课的全部课程内容都是中文的,非常方便大家学习。
### 并行与分布式系统 ### 并行与分布式系统
想必这两年各类 CS 讲座里最常听到的话就是“摩尔定律正在走向终结”,此话不假。同时如今深度学习的兴起导致对计算机算力与存储的要求都达到了前所未有的高度,因此并行和分布式系统已成为一项热门技术话题。 想必这两年各类 CS 讲座里最常听到的话就是“摩尔定律正在走向终结”,此话不假,当单核能力达到上限时,多核乃至众核架构如日中天。硬件的变化带来的是上层编程逻辑的适应与改变,要想充分利用硬件性能,编写并行程序几乎成了程序员的必备技能。与此同时,深度学习的兴起对计算机算力与存储的要求都达到了前所未有的高度,大规模集群的部署和优化也成为热门技术话题。
#### 并行计算 #### 并行计算
@ -240,25 +248,25 @@ More contents under construction.
#### 实践 #### 实践
掌握这些理论知识之后,还需要在实践中培养和锻炼这些“安全素养”。[CTF 夺旗赛](https://ctf-wiki.org/)是一项比较热门的系统安全比赛,赛题中会融会贯通地考察你对计算机各个领域知识的理解和运用。北大今年也成功举办了[第 0 届和第 1 届](https://geekgame.pku.edu.cn/)鼓励大家后期踊跃参与,在实践中提高自己。下面列举一些我平时学习(摸鱼)用到的资源: 掌握这些理论知识之后,还需要在实践中培养和锻炼这些“黑客素养”。[CTF 夺旗赛](https://ctf-wiki.org/)是一项比较热门的系统安全比赛,赛题中会融会贯通地考察你对计算机各个领域知识的理解和运用。北大今年也成功举办了[第 0 届和第 1 届](https://geekgame.pku.edu.cn/),鼓励大家后期踊跃参与,在实践中提高自己。下面列举一些我平时学习(摸鱼)用到的资源:
- [CTF-wiki](https://ctf-wiki.org/) - [CTF-wiki](https://ctf-wiki.org/)
- [CTF-101](https://ctf101.org/) - [CTF-101](https://ctf101.org/)
- [Hacker-101](https://ctf.hacker101.com/auth?error=0) - [Hacker-101](https://ctf.hacker101.com/)
### 计算机网络 ### 计算机网络
计网著名教材《自顶向下方法》的配套学习资源 [Computer Networking: A Top-Down Approach](计算机网络/topdown.md)。 计网著名教材《自顶向下方法》的配套学习资源 [Computer Networking: A Top-Down Approach](计算机网络/topdown.md)。
没有什么能比自己写个 TCP/IP 协议栈更能加深自己对计算机网络的理解了,所以不妨试试 [Stanford CS144: Computer Network](计算机网络/CS144.md)8 个 Project 带你实现整个协议栈。 没有什么能比自己写个 TCP/IP 协议栈更能加深对计算机网络的理解了,所以不妨试试 [Stanford CS144: Computer Network](计算机网络/CS144.md)8 个 Project 带你实现整个协议栈。
### 数据库系统 ### 数据库系统
没有什么能比自己写个关系型数据库更能加深自己对数据库系统的理解了。 没有什么能比自己写个关系型数据库更能加深对数据库系统的理解了。
#### C++版 #### C++版
[CMU 15-445: Introduction to Database System](https://15445.courses.cs.cmu.edu/fall2020/) [CMU 15-445: Introduction to Database System](数据库系统/15445.md)
#### Java版 #### Java版
@ -266,13 +274,16 @@ More contents under construction.
### 编译原理 ### 编译原理
没有什么能比自己写个编译器更能加深自己对编译器的理解了。 没有什么能比自己写个编译器更能加深对编译器的理解了。
[Stanford CS143: Compilers](编译原理/CS143.md) [Stanford CS143: Compilers](编译原理/CS143.md)
### 计算机图形学 ### 计算机图形学
[Stanford CS148](计算机图形学/CS148.md)
[Games101](计算机图形学/GAMES101.md) [Games101](计算机图形学/GAMES101.md)
[Games103](计算机图形学/GAMES103.md)
[Games202](计算机图形学/GAMES202.md)
### Web开发 ### Web开发

View file

@ -0,0 +1,20 @@
# University of Helsinki: Full Stack open 2022
## 课程简介
- 所属大学University of Helsinki
- 先修要求:具备良好的编程技能、基本的网络编程和数据库知识,并且了解使用 Git 这个版本控制系统的基础知识。
- 编程语言JavaScript/HTML/CSS/NoSQL/SQL
- 课程难度:🌟🌟
- 预计学时:因人而异
本课程是介绍如何使用 JavaScript 开发现代Web应用程序。 课程的重点是使用 ReactJS 构建单页面应用程序SPA并使用由 Node.js 构建 REST API。该课程还包含介绍 GraphQL 的部分,这是 REST API 的现代替代方案。
课程还包括测试、配置和环境管理,以及使用 MongoDB 来存储应用的数据。
## 课程资源
- 课程网站:<https://fullstackopen.com/zh/>
- 课程作业:参见课程网站
- 课程 Discord 群组:<https://study.cs.helsinki.fi/discord/join/fullstack/>
- 课程 Telegram 群组:<https://t.me/fullstackcourse/>

Binary file not shown.

After

Width:  |  Height:  |  Size: 963 B

BIN
docs/images/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

BIN
docs/images/title.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

86
docs/index.en.md Normal file
View file

@ -0,0 +1,86 @@
<figure markdown>
![Image title](./images/title.png){ width="600" }
</figure>
# Foreword
**The English version is still under development, please check [this issue](https://github.com/PKUFlyingPig/cs-self-learning/issues/222) if you want to contribute.**
This is a self-learning guide to computer science, and a memento of my three years of self-learning at university.
It is also a gift to the young students at Peking University. It would be a great encouragement and comfort to me if this book could be of even the slightest help to you in your college life.
The book is currently organized to include the following sections (if you have other good suggestions, or would like to join the ranks of contributors, please feel free to email [zhongyinmin@pku.edu.cn](mailto:zhongyinmin@pku.edu.cn) or ask questions in the issue).
- Productivity Toolkit: IDE, VPN, StackOverflow, Git, Github, Vim, Latex, GNU Make and so on.
- Environment configuration: PC/Server development environment setup, DevOps tutorials and so on.
- Book recommendations: Those who have read the CSAPP must have realized the importance of good books. I will list links to books and resources in different areas of Computer Science that I find rewarding to read.
- **List of high quality CS courses**: I will summarize all the high quality foreign CS courses I have taken into different categories and give relevant self-learning advice. Most of them will have a separate repository containing relevant resources as well as my homework/project implementations.
## The place where dreams start —— CS61A
In my freshman year, I was a novice who knew nothing about computers. I installed a giant IDE Visual Studio and fight with OJ every day. With my high school maths background, I did pretty well in maths courses, but I felt struggled to learn courses in my major. When it came to programming, all I could do was open up that clunky IDE, create a new project that I didn't know exactly what it was for, and then `cin`, `cout`, `for` loops, and then CE, RE, WA loops. I was in a state where I was desperately trying to learn well but I didn't know how to learn. I listened carefully in class but I couldn't solve the homework problems. I spent almost all my spare time doing the homework after class, but the results were disappointing. I still retain the source code of the project for Introduction to Computing course —— a single 1200-line C++ file with no header files, no class abstraction, no unit tests, no makefile, no version control. The only good thing is that it can run, the disadvantage is the complement of "can run". For a while I wondered if I wasn't cut out for computer science, as all my childhood imaginings of geekiness had been completely ruined by my first semester's experience.
It all turned around during the winter break of my freshman year, when I had a hankering to learn Python. I overheard someone recommend CS61A, a freshman introductory course at UC Berkeley on Python. I'll never forget that day, when I opened the [CS61A](https://cs61a.org/) course website. It was like Columbus discovering a new continent, and I opened the door to a new world.
I finished the course in 3 weeks and for the first time I felt that CS could be so fulfilling and interesting, and I was shocked that there existed such a great course in the world.
To avoid any suspicion of pandering to foreign courses, I will tell you about my experience of studying CS61A from the perspective of a pure student.
- ***Course website developed by course staffs***: The course website integrates all the course resources into one, with a well organised course schedule, links to all slides, recorded videos and homework, detailed and clear syllabus, list of exams and solutions from previous years. Aesthetics aside, this website is so convenient for students.
- ***Textbook written by course instructor***: The course instructor has adapted the classic MIT textbook *Structure and Interpretation of Computer Programs* (SICP) into Python (the original textbook was based on Scheme). This is a great way to ensure that the classroom content is consistent with the textbook, while adding more details. The entire book is open source and can be read directly online.
- ***Various, comprehensive and interesting homework***: There are 14 labs to reinforce the knowledge gained in class, 10 homework assignments to practice, and 4 projects each with thousands of lines of code, all with well-organized skeleton code and babysitting instructions. Unlike the old-school OJ and Word document assignments, each lab/homework/project has a detailed handout document, fully automated grading scripts, and CS61A staffs have even developed an [automated assignment submission and grading system](https://okpy.org/). Of course, one might say "How much can you learn from a project where most of code are written by your teaching assistants?" . For someone who is new to CS and even stumbling over installing Python, this well-developed skeleton code allows students to focus on reinforcing the core knowledge they've learned in class, but also gives them a sense of achievement that they already can make a little game despite of learning Python only for a month. It also gives them the opportunity to read and learn from other people's high quality code so that they can reuse it later. I think in the freshman year, this kind of skeleton code is absolutely beneficial. The only bad thing perhaps is for the instructors and teaching assistants, as developing such assignments can conceivably require a considerable time commitment.
- ***Weekly discussion sessions***: The teaching assistants will explain the difficult knowledge in class and add some supplementary materials which may not be covered in class. Also, there will be exercises from exams of previous years. All the exercises are written in LaTeX with solutions.
In CS61A, You don't need any prerequesites about CS at all. You just need to pay attention, spend time and work hard. The feeling that you do not know what to do, that you are not getting anything in return for all the time you put in, is gone. It suited me so well that I fell in love with self-learning.
Imagine that if someone could chew up the hard knowledge and present it to you in a vivid and straightforward way, with so many fancy and varied projects to reinforce your theoretical knowledge, you'd think they were really trying their best to make you fully grasp the course, and it was even an insult to the course builders not to learn it well.
If you think I'm exaggerating, start with [CS61A](https://cs61a.org/), because it's where my dreams began.
## Why write this book?
In the 2020 Fall semester, I worked as a teaching assistant for the class Introduction to Computer Systems at Peking University. At that time, I had been studying totally on my own for over a year. I enjoyed this style of learning immensely. To share this joy, I have made a [CS Self-learning Materials List](https://github.com/PKUFlyingPig/Self-learning-Computer-Science) for students in my seminar. It was purely on a whim at the time, as I wouldn't dare to encourage my students to skip classes and study on their own.
But after another year of maintenance, the list has become quite comprehensive, covering most of the courses in Computer Science, Artificial Intelligence and Soft Engineering, and I have built separate repositories for each course, summarising the self-learning materials that I used.
In my last college year, when I opened up my curriculum book, I realized that it was already a subset of my self-learning list. By then, it was only two and a half years after I had started my self-learning journey. Then, a bold idea came to my mind: perhaps I could create a self-learning book, write down the difficulty I encountered and the interest I found during these years of self-learning, hoping to make it easy for students who may also enjoy self-learning to start their wonderful self-learning journey.
If you can build up the whole CS foundation in less than three years, have relatively solid mathematical skills and coding ability, experience dozens of projects with thousands of lines of code, master at least C/C++/Java/JS/Python/Go/Rust and other mainstream programming languages, have a good understanding of algorithms, circuits, architectures, networks, operating systems, compilers, artificial intelligence, machine learning, computer vision, natural language processing, reinforcement learning, cryptography, information theory, game theory, numerical analysis, statistics, distributed systems, parallel computing, database systems, computer graphics, web development, cloud computing, supercomputing etc. I think you will be confident enough to choose the area you are interested in, and you will be quite competitive in both industry and academia.
I firmly believe that if you have read to this line, you do not lack the ability and committment to learn CS well, you just need a good teacher to teach you a good course. And I will try my best to pick such courses for you, based on my three years of experience.
## Pros
For me, the biggest advantage of self-learning is that I can adjust the pace of learning entirely according to my own progress. For difficult parts, I can watch the videos over and over again, Google it online and ask questions on StackOverflow until I have it all figured out. For those that I mastered relatively quickly, I could skip them at twice or even three times the speed.
Another great thing about self-learning is that you can learn from different perspectives. I have taken core courses such as architectures, networking, operating systems, and compilers from different universities. Different instructors may have different views on the same knowledge, which will broaden your horizon.
A third advantage of self-learning is that you do not need to go to the class, listening to the boring lectures.
## Cons
Of course, as a big fan of self-learning, I have to admit that it has its disadvantages.
The first is the difficulty of communication. I'm actually a very keen questioner, and I like to follow up all the points I don't understand. But when you're facing a screen and you hear a teacher talking about something you don't understand, you can't go to the other end of the network and ask him or her for clarification. I try to mitigate this by thinking independently and making good use of Google, but it would be great to have a few friends to study together. You can refer to `README` for more information on participating a community group.
The second thing is that these courses are basically in English. From the videos to the slides to the assignments, all in English. You may struggle at first, but I think it's a challenge that if you overcome, it will be extremely rewarding. Because at the moment, as reluctant as I am, I have to admit that in computer science, a lot of high quality documentation, forums and websites are all in English.
The third, and I think the most difficult one, is self-discipline. Because have no DDL can sometimes be a really scary thing, especially when you get deeper, many foreign courses are quite difficult. You have to be self-driven enough to force yourself to settle down, read dozens of pages of Project Handout, understand thousands of lines of skeleton code and endure hours of debugging time. With no credits, no grades, no teachers, no classmates, just one belief - that you are getting better.
## Who is this book for?
As I said in the beginning, anyone who is interested in learning computer science on their own can refer to this book. If you already have some basic skills and are just interested in a particular area, you can selectively pick and choose what you are interested in to study. Of course, if you are a novice who knows nothing about computers like I did back then, and just begin your college journey, I hope this book will be your cheat sheet to get the knowledge and skills you need in the least amount of time. In a way, this book is more like a course search engine ordered according to my experience, helping you to learn high quality CS courses from the world's top universities without leaving home.
Of course, as an undergraduate student who has not yet graduated, I feel that I am not in a position nor have the right to preach one way of learning. I just hope that this material will help those who are also self-motivated and persistent to gain a richer, more varied and satisfying college life.
## Special thanks
I would like to express my sincere gratitude to all the professors who have made their courses public for free. These courses are the culmination of decades of their teaching careers, and they have chosen to selflessly make such a high quality CS education available to all. Without them, my university life would not have been as fulfilling and enjoyable. Many of the professors would even reply with hundreds of words in length after I had sent them a thank you email, which really touched me beyond words. They also inspired me all the time that if decide to do something, do it with all heart and soul.
## Want to join as a contributor?
There is a limit to how much one person can do, and this book was written by me under a heavy research schedule, so there are inevitably imperfections. In addition, as I work in the area of systems, many of the courses focus on systems, and there is relatively little content related to advanced mathematics, computing theory, and advanced algorithms. If any of you would like to share your self-learning experience and resources in other areas, you can directly initiate a Pull Request in the project, or feel free to contact me by email ([zhongyinmin@pku.edu.cn](mailto:zhongyinmin@pku.edu.cn)).

View file

@ -1,17 +1,23 @@
<figure markdown>
![Image title](./images/title.png){ width="600" }
</figure>
# 前言 # 前言
**更新:本书最新网址 [csdiy.wiki](https://csdiy.wiki),欢迎大家访问 ** **最近更新:英文版正在[建设中](https://github.com/PKUFlyingPig/cs-self-learning/issues/222),增加陈天奇[机器学习编译](机器学习系统/MLC.md),增加 CMU [机器学习系统](机器学习系统/CMU10-414.md) **
<!-- **最近更新:增加[Caltech CS 122: Database System Implementation](./数据库系统/CS122.md) ,重新整理[好书推荐](./%E5%A5%BD%E4%B9%A6%E6%8E%A8%E8%8D%90.md)模块 ~** -->
<!-- **最近更新:增加南京大学[操作系统课程](操作系统/NJUOS.md),增加毕业论文[写作教程](必学工具/thesis.md) ** -->
这是一本计算机的自学指南,也是对自己大学三年自学生涯的一个纪念。 这是一本计算机的自学指南,也是对自己大学三年自学生涯的一个纪念。
这同时也是一份献给北大信科学弟学妹们的礼物。如果这本书能对你们的信科生涯有哪怕一丝一毫的帮助,都是对我极大的鼓励和慰藉。 这同时也是一份献给北大信科学弟学妹们的礼物。如果这本书能对你们的信科生涯有哪怕一丝一毫的帮助,都是对我极大的鼓励和慰藉。
本书目前规划了以下部分(如果你有其他好的建议,或者想加入贡献者的行列,欢迎邮件 [zhongyinmin@pku.edu.cn](mailto:zhongyinmin@pku.edu.cn) 或者在 issue 里提问) 本书目前包括了以下部分(如果你有其他好的建议,或者想加入贡献者的行列,欢迎邮件 [zhongyinmin@pku.edu.cn](mailto:zhongyinmin@pku.edu.cn) 或者在 issue 里提问)
- 必学工具IDE, 翻墙, StackOverflow, Git, GitHub, Vim, LaTeX, GNU Make, 实用工具 ... - 必学工具IDE, 翻墙, StackOverflow, Git, GitHub, Vim, LaTeX, GNU Make, 实用工具 ...
- **国外高质量 CS 课程汇总**:我将把我上过的所有高质量的国外 CS 课程分门别类进行汇总,并给出相关的自学建议,大部分课程都会有一个独立的仓库维护相关的资源以及我的作业实现。 - 环境配置PC端以及服务器端开发环境配置、各类运维相关教材及资料 ...
- 环境配置Linux 基础,`bash`环境变量Anaconda ...
- 经典书籍推荐:看过 CSAPP 这本书的同学一定感叹好书的重要,我将列举推荐自己看过的计算机领域的必看好书与资源链接。 - 经典书籍推荐:看过 CSAPP 这本书的同学一定感叹好书的重要,我将列举推荐自己看过的计算机领域的必看好书与资源链接。
- **国外高质量 CS 课程汇总**:我将把我上过的所有高质量的国外 CS 课程分门别类进行汇总,并给出相关的自学建议,大部分课程都会有一个独立的仓库维护相关的资源以及我的作业实现。
## 梦开始的地方 —— CS61A ## 梦开始的地方 —— CS61A

View file

@ -19,4 +19,4 @@
## 资源汇总 ## 资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/cs50_ai - GitHub](https://github.com/PKUFlyingPig/cs50_ai) 中。 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/cs50_ai - GitHub](https://github.com/PKUFlyingPig/cs50_ai) 中。

View file

@ -10,7 +10,15 @@
智能计算系统是智能的核心物质载体,每年全球要制造数以十亿计的智能计算系统(包括智能手机、智能服务器、智能可穿戴设备等),需要大量的智能计算系统的设计者和开发者。智能计算系统人才的培养直接关系到我国智能产业的核心竞争力。因此,对智能计算系统的认识和理解是智能时代计算机类专业学生培养方案中不可或缺的重要组成部分,是计算机类专业学生的核心竞争力。 智能计算系统是智能的核心物质载体,每年全球要制造数以十亿计的智能计算系统(包括智能手机、智能服务器、智能可穿戴设备等),需要大量的智能计算系统的设计者和开发者。智能计算系统人才的培养直接关系到我国智能产业的核心竞争力。因此,对智能计算系统的认识和理解是智能时代计算机类专业学生培养方案中不可或缺的重要组成部分,是计算机类专业学生的核心竞争力。
国内的陈云霁老师开的课在其他若干个大学也都有开对应的课程比如我们这里。这门课用一个个实验带大家以一个完整的视野理解人工智能的技术栈。从上层的深度学习框架到用底层语言编写算子再到硬件中MLU的设计让大家形成系统思维体会自上而下融会贯通的乐趣。 国内的陈云霁老师开的课,在其他若干个大学也都有开对应的课程。这门课用一个个实验带大家以一个完整的视野理解人工智能的技术栈。从上层的深度学习框架,到用底层语言编写算子,再到硬件中 MLU 的设计,让大家形成系统思维,体会自上而下,融会贯通的乐趣。
我做了其中的 2,3,4,5 这几个实验,其中综合实验和硬件实验没有做,如果有做了的同学欢迎大家补上你的链接。
个人体会是第三章实现算子的实验让我对深度学习框架的了解加深了很多。第五章的实验BCL语言编写算子如果了解 CUDA 的话会感觉很熟悉。
推荐去买一本教材看一看,会让我们理解整体的技术栈。熟悉深度学习的同学可以直接从第五章开始看,看看深度学习框架底层到底是什么样的。
我因为这门课的启发,参考一本书(书名在仓库中)写了一个简易的[深度学习框架](https://github.com/ysj1173886760/PyToy)。在这个框架里可以看到智能计算系统实验中的一些影子。同时受到 build-your-own-x 系列的启发,我也打算写一下教程,教大家写一个自己的深度学习框架。代码用 Python 写的,代码量较少,适合有一定基础的同学阅读。之后打算添加更多的算子,有望实现一个较为全面的框架,并希望移植到 C++ 中,以兼顾性能与开发效率。
## 课程资源 ## 课程资源
@ -23,12 +31,4 @@
## 资源汇总 ## 资源汇总
我在学习这门课中用到的所有资源和作业实现都汇总在 [ysj1173886760/Learning: ai-system - GitHub](https://github.com/ysj1173886760/Learning/tree/master/ai-system) 中。 @ysj1173886760 在学习这门课中用到的所有资源和作业实现都汇总在 [ysj1173886760/Learning: ai-system - GitHub](https://github.com/ysj1173886760/Learning/tree/master/ai-system) 中。
我做了其中的 2,3,4,5 这几个实验,其中综合实验和硬件实验没有做,如果有做了的同学欢迎大家补上你的链接
个人体会是第三章实现算子的实验让我对深度学习框架的了解加深了很多。第五章的实验BCL语言编写算子如果了解 CUDA 的话会感觉很熟悉。
推荐去买一本教材看一看,会让我们理解整体的技术栈。熟悉深度学习的同学可以直接从第五章开始看,看看深度学习框架底层到底是什么样的。
我因为这门课的启发,参考一本书(书名在仓库中)写了一个简易的[深度学习框架](https://github.com/ysj1173886760/PyToy)。在这个框架里可以看到智能计算系统实验中的一些影子。同时受到 build-your-own-x 系列的启发,我也打算写一下教程,教大家写一个自己的深度学习框架。代码用 Python 写的,代码量较少,适合有一定基础的同学阅读。之后打算添加更多的算子,有望实现一个较为全面的框架,并希望移植到 C++ 中,以兼顾性能与开发效率。

View file

@ -26,4 +26,4 @@
## 资源汇总 ## 资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS61C-summer20 - GitHub](https://github.com/PKUFlyingPig/CS61C-summer20) 中。 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS61C-summer20 - GitHub](https://github.com/PKUFlyingPig/CS61C-summer20) 中。

View file

@ -25,5 +25,4 @@ CMU 大名鼎鼎的镇系神课以其内容庞杂Project 巨难而闻名
- 课程教材Computer Systems: A Programmer's Perspective, 3/E - 课程教材Computer Systems: A Programmer's Perspective, 3/E
- 课程作业11 个 Project[代码框架全部开源](http://csapp.cs.cmu.edu/3e/labs.html) - 课程作业11 个 Project[代码框架全部开源](http://csapp.cs.cmu.edu/3e/labs.html)
补充:
英语有困难的同学可以参考B站UP主[九曲阑干](https://space.bilibili.com/354767108/)对 CSAPP 的[中文讲解](https://www.bilibili.com/video/BV1cD4y1D7uR)据说CMU的中国留学生也在CMU的课堂上看这个视频呢。另外如果大家在看完 CSAPP 后对书中的第七章链接有一定的疑问推荐阅读《程序员的自我修养》这本书书的副标题是链接装载与库。这本书能够帮助我们完善对程序链接的理解相信你在看完这本书以后可以对程序的链接ELF 文件,动态库都将有一个更加深入的理解。十分推荐在读完 CSAPP对计算机系统有一定的了解以后作为补充资料来阅读。 英语有困难的同学可以参考B站UP主[九曲阑干](https://space.bilibili.com/354767108/)对 CSAPP 的[中文讲解](https://www.bilibili.com/video/BV1cD4y1D7uR)据说CMU的中国留学生也在CMU的课堂上看这个视频呢。另外如果大家在看完 CSAPP 后对书中的第七章链接有一定的疑问推荐阅读《程序员的自我修养》这本书书的副标题是链接装载与库。这本书能够帮助我们完善对程序链接的理解相信你在看完这本书以后可以对程序的链接ELF 文件,动态库都将有一个更加深入的理解。十分推荐在读完 CSAPP对计算机系统有一定的了解以后作为补充资料来阅读。

View file

@ -10,13 +10,12 @@
体系结构领域的大牛 Onur Mutlu 来教你数字电路和计算机体系结构。课程完全从计算机设计的角度出发,从晶体管、逻辑门开始,一直讲解到微架构、缓存和虚拟内存,还会介绍 体系结构领域的大牛 Onur Mutlu 来教你数字电路和计算机体系结构。课程完全从计算机设计的角度出发,从晶体管、逻辑门开始,一直讲解到微架构、缓存和虚拟内存,还会介绍
很多体系结构领域最新的研究进展。课程共有 9 个 lab使用 Basys 3 FPGA 开发板(可自行购买)和 Xilinx 公司的 [Vivado 软件](https://china.xilinx.com/products/design-tools/vivado.html)(可在官网免费下载使用)进行电路设计,从组合电路 很多体系结构领域最新的研究进展。课程共有 9 个 lab使用 Basys 3 FPGA 开发板(可自行购买)和 Xilinx 公司的 [Vivado 软件](https://china.xilinx.com/products/design-tools/vivado.html)(可在官网免费下载使用)进行电路设计,从组合电路
和时序电路开始,一直到最后部署一个完整的 CPU。课程资料除了 lab 答案和当期考试答案之外全部开源学完之后你可以掌握计算机相关的数字电路Verilog 硬件描述语言MIPS 与 C 和时序电路开始,一直到最后部署一个完整的 CPU。课程资料除了 lab 答案和当期考试答案之外全部开源学完之后你可以掌握计算机相关的数字电路Verilog 硬件描述语言MIPS 与 C 之间的转换关系MIPS 单周期多周期流水线 CPU 的设计和性能分析,缓存,虚拟内存等重要概念。
之间的转换关系MIPS 单周期多周期流水线 CPU 的设计和性能分析,缓存,虚拟内存等重要概念。
## 课程资源 ## 课程资源
- 课程网站:<https://safari.ethz.ch/digitaltechnik/spring2020/> - 课程网站:<https://safari.ethz.ch/digitaltechnik/spring2020/>
- 课程视频:<https://www.youtube.com/playlist?list=PL5Q2soXY2Zi_FRrloMa2fUYWPGiZUBQo2> - 课程视频:<https://www.youtube.com/playlist?list=PL5Q2soXY2Zi_FRrloMa2fUYWPGiZUBQo2>
- 课程教材1Patt and Patel, Introduction to Computing Systems - 课程教材1Patt and Patel, Introduction to Computing Systems
- 课程教材2Harris and Harris, Digital Design and Computer Architecture (MIPS Edition) - 课程教材2Harris and Harris, Digital Design and Computer Architecture (MIPS Edition)
- 课程实验9 个实验从零开始设计 MIPS CPU详见课程网站 - 课程实验9 个实验从零开始设计 MIPS CPU详见课程网站

View file

@ -25,4 +25,4 @@
## 资源汇总 ## 资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/NandToTetris - GitHub](https://github.com/PKUFlyingPig/NandToTetris) 中。 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/NandToTetris - GitHub](https://github.com/PKUFlyingPig/NandToTetris) 中。

View file

@ -1,114 +1,133 @@
# 好书推荐 # 好书推荐
由于版权原因,下面列举的图书中除了开源书籍提供了链接,其他的资源请大家自行通过 [libgen](http://libgen.is/) 查找。 <!--
汇总类的书籍资源请放在 资源汇总 板块下
另外再安利一个 GitHub 顶流热门项目 [free-programming-books](https://github.com/EbookFoundation/free-programming-books),收集了非常多的免费开源编程书籍。 书籍格式要求:
书籍名(优先英文原版,开源则附上链接,多版本则默认最新版) [豆瓣链接] [其他相关资源链接(如相关课程)]
同板块下的顺序要求:
先中文后英文,同种语言先开源后闭源,最后按从基础到深入或者字母序。
-->
由于版权原因,下面列举的图书中除了开源资源提供了链接,其他的资源请大家自行通过 [libgen](http://libgen.is/) 或 [z-lib](https://z-lib.org/) 查找。
## 资源汇总
- [Free Programming Books](https://github.com/EbookFoundation/free-programming-books): 开源编程书籍资源汇总
- [CS Textbook Recommendations](https://4chan-science.fandom.com/wiki/Computer_Science_and_Engineering): 计算机科学方向推荐教材列表
- [C Book Guide and List](https://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list): C语言相关的编程书籍推荐列表
- [C++ Book Guide and List](https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list): C++语言相关的编程书籍推荐列表
- [Python Book Guide and List](https://pythonbooks.org/): Python语言相关的编程书籍推荐列表
## 系统入门 ## 系统入门
- Principles of Computer System Design: An Introduction - Computer Systems: A Programmer's Perspective [[豆瓣](https://book.douban.com/subject/26912767/)]
- Computer Systems: A Programmer's Perspective - Principles of Computer System Design: An Introduction [[豆瓣](https://book.douban.com/subject/3707841/)]
## 操作系统 ## 操作系统
- [Operating Systems: Three Easy Pieces](https://pages.cs.wisc.edu/~remzi/OSTEP/) - [现代操作系统: 原理与实现](https://ipads.se.sjtu.edu.cn/mospi/) [[豆瓣](https://book.douban.com/subject/35208251/)]
- Operating Systems: Principles and Practice (2nd Edition) - [Operating Systems: Three Easy Pieces](https://pages.cs.wisc.edu/~remzi/OSTEP/) [[豆瓣](https://book.douban.com/subject/19973015/)]
- [现代操作系统: 原理与实现 (银杏书)](https://ipads.se.sjtu.edu.cn/mospi/) - Modern Operating Systems [[豆瓣](https://book.douban.com/subject/27096665/)]
- Modern Operating Systems - Operating Systems: Principles and Practice [[豆瓣](https://book.douban.com/subject/25984145/)]
## 计算机网络 ## 计算机网络
- [Computer Networks: A Systems Approach](https://book.systemsapproach.org/foreword.html) - [Computer Networks: A Systems Approach](https://book.systemsapproach.org/foreword.html) [[豆瓣](https://book.douban.com/subject/26417896/)]
- Computer Networking: A Top-Down Approach - Computer Networking: A Top-Down Approach [[豆瓣](https://book.douban.com/subject/30280001/)]
## 编译原理
- [My First Language Frontend with LLVM Tutorial](https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/index.html)
- Compilers: Principles, Techniques, and Tools (Dragon Book)
## 计算机语言PL
- [Essentials of Programming Languages (EOPL)](https://eopl3.com/)
- [Types and Programming Languages (TAPL)](https://www.cis.upenn.edu/~bcpierce/tapl/) ([北大相关课程](https://xiongyingfei.github.io/DPPL/2021/main.htm))
- [Practical Foundations for Programming Languages (PFPL)](https://www.cs.cmu.edu/~rwh/pfpl.html)
- [Software Foundations (SF)](https://softwarefoundations.cis.upenn.edu/) ([北大相关课程](https://xiongyingfei.github.io/SF/2021/))
## 体系结构
- Computer Architecture: A Quantitative Approach 5th Edition
- Computer Organization and Design: The Hardware/Software Interface
- [计算机体系结构基础(第三版)](https://github.com/foxsen/archbase)
- 超标量处理器设计(姚永斌)
- CPU 设计实战 (汪文祥 邢金璋)
## 分布式系统 ## 分布式系统
- [Patterns of Distributed System](https://github.com/dreamhead/patterns-of-distributed-systems) - [Patterns of Distributed System (Blog)](https://github.com/dreamhead/patterns-of-distributed-systems)
- [Distributed Systems for fun and profit](http://book.mixu.net/distsys/index.html) - [Distributed Systems for Fun and Profit (Blog)](http://book.mixu.net/distsys/index.html)
- [Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems](https://github.com/Vonng/ddia) [[豆瓣](https://book.douban.com/subject/26197294/)]
## 数据密集型系统设计
- Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems ([开源中文翻译](https://github.com/Vonng/ddia))
## 密码学
- Introduction to modern cryptography (second edition) by Jonathon Katz & Yehuda Lindell
- Cryptography Engineering: Design Principles and Practical Applications
## 逆向工程
- [Reverse engineering for beginners by Dennis Yurichev](https://beginners.re/) 有中文版,中文:逆向工程权威指南
- 리버싱 핵심원리 by 李承远 有中文版,中文:逆向工程核心原理
## 数据库系统 ## 数据库系统
- Database System Concepts - [Architecture of a Database System](https://dsf.berkeley.edu/papers/fntdb07-architecture.pdf) [[豆瓣](https://book.douban.com/subject/17665384/)]
- [Architecture of a Database System](https://dsf.berkeley.edu/papers/fntdb07-architecture.pdf) - [Readings in Database Systems](http://www.redbook.io/) [[豆瓣](https://book.douban.com/subject/2256069/)]
- Database System Concepts [[豆瓣](https://book.douban.com/subject/10548379/)]
## 编译原理
- Engineering a Compiler [[豆瓣](https://book.douban.com/subject/5288601/)]
- Compilers: Principles, Techniques, and Tools [[豆瓣](https://book.douban.com/subject/1866231/)]
## 计算机编程语言
- 计算机程序的构造和解释 [[豆瓣](https://book.douban.com/subject/1148282/)]
- [Essentials of Programming Languages](https://eopl3.com/) [[豆瓣](https://book.douban.com/subject/3136252/)]
- [Practical Foundations for Programming Languages](https://www.cs.cmu.edu/~rwh/pfpl.html) [[豆瓣](https://book.douban.com/subject/26782198/)]
- [Software Foundations](https://softwarefoundations.cis.upenn.edu/) [[豆瓣](https://book.douban.com/subject/25712292/)] [[北大相关课程](https://xiongyingfei.github.io/SF/2021/)]
- [Types and Programming Languages](https://www.cis.upenn.edu/~bcpierce/tapl/) [[豆瓣](https://book.douban.com/subject/1761910/)] [[北大相关课程](https://xiongyingfei.github.io/DPPL/2021/main.htm)]
## 体系结构
- 超标量处理器设计: Superscalar RISC Processor Design [[豆瓣](https://book.douban.com/subject/26293546/)]
- Computer Organization and Design RISC-V Edition [[豆瓣](https://book.douban.com/subject/27103952/)]
- Computer Organization and Design: The Hardware/Software Interface [[豆瓣](https://book.douban.com/subject/26604008/)]
- Computer Architecture: A Quantitative Approach [[豆瓣](https://book.douban.com/subject/6795919/)]
## 理论计算机科学
- Introduction to the Theory of Computation [[豆瓣](https://book.douban.com/subject/1852515/)]
## 密码学
- Cryptography Engineering: Design Principles and Practical Applications [[豆瓣](https://book.douban.com/subject/26416592/)]
- Introduction to Modern Cryptography [[豆瓣](https://book.douban.com/subject/2678340/)]
## 逆向工程
- 逆向工程核心原理 [[豆瓣](https://book.douban.com/subject/25866389/)]
- 加密与解密 [[豆瓣](https://book.douban.com/subject/30288807/)]
## 计算机图形学 ## 计算机图形学
- Fundamentals of Computer Graphics
- Fluid Simulation for Computer Graphics
- Real-Time Rendering, 4th edition
- Physically Based Rendering: From Theory To Implementation
- Advanced global illumination, 2nd Edition
- [Monte Carlo theory, methods and examples](https://artowen.su.domains/mc/) - [Monte Carlo theory, methods and examples](https://artowen.su.domains/mc/)
- GPU Pro 系列 - Advanced Global Illumination [[豆瓣](https://book.douban.com/subject/2751153/)]
- Fundamentals of Computer Graphics [[豆瓣](https://book.douban.com/subject/26868819/)]
- Fluid Simulation for Computer Graphics [[豆瓣](https://book.douban.com/subject/2584523/)]
- Physically Based Rendering: From Theory To Implementation [[豆瓣](https://book.douban.com/subject/4306242/)]
- Real-Time Rendering [[豆瓣](https://book.douban.com/subject/30296179/)]
## 游戏性&游戏引擎 ## 游戏引擎
- Game Engine Architecture, 3rd Edition by Jason Gregory (中文:游戏引擎架构,第二版有中文)
- Game Engine Gems 系列
- 游戏编程模式 by Robert Nystrom
- Game Programming Gems 系列
- Game Audio Programming 3: Principles and Practices by Guy Somberg
- 实时碰撞检测算法技术 by Christer Ericson
- AI for Games, 3rd edition by Ian Millington
- [Game AI Pro 系列](http://www.gameaipro.com/)
## 深度学习 - 游戏编程模式: Game Programming Patterns [[豆瓣](https://book.douban.com/subject/26880704/)]
- 实时碰撞检测算法技术 [[豆瓣](https://book.douban.com/subject/4861957/)]
- [动手学深度学习](http://tangshusen.me/Dive-into-DL-PyTorch/#/) - [Game AI Pro Series](http://www.gameaipro.com/) [[豆瓣](https://search.douban.com/book/subject_search?search_text=Game+AI+Pro&cat=1001)]
- [Speech and Language Processing](https://web.stanford.edu/~jurafsky/slp3/) - Artificial Intelligence for Games [[豆瓣](https://book.douban.com/subject/3836472/)]
- [神经网络与深度学习](https://nndl.github.io/) - Game Engine Architecture [[豆瓣](https://book.douban.com/subject/25815142/)]
- [简单粗暴 TensorFlow 2](https://tf.wiki/) - Game Programming Gems Series [[豆瓣](https://search.douban.com/book/subject_search?search_text=Game+Programming+Gems&cat=1001)]
## 软件工程 ## 软件工程
- [Software Engineering at Google](https://abseil.io/resources/swe_at_google.2.pdf) - [Software Engineering at Google](https://abseil.io/resources/swe-book) [[豆瓣](https://book.douban.com/subject/34875994/)]
## 设计模式 ## 设计模式
- 设计模式: 可复用面向对象软件的基础Gang of Four - 设计模式: 可复用面向对象软件的基础 [[豆瓣](https://book.douban.com/subject/1052241/)]
- 大话设计模式 by 程杰 - 大话设计模式 [[豆瓣](https://book.douban.com/subject/2334288/)]
- [Head First 设计模式](https://awesome-programming-books.github.io/design-pattern/HeadFirst%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F.pdf) [[豆瓣](https://book.douban.com/subject/2243615/)]
## C/C++ ## 深度学习
- The ANSI C Programming Language, 2nd Edition(中文C程序设计语言第二版C语言最经典的一本书) - [动手学深度学习](http://tangshusen.me/Dive-into-DL-PyTorch/#/) [[豆瓣](https://book.douban.com/subject/33450010/)]
- C Primer Plus, 6th Edition(有中文版适合0基础学习) - [神经网络与深度学习](https://nndl.github.io/) [[豆瓣](https://book.douban.com/subject/35044046/)]
- The C++ Programming Language, 4th Edition(中文C++程序设计语言第四版) - 深度学习入门 [[豆瓣](https://book.douban.com/subject/30270959/)]
- C++ Primer, 5th Edition - [简单粗暴 TensorFlow 2 (Tutorial)](https://tf.wiki/)
- STL源码剖析 by 侯捷 - [Speech and Language Processing](https://web.stanford.edu/~jurafsky/slp3/) [[豆瓣](https://book.douban.com/subject/5373023/)]
## 计算机视觉
- Multiple View Geometry in Computer Vision [[豆瓣](https://book.douban.com/subject/1841346/)]
## 机器人
- Probabilistic Robotics [[豆瓣](https://book.douban.com/subject/2861227/)]
## 面试 ## 面试
- Cracking The Coding Interview - 剑指 Offer名企面试官精讲典型编程题 [[豆瓣](https://book.douban.com/subject/27008702/)]
- Cracking The Coding Interview [[豆瓣](https://book.douban.com/subject/10436668/)]

View file

@ -21,4 +21,4 @@
## 资源汇总 ## 资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS149-parallel-computing - GitHub](https://github.com/PKUFlyingPig/CS149-parallel-computing) 中。 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS149-parallel-computing - GitHub](https://github.com/PKUFlyingPig/CS149-parallel-computing) 中。

View file

@ -23,4 +23,6 @@
## 资源汇总 ## 资源汇总
我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/MIT6.824 - GitHub](https://github.com/PKUFlyingPig/MIT6.824) 中。此外也可以参考 [OneSizeFitsQuorum](https://github.com/OneSizeFitsQuorum) 的 [Lab 文档](https://github.com/OneSizeFitsQuorum/MIT6.824-2021),其较为清晰地介绍了实现 lab 1-4 和 challenge 1-2 需要考虑的许多细节,在遇到瓶颈期时可以阅读一下~ @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/MIT6.824 - GitHub](https://github.com/PKUFlyingPig/MIT6.824) 中。
@[OneSizeFitsQuorum](https://github.com/OneSizeFitsQuorum) 的 [Lab 文档](https://github.com/OneSizeFitsQuorum/MIT6.824-2021) 较为清晰地介绍了实现 lab 1-4 和 challenge 1-2 时需要考虑的许多细节,在遇到瓶颈期时可以阅读一下~~

View file

@ -2,7 +2,7 @@
## 为什么学习 CMake ## 为什么学习 CMake
CMake 是类似于 GNU make 的跨平台自动软件构工具,使用 CMakeLists.txt 定义构建规则,相比于 make 它提供了更多的功能,在各种软件构建上广泛使用。**强烈建议学习使用 GNU Make 和熟悉 `Makefile` 后再学习 CMake**。 CMake 是类似于 GNU make 的跨平台自动软件构工具,使用 CMakeLists.txt 定义构建规则,相比于 make 它提供了更多的功能,在各种软件构建上广泛使用。**强烈建议学习使用 GNU Make 和熟悉 `Makefile` 后再学习 CMake**。
## 如何学习 CMake ## 如何学习 CMake

View file

@ -0,0 +1,15 @@
# 毕业论文
## 为什么写这份教程
2022年我本科毕业了。在开始动手写毕业论文的时候我尴尬地发现我对 Word 的掌握程度仅限于调节字体、保存导出这些傻瓜功能。曾想转战 Latex但论文的段落格式要求调整起来还是用 Word 更为方便,经过一番痛苦缠斗之后,总算是有惊无险地完成了论文的写作和答辩。为了不让后来者重蹈覆辙,遂把相关资源整理成一份开箱即用的文档,供大家参考。
## 如何用 Word 写毕业论文
正如将大象装进冰箱需要三步,用 Word 写毕业论文也只需要简单三步:
- 确定论文的格式要求:通常学院都会下发毕业论文的格式要求(各级标题的字体字号、图例和引用的格式等等),如果更为贴心的话甚至会直接给出论文模版(如是此情况请直接跳转到下一步)。很不幸的是,我的学院并没有下发标准的论文格式要求,还提供了一份格式混乱几乎毫无用处的论文模版膈应我,被逼无奈之下我找到了北京大学研究生的[论文格式要求](https://github.com/PKUFlyingPig/Thesis-Template/blob/master/%E5%8C%97%E4%BA%AC%E5%A4%A7%E5%AD%A6%E7%A0%94%E7%A9%B6%E7%94%9F%E5%AD%A6%E4%BD%8D%E8%AE%BA%E6%96%87%E5%86%99%E4%BD%9C%E6%8C%87%E5%8D%97.pdf),并按照其要求制作了[一份模版](https://github.com/PKUFlyingPig/Thesis-Template/blob/master/%E8%AE%BA%E6%96%87%E6%A8%A1%E7%89%88.docx),大家需要的话自取,本人不承担无法毕业等任何责任。
- 学习 Word 排版:到达这一步的童鞋分为两类,一是已经拥有了学院提供的标准模版,二是只有一份虚无缥缈的格式要求。那现在当务之急就是学习基础的 Word 排版技术,对于前者可以学会使用模版,对于后者则可以学会制作模版。此时切记不要雄心勃勃地选择一个十几个小时的 Word 教学视频开始头悬梁锥刺股,因为生产一份应付毕业的学术垃圾只要学半小时能上手就够了。我当时看的[一个 B 站的教学视频](https://www.bilibili.com/video/BV1YQ4y1M73G?p=1&vd_source=a4d76d1247665a7e7bec15d15fd12349),短小精悍非常实用,全长半小时极速入门。
- 生产学术垃圾:最容易的一步,大家八仙过海,各显神通吧,祝大家毕业顺利~~

View file

@ -15,8 +15,22 @@
- [iconfont](https://www.iconfont.cn/): 国内最大的图标和插画资源库,可用于开发或绘制系统架构图。 - [iconfont](https://www.iconfont.cn/): 国内最大的图标和插画资源库,可用于开发或绘制系统架构图。
- [turbosquid](https://www.turbosquid.com/): 可以购买各式各样的模型。 - [turbosquid](https://www.turbosquid.com/): 可以购买各式各样的模型。
## 编程相关
- [sqlfiddle](http://www.sqlfiddle.com/): 一个简易的在线 SQL Playground。
- [godbolt](https://godbolt.org/): 非常方便的编译器探索工具。你可以写一段 C/C++ 代码,选择一款编译器,然后便可以观察生成的具体汇编代码。
- [explainshell](https://explainshell.com/): 你是否曾为一段 shell 代码的具体含义感到困扰manpage 看半天还是不明所以?试试这个网站!
- [regex101](https://regex101.com/): 正则表达式调试网站,支持各种编程语言的匹配标准。
- [typingtom](https://www.typingtom.com/lessons): 针对程序员的打字练习/测速网站。
## 学习网站 ## 学习网站
- [HFS](https://hepsoftwarefoundation.org/training/curriculum.html): 各类软件教程。 - [HFS](https://hepsoftwarefoundation.org/training/curriculum.html): 各类软件教程。
- [os-wiki](https://wiki.osdev.org/Main_Page): 操作系统技术资源百科全书。 - [os-wiki](https://wiki.osdev.org/Main_Page): 操作系统技术资源百科全书。
- [Shadertoy](https://www.shadertoy.com/): 编写各式各样的 shader。 - [Shadertoy](https://www.shadertoy.com/): 编写各式各样的 shader。
## 杂项
- [tophub](https://tophub.today/): 新闻热榜合集(综合了知乎、微博、百度、微信等)。
- [speedtest](https://www.speedtest.net/zh-Hans): 在线网络测速网站。
- [public-apis](https://github.com/public-apis/public-apis): 公共 API 合集列表。

View file

@ -33,7 +33,9 @@
## 资源汇总 ## 资源汇总
我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/MIT6.S081-2020fall - GitHub][github_pkuflyingpig] 中。此外也可以参考 [KuangjuX] 实现的 MIT 6.S081 的几个 lab 的[题解][solution_kuangjux],里面亦有详细的解法和补充知识,另外,[KuangjuX] 还使用 Rust 语言重新实现过 xv6-riscv 操作系统:[xv6-rust],里面对于 xv6-riscv 有更为详细的思考和讨论,感兴趣的同学可以看一下哦。 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/MIT6.S081-2020fall - GitHub][github_pkuflyingpig] 中。
@[KuangjuX] 编写了 MIT 6.S081 的 lab 的[题解][solution_kuangjux],里面有详细的解法和补充知识。另外,@[KuangjuX] 还使用 Rust 语言重新实现了 xv6-riscv 操作系统:[xv6-rust],里面对于 xv6-riscv 有更为详细的思考和讨论,感兴趣的同学可以看一下哦。
[github_pkuflyingpig]: https://github.com/PKUFlyingPig/MIT6.S081-2020fall [github_pkuflyingpig]: https://github.com/PKUFlyingPig/MIT6.S081-2020fall
[KuangjuX]: https://github.com/KuangjuX [KuangjuX]: https://github.com/KuangjuX

View file

@ -0,0 +1,30 @@
# NJU OS: Operating System Design and Implementation
## 课程简介
- 所属大学:南京大学
- 先修要求:体系结构 + 扎实的 C 语言功底
- 编程语言C 语言
- 课程难度:🌟🌟🌟🌟
- 预计学时150 小时
之前一直听说南大的蒋炎岩老师开设的操作系统课程讲得很好,久闻不如一见,这学期有幸在 B 站观看了蒋老师的课程视频,确实收获良多。蒋老师作为非常年轻的老师,有着丰富的一线代码的经验,因此课程讲授有着满满的 Hacker 风格,课上经常“一言不合”就在命令行里开始写代码,很多重要知识点也都配有生动直白的代码示例。让我印象最为深刻的就是老师为了让学生更好地理解动态链接库的设计思想,甚至专门实现了一个迷你的可执行文件与一系列的二进制工具,让很多困扰我多年的问题都得到了解答。
这门课的讲授思路也非常有趣蒋老师先从“程序就是状态机”这一视角入手为“万恶之源”并发程序建立了状态机的转化模型并在此基础上讲授了并发控制的常见手段以及并发bug的应对方法。接着蒋老师将操作系统看作一系列对象进程/线程、地址空间、文件、设备等等)以及操作它们的 API (系统调用)并结合丰富的实际例子介绍了操作系统是如何利用这系列对象虚拟化硬件资源并给应用软件提供各类服务的。最后的可持久化部分,蒋老师从 1-bit 的存储介质讲起,一步步构建起各类存储设备,并通过设备驱动抽象出一组接口来方便地设计与实现文件系统。我之前虽然上过许多门操作系统的课程,但这种讲法确实独此一家,让我收获了很多独到的视角来看待系统软件。
这门课除了在理论知识的讲授部分很有新意外,注重实践也是蒋老师的一大特点。在课堂和编程作业里,蒋老师会有意无意地培养大家阅读源码、查阅手册的能力,这也是计算机从业者必备的技能。在完成第五个 MiniLab 期间,我第一次仔仔细细阅读了微软的 FAT 文件系统手册,收获了一次非常有价值的经历。
编程作业共由 5个 MiniLab 和 4个 OSLab 组成。美中不足的是作业的评测机是不对校外开放的,不过在邮件“骚扰”后蒋老师还是非常慷慨地让我成功蹭课。由于课余时间有限我只完成了 5个 MiniLab总体体验非常棒。尤其是第二个协程实验让我印象最为深刻在不到百行的小实验里深刻体验了上下文切换的美妙与“可怕”。另外其实几个 MiniLab 都能非常方便地进行本地测试,就算没有评测机也不影响自学,因此希望大家不要聚众“骚扰”老师以图蹭课。
最后再次感谢蒋老师设计并开放了这样一门非常棒的操作系统课程,这也是本书收录的第一门国内高校自主开设的计算机课程。正是有蒋老师这些年轻的新生代教师在繁重的 Tenure 考核之余的用爱发电,才让无数学子收获了难忘的本科生涯。也期待国内能有更多这样的良心好课,我也会第一时间收录进本书中让更多人受益。
## 课程资源
- 课程网站:<http://jyywiki.cn/OS/2022/>
- 课程视频:<https://space.bilibili.com/202224425/channel/collectiondetail?sid=192498>
- 课程教材:<http://pages.cs.wisc.edu/~remzi/OSTEP/>
- 课程作业:<http://jyywiki.cn/OS/2022/>
## 资源汇总
按蒋老师的要求,我的作业实现没有开源。

View file

@ -28,4 +28,4 @@
## 资源汇总 ## 资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/EECS126 - GitHub](https://github.com/PKUFlyingPig/EECS126) 中。 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/EECS126 - GitHub](https://github.com/PKUFlyingPig/EECS126) 中。

View file

@ -28,4 +28,4 @@
## 资源汇总 ## 资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/UCB-CS70 - GitHub](https://github.com/PKUFlyingPig/UCB-CS70) 中。 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/UCB-CS70 - GitHub](https://github.com/PKUFlyingPig/UCB-CS70) 中。

View file

@ -21,4 +21,4 @@
## 资源汇总 ## 资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/Standford_CVX101 - GitHub](https://github.com/PKUFlyingPig/Standford_CVX101) 中。 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/Standford_CVX101 - GitHub](https://github.com/PKUFlyingPig/Standford_CVX101) 中。

View file

@ -22,4 +22,4 @@
## 资源汇总 ## 资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/MIT18.330 - GitHub](https://github.com/PKUFlyingPig/MIT18.330) 中。 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/MIT18.330 - GitHub](https://github.com/PKUFlyingPig/MIT18.330) 中。

View file

@ -13,27 +13,27 @@
## 课程资源 ## 课程资源
- 课程网站:[Fall2019](https://15445.courses.cs.cmu.edu/fall2019/schedule.html), [Fall2020](https://15445.courses.cs.cmu.edu/fall2020/schedule.html) - 课程网站:[Fall2019](https://15445.courses.cs.cmu.edu/fall2019/schedule.html), [Fall2020](https://15445.courses.cs.cmu.edu/fall2020/schedule.html), [Fall2021](https://15445.courses.cs.cmu.edu/fall2021/schedule.html)
- 课程视频:课程网站免费观看 - 课程视频:课程网站免费观看
- 课程教材Database System Concepts - 课程教材Database System Concepts
- 课程作业4 个 Project - 课程作业4 个 Project
在 Fall2019 中,第二个 Project 是做哈希索引,第四个 Project 是做日志与恢复 在 Fall2019 中,第二个 Project 是做哈希索引,第四个 Project 是做日志与恢复
在 Fall2020 中,第二个 Project 是做 B 树,第四个 Project 是做并发控制 在 Fall2020 中,第二个 Project 是做 B 树,第四个 Project 是做并发控制。
在 Fall2021 中,第二个 Project 是做缓存池管理,第三个 Project 是做哈希索引,第四个 Project 是做并发控制。
如果大家有精力的话可以都去尝试一下,或者在对书中内容理解不是很透彻的时候,尝试用代码写一个会加深你的理解。 如果大家有精力的话可以都去尝试一下,或者在对书中内容理解不是很透彻的时候,尝试用代码写一个会加深你的理解。
我在学习这门课中用到的所有资源和作业实现都汇总在 [ysj1173886760/Learning: db - GitHub](https://github.com/ysj1173886760/Learning/tree/master/db) 中。 ## 资源汇总
由于 Andy 的要求,仓库中没有 Project 的实现,只有 Homework 的 Solution。特别的对于 Homework1我还写了一个 Shell 脚本来帮大家执行自动判分 @ysj1173886760 在学习这门课中用到的所有资源和作业实现都汇总在 [ysj1173886760/Learning: db - GitHub](https://github.com/ysj1173886760/Learning/tree/master/db) 中。
另外在课程结束后,我十分推荐阅读一篇论文 [Architecture Of a Database System](https://github.com/ysj1173886760/paper_notes/tree/master/db),对应的中文版我上传到了链接中的仓库。论文里综述了数据库系统的整体架构,让大家可以对数据库有一个更加全面的视野。 由于 Andy 的要求,仓库中没有 Project 的实现,只有 Homework 的 Solution。特别的对于 Homework1@ysj1173886760 还写了一个 Shell 脚本来帮大家执行自动判分。
另外在课程结束后,推荐阅读一篇论文 [Architecture Of a Database System](https://github.com/ysj1173886760/paper_notes/tree/master/db),对应的中文版也在上述仓库中。论文里综述了数据库系统的整体架构,让大家可以对数据库有一个更加全面的视野。
## 后续课程 ## 后续课程
[CMU15-721](https://15721.courses.cs.cmu.edu/spring2020/) [CMU15-721](https://15721.courses.cs.cmu.edu/spring2020/) 主要讲主存数据库有关的内容,每节课都有对应的 paper 要读,推荐给希望进阶数据库的小伙伴。@ysj1173886760 目前也在跟进这门课,完成后会在这里提 PR 以提供进阶的指导。
主要讲主存数据库有关的内容,每节课都有对应的 paper 要读,推荐给希望进阶数据库的小伙伴
我目前也在跟进这门课,完成后会在这里提 PR 以提供进阶的指导

View file

@ -0,0 +1,41 @@
# Caltech CS 122: Database System Implementation
## 课程简介
- 所属大学Caltech
- 先修要求:无
- 编程语言Java
- 课程难度:🌟🌟🌟🌟🌟
- 预计学时150 小时
加州理工的这门课,不同于没有提供 SQL 层功能的 CMU15-445 课程。CS122 课程 Lab 的侧重点在于 SQL 层的相关实现涉及查询优化器的各个模块比如SQL的解析Translate如何实现 Join统计信息以及代价估计子查询实现AggGroup By 的实现等。除此之外,还有 B+树WAL 相关实验。本门课程适合在学完 CMU15-445 课程之后,对查询优化相关内容有兴趣的同学。
下面介绍一下这门课的前 3 个 Assignment 也就是实验 Lab 所要实现的功能:
### Assignment1
- 为 NanoDB 提供 deleteupdate 语句的支持。
- 为 Buffer Pool Manager 添加合适的 pin/unpin 代码。
- 提升 insert 语句的性能, 同时不使数据库文件大小过分膨胀。
### Assignment2
- 实现一个简单的计划生成器,将各种已经 Parser 过的 SQL 语句转化为可执行的执行计划。
- 使用 nested-loop join 算法,实现支持 inner- and outer-join 的 Join 计划节点。
- 添加一些单元测试, 保证 inner- and outer-join 功能实现正确。
### Assignment3
- 完成收集表的统计信息。
- 完成各种计划节点的计划成本计算。
- 计算可出现在执行计划中的各种谓词的选择性。
- 根据谓词更新计划节点输出的元组统计信息。
剩余 Assignment 和 Challenges 可以查看课程介绍,推荐使用 IDEA 打开工程Maven 构建,注意日志相关配置。
## 课程资源
- 课程网站:<http://courses.cms.caltech.edu/cs122/>
- 课程代码:<https://gitlab.caltech.edu/cs122-19wi>
- 课程教材:无
- 课程作业7 Assignments + 2 Challenges

View file

@ -14,11 +14,11 @@
## 课程资源 ## 课程资源
- 课程网站:<https://cs186berkeley.net/sp21/> - 课程网站:<https://cs186berkeley.net/>
- 课程视频:<https://www.bilibili.com/video/BV13a411c7Qo> - 课程视频:<https://www.bilibili.com/video/BV13a411c7Qo>
- 课程教材:无 - 课程教材:无
- 课程作业6 个 Project - 课程作业6 个 Project
## 资源汇总 ## 资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS186 - GitHub](https://github.com/PKUFlyingPig/CS186) 中。 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS186 - GitHub](https://github.com/PKUFlyingPig/CS186) 中。

View file

@ -34,4 +34,4 @@
## 资源汇总 ## 资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/Princeton-Algorithm - GitHub](https://github.com/PKUFlyingPig/Princeton-Algorithm) 中。 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/Princeton-Algorithm - GitHub](https://github.com/PKUFlyingPig/Princeton-Algorithm) 中。

View file

@ -21,4 +21,4 @@
## 资源汇总 ## 资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/UCB-CS170 - GitHub](https://github.com/PKUFlyingPig/UCB-CS170) 中。 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/UCB-CS170 - GitHub](https://github.com/PKUFlyingPig/UCB-CS170) 中。

View file

@ -27,21 +27,4 @@
## 资源汇总 ## 资源汇总
我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS61B - GitHub](https://github.com/PKUFlyingPig/CS61B) 中。 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS61B - GitHub](https://github.com/PKUFlyingPig/CS61B) 中。
Algorithms, 4th Edition: <https://algs4.cs.princeton.edu/home/>
CS61B Exams and Solutions: <https://tbp.berkeley.edu/courses/cs/61B/>
COS226 Spring 2008 Midterm Solution: <https://www.cs.princeton.edu/courses/archive/spring15/cos226/exams/mid-s08-sol.pdf>
COS226 Fall 2008 Midterm Solution: <https://www.cs.princeton.edu/courses/archive/spring15/cos226/exams/mid-f08-sol.pdf>
COS226 Fall 2009 Midterm Solution: <https://www.cs.princeton.edu/courses/archive/spring15/cos226/exams/mid-f09-sol.pdf>
CS61B Fall 2009 Exam Solutions (Final, Midterm, Midterm2, Midterm3): <https://inst.eecs.berkeley.edu//~cs61b/fa13/samples/>
COS226 Fall 2010 Midterm Solution: <https://www.cs.princeton.edu/courses/archive/spring15/cos226/exams/mid-f10.pdf>
COS226 Fall 2011 Midterm Solution: <https://www.cs.princeton.edu/courses/archive/spring15/cos226/exams/mid-f11-sol.pdf>
COS226 Spring 2012 Midterm Solution: <https://www.cs.princeton.edu/courses/archive/spring15/cos226/exams/mid-s12-sol.pdf>
COS226 Fall 2012 Midterm Solution: <https://www.cs.princeton.edu/courses/archive/spring15/cos226/exams/mid-f12-sol.pdf>
COS226 Spring 2013 Midterm Solution: <https://www.cs.princeton.edu/courses/archive/fall13/cos226/exams/mid-s13-sol.pdf>
CS61B Fall 2014 Test Solutions (Final, Final2, Final3, Midterm, Midterm2): <https://inst.eecs.berkeley.edu/~cs61b/fa14/test-solutions/>
CS61B Spring 2016 Midterm2 Walkthrough: <https://www.youtube.com/watch?v=rciRgoiJVGY>
CS61B Spring 2017 Midterm2 Walkthrough: <https://www.youtube.com/channel/UCqiudaLea8HNE23GBC34R5Q/videos>
CS61B Spring 2016 MT1, Spring 2017 Exam Prep, Spring 2018 MT1, Spring 2019 MT1, Spring 2019 MT2, Fall 2020 MT1: <https://www.youtube.com/channel/UCNBSbBTFx8nFahcQyZOYOgQ/videos>
CS61B Spring 2019 Discussion: <https://www.youtube.com/channel/UCdh0Rpk6C1w1ypiEjjKh_Uw/videos>
CS61B Fall 2020 Discussion: <https://www.youtube.com/channel/UCtic6FhXmfR0PSntIXjhwaw/videos>

View file

@ -19,4 +19,4 @@
## 资源汇总 ## 资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS229 - GitHub](https://github.com/PKUFlyingPig/CS229) 中。 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS229 - GitHub](https://github.com/PKUFlyingPig/CS229) 中。

View file

@ -0,0 +1,29 @@
# CMU 10-414/714: Deep Learning Systems
## 课程简介
- 所属大学CMU
- 先修要求:系统入门(eg.15-213)、深度学习入门、基本的数学知识
- 编程语言N/A据课程主页要求熟悉Python、C/C++
- 课程难度N/A
- 预计学时N/A
<!-- 用一两段话介绍这门课程,内容包括但不限于:
1课程覆盖的知识点范围
2与同类课程相比它的优势与特点
3学习这门课程的体验与感受
4自学这门课的注意点踩过的坑、难度预警等等
5... ...
-->
这是 CMU 2022年秋季学期开设的一门新课聚焦于深度学习框架的具体实现课程 Project 会实现一个迷你的类似于 Pytorch 深度学习框架。课程免费提供了面向非 CMU 学生的在线版本9月13日正式授课作者持续跟进中。
## 课程资源
- 课程网站:<https://dlsyscourse.org>
- 课程视频N/A
- 课程教材N/A
- 课程作业TBA
## 资源汇总
TBA

View file

@ -0,0 +1,32 @@
# Machine Learning Compilation
## 课程简介
- 所属大学Bilibili 大学
- 先修要求:机器学习/深度学习基础
- 编程语言Python
- 课程难度:🌟🌟🌟
- 预计学时30小时
<!-- 用一两段话介绍这门课程,内容包括但不限于:
1课程覆盖的知识点范围
2与同类课程相比它的优势与特点
3学习这门课程的体验与感受
4自学这门课的注意点踩过的坑、难度预警等等
5... ...
-->
这门课是机器学习编译领域的顶尖学者陈天奇在2022年暑期开设的一门在线课程。其实机器学习编译无论在工业界还是学术界仍然是一个非常前沿且快速更迭的领域国内外此前还没有为这个方向专门开设的相关课程。因此如果对机器学习编译感兴趣想有个全貌性的感知的话可以学习一下这门课。
本课程主要以 [Apache TVM](https://tvm.apache.org/) 这一主流的机器学习编译框架为例(陈天奇是这个框架的创始人之一),聚焦于如何将开发模式下(如 Tensorflow, Pytorch, Jax的各类机器学习模型通过一套普适的抽象和优化算法变换为拥有更高性能并且适配各类底层硬件的部署模式。课程讲授的知识点都是相对 High-Level 的宏观概念,同时每节课都会有一个配套的 Jupyter Notebook 来通过具体的代码讲解知识点,因此如果从事 TVM 相关的编程开发的话,这门课有丰富且规范的代码示例以供参考。
所有的课程资源全部开源并且有中文和英文两个版本B站和油管分别有中文和英文的课程录影。
## 课程资源
- 课程网站:<https://mlc.ai/summer22-zh/>
- 课程视频:[Bilibili][Bilibili_link]
- 课程笔记:<https://mlc.ai/zh/index.html>
- 课程作业:<https://github.com/mlc-ai/notebooks/blob/main/assignment>
[Bilibili_link]: https://www.bilibili.com/video/BV15v4y1g7EU?spm_id_from=333.337.search-card.all.click&vd_source=a4d76d1247665a7e7bec15d15fd12349

View file

@ -23,4 +23,4 @@ Stanford 的 NLP 入门课程,由自然语言处理领域的巨佬 Chris Manni
## 资源汇总 ## 资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS224n - GitHub](https://github.com/PKUFlyingPig/CS224n) 中。 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS224n - GitHub](https://github.com/PKUFlyingPig/CS224n) 中。

View file

@ -19,4 +19,4 @@ UC Berkeley 电子系学生的大一入门课,通过电路基础知识的讲
## 资源汇总 ## 资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/EE16A - GitHub](https://github.com/PKUFlyingPig/EE16A) 中。 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/EE16A - GitHub](https://github.com/PKUFlyingPig/EE16A) 中。

View file

@ -18,4 +18,4 @@
## 资源汇总 ## 资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/UCB-EE120 - GitHub](https://github.com/PKUFlyingPig/UCB-EE120) 中。 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/UCB-EE120 - GitHub](https://github.com/PKUFlyingPig/UCB-EE120) 中。

View file

@ -24,9 +24,9 @@
- 课程网站:<https://su20.cs161.org/> - 课程网站:<https://su20.cs161.org/>
- 课程视频:参见课程网站 - 课程视频:参见课程网站
- 课程教材: - 课程教材:<https://textbook.cs161.org/>
- 课程作业7 个在线 HW + 3 个 Lab + 3 个 Project - 课程作业7 个在线 HW + 3 个 Lab + 3 个 Project
## 资源汇总 ## 资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/UCB-CS161 - GitHub](https://github.com/PKUFlyingPig/UCB-CS161) 中。 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/UCB-CS161 - GitHub](https://github.com/PKUFlyingPig/UCB-CS161) 中。

View file

@ -29,4 +29,4 @@
## 资源汇总 ## 资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS106L - GitHub](https://github.com/PKUFlyingPig/CS106L) 中。 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS106L - GitHub](https://github.com/PKUFlyingPig/CS106L) 中。

View file

@ -25,4 +25,4 @@
## 资源汇总 ## 资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS110L - GitHub](https://github.com/PKUFlyingPig/CS110L) 中。 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS110L - GitHub](https://github.com/PKUFlyingPig/CS110L) 中。

View file

@ -31,4 +31,4 @@ CS61B 和 CS61C 在本书中均有收录。
## 资源汇总 ## 资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPic/CS61A - GitHub](https://github.com/PKUFlyingPig/CS61A) 中。 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPic/CS61A - GitHub](https://github.com/PKUFlyingPig/CS61A) 中。

View file

@ -27,4 +27,4 @@
## 资源汇总 ## 资源汇总
在学习这门课中的作业实现都汇总在 [Duke Coursera Intro C](https://code.haidongji.com/Duke_Coursera_Intro_C/) 中。因为时间关系,我最后一课最后一周的几个作业到目前还没有完成。 @haidongji 在学习这门课中的作业实现都汇总在 [Duke Coursera Intro C](https://code.haidongji.com/Duke_Coursera_Intro_C/) 中。因为时间关系,我最后一课最后一周的几个作业到目前还没有完成。

View file

@ -0,0 +1,17 @@
# MIT: The Missing Semester of Your CS Education
## Descriptions
- Offered by: MIT
- Prerequisites: None
- Programming lanuages: Shell
- Difficulty: 🌟🌟
- Class Hour: 10 hours
Just as the course name indicated, this course will teach the missing things in the university courses. It will cover shell programming, git, vim editor, tmux, ssh, sed, awk and even how to beautify your terminal. Trust me, this will be your first step to become a hacker!
## Resources
- Homepage: <https://missing.csail.mit.edu/>
- Records: <https://www.youtube.com/playlist?list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J>
- Assignments: Some exercises behind each lecture.

View file

@ -21,4 +21,4 @@
## 资源汇总 ## 资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 [skyzluo/CS143-Compilers-Stanford - GitHub](https://github.com/skyzluo/CS143-Compilers-Stanford) 中。 @skyzluo 在学习这门课中用到的所有资源和作业实现都汇总在 [skyzluo/CS143-Compilers-Stanford - GitHub](https://github.com/skyzluo/CS143-Compilers-Stanford) 中。

View file

@ -21,4 +21,4 @@
- 课程网站:[CS148](https://web.stanford.edu/class/cs148/index.html) - 课程网站:[CS148](https://web.stanford.edu/class/cs148/index.html)
- 课程视频:无,直接看[lecture](https://web.stanford.edu/class/cs148/lectures.html)就可以了,也可以参考 GAMES101 视频 - 课程视频:无,直接看[lecture](https://web.stanford.edu/class/cs148/lectures.html)就可以了,也可以参考 GAMES101 视频
- 课程教材Fundamentals of Computer Graphics - 课程教材Fundamentals of Computer Graphics
- 课程作业:[8 个 hw, 1 个 final project](https://web.stanford.edu/class/cs148/assignments.html) - 课程作业:[8 个 hw, 1 个 final project](https://web.stanford.edu/class/cs148/assignments.html)

View file

@ -11,7 +11,6 @@
官方介绍: 官方介绍:
> 本课程将全面而系统地介绍现代计算机图形学的四大组成部分1光栅化成像2几何表示3光的传播理论以及4动画与模拟。每个方面都会从基础原理出发讲解到实际应用并介绍前沿的理论研究。通过本课程你可以学习到计算机图形学背后的数学和物理知识并锻炼实际的编程能力。 > 本课程将全面而系统地介绍现代计算机图形学的四大组成部分1光栅化成像2几何表示3光的传播理论以及4动画与模拟。每个方面都会从基础原理出发讲解到实际应用并介绍前沿的理论研究。通过本课程你可以学习到计算机图形学背后的数学和物理知识并锻炼实际的编程能力。
> 作为入门,本课程会尽可能的覆盖图形学的方方面面,把每一部分的基本概念都尽可能说清楚,让大家对计算机图形学有一个完整的、自上而下的全局把握。全局的理解很重要,学完本课程后,你会了解到图形学不等于 OpenGL不等于光线追踪而是一套生成整个虚拟世界的方法。从本课程的标题大家还可以看到“现代”二字也就是说这门课所要给大家介绍的都是现代化的知识也都是现代图形学工业界需要的图形学基础。 > 作为入门,本课程会尽可能的覆盖图形学的方方面面,把每一部分的基本概念都尽可能说清楚,让大家对计算机图形学有一个完整的、自上而下的全局把握。全局的理解很重要,学完本课程后,你会了解到图形学不等于 OpenGL不等于光线追踪而是一套生成整个虚拟世界的方法。从本课程的标题大家还可以看到“现代”二字也就是说这门课所要给大家介绍的都是现代化的知识也都是现代图形学工业界需要的图形学基础。
GAMES101 是国内相当有名的图形学公开课。和大家印象中满是数学和算法的图形学不同,这门课以十分生动的方式带我们进入了图形学这个领域的大门。 GAMES101 是国内相当有名的图形学公开课。和大家印象中满是数学和算法的图形学不同,这门课以十分生动的方式带我们进入了图形学这个领域的大门。
@ -31,4 +30,4 @@ GAMES101 是国内相当有名的图形学公开课。和大家印象中满是
## 资源汇总 ## 资源汇总
我们在学习这门课中用到的所有资源和作业实现都汇总在[ysj1173886760/Learning: graphics/GAMES101 - GitHub](https://github.com/ysj1173886760/Learning/tree/master/graphics/GAMES101) 中。 @ysj1173886760 在学习这门课中用到的所有资源和作业实现都汇总在[ysj1173886760/Learning: graphics/GAMES101 - GitHub](https://github.com/ysj1173886760/Learning/tree/master/graphics/GAMES101) 中。

View file

@ -27,7 +27,5 @@
- 课程作业共四次作业可见官方BBS小程序或非官方的Repo[GAMES103 HW](https://github.com/indevn/GAMES103/tree/main/HW) - 课程作业共四次作业可见官方BBS小程序或非官方的Repo[GAMES103 HW](https://github.com/indevn/GAMES103/tree/main/HW)
## 资源汇总 ## 资源汇总
我在学习这门课中用到的所有资源和作业要求都汇总在 [GAMES103 Unoffical](https://github.com/indevn/GAMES103) 中。对于作业的具体实现,在知乎上有很多相关文章进行了细致讲解可以参考。
@indevn 在学习这门课中用到的所有资源和作业要求都汇总在 [GAMES103 Unoffical](https://github.com/indevn/GAMES103) 中。对于作业的具体实现,在知乎上有很多相关文章进行了细致讲解可以参考。

View file

@ -21,10 +21,7 @@
## 资源汇总 ## 资源汇总
我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS144-Computer-Network - GitHub](https://github.com/PKUFlyingPig/CS144-Computer-Network) 中。 - [PKUFlyingPig](https://github.com/PKUFlyingPig/CS144-Computer-Network)
### 一些可以参考的博客
- [Lexssama's Blogs](https://lexssama.github.io/tags/CS144/) - [Lexssama's Blogs](https://lexssama.github.io/tags/CS144/)
- [huangrt01](https://github.com/huangrt01/CS-Notes/blob/master/Notes/Output/Computer-Networking-Lab-CS144-Stanford.md) - [huangrt01](https://github.com/huangrt01/CS-Notes/blob/master/Notes/Output/Computer-Networking-Lab-CS144-Stanford.md)
- [kiprey](https://kiprey.github.io/tags/CS144/) - [kiprey](https://kiprey.github.io/tags/CS144/)
@ -33,7 +30,6 @@
- [ViXbob's libsponge](https://vixbob.moe/25.html) - [ViXbob's libsponge](https://vixbob.moe/25.html)
- [吃着土豆坐地铁的博客](https://www.epis2048.net/categories/Code/Stanford-CS144/) - [吃着土豆坐地铁的博客](https://www.epis2048.net/categories/Code/Stanford-CS144/)
- [Smith](https://www.inlighting.org/archives/2021-cs144-notes/) - [Smith](https://www.inlighting.org/archives/2021-cs144-notes/)
- [PKUFlyingPig](https://github.com/PKUFlyingPig/CS144-Computer-Network)
- [星遥见](https://www.cnblogs.com/weijunji/tag/CS144/) - [星遥见](https://www.cnblogs.com/weijunji/tag/CS144/)
- [EIMadrigal](https://www.cnblogs.com/EIMadrigal/p/15500472.html) - [EIMadrigal](https://www.cnblogs.com/EIMadrigal/p/15500472.html)
- [Joey](http://yuzijun.life/2021-02/CS144) - [Joey](http://yuzijun.life/2021-02/CS144)

View file

@ -19,4 +19,4 @@
## 资源汇总 ## 资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/Computer-Network-A-Top-Down-Approach - GitHub](https://github.com/PKUFlyingPig/Computer-Network-A-Top-Down-Approach) 中。 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/Computer-Network-A-Top-Down-Approach - GitHub](https://github.com/PKUFlyingPig/Computer-Network-A-Top-Down-Approach) 中。

View file

@ -0,0 +1,23 @@
# USTC Computer Networking:A Top-Down Approach
## 课程简介
- 所属大学:中国科学技术大学
- 授课教师:郑烇、杨坚
- 先修要求:操作系统(非必需)
- 编程语言:无
- 课程难度:🌟🌟🌟
- 预计学时40 小时
这门课应该是中文互联网上比较火的计算机网络课了,教材采用神书计算机网络(自顶向下方法),授课风格更偏向实际而非纯理论(**强烈建议**先阅读教材预习再看课,否则上课时*可能*会有些懵圈)。
课程内容包括**大部分**自顶向下方法里的内容,同时**涵盖**考试内容,可放心观看。
课程视频是郑烇老师本人在哔哩哔哩上上传的且从2020年至今一直坚持在评论区答疑属实负责且认真。
## 课程资源
- 课程网站:<http://staff.ustc.edu.cn/~qzheng/teaching.html>
- 课程视频:<https://www.bilibili.com/video/BV1JV411t7ow/>
- 课程课件:<http://staff.ustc.edu.cn/~qzheng/cn.zip>
- 课程教材:计算机网络(自顶向下方法 第7版机械工业出版社2016

View file

@ -29,4 +29,6 @@
## 资源汇总 ## 资源汇总
我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/MIT6.031-software-construction - GitHub](https://github.com/PKUFlyingPig/MIT6.031-software-construction) 中。 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/MIT6.031-software-construction - GitHub](https://github.com/PKUFlyingPig/MIT6.031-software-construction) 中。
@pengzhangzhi 完成了这门课的作业并记录了笔记, 代码开源在 [pengzhangzhi/self-taught-CS/Software Construction - Github](https://github.com/pengzhangzhi/self-taught-CS/tree/main/Software%20Construction)。

View file

@ -23,4 +23,4 @@
## 资源汇总 ## 资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS169-Software-Engineering - GitHub](https://github.com/PKUFlyingPig/CS169-Software-Engineering) 中。 @PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS169-Software-Engineering - GitHub](https://github.com/PKUFlyingPig/CS169-Software-Engineering) 中。

View file

@ -12,10 +12,9 @@ copyright: Copyright &copy; 2021-present <a href="https://github.com/PKUFlyingPi
theme: theme:
name: material name: material
language: zh language: zh
static_templates: static_templates:
- 404.html - 404.html
favicon: images/favicon16x16.png
include_search_page: false include_search_page: false
search_index_only: true search_index_only: true
@ -59,7 +58,50 @@ theme:
custom_dir: overrides custom_dir: overrides
markdown_extensions:
- attr_list
- md_in_html
plugins: plugins:
- i18n:
default_language: zh
material_alternate: true
languages:
zh:
name: 简体中文
build: true
en:
name: English
build: true
site_name: CSDIY.wiki
nav_translations:
en:
前言: Foreword
一个仅供参考的CS学习规划: Guideline
必学工具: Productivity Toolkit
好书推荐: Book Recommendation
数学基础: Fundamental Mathematics
数学进阶: Advanced Mathematics
编程入门: Fundamental Programming
电子基础: Fundamental Electronics
数据结构与算法: Data Structures and Algorithms
软件工程: Software Engineering
体系结构: Computer Architecture
操作系统: Operating Systems
并行与分布式系统: Distributed Systems
计算机系统安全: Computer Security
计算机网络: Computer Networking
数据库系统: Database Systems
编译原理: Compilers
计算机图形学: Computer Graphics
Web开发: Web Development
数据科学: Data Science
人工智能: Artificial Intelligence
机器学习: Machine Learning
机器学习系统: Machine Learning Systems
深度学习: Deep Learning
机器学习进阶: Advanced Machine Learning
后记: Postscript
- search: - search:
lang: ja lang: ja
- git-revision-date-localized - git-revision-date-localized
@ -70,6 +112,9 @@ extra:
social: social:
- icon: fontawesome/brands/github - icon: fontawesome/brands/github
link: https://github.com/pkuflyingpig/cs-self-learning/ link: https://github.com/pkuflyingpig/cs-self-learning/
analytics:
provider: google
property: G-KJB4RXSKZG
nav: nav:
- 前言: "index.md" - 前言: "index.md"
@ -84,6 +129,7 @@ nav:
- LaTeX: "必学工具/LaTeX.md" - LaTeX: "必学工具/LaTeX.md"
- Docker: "必学工具/Docker.md" - Docker: "必学工具/Docker.md"
- 实用工具箱: "必学工具/tools.md" - 实用工具箱: "必学工具/tools.md"
- 毕业论文: "必学工具/thesis.md"
- 好书推荐: "好书推荐.md" - 好书推荐: "好书推荐.md"
- 数学基础: - 数学基础:
- "MIT18.01/18.02: Calculus": "数学基础/MITmaths.md" - "MIT18.01/18.02: Calculus": "数学基础/MITmaths.md"
@ -101,6 +147,7 @@ nav:
- "Harvard CS50: This is CS50x": "编程入门/CS50.md" - "Harvard CS50: This is CS50x": "编程入门/CS50.md"
- "UCB CS61A: Structure and Interpretation of Computer Programs": "编程入门/CS61A.md" - "UCB CS61A: Structure and Interpretation of Computer Programs": "编程入门/CS61A.md"
- "Duke University: Introductory C Programming Specialization": "编程入门/Duke-Coursera-Intro-C.md" - "Duke University: Introductory C Programming Specialization": "编程入门/Duke-Coursera-Intro-C.md"
- "Stanford CS106B/X": "编程入门/CS106B_CS106X.md"
- "Stanford CS106L: Standard C++ Programming": "编程入门/CS106L.md" - "Stanford CS106L: Standard C++ Programming": "编程入门/CS106L.md"
- "Stanford CS110L: Safety in Systems Programming": "编程入门/CS110L.md" - "Stanford CS110L: Safety in Systems Programming": "编程入门/CS110L.md"
- 电子基础: - 电子基础:
@ -110,7 +157,6 @@ nav:
- 数据结构与算法: - 数据结构与算法:
- "UCB CS61B: Data Structures and Algorithms": "数据结构与算法/CS61B.md" - "UCB CS61B: Data Structures and Algorithms": "数据结构与算法/CS61B.md"
- "Coursera: Algorithms I & II": "数据结构与算法/Algo.md" - "Coursera: Algorithms I & II": "数据结构与算法/Algo.md"
- "Stanford CS106B/X": "数据结构与算法/CS106B_CS106X.md"
- "UCB CS170: Efficient Algorithms and Intractable Problems": "数据结构与算法/CS170.md" - "UCB CS170: Efficient Algorithms and Intractable Problems": "数据结构与算法/CS170.md"
- 软件工程: - 软件工程:
- "MIT 6.031: Software Construction": "软件工程/6031.md" - "MIT 6.031: Software Construction": "软件工程/6031.md"
@ -123,6 +169,7 @@ nav:
- 操作系统: - 操作系统:
- "MIT 6.S081: Operating System Engineering": "操作系统/MIT6.S081.md" - "MIT 6.S081: Operating System Engineering": "操作系统/MIT6.S081.md"
- "UCB CS162: Operating System": "操作系统/CS162.md" - "UCB CS162: Operating System": "操作系统/CS162.md"
- "NJU OS: Operating System Design and Implementation": "操作系统/NJUOS.md"
- 并行与分布式系统: - 并行与分布式系统:
- "CMU 15-418/Stanford CS149: Parallel Computing": "并行与分布式系统/CS149.md" - "CMU 15-418/Stanford CS149: Parallel Computing": "并行与分布式系统/CS149.md"
- "MIT 6.824: Distributed System": "并行与分布式系统/MIT6.824.md" - "MIT 6.824: Distributed System": "并行与分布式系统/MIT6.824.md"
@ -130,11 +177,13 @@ nav:
- "UCB CS161: Computer Security": "系统安全/CS161.md" - "UCB CS161: Computer Security": "系统安全/CS161.md"
- "MIT 6.858: Computer System Security": "系统安全/MIT6.858.md" - "MIT 6.858: Computer System Security": "系统安全/MIT6.858.md"
- 计算机网络: - 计算机网络:
- "USTC Computer Networking:A Top-Down Approach": "计算机网络/topdown_ustc.md"
- "Computer Networking: A Top-Down Approach": "计算机网络/topdown.md" - "Computer Networking: A Top-Down Approach": "计算机网络/topdown.md"
- "Stanford CS144: Computer Network": "计算机网络/CS144.md" - "Stanford CS144: Computer Network": "计算机网络/CS144.md"
- 数据库系统: - 数据库系统:
- "UCB CS186: Introduction to Database System": "数据库系统/CS186.md" - "UCB CS186: Introduction to Database System": "数据库系统/CS186.md"
- "CMU 15-445: Database Systems": "数据库系统/15445.md" - "CMU 15-445: Database Systems": "数据库系统/15445.md"
- "Caltech CS122: Database System Implementation": "数据库系统/CS122.md"
- 编译原理: - 编译原理:
- "Stanford CS143: Compilers": "编译原理/CS143.md" - "Stanford CS143: Compilers": "编译原理/CS143.md"
- 计算机图形学: - 计算机图形学:
@ -145,6 +194,7 @@ nav:
- Web开发: - Web开发:
- "MIT web development course": "Web开发/mitweb.md" - "MIT web development course": "Web开发/mitweb.md"
- "Stanford CS142: Web Applications": "Web开发/CS142.md" - "Stanford CS142: Web Applications": "Web开发/CS142.md"
- "University of Helsinki: Full Stack open 2022": "Web开发/fullstackopen.md"
- 数据科学: - 数据科学:
- "UCB Data100: Principles and Techniques of Data Science": "数据科学/Data100.md" - "UCB Data100: Principles and Techniques of Data Science": "数据科学/Data100.md"
- 人工智能: - 人工智能:
@ -155,6 +205,9 @@ nav:
- "Coursera: Machine Learning": "机器学习/ML.md" - "Coursera: Machine Learning": "机器学习/ML.md"
- "Stanford CS229: Machine Learning": "机器学习/CS229.md" - "Stanford CS229: Machine Learning": "机器学习/CS229.md"
- "UCB CS189: Introduction to Machine Learning": "机器学习/CS189.md" - "UCB CS189: Introduction to Machine Learning": "机器学习/CS189.md"
- 机器学习系统:
- "Machine Learning Compilation": "机器学习系统/MLC.md"
- "CMU 10-414/714: Deep Learning Systems": "机器学习系统/CMU10-414.md"
- 深度学习: - 深度学习:
- "Coursera: Deep Learning": "深度学习/CS230.md" - "Coursera: Deep Learning": "深度学习/CS230.md"
- "国立台湾大学:李宏毅机器学习": "深度学习/LHY.md" - "国立台湾大学:李宏毅机器学习": "深度学习/LHY.md"

View file

@ -2,3 +2,4 @@ mkdocs-material==7.3.6
mkdocs-minify-plugin >= 0.4.0 mkdocs-minify-plugin >= 0.4.0
mkdocs-git-revision-date-localized-plugin >= 0.9.3 mkdocs-git-revision-date-localized-plugin >= 0.9.3
jinja2==3.0.0 jinja2==3.0.0
mkdocs-static-i18n==0.46

19
template.en.md Normal file
View file

@ -0,0 +1,19 @@
# Course Code: Course Name
## Descriptions
- Offered by:
- Prerequisites:
- Programming lanuages:
- Difficulty:
- Class Hour:
<!-- Course Information -->
## Resources
- Homepage:
- Records:
- Textbooks & Notes & Slides:
- Assignments:
- ...

View file

@ -8,6 +8,14 @@
- 课程难度:🌟🌟🌟 - 课程难度:🌟🌟🌟
- 预计学时: - 预计学时:
<!-- 用一两段话介绍这门课程,内容包括但不限于:
1课程覆盖的知识点范围
2与同类课程相比它的优势与特点
3学习这门课程的体验与感受
4自学这门课的注意点踩过的坑、难度预警等等
5... ...
-->
## 课程资源 ## 课程资源
- 课程网站: - 课程网站:
@ -17,7 +25,7 @@
## 资源汇总 ## 资源汇总
在学习这门课中用到的所有资源和作业实现都汇总在 [user/repo - GitHub](https://github.com/user/repo) 中。 @XXX 在学习这门课中用到的所有资源和作业实现都汇总在 [user/repo - GitHub](https://github.com/user/repo) 中。
## 备注 ## 备注