Skip to content

About

计算机大学习!:把计算机专业和它要用的数学做成一次一小课的像素风学习游戏。先猜、再看、再做,亲手当调度器、当置换算法,FSRS 间隔复习,183 个技能的技能树,已有 12 个技能、383 课互动课。安卓 App、Windows 安装版和离线网页。A pixel-art learning game for CS and its math: bite-sized lessons, hands-on simulators, spaced repetition.

Topics

Resources

Stars

6 stars

Watchers

0 watching

Forks

Repository files navigation

计算机大学习!:像素风的标题画面,夜空里的星星连成一棵树

计算机大学习!

把计算机专业和它要用的数学,做成一款一次一小课的像素风学习游戏。
先猜、再看、再做;难的机制自己动手“当一回”;做过的题按记忆规律回来复习。

下载安卓 App · 在线玩(网页版) · 背后的技能树 · 玩起来是什么样 · 从源码运行

最新版本 平台 离线可玩 许可证

A pixel-art learning game for a computer-science degree and the math behind it: bite-sized lessons (guess, read, do), hands-on simulators where you play the scheduler or the page-replacement algorithm, spaced repetition (FSRS), and a pointer to the textbook section behind every chapter. Built on cs-math-skill-tree. Android app and offline web page, in Chinese.

预览

远征路线
远征:从零走到“操作系统”的 5 站,每章是一枚蜿蜒排开的关卡,下一关弹出“开始”
课程里的一道题
一课:先猜一猜(不计分),答完马上给对错和为什么,答错不扣任何东西
你来当调度器
你来当调度器:两个线程各把 x 加 1,你来决定谁先跑,亲手做出竞态
技能页
技能页:每章都写明去哪本教材的哪一节深入,要先学什么、为什么,附大学课程证据
营地
营地:继续当前远征、今天该复习几题、等级和连续天数
技能地图
技能地图:183 个技能一张图,缩放拖动,点开就是技能页

手机:营地 手机:远征 手机:当置换算法

玩起来是什么样

  • 一次一小课:每课几分钟。先猜一猜(不计分),再看讲解卡,再做练习;答完马上知道对错和为什么,答错不扣任何东西。
  • 自己动手“当一回”:你来当调度器,决定两个线程谁先跑,亲手做出竞态和死锁;你来当页面置换算法,每次缺页时点要换出的页;Python 代码一步一步执行给你看。课里遇到过的实验都收进“实验室”,随时再玩。
  • 按记忆规律复习:做过的题由 FSRS 排期,快忘的时候回来,跨技能混在一起复习。
  • 一整棵技能树:183 个技能、242 条“要先学”。每个技能写明学完能做什么、要先学什么和为什么,每章指向教材的哪一节,附大学课程证据。
  • 远征:选一个目标,路线由技能树自动排出。现在能玩的是“我的远征:操作系统”,从“程序是什么”一路走到操作系统,5 站 124 课;和推荐远征“算法”,从第一个证明走到网络流和字符串匹配,4 站 129 课。另外七条推荐远征(网络安全、人工智能、DevOps、网站、企业应用、手机应用、嵌入式)的课正在按标准重写,暂时显示“开发中”。
  • 像素风,有声音:像素字体和界面、14 张像素背景、8-bit 音效、25 首背景音乐(4 种风格可选);两位导师鲸鱼娘姐妹会陪你学习。
  • 不用注册:在线网页版需要联网打开;安卓 App、Windows 安装版装好后,电脑版 ZIP 解压后,都能离线游玩。进度存在本机,可以导出和导入。

