Skip to content

About

把计算机专业与数学做成能点亮的技能树:192 个学习单元、260 条必须前置,附课程证据与划分边界、中英学习资源、练习和知识导览。纯静态网页,离线可用。CS & math skill tree with evidence-backed prerequisites, learning resources, exercises and knowledge maps.

Topics

Resources

Stars

12 stars

Watchers

0 watching

Forks

Latest commit

 

History

75 Commits

Folders and files

Repository files navigation

宣传片封面:我把计算机专业做成了一棵技能树(点击在哔哩哔哩观看)

CS × 数学技能树

把计算机专业要学的东西,做成一棵能一步步点亮的技能树。
每条“必须先学”的连线,都附课程证据与入门需要的理由。

在线打开 · 下载离线包 · 看宣传片(B 站) · 怎么读这张图 · 数据从哪来

An interactive skill tree for a computer-science degree and the math behind it: 192 learning units in 13 areas, with prerequisite explanations backed by university courses and teaching order. Each skill has chapter-level English and Chinese learning routes (192 complete English routes, 189 complete Chinese routes; 3 Chinese topics explicitly require English supplementation), one worked exercise, and a knowledge map built from an authoritative textbook's or course's table of contents. A static page that works offline. The interface is in Chinese; every skill also has its English name.

预览

领域总览
领域总览:13 个领域按依赖排成列,线越粗、跨领域的必须前置越多
技能地图与详情面板
技能地图:选中“操作系统”,高亮它的整条前置链和直接解锁的技能
设为目标后的学习清单
设为目标:把“深度学习”设为目标,左栏排出按顺序编号的学习清单
知识导览图
知识导览图:按教材目录画出“极限与连续”的知识点,右栏是来源和查漏补缺

程序设计基础:中文与英文独立学习顺序,以及六个必学知识项的对应章节
每个知识点分别列出中文、英文章节;先看学习顺序,再展开逐项核对。

有什么

技能 192 个,分 13 个领域(数学拆成三条泳道),按最长的必须前置链排成 7 步
范围 121 个主干、71 个选修:对照 ACM/IEEE-CS/AAAI 的课程标准 CS2023,逐个技能看内容是否属于它的核心主题(判定依据)
前置关系 260 条必须前置(没点亮就不能点亮下一个),400 条推荐前置(只提示,不挡路)
前置依据 192/192 个技能有课程依据;整理 386 条课程资料,先修表中 0 个“前置待核实”。同课顺序和先修链另附原始链接与适用边界
学习路线 192/192 个技能、891 个必学知识项逐项对应章节;英文 192 条、中文 189 条路线覆盖全部必学项,另 3 个中文知识项明确列英文补读(复核报告)
免费学习 英文 192 条、中文 152 条路线的全部必学项已有免费教学;费用与回放待核、付费补读分别列明
练习题 每个技能 1 道,答案折叠,答案已验算
知识导览图 每个技能 1 张:1,833 个分支、8,411 个知识点;10,291 条标题逐条与来源核对

其他:

  • 纯静态页面,不需要构建、不需要联网(只有打开学习资源链接时才联网)。
  • 进度存在浏览器里,可以导出 / 导入 JSON。技能合并后采用保守复核:只完成其中一部分,不自动当成掌握合并后的全部内容;旧记录随导出保留。
  • 每个视图都有自己的地址,可以收藏或分享:#overview 是总览,#map/<领域> 是领域地图,#skill/<id> 是技能详情,#skill/<id>/guide 是知识导览图。
  • 支持纯键盘操作,手机上总览变成可滑动的列表。按 WCAG 2.2 AA 做过无障碍审计(结论)。

打开

