一、先说清楚这门课
这是一门面向零基础大一学生的大学 ACM 算法选修课:一学期 16 周,每次 2 节连堂,期末目标是能打天梯赛和校赛。
我的判断是:这门课真正的门槛不在算法本身,而在两件事——
- 环境:能不能在 5 分钟内把一份
main.cpp编译跑起来; - 提问方式:会不会让 AI 当助教,而不是当枪手。
所以前期准备就两条线:一条是 Linux + g++ 的编译环境,必须在第一周开课前一天全部装完;另一条是约束 AI 的提问方式,贯穿整个学期。
二、最重要的一条:上课前不要现场装环境
我不接受"上课第一周带着学生装环境"。那会耗掉整整两次课,而且一定会有三分之一的人卡在不同的报错里,剩下的时间全在救火。
要求学生在开课前一天就全部准备完成。
Windows 学生统一走这条链:
1Windows 11
2 ↓
3WSL2
4 ↓
5Ubuntu
6 ↓
7g++ / gdb / git
8 ↓
9VS Code
10 ↓
11VS Code Remote/WSL
12 ↓
13AI Agent
有 Linux 实机的学生直接 Ubuntu 即可,不必再套 WSL。
我反而不推荐 Ubuntu 虚拟机作为第一选择。大学生 ACM 编程本质上只需要 Linux terminal + gcc,WSL2 完全够用,而且文件互通、剪贴板共享、VS Code 集成都比虚拟机方便得多;虚拟机带来的性能损耗和显示问题,对零基础学生是纯粹的额外负担。
验收标准
开课前让学生把这三条命令的截图发到群里,能跑通就算过关:
1g++ --version
2git --version
3gdb --version
再让他们提前编译一次这段程序:
1#include <bits/stdc++.h>
2using namespace std;
3
4int main() {
5 cout << "ACM Ready!" << endl;
6 return 0;
7}
统一编译命令可以直接教,整个学期都不变:
1g++ main.cpp -std=c++20 -O2 -Wall -Wextra -o main
2./main
甚至第一周都不需要 CMake。对 ACM 来说单文件编译就是常态,引入构建系统是第二学期的事。
三、AI 工具:只定一个必装,其余可选
市面上的 AI 编程工具每周都在变,但 2026 年的 VS Code 自身已经把 Agent 能力做得非常完整。官方支持 GitHub Copilot、Anthropic Claude、OpenAI Codex 等 agent harness,可以在编辑器里直接做 Plan、Agent、代码编辑、终端执行和测试。VS Code 官方现在也把这种 agent 工作流当作核心开发方式之一。
所以我不建议把一堆聊天软件都列成"必装软件"。工具表我定成这样:
| 工具 | 定位 | 是否必需 |
|---|---|---|
| VS Code | 编程环境 | 必须 |
| VS Code AI Agent / Cline | 编程 AI | 二选一必须 |
| Cherry Studio | 问概念、总结知识、读题 | 可选 |
| Git | 保存代码 / 比较 AI 修改 | 必须 |
Git 之所以是必装,不是因为要协作,而是因为:AI 改完你的代码,你得能看到它改了什么。 git diff 是学生唯一能守住"代码是我自己写的"这条底线的工具。
如果让我给学生统一,我现在更倾向于
VS Code + deepseek-v4-for-copilot 插件。
理由有三条:
- 成本低:DeepSeek 的 API 价格对一整个班的学生来说几乎可以忽略,充值几十块够用一学期;
- 中文语境好:题目是中文的,学生的描述也是中文的,DeepSeek 对中文算法题的理解明显更稳;
- 零命令行:它走的是 VS Code Copilot 的插件通道,学生不用装 CLI、不用配代理、不用碰环境变量——装插件、粘 Key、开始聊天,三步结束。
下面就是这三步。
四、安装 deepseek-v4-for-copilot 插件
插件官方使用文档:https://github.com/Vizards/deepseek-v4-for-copilot/blob/main/README.zh-cn.md
第一步:安装 deepseek-v4-for-copilot 插件
在 VS Code 扩展面板里搜索插件名,安装:

第二步:配置 API Key
注册 DeepSeek,先充值,然后到 API Keys 页面创建一个 Key。
回到 VS Code,用快捷键 Ctrl + Shift + P 打开命令面板:

在命令面板里找到插件的配置项,粘贴自己的 Key。
第三步:开始聊天
配置完成后打开侧边栏对话,就能直接问问题了:

