- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- 授業/C言語基礎/課題提出についての注意事項 へ行く。
提出方法 †
課題はCプログラムのファイルとして、ToraNetのライブラリーで提出してください。
ファイル名は、以下のようにします。
- 課題であることを表すアルファベット小文字のk
- 授業回数(2桁、第1週の場合は01)
- 課題番号(1桁)
- 学籍番号(下4桁、学籍番号EP15001の場合は5001)
- 拡張子 .c
たとえば、学籍番号EP15001の学生が、第1週の課題1を提出するとき、ファイル名は k0115001.c となります。
コピー行為の禁止 †
他の人が作成した課題プログラムをコピーすることは禁止します。
提出されたプログラムが他の人が提出したプログラムとほぼ同一の場合は、コピー行為とみなし、0点とします。 これは、イエロー・カードです。 (Hello World!など、誰が作っても同じになるような課題には適用しません。)
自分のプログラムがオリジナルであっても、他人が自分のプログラムのコピーや、コピーを少し変更しただけのプログラムを提出すると、0点になりますので注意してください。
また、警告を受けてもコピー行為を繰り返す場合は、単位を出しません。 これはレッド・カードです。
コピーしたことがばれないようにするためのテクニック †
以下のテクニックは、コピーしたことがばれないようにするためのものとしてよく行われます。
- 変数名、関数名、定数の値、出力される文字列などを変える
- 空白、タブ、改行を挿入する、削除する
- 変数宣言の順序を変える
ですから、これらの違いしかないものは、同じものとみなされます。
コピー検出ソフトウェア †
これらのコピー隠蔽行為を考慮してコピーされたプログラムを検出するソフトウェアが開発され、公開されています。
ある課題について、学生から提出されたプログラムをこのJPlagに入力したところ、全体の約7割の組み合わせでは一致度が0%と判定されました。 一致度が0%でないプログラム、つまり、似ていると判定された組み合わせでも、ほとんどは30-60%の一致率でした。 最も高い一致率は95.8%でした。
一致率95.8%と判定されたプログラムについては、実際に二つのプログラムを確認し、コピーと判断しました。
簡単な課題では他の人のプログラムを見ないで作っても一致100%になりますので、そのような課題には適用しません。
コピー検出に関する研究 †
コピーを検出する技術については、かなり前から研究されています。 たとえば、日本語で読めるものとしては、次のようなものがあります。
- コードクローン検出技術の展開. 神谷年洋, 肥後芳樹, 吉田則裕. コンピュータソフトウェア, Vol. 28, No. 3, pp. 29-42 (2011)
- コーディングスタイルの特徴量とソースコード盗用との関係の分析. 武田隆之, 牛窓朋義, 山内寛己, 門田暁人, 松本健一. 情報処理学会研究報告, Vol. 2010, No. 8, pp. 1-8 (2010)
- ソースコード流用のコードクローンメトリクスに基づく検出手法. 岡原聖, 真鍋雄貴, 山内寛己, 門田暁人, 松本健一. 電子情報通信学会技術研究報告, Vol. 109, No. 307, pp. 73-78 (2009)
- コードクローン検出法. 井上克郎, 神谷年洋, 楠本真二. コンピュータソフトウェア, Vol. 18, No. 5, pp. 529-536 (2001)
プロのプログラマーがコピーして隠蔽したとしても、それを検出する技術として開発されていますので、プログラムを理解していない人がコピーして隠蔽した程度ではすぐに見つかってしまいます。
コピーと判定されない、疑われないために †
できたプログラムを他の人に渡さない、見せない †
あなたがコピーしなくても、渡した相手、見せた相手がコピーしたら、あなたもコピー行為に加担したとみなされます。
まだできていないうちは、できたプログラムを見ない †
課題の内容が理解できていないと、できたプログラムをもらっても、コピーにならないように真似することはとても難しいです。 それができるなら、自分で課題のプログラムを作ることができるでしょう。
また、友達はできたと言っていても、そのプログラムが間違っていることがあります。 間違っているところまで真似すると、コピーしたことがすぐにわかります。
まだできていない人と一緒にプログラムを作らない †
二人で協力しながら一つのプログラムを作っても、どちらかしか提出できません。
二種類のプログラムが作れないなら、協力してプログラムを作るべきではありません。
考え方を教えてもらう(教える) †
課題プログラムを作り方を全部を教えてもらう(教える)と、結果としてほぼ同一のプログラムになってしまいます。
したがって、教えてもらう(教える)のは、考え方や参考にしたサンプル・プログラムだけにしておきましょう。
できた人に自分のプログラムを見てもらう †
自分が作ったプログラムがうまく動かないとき、どこが間違っているのかをできた人に見てもらうことは問題ありません。
まだ自分のプログラムを作っていない人に見てもらうと、相談しながらプログラムを作ることになったり、見てもらった人が自分のプログラムを真似してしまうので、まだ自分のプログラムを作っていない人に見てもらう(見せる)のは止めましょう。
コピーは必ず見つかってしまうものだと諦めてコピーしない †
コピーする人には、バカなやつのコピーは見つかっても、自分のコピーは見つからないという変な自信を持っている人が多いです。
このため、一度コピーが見つからずに済むと、その後もコピーを繰り返す傾向があります。
ところが、一度目は見つからなかっとしてしても、後でコピーが見つかると、過去にさかのぼって注意深く徹底的に調べられ、以前にもコピーしていたことが発覚して取り返しがつかないことになります。
コピーは必ず見つかってしまうものだと諦めて、コピーしないようにしましょう。