ACM 课程前期准备:C++ 环境与 AI 助教

2026-09-09 00:00    #ACM   #C++   #WSL   #VS Code  

这份清单请在开课前一天完成。上课时间用来写题和讨论算法,不用来现场安装环境。完成标准是:能在 Ubuntu 终端编译、运行一个 C++ 程序,并能用 VS Code 打开同一个目录。AI 助教是选做项;没有账号、API Key 或付费额度,也可以完成基础准备。

先确认自己的系统

电脑准备方式
Windows 11按下文安装 WSL 2、Ubuntu、VS Code,然后在 Ubuntu 内安装 C++ 工具
已安装 Ubuntu 的 Linux 电脑跳过 WSL 安装,直接从「安装 C++ 工具」开始

本课程统一在 Ubuntu 终端里运行 g++、gdb 和 git。Windows 同学把代码放在 Ubuntu 的家目录,例如 ~/acm,不要把课程工程放在 /mnt/c/...。微软的 WSL 文件存放建议也建议把 Linux 命令频繁访问的文件放在 Linux 文件系统中。

1. Windows:安装 WSL 2 和 Ubuntu

以管理员身份打开 PowerShell,运行:

1wsl --install

按提示重启电脑。首次启动 Ubuntu 时,设置一个 Linux 用户名和密码;输入密码时终端不会显示字符,这是正常的。回到 PowerShell,检查发行版和 WSL 版本:

1wsl --list --verbose

列表中应能看到 Ubuntu,VERSION 应为 2。然后从开始菜单打开 Ubuntu,以下标注为 bash 的命令都在 Ubuntu 终端运行。如果安装命令报错,先看微软的 WSL 安装说明和错误提示,不要在 Windows PowerShell 里执行 apt。

已有 Ubuntu 实机的同学直接打开终端,继续下一步。

2. Ubuntu:安装 C++ 工具

1sudo apt update
2sudo apt install build-essential gdb git
3g++ --version
4gdb --version
5git --version

build-essential 包含课程需要的 C++ 编译工具。最后三条命令都能显示版本号,才算安装成功。这里不要求先安装 CMake;第一周的单文件程序用一条 g++ 命令即可编译。

3. 安装 VS Code,并连接 Ubuntu

Windows 同学在 Windows 中安装 VS Code,在扩展市场安装微软的 WSL 扩展。打开 Ubuntu 终端,建立课程目录并在 VS Code 中打开:

1mkdir -p ~/acm
2cd ~/acm
3code .

VS Code 打开后,确认左下角显示 WSL 连接状态;在扩展页面给 WSL: Ubuntu 安装微软的 C/C++ 扩展。注意窗口和终端是否都在 Ubuntu 环境,避免在 Windows 与 Ubuntu 各建一份 main.cpp。具体界面可参考 VS Code 的 WSL 指南和 WSL C++ 配置说明。

Ubuntu 实机的同学安装 VS Code 后,在普通终端运行相同的 mkdir、cd、code . 命令,并安装 C/C++ 扩展;界面不会显示 WSL 标识。

4. 编译并运行第一个程序

在 ~/acm 中新建 main.cpp:

1#include <bits/stdc++.h>
2using namespace std;
3
4int main() {
5    cout << "ACM Ready!" << endl;
6    return 0;
7}

打开 VS Code 的 Ubuntu 终端,确认当前目录是 ~/acm,然后运行:

1pwd
2g++ main.cpp -std=c++20 -O2 -Wall -Wextra -o main
3./main

最后应输出 ACM Ready!。g++ 成功时通常不输出内容;-std=c++20 指定语言标准,-O2 开启常用优化,-Wall -Wextra 显示更多编译警告,-o main 指定可执行文件名。以后改完代码,要重新编译再运行,否则 ./main 仍可能是旧程序。

课前基础验收

能展示 g++ --version、gdb --version、git --version,并在 VS Code 打开的 ~/acm 目录运行出 ACM Ready!。AI 工具不属于基础验收。

5. 选做:在 VS Code 中使用 AI 助教

先学会自己读题、估计复杂度、写代码和造样例。AI 可以帮助检查思路、指出边界情况、解释报错;它的答案需要自己验证。不要直接让它代写题解或覆盖自己的代码。

草稿中使用的是 DeepSeek V4 for Copilot Chat,作者为 Vizards。它是可选插件,并非 VS Code 自带的免费 DeepSeek 服务。按该插件目前的 项目说明,使用它还需要兼容版本的 VS Code、可用的 GitHub Copilot 账号,以及单独申请的 DeepSeek API Key;API 调用可能产生费用。插件与 VS Code / Copilot Chat 更新后的兼容情况也可能变化,安装前以项目说明为准。