五、用 AGENTS.md 把它变成 ACM 助教
插件装好只是"能聊天"。真正让它变好用的是在项目根目录放一个 AGENTS.md——VS Code 的 agent 会自动读取它,作为这个项目的长期规则。
1# ACM Learning Rules
2
3你是一名 ACM 算法助教。
4
5目标不是替学生完成题目,而是帮助学生掌握算法。
6
7当学生询问题目时:
8
91. 不要直接给出完整代码。
102. 首先询问学生当前的思路。
113. 优先给提示,而不是答案。
124. 提示顺序:
13 - 数据范围
14 - 时间复杂度
15 - 算法方向
16 - 关键性质
17 - 伪代码
185. 只有学生已经写出代码后,才允许帮助 Debug。
196. Debug 时优先指出问题位置,不直接重写完整程序。
207. AC 后帮助学生分析:
21 - 时间复杂度
22 - 空间复杂度
23 - 边界情况
24 - 是否存在更优解法
258. 每道题最后要求学生自己总结算法。
这个文件是整个学期最值得花 10 分钟讲的东西:默认状态下 AI 会给答案,你必须主动把它改成"给提示"。 学生一旦学会写规则文件,这个能力可以迁移到任何工具上。
六、第一个实验:直接让 AI 看整个工程
不要让学生拿 AI 问概念题,那和搜索引擎没区别。第一次实验就让它读整个工程。
创建:
1acm-test/
2└── main.cpp
main.cpp:
1#include <bits/stdc++.h>
2using namespace std;
3
4int main() {
5 vector<int> a = {5, 1, 4, 2, 3};
6
7 sort(a.begin(), a.end());
8
9 for (auto x : a)
10 cout << x << " ";
11
12 return 0;
13}
然后让学生直接在 agent 里问:“这个程序做了什么?时间复杂度是多少?如果数组有一百万个元素会怎样?”
这一步的目的是让学生建立认知:AI 能看到我的文件,不是只能看我粘贴的片段。
七、三个可以直接抄的 Prompt
下面三段话我会直接发给学生,允许他们原样复制。
1. 审题:先自己想,再让 AI 评判
1你是我的 ACM 助教。
2
3请阅读题目和我当前的 main.cpp。
4
5不要直接给我完整答案,也不要直接重写代码。
6
7请按照下面顺序帮助我:
8
91. 根据数据范围判断允许的时间复杂度
102. 判断我的算法思路是否正确
113. 如果错误,只给我一个提示
124. 如果代码有 bug,指出大概位置和原因
135. 等我修改后再继续检查
第 1 条是这段 Prompt 的价值所在——逼学生先读数据范围。绝大多数 WA 和 TLE 都源于没看数据范围就动手。
2. WA 时:让 AI 构造反例,而不是改代码
1我的程序在 OJ 上 WA。
2
3不要直接修改代码。
4
5请:
61. 阅读 main.cpp
72. 分析可能遗漏的边界情况
83. 给我构造一个能 Hack 掉当前程序的数据
94. 告诉我实际输出和正确输出为什么不同
这个用法比"帮我改代码"有教学价值太多:学生拿到的是一个能复现失败的输入,以及一段因果解释,而不是一份改好的代码。
3. 检查代码:只要诊断,不要重写
1不要重写我的代码。
2
3请根据题目检查我的 main.cpp:
41. 判断算法复杂度
52. 找可能的边界情况
63. 如果存在 bug,只告诉我 bug 的位置和原因
74. 不要直接给完整答案
八、Agent 最厉害的地方:可以把多个动作串起来
聊天式 AI 只能看你喂给它的东西。真正的 Coding Agent 能自己动手。
以后学生甚至可以说:
1阅读当前目录里的题目说明和 main.cpp。
2
3先编译程序。
4
5然后自己生成 10 组小规模测试数据。
6
7如果程序崩溃或者出现明显错误,
8告诉我失败的测试数据以及原因。
9
10不要修改代码。
Agent 可以自己形成这样一条链:
1读取文件
2 ↓
3理解代码
4 ↓
5调用 Terminal
6 ↓
7g++ 编译
8 ↓
9运行测试
10 ↓
11分析结果
12 ↓
13回答学生
这才是真正的 Coding Agent,也是它和 Cherry Studio 里普通聊天最大的区别:它不是在描述代码,它是在操作你的工程。
小结
开课前一天要完成的清单,就这四条:
-
g++ --version/git --version/gdb --version三条命令跑通 -
ACM Ready!编译运行成功 - VS Code +
deepseek-v4-for-copilot装好,Key 配好,能聊天 - 每个项目根目录放一份
AGENTS.md
剩下的,交给学期里的一道题一道题。