标准

Java 课程的作业由几个助教来判。谁知几次作业判下来,竟引起同学中的强烈反弹。客观地讲,题目出得确实有问题:题目遵循的标准不明确,于是同学各自按照自己的理解来作答,而助教按照自己的理解来判定——只是助教的理解和绝大多数同学的理解相去甚远。当然,如果仅是标准的问题还好说,毕竟有章可循,可有些时候助教确实理亏,比如采用的评判标准前后矛盾,试图解释又不能自圆其说,被指问题又不愿承认错误,以致落得成为同学谈笑资源的境地。

有位和我不错的同学,作业判出来,得分不高。助教评价“与他人程序十分相似,扣一分,下次注意”,很郁闷。当时的作业题目很简单,题目大概就是输几行东西,存成一个文件之类,本来就编不出多少“花样”来。但我想表达的是,“十分相似”也是错误吗?下一次让同学如何“注意”、“改正”?最起码,说“十分相似”也要有个标准吧。比如据我所知,编译原理实验的著名kb助教就提出了他判定“严重雷同”的标准,大意如下:

  • 两份代码完全相同的
  • 去掉所有注释后,两份代码完全相同的
  • 在不影响语义的情况下,替换变量名的
  • 在不影响语义的情况下,成对增删大括号的
  • 在不影响语义的情况下,更改函数出现次序的
  • 以上情况组合发生的

标准确定了,写个程序实现判断是很容易的 O(n2) 的复杂度 :) ,当然可能会有漏网的,但是,一旦被判“严重雷同”,大家无不心服口服。

2 Comments »

  1. partita Said,

    August 5, 2006 @ 3:40 pm

    admire kb
    这个早有现成的工具,不要听kb瞎扯,搞个混淆器骗过他的标准很容易

  2. Frank Said,

    August 6, 2006 @ 6:52 am

    当然仍旧很容易糊弄kb提出的这个标准啦~ 不过我想说的不是这个意思,而是标准的重要性。

RSS feed for comments on this post · TrackBack URI

Leave a Comment