プログラミングコンテスト初級者・上級者間 におけるソースコード特徴量の比較

Slides:



Advertisements
Similar presentations
ゲームプログラミング講習 第2章 関数の使い方
Advertisements

サービス管理責任者等研修テキスト 分野別講義    「アセスメントと        支援提供の基本姿勢」 <児童発達支援管理責任者> 平成27年10月1日.
ヒトの思考プロセスの解明を目的とするワーキングメモリの研究
第27講 オームの法則 電気抵抗の役割について知る オームの法則を使えるようにする 抵抗の温度変化を理解する 教科書P.223~226
コラッツ予想の変形について 東邦大学 理学部 情報科 白柳研究室 山中 陽子.
コンパイラ 第3回 字句解析 ― 決定性有限オートマトンの導出 ―
第5章 家計に関する統計 ー 経済統計 ー.
公共財 公共経済論 II no.3 麻生良文.
VTX alignment D2 浅野秀光 2011年12月15日  放射線研ミーティング.
冷却フランシウム原子を用いた 電子の永久電気双極子能率探索のための ルビジウム磁力計の研究
生命情報学 (8) スケールフリーネットワーク
前半戦 「史上最強」風 札上げクイズ.

認知症を理解し 環境の重要性について考える
フッ化ナトリウムによる洗口 2010・9・13 宮崎市郡東諸県郡薬剤師会 学校薬剤師  日高 華代子.
食品の安全性に関わる社会システム:総括 健康弱者 ハイリスク集団 HACCP (食肉処理場・食品工場) 農場でのQAP 一般的衛生管理
規制改革とは? ○規制改革の目的は、経済の活性化と雇用の創出によって、   活力ある経済社会の実現を図ることにあります。
地域保健対策検討会 に関する私見(保健所のあり方)
公共政策大学院 鈴木一人 第8回 専門化する政治 公共政策大学院 鈴木一人
医薬品ネット販売規制について 2012年5月31日 ケンコーコム株式会社.
平成26年8月27日(水) 大阪府 健康医療部 薬務課 医療機器グループ
平成26年度 呼吸器学会からの提案結果 (オレンジ色の部分が承認された提案) 新規提案 既収載の変更 免疫組織化学染色、免疫細胞化学染色
エナジードリンクの危険性 2015年6月23日 経営学部市場戦略学科MR3195稲沢珠依.
自動吸引は 在宅を変えるか 大分協和病院 院長         山本 真.
毎月レポート ビジネスの情報 (2016年7月号).
医療の歴史と将来 医療と医薬品産業 個人的経験 3. 「これからの医療を考える」 (1)医薬品の研究開発 -タクロリムスの歴史-
社会福祉調査論 第4講 2.社会調査の概要 11月2日.
2015年12月28日-2016年3月28日 掲載分.
2010度 民事訴訟法講義 補論 関西大学法学部教授 栗田 隆.
腫瘍学概論 埼玉医科大学国際医療センター 包括的がんセンター 緩和医療科/緩和ケアチーム 奈良林 至
“企業リスクへの考え方に変化を求められています。 トータルなリスクマネジメント・サービスをプロデュースします。“
情報漏えい 経済情報学科 E  西村 諭 E  釣 洋平.
金融班(ミクロ).
第11回 2009年12月16日 今日の資料=A4・4枚+解答用紙 期末試験:2月3日(水)N2教室
【ABL用語集】(あいうえお順) No 用語 解説 12 公正市場価格 13 債権 14 指名債権 15 事業収益資産 16 集合動産 17
基礎理論(3) 情報の非対称性と逆選択 公共政策論II No.3 麻生良文.
浜中 健児 昭和42年3月27日生まれ 東京都在住 株式会社ピー・アール・エフ 代表取締役 (学歴) 高 校:千葉県立東葛飾高校 卒業
COPYRIGHT(C) 2011 KYUSHU UNIVERSITY. ALL RIGHTS RESERVED
Blosxom による CMS 構築と SEO テクニック
記入例 JAWS DAYS 2015 – JOB BOARD 会社名 採用職種 営業職/技術職/その他( ) 仕事内容 待遇 募集数
ネットビジネスの 企業と特性 MR1127 まさ.
Future Technology活用による業務改革
ネットビジネス論(杉浦) 第8回 ネットビジネスと情報技術.
g741001 長谷川 嵩 g740796 迫村 光秋 g741000 西田 健太郎 g741147 小井出 真聡
自然独占 公共経済論 II no.5 麻生良文.
Autonomic Resource Provisioning for Cloud-Based Software
Webショップにおける webデザイン 12/6 08A1022 甲斐 広大.
物理的な位置情報を活用した仮想クラウドの構築
ハイブリッドクラウドを実現させるポイントと SCSKのOSSへの取組み
寺尾 敦 青山学院大学社会情報学部 第12回 情報デザイン(4) 情報の構造化と表現 寺尾 敦 青山学院大学社会情報学部
【1−1.開発計画 – 設計・開発計画】 システム開発計画にはシステム開発を効率的、効果的に実行する根拠(人員と経験、開発手順、開発・導入するシステム・アプリケーション・サービス等)を記述すること。 システム開発の開始から終了までの全体スケジュールを記載すること。 アプリケーション機能配置、ソフトウェア、インフラ構成、ネットワーク構成について概要を示すこと。
6 日本のコーポレート・ガバナンス 2008年度「企業論」 川端 望.
急成長する中国ソフトウェア産業 中国ソフトウェアと情報サービス産業の規模 総売上高は5年間で約5.3倍の成長
米国ユタ州LDS病院胸部心臓外科フェローの経験
公益社団法人日本青年会議所 関東地区埼玉ブロック協議会 JCの情熱(おもい)育成委員会 2011年度第1回全体委員会
次世代大学教育研究会のこれまでの活動 2005年度次世代大学教育研究大会 明治大学駿河台校舎リバティタワー9階1096教室
子どもの本の情報 大阪府内の協力書店の情報 こちらをクリック 大阪府内の公立図書館・図書室の情報
第2回産業調査 小島浩道.
〈起点〉を示す格助詞「を」と「から」の選択について
広東省民弁本科高校日語専業骨幹教師研修会 ①日本語の格助詞の使い分け ②動詞の自他受身の選択について   -日本語教育と中日カルチャーショックの観点から- 名古屋大学 杉村 泰.
■5Ahバッテリー使用報告 事例紹介/東【その1】 ■iphon4S(晴れの昼間/AM8-PM3) ◆約1時間で68%⇒100%
『ワタシが!!』『地域の仲間で!!』 市民が始める自然エネルギー!!
ポイントカードの未来形を形にした「MUJI Passport」
SAP NetWeaver を支える Microsoft テクノロジーの全貌 (Appendix)
ガイダンス(内業) 測量学実習 第1回.
Python超入門 久保 幹雄 東京海洋大学.
熱力学の基礎 丸山 茂夫 東京大学大学院 工学系研究科 機械工学専攻
京都民医連中央病院 CHDF学習推進委員会
資料2-④ ④下水道.
Accessによる SQLの操作 ~実際にテーブルを操作してみよう!~.
Presentation transcript:

