☰
The Missing Semester 2020 课程索引:MIT 计算机科学教育缺失的一学期(11 讲全览)
2026/10/10 6:10:13 网站建设 项目流程
  • 文档
  • 教程

【免费下载链接】missing-semester

The Missing Semester of Your CS Education 📚

项目地址:https://gitcode.com/gh_mirrors/mi/missing-semester
点击查看免费下载

MIT 的《The Missing Semester of Your CS Education》是一门面向计算机专业学生与开发者的实战课程,专门补齐传统课程里很少系统讲授、却几乎每天都要用到的工具技能:命令行、文本编辑器、版本控制、调试与性能分析等。本文以本仓库_2020/index.md课程索引页为主线,完整梳理 2020 版(MIT IAP 2020)全部 11 讲的主题脉络、配套讲义与演示资源,并深入讲解该索引页背后的 Jekyll 站点生成机制,帮助你快速定位课程内容、理解课程设计思路,并掌握在本地构建阅读这套讲义的方法。

课程背景:为什么存在"缺失的一学期"

正如 课程第一讲讲义 所述,计算机科学课程体系通常覆盖操作系统、机器学习等"高级主题",却极少系统教授如何高效使用工具本身。学生往往只会死记硬背少量命令、遇到问题就盲目复制网上的代码片段,浪费了大量时间在"驯服工具"而非解决问题上。这门课程正是为弥补这一空白而设计:教会你如何最大化利用已知工具、补充新工具到工具箱,并激发你自主探索和构建更多工具的兴趣。

仓库主页 index.md 对这一定位做了更精炼的概括——课程的核心诉求是让学习者在数百小时(职业生涯中数千小时)的工具使用中,尽可能流畅、无摩擦;掌握这些工具不仅能减少"如何让工具听我使唤"的精力消耗,还能解决那些原本看起来无比复杂的问题。

课程结构与学习方式

2020 版课程(对应目录 _2020)共包含11 讲,每讲时长约 1 小时,节奏紧凑。课程结构上有以下设计:

  • 主题相对独立:各讲大致独立,但随课程推进,后续讲座会默认你已掌握前面讲过的内容;
  • 讲义 + 课堂演示:讲义(本仓库中的各.md文件)覆盖核心知识,课堂上还有大量未写入讲义的操作演示;
  • 随堂练习:每讲附有一套练习,引导你以自定节奏消化关键知识点;
  • Office Hours:课后设有答疑时间;远程学员可通过邮件向missing-semester@mit.edu提问;
  • 视频录制:每一讲都有视频记录,视频 ID 记录在各讲义 front matter 的video.id字段中,讲座页面据此嵌入播放器(见 _layouts/lecture.html)。

2020 课程完整目录

以下目录由 _2020/index.md 汇总,各讲的日期、标题、讲义文件均取自仓库真实内容(讲义 front matter 中的date、title、ready字段):

讲次日期主题讲义文件视频 ID(front matter)
11/13Course Overview + The Shell(课程总览与 Shell)_2020/course-shell.mdZ56Jmr9Z34Q
21/14Shell Tools and Scripting(Shell 工具与脚本)_2020/shell-tools.mdkgII-YWo3Zw
31/15Editors (Vim)(编辑器:Vim)_2020/editors.mda6Q8Na575qc
41/16Data Wrangling(数据整理)_2020/data-wrangling.mdsz_dsktIjt4
51/21Command-line Environment(命令行环境)_2020/command-line.mde8BO_dYxk5c
61/22Version Control (Git)(版本控制)_2020/version-control.md2sjqTHE0zok
71/23Debugging and Profiling(调试与性能分析)_2020/debugging-profiling.mdl812pUnKxME
81/27Metaprogramming(元编程:构建、依赖、测试与 CI)_2020/metaprogramming.md_Ms1Z4xfqv4
91/28Security and Cryptography(安全与密码学)_2020/security.mdtjwobAmnKTo
101/29Potpourri(杂项:键盘映射、守护进程、备份等)_2020/potpourri.mdJZDt-PRq0uo
111/30Q&A(答疑专场)_2020/qa.mdWz50FvGG6xU