愿意使用此方案的同学按下面操作:

  1. 在 VS Code 中登录 GitHub Copilot,并确认 Chat 可用。
  2. 在扩展市场搜索 DeepSeek V4 for Copilot Chat,核对作者 Vizards 后安装。不要只凭名称安装其他同名插件。
  3. 自行前往 DeepSeek 开放平台 注册,在 API Keys 页面创建 Key;需要额度时按平台的实际提示处理。不要把 Key 发给同学、教师或 AI,也不要写进 main.cpp、AGENTS.md、截图或 Git 仓库。
  4. 按 Ctrl+Shift+P 打开命令面板,输入 DeepSeek,选择 DeepSeek: Set API Key(中文界面可能显示「设置 API Key」),在输入框粘贴自己的 Key。
  5. 打开 VS Code Chat,在模型选择器中选该插件提供的 DeepSeek 模型,再发送一条简短问题,确认能收到回复。

在扩展市场核对插件名称和作者

在命令面板设置 API Key

在 Chat 中选择 DeepSeek 模型

截图用于辨认入口;不同系统、主题和插件版本的按钮文字可能不同。能在 VS Code Chat 中收到该模型的回复,才算 AI 部分配置成功。只安装插件或只保存 Key 都不等于调用成功。若不想注册或付费,跳过整节即可。

6. 让 AI 像助教一样工作

对话前先写出自己的想法。以下提示词可以直接复制,并把题目描述和当前代码提供给 Agent:

1你是我的 ACM 助教。请阅读题目和我当前的 main.cpp。
2不要直接给完整答案,也不要修改文件。
3
4请依次帮助我:
51. 根据数据范围估计可接受的时间复杂度。
62. 判断我的思路是否正确;如果有问题,先只给一个提示。
73. 指出我可能遗漏的边界情况。
84. 等我自己修改后,再继续检查。

如果程序在 OJ 上得到 WA,可以这样问:

1我的程序在 OJ 上 WA。请阅读题目和 main.cpp,不要修改文件。
2请构造一组尽量小的反例,写出正确输出和我的程序实际输出,
3再解释两者为什么不同。请不要直接给我完整修改版代码。

拿到反例后,自己在终端运行它,检查 AI 给的“正确输出”是否符合题意。AI 可能误读题目或算错样例;没有亲自验证的反例不能当作结论。

可选:给练习目录放一份 AGENTS.md

如果所用 Agent 支持读取项目级指令,可在 ~/acm 创建 AGENTS.md,写入自己的学习规则:

1# ACM 学习规则
2
3你是一名 ACM 算法助教。目标是帮助我学会解题,而不是替我完成题目。
4
51. 先询问我当前的思路,不直接给完整代码。
62. 提示顺序:数据范围、时间复杂度、算法方向、关键性质、伪代码。
73. 我写出代码后,可以帮我 Debug;优先指出位置和原因。
84. AC 后帮我分析时间复杂度、空间复杂度、边界情况,并提醒我自己总结。
95. 未经我同意,不修改项目文件或执行可能改动文件的命令。

VS Code 支持将项目中的 AGENTS.md 作为 Agent 指令,但实际是否读取还取决于当前使用的 Agent 和配置。首次对话可以请它复述本目录的学习规则来检查;如果没有生效,就把规则粘贴到对话中。参见 VS Code 项目指令文档。

可选:让 Agent 检查整个练习目录

建立一个独立目录,例如 ~/acm/acm-test/,把题目说明和 main.cpp 放进去,然后提出:

1阅读当前目录的题目说明和 main.cpp。先告诉我你准备执行哪些命令。
2在我确认后,编译程序,生成一些小规模测试数据并运行。
3只报告失败的输入、实际输出、你推导的正确输出和原因;不要修改文件。

这样 Agent 才能把读文件、编译、运行和分析串起来。执行前先看清它提出的终端命令;如果它需要文件编辑或终端执行许可,按实际操作决定是否批准。先在练习目录试用,不要把未检查的命令直接用于重要文件。

遇到问题先检查这些

现象检查方法
g++: command not found确认终端是 Ubuntu;重新运行 sudo apt update 和 sudo apt install build-essential
VS Code 打开了错误目录在 Ubuntu 终端运行 cd ~/acm && code .,再检查窗口左下角是否为 WSL
改完代码运行结果没变化先重新执行 g++ main.cpp -std=c++20 -O2 -Wall -Wextra -o main,再运行 ./main
插件里找不到 DeepSeek 模型确认装的是 Vizards 的插件、Copilot Chat 已登录、插件和 VS Code 版本符合项目说明
AI 提示鉴权、余额或网络错误核对 Key 是否配置成功、平台账号状态与余额;不要把完整 Key 或含 Key 的日志发到群里

课前只需提交或展示基础验收的终端结果。有余力再尝试 AI 助教,并在第一堂课带来一个自己遇到的编译错误或边界情况。