怎么读这张图

  • 领域总览(首页):每块是一个领域,块里的小方块是它的技能,和技能地图一样按步骤从左到右排列。连线表示右边领域的技能用到了左边领域的必须前置,线越粗,条数越多。第 1 列可以直接开始。每块上写着进度、状态、“下一步”(这个领域现在最值得学的技能)或“先学:…”。点一块进入它的技能地图。
  • 技能地图:每条横向泳道是一个领域。横轴“第 N 步”的意思是:前面最长有 N−1 层必须前置。第 1 步的技能没有必须前置,是起点。
  • 卡片状态:已点亮(暖色 + ✓)、现在能学(蓝框 + ⊕)、未解锁(灰 + 锁)。颜色之外都有图标,色弱也能分辨。虚线框是选修:内容不在 CS2023 的核心主题里,详情面板写明理由。
  • 选中一个技能:高亮它的整条必须前置链(实线)、推荐前置(虚线)和它直接解锁的技能(绿线)。用到其他领域前置的卡片,左上角有那个领域颜色的彩点。
  • 左栏:“现在能学”按“学完能解锁多少后续技能”排序。选一条路线或“设为目标”后,左栏给出按顺序编号的学习清单。
  • 详情面板:划分依据与相邻技能边界、必须 / 推荐前置及理由、学什么、知识导览、去哪学(中英文独立学习顺序、逐知识点章节、费用与访问条件)、练习题,以及前置依据(课程官方先修原文)。
  • 知识导览图:双击技能卡(或选中后按 G)。中心是技能,分支是来源的章(或讲),叶子是节。标“补·B”的橙色分支来自补充来源,补的是主来源没讲到的知识点。标题可以切换中文 / 双语 / 原文。右栏“查漏补缺”列出技能简介里的每个知识点落在哪一章,点一下就在图上定位。

数据从哪来

起点是一张 ChatGPT 生成的“计算机科学与数学知识星图”(原文件只读保存在 data/source/chatgpt-outputs/):259 个节点、317 条关系(228 条前置、89 条相关),但前置不分必须和推荐,也没有给出依据。最初取其中 201 个技能,再对照 ACM/IEEE-CS/AAAI 的课程标准 CS2023 检查划分:拆得过细的合并、几个不相干领域拼成的收窄或删除、缺的游戏开发补上,现为 192 个(改了什么、为什么改见 技能划分检查)。前置关系按真实课程的先修要求重新判定,学习资源、练习题和导览图都是重新找证据做的。检索和整理借助了 AI 代理,结论都附可以打开核对的原始链接。

必须 / 推荐前置怎么判定

  • 必须前置:至少一门真实大学课程把它列为先修(或在同一门课里先讲它),并且不会它就学不懂本技能入门层的内容。
  • 推荐前置:课程写成“建议 / 有帮助”、只有部分课程要求、只是数学成熟度门槛,或者只在深入层才用到。
  • 原有 9 个待核实项已处理:7 个补到官方课程证据;P.5.4、C.4.4 分别并入 DevOps 与数据工程的入门内容。不能只把推荐背景改标成必须;核对脚本会拒绝没有完整依据的连线。

中英文学习路线怎么核对

每种语言各自按“免费教学正文 → 作者或学校公开视频 → 正版付费教材/课程”查找,并把技能简介里的必学知识项对到具体章节。Python 官方文档等查阅材料和入门教程分开;主课讲不到的内容在同语言路线中补充。

“覆盖”包含已核目录的付费教材,不表示全免费或逐页通读。免费教学已覆盖英文 192 条、中文 152 条路线的全部必学项;当前仍有 6 个中文知识项暂用付费材料补读,另 87 个中文知识项的费用或回放条件待核。视频字幕、注册限制、机器翻译和第三方转载均按来源说明。中文仍有 3 项未补齐:F.1.6 的细粒度复杂度界与归约、F.3.4 的程序精化、S.5.1 的非干扰,页面给出英文补读。详见复核报告。

技能大小怎么判定

课程、基础模块、进阶模块与教材单元分开标注。全部 192 个技能都记录了划分依据;相邻技能有内容重叠时写出边界。它们不代表相同学分或学习时长,不能按目录标题数比较份量。详见逐技能判定。

