编程证明指南
核心问题:代码相似(都用 VEX API + PID)的情况下,学生如何证明代码是自己写的? 背景:代码问题导致的 DQ 占所有 DQ 的 ~35%,是最大的单一原因
为什么编程最容易被 DQ
- 代码看起来都差不多 — 所有队都用 VEX API,PID 代码网上到处都是
- 学生容易背术语 — 说"我用了 PID"但说不清 PID 是什么
- 代码可以一秒复制 — 不像硬件还需要动手搭,代码复制粘贴就能跑
- 评审可以现场验证 — "打开代码给我看" 是最有效的测试手段
评审怎么测代码是不是你写的
| 评审策略 | 学生应对 |
|---|---|
| "打开代码,我随便指一段你解释" | 不是你选哪段,是评审随机指 |
| "这个变量叫 XX,为什么这样命名" | 自己写的代码命名有自己的逻辑 |
| "如果我要加一个新功能,改哪里" | 理解架构才能回答 |
| "这段代码删掉会怎样" | 理解依赖关系 |
| "你的 PID 参数是多少,怎么调的" | 要说过程不只是结果 |
| "你和 XX 队的代码像不像" | G4d 测试 |
真写了 vs 没写:评审怎么看
| 维度 | 自己写的学生 | 复制粘贴的学生 |
|---|---|---|
| 代码命名 | 有自己的命名习惯和风格 | 风格和网上模板一致 |
| 解释逻辑 | 用自己的话,可能不标准但理解正确 | 念变量名或背诵定义 |
| bug 经历 | 能说出具体的 bug 和调试过程 | "没遇到过 bug" |
| 修改历史 | "一开始写的 XX,后来改成了 YY 因为 ZZ" | 只有最终版本 |
| 加功能 | 知道改哪里、怎么改 | "需要想想"或完全说不出 |
| PID 调参 | 能说出调参步骤和每步的效果 | 只知道最终参数值 |
证明框架:编程的 5 件事
1. 代码结构(架构证据)
"我们的代码分成 ___ 个部分,分别是 ___,这样组织是因为 ___"
怎么准备:
- 画一个代码结构图(不看代码,用纸笔画)
- 说出每个文件/函数的作用
- 解释为什么这样分模块
常见错误:
- "就一个文件" → 也要能解释内部逻辑分块
- 说不出任何函数名 → 可能不是自己写的
2. 关键算法(理解证据)
"我用了 PID 控制,P 是 ___,作用是 ___;I 是 ___,作用是 ___;D 是 ___,作用是 ___"
怎么准备(PID 专项):
- P(比例):离目标越远,力度越大。像弹簧一样把你拉向目标
- I(积分):如果一直到不了目标(稳态误差),慢慢加力。像是"耐心"
- D(微分):接近目标时减速,防止冲过头。像是"刹车"
- 用自己的话写一遍,不要背定义
- 说出你的具体参数值:P=, I=, D=___
- 说出调参过程:先调 P 到 ___,发现 ___,然后加 D 到 ___...
怎么准备(其他算法):
- 状态机:画出状态图,每个状态做什么,什么条件切换
- 传感器融合:用了哪些传感器,怎么组合使用
- 路径规划:怎么规划路线,怎么处理偏差
常见错误:
- 说了"PID"但 P/I/D 解释不了 → DQ 原因 #1
- "网上学的" 但说不出自己怎么应用的 → 不算理解
3. 调试过程(迭代证据)
"有一次自动赛 ___出了问题,我用 ___ 方法定位到原因是 ___,改了 ___ 后解决了"
怎么准备:
- 回忆 1-2 个真实的 bug(一定有,不可能没有)
- 用"发现→排查→定位→修复→验证"结构整理
- 说出用了什么调试方法(打印输出?传感器读数?逐步排查?)
- 如果真想不起来,现在故意制造一个 bug,自己调试并记录
常见错误:
- "没遇到过 bug" → 评审 100% 不信
- "教练帮修的" → G2 违规
- 只说"改了代码"但说不出改了什么 → 可能不是自己改的
4. 开发过程(时间线证据)
"我是按 ___ 顺序写的代码,先写了 ___,因为 ___,然后加了 ___"
怎么准备:
- 回忆写代码的顺序(先手动赛?先自动赛?先基础移动?)
- 代码有几个主要版本?每次加了什么功能?
- 有 git 的话,commit 记录就是最好的时间线证据
- 没有 git 的话,笔记本里要有代码开发的日期记录
常见错误:
- 没有任何版本历史 → 看起来像一次性复制的
- 说不出开发顺序 → 可能不是自己写的
5. 和别人的代码有什么不同(G4d 证据)
"虽然我们和 XX 队都用了 PID,但我们的 ___ 不同,因为 ___"
怎么准备:
- 和同车型队伍对比代码的核心差异
- PID 参数不同是最基本的(因为机器人不同)
- 但还要说出更深层的差异:自动赛策略不同、控制逻辑不同、传感器使用不同
- 如果确实参考了同一个教程/模板,说清各自做了什么不同的改动
常见错误:
- "代码差不多" → G4d 红旗
- "我们共享了代码库" → 如果不能解释各自的改动,直接 DQ
编程面试的连带问题链
"你的代码是谁写的?"
↓
"打开给我看,解释这段"(随机指)
↓ 如果解释不清
"这个算法/函数是从哪学的?"
↓
"你自己改了什么?"
↓ 如果说不出改动
"教练有没有帮你写过代码?" ← 到 G2
↓
"你和 XX 队的代码一样吗?" ← 到 G4d
↓
"笔记本里有代码开发记录吗?给我看看" ← 终极验证
"代码不是我写的"怎么办
情况 1:代码是队友写的,我负责其他工作
可以接受,但这个队友必须能完整解释代码。你需要:
- 说出"代码主要是 XX 写的,我负责的是 ___"
- 能说出代码的基本功能和架构(不需要逐行解释)
- 你自己负责的领域(硬件/策略/测试)要能深入回答
情况 2:代码是教练写的
G2 违规。必须立刻补救:
- 学生重新写一遍(可以参考原来的,但必须自己打字+理解)
- 至少能解释每段代码的作用
- 在笔记本里记录"重新学习和重写代码"的过程
情况 3:代码是从网上复制的
G4 违规(除非是 VEX 官方 Hero Bot 代码)。补救:
- 承认参考了什么来源
- 说出自己做了哪些修改和为什么
- 如果没改,现在改——加入自己的逻辑/优化/功能
- 在笔记本里记录来源和改动
现在就做的行动清单
对每支队伍:
- 指定"代码代言人" — 谁最了解代码,谁负责回答编程问题
- 代码代言人完成"5件事"准备 — 架构、算法、调试、开发过程、差异
- PID 专项 — 每个用了 PID 的学生写一段自己的话解释 P/I/D + 自己的调参过程
- 准备一个 bug 故事 — 用"发现→排查→定位→修复→验证"结构
- 和同车型队伍做代码差异对比 — 列出具体差异点
- 检查代码有没有版本历史 — git commit 或笔记本代码日志
- 模拟"打开代码现场解释" — 让别人随机指代码,学生现场解释