2021年OO助教工作总结
By Huang J.W.
在大三学年我有幸加入OO课程团队,担负起OO Star的职责。在长达一年的工作中,虽有不少汗水,但同样收获到许多乐趣。我所负责的工作除评测外,还包括pre3及第三单元的教程部分。
关于pre3
pre3是我所接手的第一项工作,主要在大二结束的暑假进行,训练目的是让同学们初步掌握Java字符串处理以及正则表达式的相关内容。由于在OO课程中pre的后两弹放在寒假末期开展,如果难度过高会影响部分同学刚过完年后的情绪以及攻破课程的自信心,而难度过低则达不到为正式课程作业铺垫的目标,因此pre题目的设计做到“小而精”至关重要。相对于18级同学们的pre3而言,我们所设计的小型邮件系统题目并未针对字符串处理这件事本身引入过高的复杂度,而是在此基础上强化关于正则表达式标签以及容器使用的训练,从而与第一单元的内容更好地衔接。按照周哥的安排,pre3的所有工作一共有六名助教负责,我所分配到的任务是“验题”。在展开“验题”任务之前,我一直认为自己这项任务较为轻松,既不用负责指导书的文字撰写,又不用编写标程或生成数据点。但在实际进行的过程中发现,“验题”工作涉及面广,且责任重大。以指导书的审查为例,要竭尽全力将自己放在“学生”的视角上去剖析指导书中的每一个字眼,保证指导书前后定义的统一,对于所有自身认为含义较为模糊的词汇要及时联系出题方界定概念。而数据点审查方面,由于当时武佬写的标程中对于数据处理部分已经有较为完备的的异常处理机制,因此我并没有另写脚本去检查数据点,而是直接利用完善后的标程作相应检查。这一思路与后续第三单元的互测数据合法性评判相契合。个人认为pre相关工作的负责是适应OO Star岗位很合适的机会。
关于Unit3
对于第三单元而言,继续沿用18级社交系统的背景并根据理论课知识拓展考察点,在此基础上增加异常类的书写并引入Message类以融合规格下的层次化,同时适当强化对JML的阅读、减少对算法的考察。在第三单元的工作中,我所负责的环节仍然是“验题”,其中关于JML书写的审查是一大重难点。我首先从学生视角根据写好的初版JML完成代码,尽量保证JML中没有对作业完成这件事本身产生干扰的错误。在隔一段时间,排除短期印象的影响后,再对JML展开多次审查。虽然第三单元团队对JML的审查前前后后加起来不下五次,但最终实际发布作业时,仍难以避免一些细节上的错误,尤其是在第三单元的后两次作业中。针对此问题,对于第三单元的每一次作业,我们都在讨论区建立了指导书、官方包挑错集中贴以及禁止回复的JML重要改动汇总贴,既更好地收集反馈意见又更加明晰地呈现JML的改动。而在第三单元实验部分中,我主要是与牟哥共同负责第二次关于垃圾回收的实验。考虑到此次实验所涉及的背景知识较多,需要在理解上花费较长的时间,因此所设置的题目较少,仅有两个规格填写题及四个代码补全题。其中,两个规格填写题分别对JML手册中强调的关于\old含义的理解误区以及作业中未涉及到的不变式展开考察,四个代码补全题中compareTo直接根据规格即可轻松完成,属于对规格阅读本身的考察;removeUnreferenced及getYongetstOne需要结合规格及源代码两部分,属于对规格与源码联系的考察;而minorGC则需要完全了解垃圾回收机制,属于对背景知识理解的考察。在实际的执行过程中,实验为同学们带来的困难超过了我们的预期,但整体成绩的呈现仍保持一定的区分度。
关于评测
最后是评测组的相关工作。评测组主要负责的任务包括spj及互测数据点合法性判定脚本的编写与维护、官方包及数据点的部署、实验部分JSON评测以及协助系统组维护评测系统底层包、查询异常评测状态等。评测系统底层包的维护工作在大三上学期展开,涉及到各方法注释的完善、命令行功能的增加以及单元测试的开展,是对评测系统进行了解的重要途径,也是提升个人工程素养的机会。评测所涉及到的spj可分为两种类型,一种采用简单的与标程结果比对的逻辑,比如第三单元中的所有作业,正确答案的输出是唯一的;而另一种则需要针对具体输出具体评判,此类spj的设计要充分考虑到其对不同输出结果的承载能力,并尽可能优化评测的逻辑,例如在第一单元作业中先进行相关库包化简后结果的判等,若无法判定再使用指导书上所说的随机常数模拟方法,从而减少评测资源的开销。对于数据点的部署,评测系统中布置有相关脚本,熟悉命令行操作及不同文件的放置路径即可。而关于实验部分的JSON填空我认为日后可以修改为问卷星填空的方式,从而消除JSON格式问题对评测带来的影响,但仍需对各题目采用“答案去重→正确答案筛选(人筛与针对不同题目的机筛相结合)→答案比对”的评测逻辑。
写在最后
总而言之,十分感谢少布学长当年建议我加入OO课程团队,我认为担任助教是符合我个人职业兴趣类型且可让我从中有所收获的一件事。同时,感谢课程团队的所有老师、同学,与大家“浴血奋战”的过程充实而快乐,OO课程的不断上升也离不开大家的默契配合。希望新一届助教工作顺利,OO课程越变越好!