基础培训 作业评分与查重
10 分钟讲授内容
助教在工作中,常常遇到作业评分的任务。有时教师会给出评分标准,或已有往年评分标准。有时需要自己制定评分标准。
前者只需“照章办事”,这里主要讨论的是需要助教自己制定评分标准的情况。
对于书面作业,首先要避免随机给分或按照作业长度给分。如果希望减轻评分的工作量,可以考虑随机抽选一部分题目进行评分。理想情况下,应该将作业的解答提供给同学,然后在不同学期尽量轮换一些题目。但实际情况中,可能会一直复用往年的书面作业,同学也复用往年的答案,书面作业就失去了训练的意义。这种情况下不如将书面作业取消,增加其他更有意义的学习活动。
技术上,建议让同学提交统一通用的文件格式,例如 pdf 文件,甚至设置一个类似表格模板的东西提交,作业的评分过程利用脚本辅助,形成“助教看作业、给分、自动跳到下一份作业”的工作流。
工作量更大的是编程作业的批改,包括白盒和黑盒两个部分。
讨论的问题
问题 1:
假设某门课需要增加一个大作业,实现能在重庆用的地图寻路算法,评分标准应该如何制定?
(某门课替换成离散数学、面向对象程序设计、数据结构、软件工程等不同课程名字,思考回答会有什么不同。)
制定评分标准时,可以思考设问思路:
- 做到什么程度可以拿 60 分、80—90 分、100 分,什么程度可以超出 100 分额外加分?
- “80—90 分的标准”通常就是你希望大多数同学达到的水平;评分标准需要和课程核心目标一致。
- 然后换一个 context:假设它是 GIS 课 / 数据结构课 / OOP 课的大作业,评分标准应如何调整?
也可以找一门具体的作业来练习:程设的 Wordle 大作业、软院“写游戏”大作业、数据结构白盒代码风格与实验报告评分、研究生课的作业等,分别讨论如何定评分标准。
问题 2:
大语言模型会给代码查重带来什么影响?
更重要的是:如何设计良好的评分标准和查重方法,使得同学不会只用 LLM 就拿到大部分分数,从而鼓励同学自己的深入思考?
最后,简单分享了 SIGCSE2024 论文 learners teaching novices,如何通过让学生教别人编程来评价学生自己有没有掌握。