下载和游玩

  • 安卓 App:在 发布页 下载 cs-math-skill-game-<版本>.apk(标着“计算机大学习”),第一次安装时允许“安装未知应用”。以后 App 每天自己检查一次有没有新版本(“我的”页最下面也能手动检查),覆盖安装进度不丢。
  • Windows 安装版:在发布页下载 cs-math-skill-game-<版本>-windows-x64-setup.exe,双击安装(只装给当前用户,不用管理员权限),开始菜单里打开“计算机大学习”,不用联网。新版本要重新下载安装,进度保留。
  • 电脑版 ZIP:在发布页下载 cs-math-skill-game-<版本>-web.zip,解压后双击里面的 index.html,用浏览器玩,不用联网。
  • 网页版:在线打开,需要网络连接。进度存在浏览器里,可以导出和导入。

现在有多少内容

技能 183 个,242 条必须前置(没点亮不能学下一个)
能玩的远征 我的远征:操作系统:程序设计基础 → C/C++ → 数据结构 → 计算机组成原理 → 操作系统;推荐远征“算法”:证明方法与离散结构 → 程序设计基础 → 数据结构 → 算法分析与设计
互动课 13 个技能,411 课。共 412 道“先猜”、1674 张讲解卡、2017 道即时判题的练习、157 道结业挑战题(第一次答对 ≥ 80% 才点亮)
交互组件 课里用到 12 种:位与补码、栈和队列、哈希表、图(BFS / DFS、拓扑排序、Dijkstra、最大流)、CPU 调度、分页、竞态与死锁、页面置换、Python 单步执行、函数图像(极限、割线、泰勒、黎曼和)、2×2 矩阵变换、梯度下降。抽样、k-means、单神经元和小型神经网络的组件已经做好,等人工智能的课重写后再用上
其余 170 个技能 “开发中”:章节教材、前后置、综合练习和参考答案都能看,供自学,暂时不能点亮
推荐远征 8 条(网站、企业应用、手机应用、嵌入式、DevOps、AI、网络安全、算法),选法见 docs/recommended-routes.md。“算法”已开放。其余七条在 2.0.0 开放过,2.0.1 撤回重写:那批课每课只够看两三分钟,达不到本项目自己的验收标准(抽查见 reports/quality-audit-2026-11-08.md)

一起来写课

这个项目最费人的是写课。按本项目的标准(docs/content-authoring.md),一个技能要先对照教材列出逐节覆盖表,再写二三十课,每个数值、输出和报错都要用 Python 或 gcc 实际跑一遍核对,最后从零基础的角度通读一遍。比如 C.2.2 系统编程与并发同步:28 课,148 处实测核对。还有 34 个技能等着重写,另外 136 个技能连互动课都还没有。

如果你学过其中某门课,愿意帮忙写课、审课(找错、找没讲清楚的地方),或者只是试玩后告诉我们哪里看不懂,都非常欢迎:在 GitHub 上开一个 issue,说说你想做哪个技能。正在重写的分支是公开的,可以先看看写到哪了。

课里的数值、输出和报错由 Python、gcc 或相应的教学模型核对。每道交互题的标准答案由判题代码自动验证。逐项明细和核对方法见 docs/development.md。

从源码运行

需要 Node.js 和 Python。构建脚本从同级目录的 cs-math-skill-tree 读取技能数据,所以两个仓库要放在一起:

git clone https://github.com/zeroa234/cs-math-skill-tree.git
git clone https://github.com/zeroa234/cs-math-skill-game.git
cd cs-math-skill-game
npm install
npm run build        # 生成 output/web/,双击 index.html 就能玩
npm test             # 单元测试;端到端、无障碍、手机宽度等见 docs/development.md

打包安卓 App:node scripts/android/build-apk.mjs,产物在 output/apk/。工具、签名密钥、发新版本见 docs/android.md;版本号只在 package.json 里改一处。

文档

文档 内容
docs/design.md 为什么这样设计,每条依据来自哪里
docs/architecture.md 数据模型、组件接口、核心 API、界面地址;怎么加路线、组件、内容包
docs/content-authoring.md 互动课怎么写:写给零基础的标准、知识覆盖面标准
docs/development.md 内容明细、界面一览、目录、测试、内容是怎么来的、和原技能树相比改了什么、自写的部分
docs/android.md 安卓 App:打包、签名、发新版本、自动检查更新、和网页版的差别
docs/recommended-routes.md 八条推荐远征怎么选的
docs/promo-video-v2.md 宣传片方案(制作中):纯音乐 PV 和广告向两个版本
reports/ 启发式评估和手机版复查、逐节覆盖表、KTH 课程先修交叉核对、调研