主干 / 选修怎么判定

  • 依据是 CS2023 的知识体系:它把每个主题分成 CS Core(每个计算机专业毕业生都必须掌握)、KA Core(建议深入学习)和 Non-core(选修)。
  • 技能简介里至少一半的知识点能在 CS Core 或 KA Core 主题里找到原文,就算主干;讲授 CS Core 主题的技能、主干技能的必须前置,也算主干。其余是选修。
  • 每条判定都记了 CS2023 的知识单元、层级和原文片段,由 scripts/check_scope.py 逐条核对。这套 50% 阈值是项目自己的规则,并非 CS2023 对这些技能的官方认证;阈值敏感性和局限见判定报告。

知识导览图怎么来

  • 每个技能 1 个主来源:优先用“去哪学”里那份材料本身(它有成体系的目录时),否则用标准教材(作者主页、出版社或开放教材官网上的目录),或一流大学课程官方的逐讲课表。
  • 只用作者或出版社官方公开的整书 PDF,课程网站、网盘、镜像站上的商业教材 PDF 不用。
  • 标题照原文抄,再配中文译名。scripts/check_outlines.py 把每条标题和实际抓到的来源页面文字逐条比对:10,280 条在标准化匹配中精确命中,11 条因 PDF 抽字差异(如 σ 被抽成 s)判为近似,没有缺失。
  • 已知缺口:A.2.3.2、C.3.3、S.2.1 的来源只有讲次一层;有 12 个覆盖项(包括定位与验收说明)在来源里没有专门章节,导览图右栏标“—”并写明原因。

本轮的粒度、资源变更和限制见 划分检查与处理;最初 201 个技能的历史适用性审核见 来源审核报告,中文资源的增补依据见 中文资源报告。

数据文件

想拿数据做别的东西,直接用构建好的两个 JSON:

文件 内容
output/skilltree.json 全部技能:名称(中 / 英)、领域、步骤、主干 / 选修及理由、必须 / 推荐前置及理由、课程先修原文、学习资源、练习题
output/outlines.json 全部知识导览图:来源、目录(章 → 节)、查漏补缺

它们由 data/ 下的源数据合并而来,各目录的作用和数据流见 维护说明。

从源码构建

npm install
node scripts/build.mjs              # 重新生成 src/web/data.js、outlines.js 和 output/*.json;前置有环、ID 写错、卡片重叠、导览图来源对不上都会直接报错
node scripts/check-learning-paths.mjs --require-all  # 全树路线完整性与缺口说明
node tests/screenshot.mjs           # 用系统自带的 Edge 无头截图检查页面(playwright-core,不下载浏览器)
node tests/a11y.mjs                 # axe-core 按 WCAG 2.2 AA 审计 15 个界面状态
python -X utf8 scripts/package_web.py   # 打包离线 zip

不要直接改生成的 src/web/data.js。全部脚本、学习资源的维护规则和检索流程见 维护说明。

宣传片

在哔哩哔哩观看:大肥鱼把计算机专业内容做成了技能树(约 2 分钟)。用 Remotion 和 Blender 做成,画面里的数字和树的形状都从数据算出来,做法见 docs/promo-video.md。片中的数字(201 个技能、278 条必须前置)是重新划分技能之前的版本,以上面“有什么”里的数字为准。

用到的开源组件

  • elkjs 0.12.1(EPL-2.0,只在构建时运行):技能地图和领域总览的分层布局
  • @panzoom/panzoom 4.6.2(MIT):平移缩放
  • markmap-view 0.18.12(MIT)+ d3 7.9.0(ISC):知识导览图,第一次打开导览图时才加载
  • axe-core(MPL-2.0,开发依赖):无障碍审计
  • pypdf(BSD):抽取 PDF 目录文字

页面用到的三个库放在 src/web/vendor/,各自的许可证和库文件放在同一个目录。

许可

  • 代码和本仓库整理的数据:MIT。
  • src/web/vendor/ 里的第三方库沿用各自的许可证。
  • 课程先修原文、教材和课程目录的标题引自各自的来源,只用于引用和核对,版权归原作者;每条都附原始链接。

About

把计算机专业与数学做成能点亮的技能树:192 个学习单元、260 条必须前置,附课程证据与划分边界、中英学习资源、练习和知识导览。纯静态网页,离线可用。CS & math skill tree with evidence-backed prerequisites, learning resources, exercises and knowledge maps.

Topics

Resources

Stars

12 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages