Merge branch 'PKUFlyingPig:master' into master

This commit is contained in:
Lingkang 2022-10-03 20:14:58 +08:00 committed by GitHub
commit 1d71cf1a30
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 158 additions and 4 deletions

View file

@ -0,0 +1,54 @@
# MIT 6.S081: Operating System Engineering
## Descriptions
- Offered by: MIT
- Prerequisites: Computer Architecture + Solid C Programming Skills + RISC-V Assembly
- Programming Languages: C, RISC-V
- Difficulty🌟🌟🌟🌟🌟
- Class Hour150 hours
This is the undergraduate operating system course at MIT, offered by the well-known PDOS Group. One of the instructors, Robert Morris, was once a famous hacker who created 'Morris', the first worm virus in the world.
The predecessor of this course was the famous MIT6.828. The same instructors at MIT created an educational operating system called JOS based on x86, which has been adopted by many other famous universities. While after the birth of RISC-V, they implemented it based on RISC-V, and offered MIT 6.S081. RISC-V is lightweight and user-friendly, so students don't have to struggle with the confusing legacy features in x86 as in JOS, but focus on the operating system design and implementation.
The instructors have also written a [tutorial](https://pdos.csail.mit.edu/6.828/2021/xv6/book-riscv-rev2.pdf), elaborately explaining the ideas of design and details of the implementation of xv6 operating system.
The teaching style of this course is also interesting, the instructors guided the students to understand the numerous technical challenges and design principles in the operating systems by going through the xv6 source code, instead of merely teaching theoretical knowledge. Weekly Labs will let you add new features to xv6, which focus on enhancing students' practical skills. There are 11 labs in total during the whole semester which give you the chance to understand every aspect of the operating systems, bringing a great sense of achievement. Each lab has a complete framework for testing, some tests are more than a thousand lines of code, which shows how much effort the instructors have made to teach this course well.
In the second half of the course, the instructors will discuss a couple of classic papers in the operating system field, covering file systems, system security, networking, virtualization, and so on, giving you a chance to have a taste of the cutting edge research directions in the academic field.
## Course Resources
- Course Website: <https://pdos.csail.mit.edu/6.828/2021/schedule.html>
- Lecture Videos<https://www.youtube.com/watch?v=L6YqHxYHa7A>, videos for each lecture can be found on the course website.
- Translated documentation(Chinese) of Lecture videos: <https://mit-public-courses-cn-translatio.gitbook.io/mit6-s081/>
- Text Book: <https://pdos.csail.mit.edu/6.828/2021/xv6/book-riscv-rev2.pdf>
- Assignments: <https://pdos.csail.mit.edu/6.828/2021/schedule.html>, 11 labs, can be found on the course website.
## xv6 Resources
- [Detailed Explanation of xv6](https://space.bilibili.com/1040264970/)
- [xv6 Documentation(Chinese)](https://th0ar.gitbooks.io/xv6-chinese/content/index.html)
## Complementary Resources
All resources used and assignments implemented by @PKUFlyingPig when learning this course are in [PKUFlyingPig/MIT6.S081-2020fall - GitHub][github_pkuflyingpig].
@[KuangjuX][KuangjuX] documented his [solutions][solution_kuangjux] with detailed explanations and complementary knowledge. Moreover, @[KuangjuX][KuangjuX] has reimplemented [the xv6 operating system in Rust][xv6-rust] which contains more detailed reviews and discussions about xv6.
[github_pkuflyingpig]: https://github.com/PKUFlyingPig/MIT6.S081-2020fall
[KuangjuX]: https://github.com/KuangjuX
[solution_kuangjux]: https://github.com/KuangjuX/xv6-riscv-solution
[xv6-rust]: https://github.com/Ko-oK-OS/xv6-rust
### Some Blogs for References
- [doraemonzzz](http://doraemonzzz.com/tags/6-S081/)
- [Xiao Fan (樊潇)](https://fanxiao.tech/posts/MIT-6S081-notes/)
- [Miigon's blog](https://blog.miigon.net/categories/mit6-s081/)
- [Zhou Fang](https://walkerzf.github.io/categories/6-S081/index.html)
- [Yichun's Blog](https://www.yichuny.page/tags/Operating%20System)
- [解析Ta](https://blog.csdn.net/u013577996/article/details/108679997)
- [PKUFlyingPig](https://github.com/PKUFlyingPig/MIT6.S081-2020fall)
- [星遥见](https://www.cnblogs.com/weijunji/tag/XV6/)

View file

@ -24,4 +24,4 @@ In addition to the Homework, nine Labs will allow you to use probability theory
## Personal Resources ## Personal Resources
All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPic/EECS126 - GitHub](https://github.com/PKUFlyingPig/EECS126) All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPig/EECS126 - GitHub](https://github.com/PKUFlyingPig/EECS126)

View file

@ -0,0 +1,23 @@
# UCB CS186: Introduction to Database System
## Descriptions
- Offered by: UC Berkeley
- Prerequisites: CS61A, CS61B, CS61C
- Programming Languages: Java
- Difficulty: 🌟🌟🌟🌟🌟
- Class Hour: 150 hours
How to write SQL queries? How are SQL commands disassembled, optimized, and transformed into on-disk query commands step by step? How to implement a high-concurrency database? How to implement database failure recovery? What is NoSQL? This course elaborates on the internal details of relational databases. Besides the theoretical knowledge, you will use Java to implement a real relational database that supports SQL concurrent query, B+ tree index, and failure recovery.
From a practical point of view, you will have the opportunity to write SQL queries and NoSQL queries in course projects, which is very helpful for building full-stack projects.
## Course Resources
- Course Website: <https://cs186berkeley.net/>
- Recordings: <https://www.youtube.com/playlist?list=PLYp4IGUhNFmw8USiYMJvCUjZe79fvyYge>
- Assignments: <https://cs186.gitbook.io/project/>
## Personal Resources
All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPig/CS186 - GitHub](https://github.com/PKUFlyingPig/CS186).

View file

@ -0,0 +1,21 @@
# UCB EE120: Signal and Systems
## Descriptions
- Offered by: UC Berkeley
- Prerequisites: CS61A, CS70, Calculus, Linear Algebra
- Programming Languages: Python
- Difficulty: 🌟🌟🌟🌟🌟
- Class Hour: 100 hours
The highlight of this course is the six exciting labs that will allow you to use signals and systems theory to solve practical problems in Python. For example, in lab3 you will implement the FFT algorithm and compare the performance with Numpy's official implementation. In lab4 you will infer the heart rate by processing the video of fingers. Lab5 is the most awesome one where you will reduce the noise in the photos taken by the Hubble telescope to recover the brilliant and bright starry sky. In lab6 you will build a feedback system to stabilize the pole on the cart.
## Course Resources
- Course Website: <https://inst.eecs.berkeley.edu/~ee120/fa19/>
- Recordings: refer to course website
- Assignments: refer to course website
## Personal Resources
All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPig/UCB-EE120 - GitHub](https://github.com/PKUFlyingPig/UCB-EE120)

View file

@ -0,0 +1,28 @@
# CS110L: Safety in Systems Programming
## Descriptions
- Offered by: Stanford
- Prerequisites: basic knowledge about programming and computer system
- Programming Languages: Rust
- Difficulty: 🌟🌟🌟
- Class Hour: 30 hours
In this course, you will learn a fantastic language, Rust.
If you have studied C and have some knowledge of systems programming, you should have heard about memory leaks and the danger of pointers, but C's high efficiency makes it impossible to be replaced by other higher-level languages with garbage collection such as Java in system-level programming. Whereas Rust aims to make up for C's lack of security while having competitive efficiency. Therefore, Rust was designed from a system programmer's point of view. By learning Rust, you will learn the principles to write safer and more elegant system code (e.g., operating systems, etc.).
The latter part of this course focuses on the topic of concurrency, where you will systematically learn multi-processing, multi-threading, event-driven programming, and several other techniques. In the second project, you will compare the pros and cons of each method.
Personally, I find the concept of "futures" in Rust fascinating and elegant, and mastering this idea will help you in your following systems-related courses. In addition, Tsinghua University's operating system lab, rCore is based on Rust. You can see the [documentation](https://rcore-os.github.io/rCore-Tutorial-Book-v3/index.html) for more details.
## Course Resources
- Course Website: <https://reberhardt.com/cs110l/spring-2020/>
- Recordings: <https://youtu.be/j7AQrtLevUE>
- Textbook: None
- Assignments6 Labs, 2 Projects, the course website has specific requirements. The projects are quite interesting where you will Implement a GDB-like debugger and a load balancer in Rust.
## Personal Resources
All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPig/CS110L - GitHub](https://github.com/PKUFlyingPig/CS110L)

View file

@ -31,4 +31,4 @@ Note: If you have no prior programming experience at all, getting started with C
## Personal Resources ## Personal Resources
All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPic/CS61A - GitHub](https://github.com/PKUFlyingPig/CS61A) All the resources and assignments used by @PKUFlyingPig in this course are maintained in [PKUFlyingPig/CS61A - GitHub](https://github.com/PKUFlyingPig/CS61A)

View file

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

View file

@ -0,0 +1,29 @@
# Introductory C Programming Specialization
## Descriptions
- Offered by: Duke
- Prerequisites: None
- Programming Languages: C
- Difficulty: 🌟🌟🌟🌟
- Class Hour: 110 hours
This is an excellent course which I benefited a lot from.
- The course teaches fundamental concepts such as frame, stack memory, heap memory, etc.
- There are great programming assignments to deepen and reinforce your understanding of the hardest part in C, like pointers.
- The course provides excellent practice in GDB, Valgrind, and the assignments will cover some basic Git exercises.
- The course instructor recommends using Emacs for homework, so it's a good opportunity to learn Emacs. If you already know how to use Vim, I suggest you use Evil. This way you don't lose the editing capabilities of Vim, and you get to experience the power of Emacs. Having both Emacs and Vim in your kit will increase your efficiency considerably. Emacs' org-mode, smooth integration of GDB, etc., are convenient for developers.
- It may require payment, but I think it's worth it.
- Although this is an introductory course, it has both breadth and depth.
## Course Resources
- Course Website: <https://www.coursera.org/specializations/c-programming>
- Recordings: refer to course website
- Textbook: refer to course website
- Assignments: refer to course website
## Personal Resources
All the resources and assignments used by in this course are maintained in [Duke Coursera Intro C](https://code.haidongji.com/Duke_Coursera_Intro_C/). Several assignments have not been completed so far for time reasons.

View file

@ -15,7 +15,6 @@
- 非常好的 GDBValgrind 上手训练,作业也会涉及一些基本的 Git 练习。 - 非常好的 GDBValgrind 上手训练,作业也会涉及一些基本的 Git 练习。
- 老师建议作业用 Emacs所以对 Emacs 小白来说,是个不错的入门。如果你会用 Vim ,我建议你用 Evil 插件。这样你不会丢掉 Vim 的编辑功能,同时可以体会 Emacs 的强大。工具箱里同时有 Emacs 和 Vim 时效率会有不少提高。Emacs 的 org-mode和 GDB 的顺滑整合,等等等等,都会让你如虎添翼。 - 老师建议作业用 Emacs所以对 Emacs 小白来说,是个不错的入门。如果你会用 Vim ,我建议你用 Evil 插件。这样你不会丢掉 Vim 的编辑功能,同时可以体会 Emacs 的强大。工具箱里同时有 Emacs 和 Vim 时效率会有不少提高。Emacs 的 org-mode和 GDB 的顺滑整合,等等等等,都会让你如虎添翼。
- 虽然可能需要付费,但我觉得值。 - 虽然可能需要付费,但我觉得值。
- Coursera 把这一大课分成了四个小课,但小课之间的作业文件的转移并不顺利。这是个有点讨厌的地方。幸运的是,后面的小课可以给以前小课的作业打分,所以我是接着把前面的作业又做了一遍。权当巩固,效果不错。
- 虽说课名是入门,但兼具广度和深度。 - 虽说课名是入门,但兼具广度和深度。
## 课程资源 ## 课程资源