<< 幼子が始める Fedora - FTP- | main | 幼子が始める Fedora で Apache - cron - >>
Twitter


スポンサーサイト

一定期間更新がないため広告を表示しています

posted by: スポンサードリンク | - | | - | - | - | - |

バレない不正

レポートに関する不正行為ネタ。僕も担当させていただいている授業レジュメには次のように書かれていた。

不正行為

  • 強力な調査ツールが存在
  • 去年度初めて適応
  • 残念ながら多くの不正が発覚
  • 倫理上、大学の目的に対し、授業の基となる約束事に対して極めて悪質な行為
  • 対応: 一問につき、一週間分の課題をすべて 0 点
  • 必要に応じてさらに対応を強化

このレジュメはプログラミングの実習授業である。課題が若干キツめであり、不正対策が導入される前は多くの学生がソースコードをかけた学生からコピーさせてもらって提出していた。不正率は少ない課題で2割、多い課題では7割に至ると見られる。

学生に不正させない授業の組み方、というのも大切だと思うし、不正のラインというのも明確であるべきだと思うし……と考えるべきことは多いように見える。だが、今回はバレずに C の課題をコピペして提出する方法を考える。

バレない方法の概要

現在、一番有名な対コピペソフトはコピペルナーシリーズであろう。

今回考える不正行為はソースコードをコピーアンドペーストして提出する際にバレない方法である。バレないには以下の手段が考えられるだろう。

  • コピー元と大幅に違うコードに書き直す
  • コピー元をぜんぜん違う所から引っ張ってくる

後者はネットからだとバレやすい。検索で容易に見つかる上、現在ではコピペルナー V2 はネットからのコピペ対策をサポートしている。また、1〜2世代前の先輩から、というのも無理だ。その手段を先生は既にご存知であり、多くのケースでは過去のレポートをもチェックにかけている。また、そのような先輩は多くの学生にレポートを要求されるケースもあり、それで被る。そこからコピペ発覚の例は少なくない。そうなると、可能な限り前の世代といった結論になると考えられる。しかし、そこにもまた落とし穴がある。課題を年毎に変えていればアウトである。

では、前者なら……難しい。色々な課題を見てきたが、まずごまかすのは無理。ごまかす実力があるなら自力で課題が解けるだろう。変数・関数名を変えるくらいではバレバレである。改行・インデントを変えても同様である。しかし、これは面白そうなので今回はこの手段を考えてみる。

ソースコピペ改変手段

for を while にする

以下のコードを書き換える

int i;
for ( i = 0; i < size; i++){
   // 中略
}

次のようになるだろうか。

int i;
i = 0;
while( i < size ){ //for ( i = 0; i < size; i++){ の代わり
   // 中略
i++;
}

scanf を fgets 等にする

文字列で読み込んで atoi で変換する。

int a;
scanf("%d", &a);
printf("a = %d", a);

これをこう書き換える

int a;
char b[20];
fgets(b, 20, stdin); // scanf"%d", &a); の代わり
a = atoi(b);
printf("a = %d", a);

若干のエラー処理は必要だと思うが。

for を逆回し

使えないケースもあるので注意。これが

int i;
for ( i = 0; i < size; i++){
   // 中略
}

こうなる。

int i;
for ( i = size-1; i >= 0; i--){
   // 中略
}

while 化と組み合わせれば……

これくらいじゃあ無理だよね

他にもいくつか考えてみたのの、これくらいじゃあ無理。これ以上となると自力で書いたほうが早い気がするのな……

posted by: しゅんしゅん | 学び | 14:18 | comments(0) | trackbacks(0) | - | - |

スポンサーサイト

posted by: スポンサードリンク | - | 14:18 | - | - | - | - |
コメント
 









トラックバック
 
http://syun2ej.jugem.jp/trackback/3340