cs-self-learning/docs/编程入门/CS110L.en.md
2022-09-30 15:18:12 +08:00

28 lines
No EOL
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 about 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 the fundamental features of C and its efficiency still make it impossible to replace it in systems-level programming by other higher-level languages such as Java, which have embedded garbage collection mechanisms. Whereas Rust aims to build on the efficiency of C and make up for its lack of security. Therefore, Rust was designed with much ideology of system programming. By learning Rust, you will also be able to write a safer and more elegant system-level code (e.g., operating systems, etc.) in C afterwards.
The latter part of this course focuses on the topic of concurrency, where you will systematically master multi-processing, multi-threading, event-driven concurrency, and several other concurrency techniques, and in the second project will compare the advantages and disadvantages of each. The concept of "futures" in Rust is fascinating and elegant, and those basics will help you in your following studies in computer systems-related courses. In addition, Tsinghua University's operating system experiment rCore is based on Rust, see the [documentation](https://rcore-os.github.io/rCore-Tutorial-Book-v3/index.html) for details.
## Course Resources
- Course Website: https://reberhardt.com/cs110l/spring-2020/
- Recordings: <https://youtu.be/j7AQrtLevUE<https://youtu.be/j7AQrtLevUE>
- Textbook: None
- Assignments6 Labs, 2 Projects, the course website has specific requirements. There are two interesting Projects for the course, which are
1. Implement a GDB-like debugger in Rust
2. Implement a Balancebeam 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)