返回资源列表

Stanford CS110

Stanford CS110:Principles of Computer Systems(2022 冬)

学习系统级编程、进程、并发及网络程序的构建。

打开官方课程
难度
见前置条件
形式
大学课程
语言
英文
规模
25 个课节
内容费用
免费
动手
需要动手环境
  1. 选择学习环境

    按你的电脑系统准备;提示词在你自己的电脑上使用。

    在本机动手

    直接在终端中安装工具链。

    浏览器即可查看课程介绍和公开材料;实验所需软件、硬件和账号按原站要求准备。

    这条路线已按开课提示词实际跑通最小开课流程查看记录

  2. 准备工具和账号

    标“选用”的可以跳过。

    • 浏览器 查看幻灯片(slides.com)与作业说明(Quip)
    • g++/gcc、make、gdb、valgrind编写和调试 Linux 系统调用、多进程、多线程与网络程序
    • Linux 环境课程依赖 POSIX 系统调用(fork、execvp、pipe、信号、socket)

    运行费用:实践费用待核验,课程实验可能需要算力或付费服务,尚未核实。

  3. 让 AI Agent 一次搭好课程

    复制开课提示词发给你常用的 AI Agent。它会下载允许保存的官方材料、建立课节目录并自检;需要账号、权限或费用时会先问你。

    开课提示词 · 只需用一次
    请帮我把「Stanford CS110:Principles of Computer Systems(2022 冬)」的学习环境一次准备好,让我之后只需要按顺序学习和做练习。
    开始前先问我:课程放在哪个目录(等我给出完整路径),确认我的操作系统和已有工具。确认前不要创建文件或安装软件。
    
    课程入口:https://web.stanford.edu/class/cs110/
    我的系统:Linux。如果实际不符,先调整方案。
    本次路线:Linux:在本机动手。只准备这条路线需要的工具;只读路线不安装运行环境、不配置模型密钥。
    练习:6 个编程作业(Six Degrees of Kevin Bacon、Unix v6 文件系统、多进程、stsh shell、RSS 聚合器、HTTP 代理与缓存)和 8 份 lab 讲义,说明发布在 Quip;起始代码、测试脚本和 Gradescope 提交依赖斯坦福 myth 服务器与账号,校外无法使用。校外学习者可按说明自行搭建框架实现,lab 讲义中的问题可自答。
    课节(官方顺序):
    1. Introductions:https://slides.com/troccoli/cs110-win2122-lecture-1/fullscreen
    2. Filesystems, Take I:https://slides.com/troccoli/cs110-win2122-lecture-2/fullscreen
    3. Filesystems, Take II:https://slides.com/troccoli/cs110-win2122-lecture-3/fullscreen
    4. Filesystem System Calls:https://slides.com/troccoli/cs110-win2122-lecture-4/fullscreen
    5. File Descriptors and System Calls:https://slides.com/troccoli/cs110-win2122-lecture-5/fullscreen
    6. Multiprocessing Intro:https://slides.com/troccoli/cs110-win2122-lecture-6/fullscreen
    7. waitpid and execvp:https://slides.com/troccoli/cs110-win2122-lecture-7/fullscreen
    8. Pipes and Interprocess Communication, Take I:https://slides.com/troccoli/cs110-win2122-lecture-8/fullscreen
    9. Pipes and Interprocess Communication, Take II:https://slides.com/troccoli/cs110-win2122-lecture-9/fullscreen
    10. Signals, Take I:https://slides.com/troccoli/cs110-win2122-lecture-10/fullscreen
    11. Signals, Take II:https://slides.com/troccoli/cs110-win2122-lecture-11/fullscreen
    12. Signals and Virtual Memory:https://slides.com/troccoli/cs110-win2122-lecture-12/fullscreen
    13. Introduction to Multithreading:https://slides.com/troccoli/cs110-win2122-lecture-13/fullscreen
    14. Threads, Race Conditions, and Mutexes:https://slides.com/troccoli/cs110-win2122-lecture-14/fullscreen
    15. Mutexes and Condition Variables:https://slides.com/troccoli/cs110-win2122-lecture-15/fullscreen
    16. Condition Variables and Semaphores:https://slides.com/troccoli/cs110-win2122-lecture-16/fullscreen
    17. Semaphores and Multithreading Patterns:https://slides.com/troccoli/cs110-win2122-lecture-17/fullscreen
    18. Multithreading Patterns:https://slides.com/troccoli/cs110-win2122-lecture-18/fullscreen
    19. Thread Pools and Ice Cream:https://slides.com/troccoli/cs110-win2122-lecture-19/fullscreen
    20. Introduction to Networks, Clients and Servers:https://slides.com/troccoli/cs110-win2122-lecture-20/fullscreen
    21. Servers and HTTP:https://slides.com/troccoli/cs110-win2122-lecture-21/fullscreen
    22. HTTP and APIs:https://slides.com/troccoli/cs110-win2122-lecture-22/fullscreen
    23. APIs and Networking Functions:https://slides.com/troccoli/cs110-win2122-lecture-23/fullscreen
    24. Networking Functions and MapReduce:https://slides.com/troccoli/cs110-win2122-lecture-24/fullscreen
    25. MapReduce and Course Wrap-Up:https://slides.com/troccoli/cs110-win2122-lecture-25/fullscreen
    
    1. 环境
    - Debian/Ubuntu:sudo apt install build-essential gdb valgrind。
    - 安装前先列出要装的软件和命令,等我同意;已装好的直接复用。
    2. 材料
    - 每讲幻灯片(slides.com):只记录链接 https://web.stanford.edu/class/cs110/
    - 作业与 lab 说明(Quip):只记录链接 https://cs110.quip.com/58BHAISfQirw/Assignment-1-Six-Degrees-of-Kevin-Bacon(公开可读性未核实)
    - Gradescope、Ed、Slack、Panopto 录像:只记录链接 https://web.stanford.edu/class/cs110/(仅限斯坦福选课学生)
    3. 目录(最外层放在我确认的位置)
    cs110-2022-winter/
    ├── README.md        # 课程入口、课节清单、每次怎么开始
    ├── progress.md      # 每课:读讲义 / 做练习 / 记笔记
    ├── questions.md     # 待解决的问题
    ├── check-env.sh     # 环境自检,按 README 操作
    ├── data/            # 练习用到的样例数据
    └── lessons/         # 每课一个文件夹:notes.md + exercises/
        ├── 01-introductions/
        ├── 02-filesystems-1/
        ├── 03-filesystems-2/
        ├── 04-filesystem-syscalls/
        ├── 05-file-descriptors/
        ├── 06-multiprocessing-intro/
        ├── 07-waitpid-execvp/
        ├── 08-pipes-ipc-1/
        ├── 09-pipes-ipc-2/
        ├── 10-signals-1/
        ├── 11-signals-2/
        ├── 12-signals-virtual-memory/
        ├── 13-multithreading-intro/
        ├── 14-race-conditions-mutexes/
        ├── 15-mutexes-condition-variables/
        ├── 16-condvars-semaphores/
        ├── 17-semaphores-patterns/
        ├── 18-multithreading-patterns/
        ├── 19-thread-pools/
        ├── 20-networks-clients-servers/
        ├── 21-servers-http/
        ├── 22-http-apis/
        ├── 23-apis-networking-functions/
        ├── 24-networking-mapreduce/
        └── 25-mapreduce-wrap-up/
    - 每课文件夹里建 notes.md(顶部写本课官方链接)和 exercises/;课节文件夹名称与上面一致。
    - 已有课程目录先检查并复用;不覆盖笔记、作业或 progress.md,不重置已有进度。尚未发布的课节保留入口并注明未发布,不能代写讲义或虚构练习。
    4. 自检
    - 创建 check-env.sh,逐项检查并记录“通过/未通过”:
    - 在课程根目录运行;每项检查独立执行,进入子目录不能影响下一项。使用当前系统的终端运行。
      - g++ --version  → 输出 g++ 版本
      - gdb --version  → 输出 GDB 版本
      - valgrind --version  → 输出 valgrind 版本
      - uname -s  → 输出 Linux
    - 标注为人工检查、浏览器操作或 notebook 单元的项目,按相应方式操作,不直接粘贴进 shell;脚本只包含当前系统可执行的命令。
    - 仅在当前路线需要、对应材料已获准保存、工具已安装时运行该项;需要登录、付费或尚未开放的材料记为“需要我操作/未验证”,不能伪报通过。不执行会调用付费 API、提交作业或修改云服务的检查。
    - 运行一次,把结果给我看;未通过的项目说明原因和修复办法。
    5. 学习计划
    - README.md:课程入口、课节清单(带链接)、每次学习怎么开始(使用“每课提示词”)。
    - progress.md:每课三项勾选——读讲义、做练习、记笔记。
    6. 最后分三部分汇报:已完成、需要我自己操作的、尚未验证的。
    
    边界:
    - 需要管理员权限、会产生费用或需要填写密钥的操作,先告诉我原因,等我同意。密钥由我在本机配置,不发到聊天,不写进笔记或版本库;原项目需要 .env 时确认已被 Git 忽略。
    - 不替我写练习或作业答案,也不替我提交。我卡住时只给提示;我明确要求时才给解答。
    - 只下载许可允许个人保存的材料;其余只放链接。不把未运行的命令说成成功。
    如果你不能直接操作我的文件系统,请在确认目录后给出适用于我的系统、可直接执行的命令和需要保存的文件内容。
    搭好后的课程目录
    cs110-2022-winter/
    ├── README.md        # 课程入口、课节清单、每次怎么开始
    ├── progress.md      # 每课:读讲义 / 做练习 / 记笔记
    ├── questions.md     # 待解决的问题
    ├── check-env.sh     # 环境自检,按 README 操作
    ├── data/            # 练习用到的样例数据
    └── lessons/         # 每课一个文件夹:notes.md + exercises/
        ├── 01-introductions/
        ├── 02-filesystems-1/
        ├── 03-filesystems-2/
        ├── 04-filesystem-syscalls/
        ├── 05-file-descriptors/
        ├── 06-multiprocessing-intro/
        ├── 07-waitpid-execvp/
        ├── 08-pipes-ipc-1/
        ├── 09-pipes-ipc-2/
        ├── 10-signals-1/
        ├── 11-signals-2/
        ├── 12-signals-virtual-memory/
        ├── 13-multithreading-intro/
        ├── 14-race-conditions-mutexes/
        ├── 15-mutexes-condition-variables/
        ├── 16-condvars-semaphores/
        ├── 17-semaphores-patterns/
        ├── 18-multithreading-patterns/
        ├── 19-thread-pools/
        ├── 20-networks-clients-servers/
        ├── 21-servers-http/
        ├── 22-http-apis/
        ├── 23-apis-networking-functions/
        ├── 24-networking-mapreduce/
        └── 25-mapreduce-wrap-up/
准备好了,开始学习

来源与使用须知

原始资源
Stanford CS110 收录版本:2022 冬
收录时间
本站首次收录 2026-10-10

版权与转载

  • 课程材料未标明许可:仅供个人学习,转载、修改或商用前请先联系原作者。
  • 本站只提供原始链接和学习指南,不转载、不镜像课程材料;引用时请注明原作者与出处。