- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- 授業/C言語基礎/課題提出についての注意事項 へ行く。
提出方法 †
課題はCプログラムのファイルとして、ToraNetのライブラリーで提出してください。
ファイル名は、以下のようにします。
- 課題であることを表すアルファベット小文字のk
- 授業回数(2桁、第1週の場合は01)
- 課題番号(1桁)
- 学籍番号(下4桁、学籍番号EP15001の場合は5001)
- 拡張子 .c
たとえば、学籍番号EP15001の学生が、第1週の課題1を提出するとき、ファイル名は k0115001.c となります。
コピー行為の禁止 †
他の人が作成した課題プログラムをコピーすることは禁止します。
コピー行為には、次の行為が含まれます。(これ以外の行為は何でもOKということではありません。)
- プログラムを電子的に複製する
- 画面に表示された、あるいは、紙に印刷されたプログラムを見て写す
- 他人の指示に従って、すでに存在するプログラムと同じプログラムを作る
提出されたプログラムが他の人が提出したプログラムとほぼ同一の場合は、コピー行為とみなし、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)
プロのプログラマーがコピーして隠蔽したとしても、それを検出する技術として開発されていますので、プログラムを理解していない人がコピーして隠蔽した程度ではすぐに見つかってしまいます。
コピーと判定されない、疑われないために †
自分が作ったプログラムを他の人に渡さない、見せない †
あなたがコピーしなくても、渡した相手、見せた相手がコピーしたら、あなたもコピー行為に加担したとみなされます。
他の人に答を教えてしまうと、その人が自分で考える機会を奪ってしまいます。 その結果として、その人はコピーで済ませた部分がきちんと理解できないまま授業が進んでしまい、最終的には、単位が取れない、留年する、卒業できない、就職できない、就職してから困るということになり兼ねません。
まだ自分で作っていないうちは、他の人が作ったプログラムを見ない †
課題の内容が理解できていないと、できたプログラムを見せてもらっても、コピーにならないように真似することはとても難しいです。 それができるくらいなら、自分で課題のプログラムを作ることができるでしょう。
また、友達はできたと言っていても、そのプログラムが間違っていることがあります。 間違っているところまで真似すると、コピーしたことがすぐにわかってしまいます。
まだプログラムを作っていない人と一緒にプログラムを作らない †
二人で協力しながら一つのプログラムを作っても、どちらかしか一人しか提出できません。
二種類のプログラムが作れないなら、協力してプログラムを作るべきではありません。
考え方を教えてもらう(教える) †
課題プログラムの作り方を全部を教えてもらう(教える)と、結果としてほぼ同一のプログラムになってしまいます。
したがって、教えてもらう(教える)のは、考え方や参考にしたサンプル・プログラムだけにしておきましょう。
課題ができた人に自分が作ったプログラムを見てもらう †
自分が作ったプログラムがうまく動かないとき、どこが間違っているのかをできた人に見てもらうことは問題ありません。
まだ自分のプログラムを作っていない人に見てもらうと、相談しながらプログラムを作ることになったり、見てもらった人が自分のプログラムを真似してしまうので、まだ自分のプログラムを作っていない人に見てもらう(見せる)のは止めましょう。
コピーしない †
コピーする人の中には、自分のコピーは見つからないという変な自信を持っている人が多いです。
このため、一度コピーが見つからずに済むと、その後もコピー行為を繰り返す傾向があります。
ところが、一度目は見つからなかっとしてしても、繰り返していると見つかる可能性が高くなります。 一回ごとに見つかる可能性が [math]p[/math] のとき、[math]k[/math] 回のうち少なくとも一回で見つかる可能性は [math]1 - (1 - p)^k[/math]、[math]p = 0.1[/math] だとしても [math]k = 7[/math] で [math]1 - (1 - p)^k = 0.5217[/math] になります。
後でコピーが見つかると、過去にさかのぼって注意深く徹底的に調べられ、以前にもコピーしていたことが発覚し、取り返しがつかなくなります。
また、いつもコピーをしない人がコピーをすると、それまでに提出したプログラムとコーディング・スタイルが違うので、コピーであることが簡単にわかってしまいます。
つまり、コピー行為を重ねる人も、コピー行為をあまりしない人も、結局は見つかってしまうのです。