已知限制

  • 其余 170 个技能可自学,进度不计入点亮。
  • 改版只经过一名评估者的启发式评估和自动审计,还没有真人试玩。还没改的问题见 reports/hci/phone-review.md(比如地图初始缩放下文字太小)。
  • 进度只存在本机(浏览器或 App)里;换设备要导出、导入。
  • 交互组件为教学做了简化:调度器按整数时间单位,分页只有一级页表,线程模型只有赋值、锁和信号量,页面置换只有 FIFO、LRU 和最优三种(时钟算法只在课里讲)。

用到的开源组件

组件 许可 用途
Preact 10.29.8 MIT 界面
ts-fsrs 6.0.0 MIT 间隔复习排程(FSRS-7)
@panzoom/panzoom 4.6.2 MIT 地图平移缩放
KaTeX 0.18.11 MIT 公式
marked 18.1.3 + marked-katex-extension 5.1.13 MIT Markdown
canvas-confetti 1.9.4 ISC 三星彩带
ZzFX 1.4.0 MIT 8-bit 音效,播放时合成,没有音频文件
OpenGameArt 上的音乐:Juhani Junkala(SubspaceAudio)、RandomMind、HoliznaCC0 CC0 背景音乐 25 首(assets/music/README.md);用浏览器自带的 <audio> 播放
Fusion Pixel Font 12px 简中(比例版 + 等宽版,2026.10.25) OFL-1.1 全部文字的像素字体,代码用等宽版(assets/fonts/,许可证同目录)
pixelarticons 2.4.2 MIT 像素图标(src/game/ui/icons.jsx)
Capacitor 8.5.3(core、cli、android)+ app 8.1.2、filesystem 8.1.5、share 8.0.3 MIT 安卓 App 外壳、返回键、App 里导出存档;图标用 @capacitor/assets 4.0.0 切图
esbuild、js-yaml、ajv、playwright-core MIT / MIT / MIT / Apache-2.0 构建、内容格式校验、测试(开发依赖)

哪些是自己写的、为什么没用现成库:docs/development.md“自写的部分”。

许可证

本项目(代码、课程内容、文档、像素背景、图标和两位导师的素材)采用 CC BY-NC 4.0(知识共享 署名-非商业性使用 4.0):可以分享和改编,但要署名,并且不能用于商业目的。使用导师素材时还要署名角色设计者(见下面的署名)。第三方部分保留各自的许可证:npm 依赖见上面的组件表,像素字体是 OFL-1.1,背景音乐是 CC0。

署名

  • 鲸鱼娘(鲸鱼姐姐、鲸鱼妹妹):角色设计作者 ZipZipPipe,许可 CC BY-NC 4.0。本游戏做了这些改动:蓝发姐姐的立绘去掉了背景;黑发妹妹是在原设计上衍生的黑色女仆版(同一画风的立绘和三视图);两人的像素小人是照设定(发色、鲸鳍耳、尾巴、女仆装)自己建的方块 3D 小人,眼睛放大了一些,长裙改成了短裙。素材在 assets/cast/(来源和处理见其 README)。游戏里“我的 → 角色来源”也写着这条署名。

About

计算机大学习!:把计算机专业和它要用的数学做成一次一小课的像素风学习游戏。先猜、再看、再做,亲手当调度器、当置换算法,FSRS 间隔复习,183 个技能的技能树,已有 12 个技能、383 课互动课。安卓 App、Windows 安装版和离线网页。A pixel-art learning game for CS and its math: bite-sized lessons, hands-on simulators, spaced repetition.

Topics

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages