计算机科学(CS)专业的作业通常由两部分组成:自动测试(Auto-marking)和人工评分(Manual Marking)。很多同学只关注前者,忽略了后者,导致辛辛苦苦写代码却拿不到 HD。
1. 自动测试的噩梦:Edge Cases
Ed, Gradescope 等自动测评系统最喜欢卡边界情况。
- 空输入: 输入为空列表、空字符串时,程序会崩吗?
- 极大值: 输入数据量达到 $10^6$ 时,你的 $O(n^2)$ 算法会超时(Timeout)吗?
- 非法输入: 题目说输入是正整数,但如果测试用例给了负数或浮点数,你需要做异常处理吗?
2. 人工评分的重点:Code Style
代码写给人看的,顺便给机器运行。
- 变量命名: 不要用
a,b,x,请用student_list,average_score。 - 注释: 关键逻辑要有注释,但不要每行都加。
- 模块化: 一个函数只做一件事。超过 50 行的函数通常需要重构。
3. 抄袭检测:MOSS 系统
不要以为改改变量名就能通过查重。MOSS(Measure of Software Similarity)分析的是代码的结构指纹。
- 完全重写逻辑结构才是安全的。
- GitHub 上的开源代码不要直接 Copy,很容易“撞车”。
寻求帮助 如果你的代码卡在 Test Case 无法通过,或者不论怎么优化都会超时,我们的 ACM 获奖导师可以帮你进行代码诊断和性能优化。