其中第 4、9、10、11 讲的讲义 front matter 带有special: true标记;第 8 讲带有details: build systems, dependency management, testing, CI说明文字。

逐讲内容纵览

第 1 讲:Course Overview + The Shell

以 bash(Bourne Again SHell)为切入点,讲解为什么文本界面在自动化与组合能力上远胜 GUI:GUI 只能点击"已经存在的按钮",而 Shell 允许运行程序、传递输入、以半结构化方式检查输出。讲义从missing:~$提示符讲起,覆盖文件系统导航、重定向、管道与权限等基础(见 _2020/course-shell.md)。

第 2 讲:Shell Tools and Scripting

将 bash 作为脚本语言使用,介绍条件、循环等控制流,以及find、grep、xargs、rg等高频命令行工具(见 _2020/shell-tools.md)。本讲课堂演示视频也作为仓库媒体资源保留在 static/media/demos/find.mp4。

第 3 讲:Editors (Vim)

核心观点是:写英文与写代码是两种不同的活动,编程中大量时间花在切换文件、阅读、导航和编辑上,因此值得投资一款为代码编辑设计的编辑器。讲义系统介绍 Vim 的模态编辑模型(见 _2020/editors.md),配套的练习配置保存在 _2020/files/vimrc,课堂演示视频为 static/media/demos/vim.mp4。

第 4 讲:Data Wrangling

聚焦"把一种格式的数据变成另一种格式"的通用能力:用sed、awk、正则表达式等文本处理工具,把凌乱的数据整理成恰好需要的形态(见 _2020/data-wrangling.md),配套示例数据文件为 _2020/files/example-data.xml。

第 5 讲:Command-line Environment

讲解如何在同一时间运行并跟踪多个进程(作业控制)、如何暂停或后台化进程、如何用 aliases 与 dotfiles 统一多台机器的配置,以及如何通过 SSH 操作远程机器(见 _2020/command-line.md),演示视频包括 static/media/demos/history.mp4 与 static/media/demos/ssh.mp4。

第 6 讲:Version Control (Git)

从版本控制系统(VCS)的快照模型讲起,深入 Git 的数据模型与协作工作流(见 _2020/version-control.md),演示视频为 static/media/demos/git.mp4。

第 7 讲:Debugging and Profiling

开篇的金句是"代码不会做你期望它做的事,只会做你告诉它做的事"。本讲覆盖调试与性能分析两大主题:printf 调试与日志、调试器、静态分析工具,以及用perf等工具定位性能瓶颈(见 _2020/debugging-profiling.md)。

第 8 讲:Metaprogramming

把构建系统、依赖管理、测试与持续集成(CI)这类"关于过程而非代码"的工程实践统称为元编程,讲解从学生日常到工业级项目都绕不开的构建与测试体系(见 _2020/metaprogramming.md)。

第 9 讲:Security and Cryptography

与 2019 版侧重"如何作为用户更安全"不同,2020 版聚焦理解前几讲工具所依赖的密码学基础:Git 中的哈希函数、SSH 中的密钥派生函数与对称/非对称密码系统(见 _2020/security.md)。

第 10 讲:Potpourri

杂项主题合集,涵盖键盘重映射(如用 CapsLock 替代 Ctrl)、守护进程、FUSE 文件系统、备份策略等"小而有用"的知识点(见 _2020/potpourri.md)。

第 11 讲:Q&A

最后一讲集中回答学生提交的问题,例如操作系统主题的学习建议、工具学习的优先级排序、何时用 Python 而非 Bash 脚本、source script.sh与./script.sh的区别等(见 _2020/qa.md)。

配套资源:示例代码、字幕与演示视频

