[COURSE] Add CS110 System Principles course (#595)

* reorganize intro to system courses

* nits
This commit is contained in:
Yinmin Zhong 2024-04-14 15:18:18 +08:00 committed by GitHub
parent 7a320f474a
commit 2f81e8ceaa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 76 additions and 12 deletions

View File

@ -216,7 +216,7 @@ Computer systems are a vast and profound topic. Before delving into a specific a
[MIT6.033: System Engineering](http://web.mit.edu/6.033/www/) is MIT's introductory course to systems, covering topics like operating systems, networks, distributed systems, and system security. In addition to the theory, this course also teaches some writing and expression skills, helping you learn how to design, introduce, and analyze your own systems. The accompanying textbook *Principles of Computer System Design: An Introduction* is also very well written and recommended for reading.
[CMU 15-213: Introduction to Computer System](体系结构/CSAPP.md) is CMUs introductory systems course, covering architecture, operating systems, linking, parallelism, networks, etc., with both breadth and depth. The accompanying textbook *Computer Systems: A Programmer's Perspective* is also of very high quality and strongly recommended for reading.
[CMU 15-213: Introduction to Computer System](计算机系统基础/CSAPP.md) is CMUs introductory systems course, covering architecture, operating systems, linking, parallelism, networks, etc., with both breadth and depth. The accompanying textbook *Computer Systems: A Programmer's Perspective* is also of very high quality and strongly recommended for reading.
### Operating Systems

View File

@ -214,7 +214,7 @@ IDE (Integrated Development Environment):集成开发环境,说白了就是
[MIT6.033: System Engineering](http://web.mit.edu/6.033/www/) 是 MIT 的系统入门课,主题涉及了操作系统、网络、分布式和系统安全,除了知识点的传授外,这门课还会讲授一些写作和表达上的技巧,让你学会如何设计并向别人介绍和分析自己的系统。这本书配套的教材 *Principles of Computer System Design: An Introduction* 也写得非常好,推荐大家阅读。
[CMU 15-213: Introduction to Computer System](体系结构/CSAPP.md) 是 CMU 的系统入门课,内容覆盖了体系结构、操作系统、链接、并行、网络等等,兼具广度和深度,配套的教材 *Computer Systems: A Programmer's Perspective* 也是质量极高,强烈建议阅读。
[CMU 15-213: Introduction to Computer System](计算机系统基础/CSAPP.md) 是 CMU 的系统入门课,内容覆盖了体系结构、操作系统、链接、并行、网络等等,兼具广度和深度,配套的教材 *Computer Systems: A Programmer's Perspective* 也是质量极高,强烈建议阅读。
### 操作系统

View File

@ -30,7 +30,7 @@ If you have graduated and started postgraduate studies, or have begun working, o
| Data Structures and Algorithms | [Coursera: Algorithms I & II](数据结构与算法/Algo.md) |
| Software Engineering | [MIT 6.031: Software Construction](软件工程/6031.md) |
| Full-Stack Development | [MIT Web Development Course](Web开发/mitweb.md) |
| Introduction to Computer Systems | [CMU CS15213: CSAPP](Web开发/mitweb.md) |
| Introduction to Computer Systems | [CMU CS15213: CSAPP](计算机系统基础/CSAPP.md) |
| Introductory System Architecture | [Coursera: Nand2Tetris](体系结构/N2T.md) |
| Advanced System Architecture | [CS61C: Great Ideas in Computer Architecture](体系结构/CS61C.md) |
| Principles of Databases | [CMU 15-445: Introduction to Database Systems](数据库系统/15445.md) |

View File

@ -30,7 +30,7 @@
|数据结构与算法 |[Coursera: Algorithms I & II](数据结构与算法/Algo.md)|
|软件工程 |[MIT 6.031: Software Construction](软件工程/6031.md)|
|全栈开发 |[MIT web development course](Web开发/mitweb.md)|
|计算机系统导论 |[CMU CS15213: CSAPP](./体系结构/CSAPP.md)|
|计算机系统导论 |[CMU CS15213: CSAPP](计算机系统基础/CSAPP.md)|
|体系结构入门 |[Coursera: Nand2Tetris](./体系结构/N2T.md) |
|体系结构进阶 |[CS61C: Great Ideas in Computer Architecture](./体系结构/CS61C.md)|
|数据库原理 |[CMU 15-445: Introduction to Database System](数据库系统/15445.md)|

View File

@ -2,11 +2,11 @@
## Course Introduction
- Affiliated University: UCB
- Offered by: UCB
- Prerequisites: None
- Programming Language: Shell
- Course Difficulty: 🌟🌟🌟
- Estimated Study Time: 20 hours
- Difficulty: 🌟🌟🌟
- Class Hour: 20 hours
This is an introductory course on Linux from UCB, which I find more systematic and clearer than MIT's similarly aimed open course, Missing Semester. This is the main reason I recommend it. While Missing Semester seems more like a course for filling gaps for students who have started programming but haven't systematically used these tools, DeCal is more suitable for absolute beginners. The twelve-week course covers Linux basics, shell programming (including tmux and vim), package management, services, basic computer networks, network services, security (key management), Git, Docker, Kubernetes, Puppet, and CUDA. It's ideal for newcomers to understand and get started with the Linux environment.

View File

@ -10,8 +10,8 @@
Just as the course name indicated, this course will teach the missing things in the university courses. It will cover shell programming, git, vim editor, tmux, ssh, sed, awk and even how to beautify your terminal. Trust me, this will be your first step to become a hacker!
## Resources
## Course Resources
- Homepage: <https://missing.csail.mit.edu/>
- Records: <https://www.youtube.com/playlist?list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J>
- Assignments: Some exercises after each lecture.
- Course Website: <https://missing.csail.mit.edu/>
- Recordings: <https://www.youtube.com/playlist?list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J>
- Assignments: Some exercises after each lecture, refer to the course website.

View File

@ -0,0 +1,28 @@
# CS110: Principles of Computer Systems
## Descriptions
- Offered by: Stanford
- Prerequisites: Students should be able to write moderately complex programs, read and understand portions of large code bases, trace memory diagrams, and be fluent with Unix, GDB, Valgrind, and Make.
- Programming Languages: C/C++
- Difficulty: 🌟🌟🌟🌟🌟
- Class Hour: 150 hours
This course builds upon the foundational knowledge gained in CS107 and delves into advanced computer systems and program construction. It focuses on designing large systems, software that spans multiple machines, and parallel computing. The course aims to teach students the principles and practice of engineering of computer software and hardware systems.
The course covers a broad range of topics including how your programs map onto the components of computer systems, understanding of program behavior and execution, understanding the designs and tradeoffs of large systems, writing software that spans multiple machines, and writing software that runs tasks in parallel on a single machine.
The teaching style of this course is engaging and practical. The instructors guide the students to understand the numerous technical challenges and design principles in computer systems by going through the course materials and labs. Weekly labs let you add new features to the projects, which focus on enhancing students' practical skills. There are several labs during the whole semester which give you the chance to understand every aspect of the computer systems.
In addition to the labs, the course also includes assignments that are designed to provide hands-on experience and deepen understanding of the course material. Each assignment has a complete framework for testing.
## Course Resources
- Course Website: [winter20](https://web.stanford.edu/class/archive/cs/cs110/cs110.1204/)
- Lecture Videos: [spring19](https://www.youtube.com/playlist?list=PLai-xIlqf4JmTNR9aPCwIAOySs1GOm8sQ)
- Text Book: [Computer Systems: A Programmers Perspective](https://www.cs.sfu.ca/~ashriram/Courses/CS295/assets/books/CSAPP_2016.pdf)
- Assignments: 7 labs (with solution) and 8 assignments, can be found on the course website.
## Personal Resources
All the resources and assignments used by @xuzheng465 in this course are maintained in [xuzheng465/Stanford_CS110 - GitHub](https://github.com/xuzheng465/Stanford_CS110).

View File

@ -0,0 +1,28 @@
# CS110: Principles of Computer Systems
## 课程简介
- 所属大学Stanford
- 先修要求编程基础、Unix、GDB、Valgrind
- 编程语言C/C++
- 课程难度:🌟🌟🌟🌟🌟
- 预计学时150小时
这门课程在 [CS107](https://web.stanford.edu/class/archive/cs/cs107/cs107.1246/calendar) 的基础知识上进行拓展,深入研究计算机系统和程序构建。它专注于设计大型系统、跨多台机器的软件以及并行计算。课程的目标是教授学生计算机软件和硬件系统工程的原理和实践。
课程涵盖了广泛的主题,包括你的程序如何映射到计算机系统的组件上,理解程序行为和执行,理解大型系统的设计和权衡,编写跨多台机器的软件,以及编写在单台机器上并行运行任务的软件。
这门课程的教学风格是引人入胜且实用的。教师通过理论知识和丰富的编程实验,引导学生理解计算机系统中众多的技术挑战和设计原则。每周的实验让你为项目增加新功能,这些项目专注于提高学生的实践技能,让你有机会初步了解计算机系统的每一个方面,并且会公布答案,让你及时检查自己对关键知识点的掌握情况。
除了实验外,课程还包括旨在提供大量编程实践经验并加深对课程材料理解的项目作业。每项作业配有完整的测试框架。
## 课程资源
- 课程网站:[winter20](https://web.stanford.edu/class/archive/cs/cs110/cs110.1204/)
- 课程视频:[spring19](https://www.youtube.com/playlist?list=PLai-xIlqf4JmTNR9aPCwIAOySs1GOm8sQ)
- 课程教材:[Computer Systems: A Programmers Perspective](https://www.cs.sfu.ca/~ashriram/Courses/CS295/assets/books/CSAPP_2016.pdf)
- 课程作业7 labs + 8 assignments参见课程网站。
## 资源汇总
@xuzheng465 在学习这门课中用到的所有资源和作业实现都汇总在 [xuzheng465/Stanford_CS110 - GitHub](https://github.com/xuzheng465/Stanford_CS110) 中。

View File

@ -82,9 +82,15 @@ plugins:
数学基础: Fundamental Mathematics
数学进阶: Advanced Mathematics
编程入门: Fundamental Programming
Python 语言: Python Language
C 语言: C Language
C++ 语言: C++ Language
Rust 语言: Rust Language
函数式语言: Functional Programming
电子基础: Fundamental Electronics
数据结构与算法: Data Structures and Algorithms
软件工程: Software Engineering
计算机系统基础: Computer Systems Principles
体系结构: Computer Architecture
操作系统: Operating Systems
并行与分布式系统: Distributed Systems
@ -187,10 +193,12 @@ nav:
- 软件工程:
- "MIT 6.031: Software Construction": "软件工程/6031.md"
- "UCB CS169: software engineering": "软件工程/CS169.md"
- 计算机系统基础:
- "CMU 15-213: CSAPP": "计算机系统基础/CSAPP.md"
- "Stanford CS110: Principles of Computer Systems": "计算机系统基础/CS110.md"
- 体系结构:
- "Coursera: Nand2Tetris": "体系结构/N2T.md"
- "UCB CS61C: Great Ideas in Computer Architecture": "体系结构/CS61C.md"
- "CMU 15-213: CSAPP": "体系结构/CSAPP.md"
- "ETHz: Digital Design and Computer Architecture": "体系结构/DDCA.md"
- "ETHz: Computer Architecture": "体系结构/CA.md"
- 操作系统: