[Edit] refine some sentences
This commit is contained in:
parent
cac3ca613c
commit
afeacfbbb3
|
|
@ -28,7 +28,7 @@ IDE (Integrated Development Environment):集成开发环境,说白了就是
|
|||
|
||||
[CMake](必学工具/CMake.md):一款功能比 GNU Make 更为强大的构建工具,建议掌握 GNU Make 之后再加以学习。
|
||||
|
||||
[LaTex](必学工具/LaTeX.md):~~逼格提升~~论文排版工具。
|
||||
[LaTex](必学工具/LaTeX.md):~~逼格提升~~ 论文排版工具。
|
||||
|
||||
[Docker](必学工具/Docker.md):一款相较于虚拟机更轻量级的软件打包与环境部署工具。
|
||||
|
||||
|
|
@ -338,7 +338,7 @@ More contents under construction.
|
|||
|
||||
> 授人以鱼不如授人以渔。
|
||||
|
||||
以上的课程规划难免有强烈的个人倾向和喜好,不一定适合所有人,更多的是起到抛砖引玉的作用。如果你想挑选自己感兴趣的方向和内容加以学习,可以参考我在下面列出来的资源。
|
||||
以上的课程规划难免带有强烈的个人偏好,不一定适合所有人,更多是起到抛砖引玉的作用。如果你想挑选自己感兴趣的方向和内容加以学习,可以参考我在下面列出来的资源。
|
||||
|
||||
- [MIT OpenCourseWare](https://ocw.mit.edu/): 麻省理工学院的课程资源开放共享项目,收录了数以千计的各科课程资源,其中计算机类的课号是 6.xxx。
|
||||
- [MIT CS Course List](http://student.mit.edu/catalog/m6a.html): 麻省理工学院的 CS 课程列表。
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
- 预计学时:100 小时
|
||||
|
||||
伯克利 CS61 系列的最后一门课程,深入计算机的硬件细节,带领学生逐步理解 C 语言是如何一步步转化为 RISC-V 汇编并在 CPU 上执行的。和 [Nand2Tetris](./N2T.md) 不同,这门课
|
||||
在难度和深度上都会大很多,具体会涉及到流水线、Cache、虚存以及并发相关的内容。
|
||||
在难度和深度上都会提高很多,具体会涉及到流水线、Cache、虚存以及并发相关的内容。
|
||||
|
||||
这门课的 Project 也非常新颖有趣。Project1 会让你用 C 语言写一个小程序,20 年秋季学期是著名的游戏 *Game of Life*。Project2 会让你用 RISC-V 汇编编写一个神经网络,用来
|
||||
识别 MNIST 手写数字,非常锻炼你对汇编代码的理解和运用。Project3 中你会用 Logisim 这个数字电路模拟软件搭建出一个二级流水线的 CPU,并在上面运行 RISC-V 汇编代码。Project4
|
||||
|
|
|
|||
|
|
@ -22,8 +22,8 @@ CMU 大名鼎鼎的镇系神课,以其内容庞杂,Project 巨难而闻名
|
|||
|
||||
- 课程网站:<http://csapp.cs.cmu.edu/>
|
||||
- 课程视频:<https://www.bilibili.com/video/BV1iW411d7hd>
|
||||
- [九曲阑干](https://space.bilibili.com/354767108/)对 CSAPP 的[中文讲解](https://www.bilibili.com/video/BV1cD4y1D7uR)(据说CMU的中国留学生也在CMU的课堂上看这个视频呢)
|
||||
- 课程教材:Computer Systems: A Programmer's Perspective, 3/E
|
||||
- 课程作业:11 个 Project,[代码框架全部开源](http://csapp.cs.cmu.edu/3e/labs.html)
|
||||
|
||||
补充:相信大家在看完 CSAPP 这本书以后,可能会对书中的第七章链接有一定的疑问。这里推荐一本书《程序员的自我修养》,书的副标题是链接,装载与库。这本书能够帮助我们完善对程序链接的理解,以及对 CSAPP 第七章部分知识点的一个详细的阐述。相信你在看完这本书以后可以对程序的链接,ELF 文件,动态库有一个更加深入的理解。十分推荐在读完 CSAPP,对计算机系统有一定的了解以后作为补充资料来阅读。
|
||||
补充:
|
||||
英语有困难的同学可以参考B站UP主[九曲阑干](https://space.bilibili.com/354767108/)对 CSAPP 的[中文讲解](https://www.bilibili.com/video/BV1cD4y1D7uR)(据说CMU的中国留学生也在CMU的课堂上看这个视频呢)。另外如果大家在看完 CSAPP 后对书中的第七章链接有一定的疑问,推荐阅读《程序员的自我修养》这本书,书的副标题是链接,装载与库。这本书能够帮助我们完善对程序链接的理解,相信你在看完这本书以后可以对程序的链接,ELF 文件,动态库都将有一个更加深入的理解。十分推荐在读完 CSAPP,对计算机系统有一定的了解以后作为补充资料来阅读。
|
||||
|
|
|
|||
|
|
@ -52,10 +52,8 @@
|
|||
|
||||
## 密码学
|
||||
|
||||
- Introduction to modern cryptography (second edition) by Jonathon Katz & Yehuda Lindell
|
||||
- Cryptography Engineering: Design Principles and Practical Applications
|
||||
- Introduction to modern cryptography (second edition)
|
||||
- By Jonathon Katz & Yehuda Lindell
|
||||
- 从密码学的最基础开始讲起,对传统密码学的各方面都有涉及,课程内容全面,是密码学入门很好的一本书
|
||||
|
||||
## 数据库系统
|
||||
|
||||
|
|
|
|||
|
|
@ -10,17 +10,17 @@
|
|||
|
||||
这门课让我记忆犹新的有两个部分:
|
||||
|
||||
首先是教材,这本书用的教材 *Operating Systems: Principles and Practice (2nd Edition)* 一共四卷,写得非常深入浅出,很好地弥补了 MIT6.S081 在理论知识上些许空白,非常建议大家阅读。相关资源会分享在本书的经典书籍推荐模块。
|
||||
首先是教材,这本书用的教材 *Operating Systems: Principles and Practice (2nd Edition)* 一共四卷,写得非常深入浅出,很好地弥补了 MIT6.S081 在理论知识上的些许空白,非常建议大家阅读。相关资源会分享在本书的经典书籍推荐模块。
|
||||
|
||||
其次是这门课的 Project —— Pintos。Pintos 是由 Ben Pfaff 等人基于 x86 编写的教学用操作系统,Ben Pfaff 甚至专门发了篇 [paper](https://benpfaff.org/papers/pintos.pdf) 来阐述 Pintos 的设计思想。
|
||||
其次是这门课的 Project —— Pintos。Pintos 是由 Ben Pfaff 等人在 x86 平台上编写的教学用操作系统,Ben Pfaff 甚至专门发了篇 [paper](https://benpfaff.org/papers/pintos.pdf) 来阐述 Pintos 的设计思想。
|
||||
|
||||
和 MIT 的 xv6 小而精的 lab 设计理念不同,Pintos 更注重系统的 Design and Implementation。Pintos 本身仅一万行左右,只提供了操作系统最基本的功能。而 4 个Project,就是让你在这个极为精简的操作系统之上,分别为其增加线程调度机制 (Project1),系统调用 (Project2),虚拟内存 (Project3) 以及文件系统 (Project4)。所有的 Project 都给学生留有很大的设计空间,总代码量在 5000 行以上。根据 Stanford 学生[自己的反馈][quora_link],在 3-4 人组队的情况下,后两个 Project 的人均耗时也在 40 个小时以上。
|
||||
和 MIT 的 xv6 小而精的 lab 设计理念不同,Pintos 更注重系统的 Design and Implementation。Pintos 本身仅一万行左右,只提供了操作系统最基本的功能。而 4 个Project,就是让你在这个极为精简的操作系统之上,分别为其增加线程调度机制 (Project1),系统调用 (Project2),虚拟内存 (Project3) 以及文件系统 (Project4)。所有的 Project 都给学生留有很大的设计空间,总代码量在 2000 行左右。根据 Stanford 学生[自己的反馈][quora_link],在 3-4 人组队的情况下,后两个 Project 的人均耗时也在 40 个小时以上。
|
||||
|
||||
[quora_link]: https://www.quora.com/What-is-it-like-to-take-CS-140-Operating-Systems-at-Stanford
|
||||
|
||||
虽然其难度很大,但 Stanford, Berkeley, JHU 等多所美国顶尖名校的操统课程均采用了 Pintos。因为如果你真的对操作系统很感兴趣,Pintos 会极大地提高你编写和 debug 底层系统代码的能力。在本科阶段,能自己设计、实现并 debug 一个大型系统,是一段非常珍贵的经历。
|
||||
虽然难度很大,但 Stanford, Berkeley, JHU 等多所美国顶尖名校的操统课程均采用了 Pintos。如果你真的对操作系统很感兴趣,Pintos 会极大地提高你编写和 debug 底层系统代码的能力。在本科阶段,能自己设计、实现并 debug 一个大型系统,是一段非常珍贵的经历。
|
||||
|
||||
北大 2022 年春季学期的操作系统实验班也将会首次引入 Pintos 作为课程 Project,我作为这门课的 TA,顶着被口水淹没的风险,依旧希望能用这样的尝试,让更多人爱上系统领域,为国内的系统研究添砖加瓦。
|
||||
北大 2022 年春季学期的操作系统实验班也将会首次引入 Pintos 作为课程 Project。我和该课程的[另一位助教](https://github.com/AlfredThiel)整理并完善了 Pintos 的[实验文档](https://alfredthiel.gitbook.io/pintosbook/),并利用 Docker 配置了跨平台的实验环境,想自学的同学可以按文档自行学习。在毕业前的最后一个学期,希望能用这样的尝试,让更多人爱上系统领域,为国内的系统研究添砖加瓦。
|
||||
|
||||
## 课程资源
|
||||
|
||||
|
|
|
|||
|
|
@ -22,15 +22,18 @@
|
|||
|
||||
- 课程网站:<https://pdos.csail.mit.edu/6.828/2021/schedule.html>
|
||||
- 课程视频:<https://www.youtube.com/watch?v=L6YqHxYHa7A>,每节课的链接详见课程网站
|
||||
- 课程视频翻译文档:<https://mit-public-courses-cn-translatio.gitbook.io/mit6-s081/>
|
||||
- [xv6 操作系统的深入讲解](https://space.bilibili.com/1040264970/)
|
||||
- 课程视频翻译文档:<https://mit-public-courses-cn-translatio.gitbook.io/mit6-s081/>
|
||||
- 课程教材:<https://pdos.csail.mit.edu/6.828/2021/xv6/book-riscv-rev2.pdf>
|
||||
- [xv6 中文文档](https://th0ar.gitbooks.io/xv6-chinese/content/index.html)
|
||||
- 课程作业:<https://pdos.csail.mit.edu/6.828/2021/schedule.html>,11个lab,具体要求详见课程网站
|
||||
|
||||
## xv6 补充资源
|
||||
|
||||
- [xv6 操作系统的深入讲解](https://space.bilibili.com/1040264970/)
|
||||
- [xv6 中文文档](https://th0ar.gitbooks.io/xv6-chinese/content/index.html)
|
||||
|
||||
## 资源汇总
|
||||
|
||||
我在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/MIT6.S081-2020fall - GitHub][github_pkuflyingpig] 中。此外也可以参考 [KuangjuX] 实现的 MIT 6.S081 的几个 lab 的[题解][solution_kuangjux],里面亦有详细的解法和补充知识,另外,[KuangjuX] 也使用 Rust 语言重新实现过 xv6-riscv 操作系统:[xv6-rust],里面对于 xv6-riscv 有更为详细的思考和讨论,感兴趣的同学可以看一下哦。
|
||||
我在学习这门课中用到的所有资源和作业实现都汇总在 [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
|
||||
[KuangjuX]: https://github.com/KuangjuX
|
||||
|
|
|
|||
Loading…
Reference in New Issue