# Teaching Notes — CS 专业课程系统自学

## User Preferences
- 准大学生，喜欢动手实践，不喜欢长时间看书/看视频
- 目前零基础，需要从最基础的课程开始
- 节奏：慢慢来，宁可慢一点也要真正理解
- 目标明确：跟着学校培养方案，提前自学+巩固
- 用中文讲解，代码注释也用中文
- **铁律（2026-10-13 用户明确要求）：「以后不要直接更改我写的代码」** —— 绝不修改 `D:\c++\LiangXi_LuoGu\` 下的任何文件。只做：读代码 → 编译 → 跑样例 → 随机对拍 → 把结论用「文件:行号 + 反例」交给他，由**他自己动手改**。需要写示范/修复版时，一律写到工作区副本（如 `_wfix/`），并在说明里指出这是副本、原文件未动
- **改错优先引导（2026-10-13 追加）**：「以后的代码改错优先提供引导」—— 查出 bug 后**不要直接给修改方案**，按下面的阶梯**一次只推一层**，等他回话再往下：
  1. **只圈范围**：告诉他在哪个函数/哪一段，不说哪一行
  2. **给反例**：给一组能触发错误的最小输入，让他先猜「你的程序会输出什么、应该输出什么」
  3. **定向提问**：指到行 + 一个问机制的问题（如「集合里只有 1 个数时，这个 `if` 走哪个分支？」），不给答案
  4. **才给改法**：只有他明确说「直接告诉我」或自己在 2 轮里试过还卡住时才给，且尽量只给一句关键改动
  - 例外：编译报错（语法/拼写）可以直接指出来；他主动贴代码求 review 时不套用本阶梯
- **不要开本地预览服务（2026-10-13 用户明确要求）**：「http://localhost:4000/study/reference/roadmap.html 关掉，以后不用开这个」—— 以后同步完博客只报「同步了多少文件、产物落在哪」，**不要附 `hexo server` / localhost:4000 的预览地址或命令**，也不要为了验证去起本地服务（直接查 `public\` 下的产物即可）
- **不要在工作区生成 `_w*` 实验目录（2026-10-17 用户明确要求）**：「以后不用生成 w0411 等文件」→ 进一步确认（同日的追问选项）：「**完全不落地**」—— 编译副本、对拍脚本、基准测试、日志等验证用文件**一律不生成**，系统临时目录也不用；需要给修复版/示例时，**直接在回答里贴代码**，不写任何文件。原文件（`D:\c++\LiangXi_LuoGu\`）依旧只读。旧的 `_w0410` / `_w0411` / `_w2c` / `_wcppc` / `_wdp` / `_wfix` / `_wqx` 共 7 个目录、342 个文件已按用户要求**全部删除**
- **课件「看不懂」= 重写那一节，不是加解释（2026-10-17）**：他说「最短路 I：Dijkstra 有点看不明白」之后，把 0411 整节重写成「三句话概要 → 先手推一张四格表 → 逐轮推演表（每轮挑谁、松弛了什么、数组怎么变）→ 盖章证明三行 → 堆优化 + 懒删除 → 语法表 → 坑点 8 条」。以后他卡住时：先给**能自己动笔跟着走的表**，再讲证明；证明一段话能说清就别写三段；纯数字（耗时、复杂度）一律现场重测后再写

## Teaching Approach
- 每节课短小精悍，控制在 20-30 分钟内可消化
- **课件统一结构（2026-10-17 全库升级，33 份已全部改造完）**：`h1` → 副标题 → 上节课/这节课 callout → 「三句话速览」`keypoint` → 分节 `h2` → 坑点清单 → 小测（每题带 `data-explain`）→ 动手练习 + `ol.steps` 自查顺序 → 本课小结 → 下一课预告 → `lesson-meta` + `footer-nav`；表格一律 `thead`/`tbody`，单个代码块 ≤40 行，`pre` 内 `<`/`&` 必须转义。新课件照这个骨架写。
- 知识点讲解后立刻跟一道配套练习
- 课程顺序严格按照大学培养方案的学期安排（从程序设计基础开始）
- 每门课结束时做一个综合小项目，串联该课程的核心知识点
- 定期做跨课程串联（例如：学完离散数学的图论后，在数据结构中讲图时做关联）

## Course Sequence (13 Courses)
1. 程序设计基础（C/C++） — 大一上
2. 离散数学 — 大一上
3. 面向对象程序设计（C++） — 大一下
4. 数据结构与算法 — 大二上
5. 高级数据结构与算法 — 大二
6. 数字电路基础 — 大一
7. 电路与模拟电子技术基础 — 大一
8. 计算机组成原理 — 大二下
9. 数据库系统原理 — 大二
10. 操作系统 — 大三上
11. 计算机网络 — 大三
12. 软件工程 — 大三
13. 编译原理 — 大三下

注：含硬件的课程（6、7、8）和实践性强的课程（12）会部分依赖实验室和团队，教学重点放在理论和模拟上。

## Side Track（并行支线）

- 工程工具链：**Git / GitHub + Linux / Ubuntu / WSL2**
  - 来源：`D:\c++\算法组千行任务\27算法组千行任务.pdf` 中筛选出的通用部分（OpenCV / ROS2 / Navigation2 等机器人专属内容暂缓）
  - 节奏：每周 1-2 次、每次 30 分钟，不占主线课时，主线仍是 ④ 数据结构（0411 / 0412 课件已出，下一课 0413 最小生成树）；逐课安排见 reference/roadmap.html
  - 最小可交付：① `D:\c++\LiangXi_LuoGu` 变成 Git 仓库并推到 GitHub；② WSL2 里能编译运行现有 C++ 程序
  - 编入时间：2026-09-29，位置：课程地图「阶段六：工程工具链」
