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 for more details.
Course Resources
- Course Website: https://reberhardt.com/cs110l/spring-2020/
- Recordings: https://youtu.be/j7AQrtLevUE
- Textbook: None
- Assignments: 6 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
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 for more details.
Course Resources
- Course Website: https://reberhardt.com/cs110l/spring-2020/
- Recordings: https://youtu.be/j7AQrtLevUE
- Textbook: None
- Assignments: 6 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
Due to the rapid evolution of Rust, the libraries used in the 2020 version of the course project are obsolete, so @fung-hwang tried to adapt these libraries (in November 2022). His adaptation advice and completed assignments are maintained in fung-hwang/CS110L-2020spr - GitHub. It is possible that Rust and these libraries will have changed again when you start to learn CS110L, but you can still refer to this repo for help.
CS110L: Safety in Systems Programming
课程简介
- 所属大学:Stanford
- 先修要求:最好有一定的编程背景并对计算机系统有初步的认识。
- 编程语言:Rust
- 课程难度:🌟🌟🌟
- 预计学时:30 小时
在这门课中你将会学习 Rust 这门神奇的语言。
如果你学过 C 并接触过一些系统编程的话,应该对 C 的内存泄漏以及指针的危险有所耳闻,但 C 的底层特性以及高效仍然让它在系统级编程中无法被例如 Java 等自带垃圾收集机制的高级语言所替代。而 Rust 的目标则是希望在 C 的高效基础上,弥补其安全不足的缺点。因此 Rust 在设计之初,就有带有很多系统编程的观点。学习 Rust,也能让你之后能用 C 语言编写出更安全更优雅的系统级代码(例如操作系统等)。
这门课的后半部分关注在并发(concurrency)这一主题上,你将会系统地掌握多进程、多线程、基于事件驱动的并发等若干并发技术,并在第二个 Project 中比较它们各自的优劣。Rust 中 “futures” 的概念非常有趣和优雅,这些基础知识对你后续对计算机系统相关课程的学习很有帮助。另外,清华大学的操统实验 rCore 就是基于 Rust 编写的,具体参见文档。
课程资源
- 课程网站:https://reberhardt.com/cs110l/spring-2020/
- 课程视频:https://youtu.be/j7AQrtLevUE
- 课程教材:无
- 课程作业:共 6 个 Lab 和 2 个 Project,作业文档和代码框架详见课程网站。其中两个 Project 非常有趣,分别是:
- 用 Rust 实现一个类似于 GDB 的 debugger
- 用 Rust 实现一个负载均衡器
资源汇总
@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 PKUFlyingPig/CS110L - GitHub 中。
CS110L: Safety in Systems Programming
课程简介
- 所属大学:Stanford
- 先修要求:最好有一定的编程背景并对计算机系统有初步的认识。
- 编程语言:Rust
- 课程难度:🌟🌟🌟
- 预计学时:30 小时
在这门课中你将会学习 Rust 这门神奇的语言。
如果你学过 C 并接触过一些系统编程的话,应该对 C 的内存泄漏以及指针的危险有所耳闻,但 C 的底层特性以及高效仍然让它在系统级编程中无法被例如 Java 等自带垃圾收集机制的高级语言所替代。而 Rust 的目标则是希望在 C 的高效基础上,弥补其安全不足的缺点。因此 Rust 在设计之初,就有带有很多系统编程的观点。学习 Rust,也能让你之后能用 C 语言编写出更安全更优雅的系统级代码(例如操作系统等)。
这门课的后半部分关注在并发(concurrency)这一主题上,你将会系统地掌握多进程、多线程、基于事件驱动的并发等若干并发技术,并在第二个 Project 中比较它们各自的优劣。Rust 中 “futures” 的概念非常有趣和优雅,这些基础知识对你后续对计算机系统相关课程的学习很有帮助。另外,清华大学的操统实验 rCore 就是基于 Rust 编写的,具体参见文档。
课程资源
- 课程网站:https://reberhardt.com/cs110l/spring-2020/
- 课程视频:https://youtu.be/j7AQrtLevUE
- 课程教材:无
- 课程作业:共 6 个 Lab 和 2 个 Project,作业文档和代码框架详见课程网站。其中两个 Project 非常有趣,分别是:
- 用 Rust 实现一个类似于 GDB 的 debugger
- 用 Rust 实现一个负载均衡器
资源汇总
@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 PKUFlyingPig/CS110L - GitHub 中。
在2022年 CS110L 没有开源作业源码的背景下,Rust 快速演进导致2020版本课程项目中所使用的库过于老旧。对此,@fung-hwang 尝试进行了适配(时间为2022.11)。其适配过程和作业实现都汇总在 fung-hwang/CS110L-2020spr - GitHub 中。也许当你开始本课程时 Rust 和这些库又发生了变化,但你仍可以参考并从中获得启发。
CS110L: Safety in Systems Programming
课程简介
- 所属大学:Stanford
- 先修要求:最好有一定的编程背景并对计算机系统有初步的认识。
- 编程语言:Rust
- 课程难度:🌟🌟🌟
- 预计学时:30 小时
在这门课中你将会学习 Rust 这门神奇的语言。
如果你学过 C 并接触过一些系统编程的话,应该对 C 的内存泄漏以及指针的危险有所耳闻,但 C 的底层特性以及高效仍然让它在系统级编程中无法被例如 Java 等自带垃圾收集机制的高级语言所替代。而 Rust 的目标则是希望在 C 的高效基础上,弥补其安全不足的缺点。因此 Rust 在设计之初,就有带有很多系统编程的观点。学习 Rust,也能让你之后能用 C 语言编写出更安全更优雅的系统级代码(例如操作系统等)。
这门课的后半部分关注在并发(concurrency)这一主题上,你将会系统地掌握多进程、多线程、基于事件驱动的并发等若干并发技术,并在第二个 Project 中比较它们各自的优劣。Rust 中 “futures” 的概念非常有趣和优雅,这些基础知识对你后续对计算机系统相关课程的学习很有帮助。另外,清华大学的操统实验 rCore 就是基于 Rust 编写的,具体参见文档。
课程资源
- 课程网站:https://reberhardt.com/cs110l/spring-2020/
- 课程视频:https://youtu.be/j7AQrtLevUE
- 课程教材:无
- 课程作业:共 6 个 Lab 和 2 个 Project,作业文档和代码框架详见课程网站。其中两个 Project 非常有趣,分别是:
- 用 Rust 实现一个类似于 GDB 的 debugger
- 用 Rust 实现一个负载均衡器
资源汇总
@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 PKUFlyingPig/CS110L - GitHub 中。
CS110L: Safety in Systems Programming
课程简介
- 所属大学:Stanford
- 先修要求:最好有一定的编程背景并对计算机系统有初步的认识。
- 编程语言:Rust
- 课程难度:🌟🌟🌟
- 预计学时:30 小时
在这门课中你将会学习 Rust 这门神奇的语言。
如果你学过 C 并接触过一些系统编程的话,应该对 C 的内存泄漏以及指针的危险有所耳闻,但 C 的底层特性以及高效仍然让它在系统级编程中无法被例如 Java 等自带垃圾收集机制的高级语言所替代。而 Rust 的目标则是希望在 C 的高效基础上,弥补其安全不足的缺点。因此 Rust 在设计之初,就有带有很多系统编程的观点。学习 Rust,也能让你之后能用 C 语言编写出更安全更优雅的系统级代码(例如操作系统等)。
这门课的后半部分关注在并发(concurrency)这一主题上,你将会系统地掌握多进程、多线程、基于事件驱动的并发等若干并发技术,并在第二个 Project 中比较它们各自的优劣。Rust 中 “futures” 的概念非常有趣和优雅,这些基础知识对你后续对计算机系统相关课程的学习很有帮助。另外,清华大学的操统实验 rCore 就是基于 Rust 编写的,具体参见文档。
课程资源
- 课程网站:https://reberhardt.com/cs110l/spring-2020/
- 课程视频:https://youtu.be/j7AQrtLevUE
- 课程教材:无
- 课程作业:共 6 个 Lab 和 2 个 Project,作业文档和代码框架详见课程网站。其中两个 Project 非常有趣,分别是:
- 用 Rust 实现一个类似于 GDB 的 debugger
- 用 Rust 实现一个负载均衡器
资源汇总
@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 PKUFlyingPig/CS110L - GitHub 中。
在2022年 CS110L 没有开源作业源码的背景下,Rust 快速演进导致2020版本课程项目中所使用的库过于老旧。对此,@fung-hwang 尝试进行了适配(时间为2022.11)。其适配过程和作业实现都汇总在 fung-hwang/CS110L-2020spr - GitHub 中。也许当你开始本课程时 Rust 和这些库又发生了变化,但你仍可以参考并从中获得启发。