zoukankan      html  css  js  c++  java
  • OO助教工作总结(个人+数据组)

    OO助教工作总结(个人+数据组)

    HugeGun

    数据组工作:

    ​ 数据是测试中相当重要的一部分。数据的设计和作业的训练目标挂钩,不仅涉及到题目、指导书的设计,还设计到评测机、后代等工作。

    重点:

    • 数据范围(上界)

      数据范围设计要合理,要考虑各种数据范围之间的相互限制关系。

    • 极限数据

      要考虑合法条件下的极限数据是否达到/超过训练目标,以此反馈调节数据范围。否则一旦在互测中出现了标程跑不过的极限数据就会出大问题。

    • 中测/弱测设计

      中测不宜过强,一是为了限制无效作业的个数,二是为了强测能够足够有区分度来划分互测房间。

    • 强测设计

      数据要有梯度,对于第二单元一定要提前验好数据,否则没有时间重测。对于数据梯度的把握,可以在强测前对学生代码进行抽样检查。

    PRE:

    pre2−task1~5 主要采用随机

    pre2−task6主要采取利用正则表达式随机和手动构造一部分数据。(xsy)

    一单元:

    ​ 主要采用随机数据生成,生成几百上千个数据并将其分类。同时在随机生成时设置多个不同开关来针对中测、强测设计数据。在随机数据中进行挑选,并针对特殊情况(WF)手动构造数据。同时设置一些容易爆栈、TLE的数据。

    ​ 通过预先抽样测试挑选性能分要求较高/低的数据并设置合理的数据比例。

    ​ 数据范围和评测组息息相关,小心错判。

    二单元:

    ​ 二单元评测速度较慢,数据的正确性一定要保证。数据总体分为4种类型:全随机、s/t为一楼的人较多、人群聚集到来,2+3。

    三单元:

    ​ 第三单元特点是不同数据范围之间相互限制,要考虑好算法方面要考察到什么程度,同时在JML里埋坑要在数据上体现。

    四单元(xsy):

    ​ 第四单元的数据构造比较麻烦,目前没有找到一些比较好的自动化生成数据的方式。主要采用的是C++生成Java代码再用starUml转为Uml图和手造。遗憾的是四单元的数据受到题目限制,尽管在出数据时尽可能的涵盖了所有可能的情况,大部分同学也能轻松AC。我的感觉就是出数据极费时间,而题目却不难,三次的递进关系不明显,可以考虑换题或者合并为两次作业。

    指导书:

    • 帮助完善指导书,包括数据范围
    • 设计第二单元的加减电梯
    • 设计第三单元

    讨论区:

    • 回答相应提问
    • 针对同学们提出来的问题修锅
    • 发现一些比较好的回答并进行鼓励、加精

    第三单元作业设计:

    作业设计

    ​ 第三单元设计是一体的,标程、官方包、JML、作业设计同时进行。

    ​ 第一次作业主要涉及人与人之间的询问。

    ​ 第二次作业涉及group和group内的查询和信息维护。

    ​ 第三次作业涉及并查集、搜索、最短路这样的算法。

    ​ 受到评测输入输出文件大小限制,一些考察点并没有实现。

    ​ 延伸:朋友圈、微博等

    JML

    ​ JML的正确性无法进行自动验证,这就像写代码自己无法编译一样,难以保证正确性,即使吴老师和多名助教都进行了检查。openjml也能做到静态类型检查和语法检查,对于JML是否符合设计功能等检查只能肉眼完成。因此设计时我尽量使JML写得简洁。

    • 对于不允许执行任何修改操作的JML分支,和吴老师讨论后决定删除,但是在下发的JML-level0说明中明确说了没有说明的分支可以执行任何操作。

    • 对于JML不提供具体架构的方案,删掉基本方法或People等类,JML的代码量将会不减反增,代码量至少翻两番,这不仅意味着学生很难看懂JML,而且助教、老师也难以检查JML的正确性。

    • 对于算法的考察,这次作业并不难,上限是并查集,这是随便一个学过离散3的同学都能轻松学会的。而搜索、最短路是算法基础中的基础。实际上并查集比最短路简单多了,但是由于DS、程设、离散都没讲过所以列为上限。

      如果想减少算法的考察,那应该提升JML的量、社交网络的复杂程度,添加新的功能如朋友圈等,并对边界数据进行挖坑设计,这对助教和老师都是一个考验。

    • 对于自行编写JML检查工具,上次讨论结果是能实现简单的检查,但这对第三单元作业的考察帮助不大,可以考虑用于实验。

  • 相关阅读:
    基本类型数组与包装类型数组相互转换
    (转载)JVM中的内存模型与垃圾回收
    Python之threading多线程
    Python之基于socket和select模块实现IO多路复用
    Python之利用socketserver实现并发
    Python的网络编程socket模块
    Python设计模式之一(单例模式)
    Python异常处理
    Python面向对象之常用的特殊方法(5)
    Python面向对象之私有方法(4)
  • 原文地址:https://www.cnblogs.com/HugeGun/p/13329628.html
Copyright © 2011-2022 走看看