仓库不仅包含讲义文字,还保留了课程配套的可运行材料:

  • 示例脚本:static/files/logger.py(日志相关示例)与 static/files/sorts.py(排序算法示例),可配合调试与性能分析讲学习;
  • 演示视频:static/media/demos 下保存了find.mp4、git.mp4、history.mp4、ssh.mp4、vim.mp4五段课堂演示;
  • 字幕文件:static/files/subtitles/2020 下提供了command-line.sbv、debugging-profiling.sbv、qa.sbv、shell-tools.sbv等字幕,便于对照视频学习;
  • 示例数据:_2020/files/example-data.xml 用于数据整理练习;
  • 课程笔记:_2020/editors-notes.txt 为编辑器讲座的辅助笔记。

索引页背后的 Jekyll 生成机制

_2020/index.md本身是一个 Jekyll 页面(front matter 中layout: page、phony: true),其课程列表并非手工维护,而是通过 Liquid 模板从讲义集合自动生成:

{% assign lectures = site['2020'] | sort: 'date' %} {% for lecture in lectures %} {% if lecture.phony != true %} <strong>{{ lecture.date | date: '%-m/%-d' }}</strong>: {% if lecture.ready %} <a href="{{ lecture.url }}">{{ lecture.title }}</a> {% elsif lecture.noclass %} {{ lecture.title }} [no class] {% else %} {{ lecture.title }} [coming soon] {% endif %} {% endif %} {% endfor %}

(见 _2020/index.md)其工作机制可以拆解为:

  1. site['2020']取自 _config.yml 中定义的 collection'2020': output: true,使_2020/目录下的讲义按集合输出;
  2. sort: 'date'按讲义 front matter 的date字段升序排列;
  3. phony: true用于过滤不需要出现在列表中的页面(本索引页自身即标为phony,从而避免被自己的列表包含);
  4. 每个条目根据ready/noclass字段渲染为可点击链接、"no class" 或 "coming soon" 占位;details字段则以括号形式附加补充说明(如第 8 讲的 "build systems, dependency management, testing, CI")。

因此,2020 版的 11 讲在仓库中全部ready: true,索引页会为每讲渲染出可访问的讲义链接。页面布局由 _layouts/page.html 渲染标题后直接输出正文,视频则通过 _layouts/lecture.html 中page.video.id的 YouTube 嵌入实现,video.aspect字段(如 56.25,即 16:9)控制播放器长宽比。

在本地构建与阅读这套课程

本仓库本身就是课程官方网站的源码(基于 Jekyll)。按 README.md 说明,你可以在本地构建并浏览全部讲义:

# 方式一:直接使用 Jekyll bundle exec jekyll serve -w
# 方式二:使用 Docker(避免在宿主机安装 Ruby 依赖) docker compose up --build

构建完成后访问http://localhost:4000即可查看站点;-w参数会在文件变更时自动重建。若需为仓库的其他年份(2019、2026)定制或对照阅读,可参考 _config.yml 中并列定义的'2019'、'2020'、'2026'三个集合,各年份的索引页结构完全一致(对比 _2026/index.md 即可验证)。

Beyond MIT:课程的开源传播与致谢

课程团队将全部资源开放共享,供 MIT 之外的广大学习者使用,并曾在 Hacker News、Lobsters、Reddit 的 r/learnprogramming 与 r/programming、Twitter、YouTube 等社区获得大量讨论。课程还特别致谢了 MIT Open Learning、MIT AeroAstro、MIT EECS 等机构在视频录制、音视频设备与课程支持上的贡献(见 _2020/index.md)。

许可与使用

根据 README.md,课程的全部内容——包括网站源码、讲义、练习与讲座视频——均以CC BY-NC-SA 4.0(知识共享 署名-非商业性使用-相同方式共享)协议发布,本仓库根目录下的 license.md 即为许可说明。你可以在遵守协议的前提下查看、学习、翻译并二次创作这些讲义资源。

  • 文档
  • 教程

【免费下载链接】missing-semester

The Missing Semester of Your CS Education 📚

项目地址:https://gitcode.com/gh_mirrors/mi/missing-semester
点击查看免费下载
上一篇:tick-stock-panel测试体系拆解:260+测试用例背后的测试矩阵设计思路
下一篇:Calico 仓库架构指南:从 DESIGN.md 读懂组件体系、统一二进制与健康上报模式

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询