プログラミングコンテスト初級者・上級者間 におけるソースコード特徴量の比較 井上研究室 堤 祥吾

プログラミングコンテストの特徴 アルゴリズムのプログラミングに関する問題を複数の参加者が同じ時間に解く 正解問題数,時間に応じて順位が決まる 順位によりレーティングが変動 レーティング[1] レーティングが高いほど,コンテストでの期待順位が高い 本研究では,レーティングが異なると,編集作業にどのような違いがあるかに着目して調査を進める 説明した以外にも,今回対象とするアルゴリズム系のプログラミングコンテストの特徴は以下の通りとなります. ・オンラインや同じ場所に集まるなど方法はさまざまですが,アルゴリズムに関する問題を複数の~解きます. ・また,プログラミングコンテストにおける順位は参加者の正解問題数や時間,先ほど触れた難易度などによって決まります. ・そして,その順位によって参加者のレーティングが変動します.後ほど詳細を述べますが,本研究ではこのレーティングと参加者の提出履歴との関係について述べます [1] Arpad E Elo, Sam Sloan: The Rating of Chess Players, Past and Present, Ishi Press, 2008.

研究目的・研究内容 背景 ソースコードの編集作業は,ソフトウェア開発において必須であり,かかる労力は大きい (本研究における編集: ソースコード作成・修正) ソースコードの編集作業は,ソフトウェア開発において必須であり,かかる労力は大きい 特に開発初級者は編集に時間的コストが必要 そのため, 開発者の技術力による編集作業の差異を調査することで, 初級者の編集能力向上への参考とする 研究内容 プログラミングコンテストのレーティングと大規模な提出履歴を利用し,編集作業の違いについて定量的な評価を行う

本研究における上級者・初級者 25% 50% 75% 初級者 上級者 利用しない 参加者をレーティングでソート 第1四分位数までを初級者,第3四分位数以降を上級者とする レーティング 初級者 上級者 平均 1171.12 1824.82 最小値 -39 1573 最大値 1299 3367 なんでわざわざ2群に分けるんですか 中央を使わない理由

Research Question 初級者と上級者を比較して初回提出ソースコードにどのような違いがあるか 初級者と上級者を比較して修正量に違いがあるか 今回の研究をすすめるにあたって,こちらの通りResearch Questionを設けました. 1: 構文要素->if, forなど 2: 間違った提出をしてしまった後に,参加者は修正して再提出を行うが,これに関する話

データセットの構築 大手プログラミングコンテストCodeforcesより研究用データセットを構築した ソースコードデータ 提出履歴データベース ファイル数 合計サイズ 1,644,636 2.31GB 提出数 参加者数 サイズ 1,644,636 14,520 357MB 本研究を行うにあたって,以下の通りデータセットを構築しました.こちらは,世界最大規模のプログラミングコンテストサイトであるcodeforcesより2016/5/19から2016/11/15にかけての提出履歴についてデータを取得しています.~.こちらのデータセットは,下記のwebサイトに公開しております. ソースコードの言語のうち90%はC++であったため, 本研究におけるソースコード分析ではC++を対象とした

RQ1: 予約語利用頻度 調査方法 字句解析を行い,予約語の利用頻度を取得 𝐾 𝑙𝑜𝑤 = 初級者の利用頻度の集合 NEW userA 字句解析 𝑘 𝑢𝑠𝑒𝑟𝐴,639𝐶,𝑒𝑙𝑠𝑒 2 𝑘 𝑢𝑠𝑒𝑟𝐴,639𝐶,𝑏𝑟𝑒𝑎𝑘 5 … OLD 𝐾 𝑙𝑜𝑤 = 初級者の利用頻度の集合 𝐾 ℎ𝑖𝑔ℎ = 上級者の利用頻度の集合 とする 𝐾 𝑙𝑜𝑤 と 𝐾 ℎ𝑖𝑔ℎ との差異がどうであるかを,t検定と効果量測定を用いて調査する 効果量測定: 2群の分散に対して,2群の平均がどの程度異なるかを効果量とする(Cohen’s d を利用)

RQ1: 予約語利用頻度 結果 𝐾 𝑙𝑜𝑤 と 𝐾 ℎ𝑖𝑔ℎ との間に有意差があるかを88種の予約語に対して調査した 𝐾 𝑙𝑜𝑤 > 𝐾 ℎ𝑖𝑔ℎ 8 𝐾 𝑙𝑜𝑤 < 𝐾 ℎ𝑖𝑔ℎ 21 有意差なし (p値 > 0.05) 59 図: 初級者の利用が多い予約語(左) 上級者の利用が多い予約語(右)上位10件 初級者には分岐に関連する予約語の利用が多く, 上級者には構造化に関連する予約語の利用が多いことが確認された

RQ1: ソースコードメトリクス SourceMonitor[2]を用いて,提出されたソースコードのメトリクスを調査 調査対象メトリクス(抜粋) avg_complexity: 各関数の循環的複雑度の平均値 avg_depth: 各関数のネスト深さの平均値 n_statements: セミコロンで区切られた論理行数 percent_branch_statements: 全体の論理行数に占める分岐文の割合 𝑀 𝑙𝑜𝑤 = 初級者のメトリクス測定値の集合 𝑀 ℎ𝑖𝑔ℎ = 上級者のメトリクス測定値の集合 とする [2] http://www.campwoodsw.com/sourcemonitor.html

RQ1: ソースコードメトリクス 結果 𝑀 𝑙𝑜𝑤 と 𝑀 ℎ𝑖𝑔ℎ との間に有意差があるかを11種のメトリクスに対して調査した 𝑀 𝑙𝑜𝑤 > 𝑀 ℎ𝑖𝑔ℎ 6 𝑀 𝑙𝑜𝑤 < 𝑀 ℎ𝑖𝑔ℎ 5 右図は,初級者と上級者のメトリクスにおける効果量測定の結果である (上)初級者の測定値が大きいメトリクス (下)上級者の測定値が大きいメトリクス 初級者のソースコードはネストの深さ・分岐数が大きく 上級者のソースコードは行数が増加することが確認された

RQ2: 修正提出回数 調査 初級者と上級者間で,修正提出回数に差異があるかを調査する 𝑆 𝑙𝑜𝑤 = 初級者の修正提出回数の集合 修正提出: ある問題への提出が誤答だった際に,再度提出を行うこと 修正提出回数: ある問題に初めて正答するまでに行った修正提出の回数 正答率: 正答数 提出数 𝑆 𝑙𝑜𝑤 = 初級者の修正提出回数の集合 𝑆 ℎ𝑖𝑔ℎ = 上級者の修正提出回数の集合 とする

RQ2: 修正提出回数 結果 𝑆 𝑙𝑜𝑤 と 𝑆 ℎ𝑖𝑔ℎ との間に有意差があるかを調査した 正答率 有意差 効果量 0.2 〇 -0.212 0.4 -0.400 0.6 -0.421 0.8 -0.319 1.0 -0.168 図: 0.2≤正答率<0.4について2群の箱ひげ図 上級者ほど修正提出回数が少なくなることが確認された

RQ2:修正提出あたりの修正量 結果 単一修正提出あたりの修正量(レーベンシュタイン距離)において上級者と初級者で差異があるかを調査する 初級者と上級者間の修正量に有意差があるかを調査した 正答率 有意差 効果量 0.2 〇 -0.069 0.4 -0.061 0.6 -0.079 0.8 1.0 0.168 RQ2に関して,参加者のレーティングとソースコード修正量において,どの程度の相関があるかを調べました. こちらは,ある問題に対するある参加者の修正列を考えたとき,その中央値を1つの要素とし,(レーティング,中央値)の間のピアソン積率相関係数を計算しました. また,それに対してt検定を行い,有意差があるかどうかを確認しました. 今回相関係数を計算するにあたり,修正量は問題の難易度に応じて幅があるため,問題ごとに正規化をおこなっております.さらに,問題を正答率で分類し,それぞれで相関係数を計算しました. 結果はこちらの表のとおりです. ~ 図: 0.2≤正答率<0.4について2群の箱ひげ図 上級者ほど提出あたりの修正量が少なくなることが確認された

考察 RQ1: 上級者は分岐に関する命令が初級者と比較して少なく,複雑度の小さいソースコードを提出している RQ2: 上級者の修正量は少ない プログラミングコンテストでは,問題に対する解法アルゴリズムの種類が1,2種類程度である場合が多く,同じアルゴリズムでも上級者と初級者の書き方が異なると考えられる RQ2: 上級者の修正量は少ない RQ1の初回提出ソースコードの特徴に起因するケース 上級者の修正が適切であるケース RQ1の結果を参考にすることで,修正の容易なソースコードを記述できる または,RQ2の結果を参考に適切な修正箇所を特定することができる

まとめ プログラミングコンテストへの提出ソースコードにおける編集作業の特徴調査をおこなった 大規模なデータの利用 レーティングを考慮した定量的な熟練度評価 初級者は上級者と比較して,ソースコードが複雑になり修正が増える傾向にある 本研究での修正箇所や予約語利用をもとに編集技術の向上につなげることができる