わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

異なり数とは

 本年度の年次大会は5月28日(土)と29日(日)の2日間、オンライン(WebEx)にて開催されました。
 研究発表は、一般セッション・学生セッション合わせて19件でした。各発表につきまして、オンライン上で活発な議論が交わされました。1日目は68人、2日目は56人、全体で83名(以上すべて異なり数)の方にご参加いただきました。

 このページの文案作成に携わりました.いくつかの段落で,実行委員長の意向を反映させることもできました.
 上記のうち,少し手間をかけたのは「1日目は68人、2日目は56人、全体で83名(以上すべて異なり数)」のところです.当初案は,全体数がなく,1日目と2日目の人数が同じでした.申込数ではなく,オンライン開催担当の委員の方より連絡のあった,同時参加者数の最大値を,記載していました.
 これに対し,出入りがあった分もきちんと勘定したほうがいいでしょうという意見が出て,精査してもらいました.次の文案では,日ごとの最大数と「異なり数」の両方を記載していました.さらにメールを交わし,最終的に上記のとおりとなりました.
 「異なり数」という言葉は,辞書に載っていませんが,検索すれば容易に見つかります.理工ミニレクチャー|上智大学理工学部・大学院理工学研究科の「要素の数で10便ありますが、運行している会社の数は4社です。したがって、この集合の異なり数は4になります」が分かりやすいですし,語の数え方(延べ語数(token frequency)と異なり語数(type frequency))について│旅する応用言語学でも,簡潔に整理されています.Rubyのコードで区別を表現すると,配列aryにおいて,ary.lengthで延べ数,ary.uniq.lengthで異なり数が得られます.
 「延べ数」「異なり数」について,これらの表記を用いずに,この年次大会で,研究室のM1学生に発表してもらったのを,思い出しました.題目は「プログラミング学習支援のためのオンラインジャッジシステムの構築」です.
 実施内容をかいつまんで説明します.発表者の卒業研究として,オンラインジャッジシステムを独自に構築し,昨年11月,学部1年のプログラミング導入科目の最終回で使用してもらいました.出題は,「『wakayama』を10行出力するプログラムをCで作成しなさい」で,1年前の最終回の出題と同じですが,そのときはMoodleのテキストフォームに答案を提出してもらったのに対し,オンラインジャッジシステム上では,提出したらすぐに正解・不正解の判定が出まして,「やり直し」ができるようになっています.発表では,このシステムについて説明し,解答状況を集計して分析を行いました.
 集計方法は次の3つです.

  1. 提出ごとの,正解・不正解などの状況
  2. 学生ごとの,正解に至るまでの状況
  3. for文不要論の賛否と,本システムの解答とのクロス分析

 ところで,「wakayama」を10行出力するプログラムで,多く提出のあったのは「for文を使用」「while文を使用」「printf関数を10回呼び出す」に分かれます*1.正解であった場合に,「正解・不正解などの状況」「本システムの解答」では,分けてカウントしました.「正解に至るまでの状況」では,どのようなコード内容でもよく,「最初の提出で正解」「どこかで正解*2」「一度も正解できなかった」に分類して数えました.
 予稿から,延べ数・異なり数に関する扱いを抜き出します(一部改変しています).簡単にいうと,3種類の集計方法の1番目は延べ数,2番目と3番目は異なり数となります.

同一学生番号による重複解答はそれぞれを数に入れている.

解答者(学生番号)ごとに見ると,180名の提出のうち,

同一学生の複数回提出において,Acceptedとなった最初の答案をもとにfor,while,printfのいずれかとし,Acceptedにならなかった場合には最終提出に基づきCompile Error,Wrong Answerのいずれかとした.

 クロス集計のあとカイ2乗検定を行ったけれども有意差なしで,インタフェースや実施における課題は,この発表のほか,2週間前の某ゼミでも指摘されていました.このシステムを総括的評価(授業の最後に1回だけ)ではなく形成的評価(授業途中に使用しすぐ教員にフィードバック)に使用するなどして,「プログラミング学習支援」に適したシステムに改良できればと,考えています.

*1:for文・while文ではその中に,printfを1回だけ記述します.改行のない場合や,関係のない文字が含まれている場合には不正解(Wrong Answer)とし,最後だけ改行がない場合には正解扱いとしていました.

*2:「最終的に正解」ではありません.システムの挙動をつかもうとしたのか,正解後でも異なる(エラーの)プログラムを提出するというのが,記録に残っていました.