diff --git a/docs/CS学习规划.md b/docs/CS学习规划.md index 26b88a2a..c9498ddf 100644 --- a/docs/CS学习规划.md +++ b/docs/CS学习规划.md @@ -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 课程列表。 diff --git a/docs/体系结构/CS61C.md b/docs/体系结构/CS61C.md index de1e4a94..d608dbe3 100644 --- a/docs/体系结构/CS61C.md +++ b/docs/体系结构/CS61C.md @@ -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 diff --git a/docs/体系结构/CSAPP.md b/docs/体系结构/CSAPP.md index 38842d59..8af3b79d 100644 --- a/docs/体系结构/CSAPP.md +++ b/docs/体系结构/CSAPP.md @@ -22,8 +22,8 @@ CMU 大名鼎鼎的镇系神课,以其内容庞杂,Project 巨难而闻名 - 课程网站: - 课程视频: - - [九曲阑干](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,对计算机系统有一定的了解以后作为补充资料来阅读。 diff --git a/docs/好书推荐.md b/docs/好书推荐.md index 09876714..c2885930 100644 --- a/docs/好书推荐.md +++ b/docs/好书推荐.md @@ -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 - - 从密码学的最基础开始讲起,对传统密码学的各方面都有涉及,课程内容全面,是密码学入门很好的一本书 ## 数据库系统 diff --git a/docs/操作系统/CS162.md b/docs/操作系统/CS162.md index 52d8583c..8ba304ea 100644 --- a/docs/操作系统/CS162.md +++ b/docs/操作系统/CS162.md @@ -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 配置了跨平台的实验环境,想自学的同学可以按文档自行学习。在毕业前的最后一个学期,希望能用这样的尝试,让更多人爱上系统领域,为国内的系统研究添砖加瓦。 ## 课程资源 diff --git a/docs/操作系统/MIT6.S081.md b/docs/操作系统/MIT6.S081.md index fc53f51c..740a94e7 100644 --- a/docs/操作系统/MIT6.S081.md +++ b/docs/操作系统/MIT6.S081.md @@ -22,15 +22,18 @@ - 课程网站: - 课程视频:,每节课的链接详见课程网站 - - 课程视频翻译文档: - - [xv6 操作系统的深入讲解](https://space.bilibili.com/1040264970/) +- 课程视频翻译文档: - 课程教材: - - [xv6 中文文档](https://th0ar.gitbooks.io/xv6-chinese/content/index.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