(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022032364
(43)【公開日】2022-02-25
(54)【発明の名称】プログラミング能力評価システム
(51)【国際特許分類】
G09B 19/00 20060101AFI20220217BHJP
G09B 7/02 20060101ALI20220217BHJP
G06Q 50/20 20120101ALI20220217BHJP
【FI】
G09B19/00 Z
G09B7/02
G06Q50/20 300
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2020136052
(22)【出願日】2020-08-11
(71)【出願人】
【識別番号】519077805
【氏名又は名称】NABLAS株式会社
(74)【代理人】
【識別番号】110000408
【氏名又は名称】特許業務法人高橋・林アンドパートナーズ
(72)【発明者】
【氏名】中山 浩太郎
【テーマコード(参考)】
2C028
5L049
【Fターム(参考)】
2C028BA01
2C028BA02
2C028BA05
2C028BB04
2C028BC01
2C028BD02
2C028CA13
5L049CC34
(57)【要約】
【課題】自動で設問を生成しつつ、不正が容易にできないプログラミング能力評価システムを提供することを目的とする。
【解決手段】プログラミング能力評価システムは、コンピュータのプログラミングに関する問題文と問題文に対する正解のペアを生成する設問生成ジェネレータと、問題文と問題文に対する解答を入力する画面をユーザ端末に提供する設問提供部とを含み、設問生成ジェネレータは、設問のテンプレートから問題文と正解とのペアを生成する。設問のテンプレートは、問題文及び正解を異ならせるための1つ以上のパラメータを含み、問題文及び正解を生成する毎に、1つ以上のパラメータの値をランダムに生成する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
コンピュータのプログラミングに関する問題文と、前記問題文に対する正解のペアを生成する設問生成ジェネレータと、
前記問題文と、前記問題文に対する解答を入力する画面をユーザ端末に提供する設問提供部と、を含み、
前記設問生成ジェネレータは、設問のテンプレートから前記問題文と前記正解とのペアを生成することを特徴とするプログラミング能力評価システム。
【請求項2】
前記設問のテンプレートは、前記問題文及び正解を異ならせるための1つ以上のパラメータを含む、請求項1に記載のプログラミング能力評価システム。
【請求項3】
前記設問生成ジェネレータは、前記問題文及び前記正解を生成する毎に、前記1つ以上のパラメータの値をランダムに生成する、請求項2に記載のプログラミング能力評価システム。
【請求項4】
前記設問生成ジェネレータは、生成された前記1つ以上のパラメータの値に基づき、前記問題文と前記正解のペアを作成する、請求項3に記載のプログラミング能力評価システム。
【請求項5】
前記設問のテンプレートを記憶する記録媒体を有し、前記設問生成ジェネレータは前記記録媒体から前記設問のテンプレートを読み出す、請求項1乃至4のいずれか一項に記載のプログラミング能力評価システム。
【請求項6】
前記設問生成ジェネレータにより前記正解として生成された正解コードと、前記ユーザ端末から前記画面に入力された解答コードと、を実行し、前記実行の結果から正誤判定を行う検証部を有する、請求項1乃至5のいずれか一項に記載のプログラミング評価システム。
【請求項7】
設問生成ジェネレータ及び設問提供部としての機能を有するコンピュータによるプログラミング能力評価方法であって、
前記設問生成ジェネレータが、コンピュータのプログラミングに関する問題文と、前記問題文に対する正解のペアを生成し、
前記設問提供部が、前記問題文と、前記問題文に対する解答を入力する画面をユーザ端末に提供する、ことを含み、
前記設問生成ジェネレータが、前記問題文と前記正解とのペアを設問のテンプレートから生成することを特徴とするプログラミング能力評価方法。
【請求項8】
前記設問のテンプレートは、1つ以上のパラメータを含み、前記設問生成ジェネレータは前記1つ以上のパラメータによって前記問題文及び前記正解を異ならせる、請求項7に記載のプログラミング能力評価方法。
【請求項9】
前記設問生成ジェネレータは、前記問題文及び前記正解を生成する毎に、前記1つ以上のパラメータの値をランダムに生成する、請求項8に記載のプログラミング能力評価方法。
【請求項10】
前記設問生成ジェネレータは、生成された前記1つ以上のパラメータに基づき、前記問題文と前記正解のペアを作成する、請求項9に記載のプログラミング能力評価方法。
【請求項11】
前記設問生成ジェネレータが記録媒体から前記設問のテンプレートを読み出し、前記問題文及び前記正解の生成を行う、請求項7乃至10のいずれか一項に記載のプログラミング能力評価方法。
【請求項12】
前記設問生成ジェネレータが前記正解として正解コードを生成し、
検証部が、前記正解コードと、前記ユーザ端末から前記画面に入力された解答コードと、を実行し、前記実行の結果から正誤判定を行う、請求項7乃至11のいずれか一項に記載のプログラミング評価方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラミング能力評価システム及び方法、並びにコンピュータプログラムに係り、例えば、プログラミング言語を学習しその理解度を評価するためのプログラミング能力評価システム及びその方法、並びにコンピュータプログラムに関する。
【背景技術】
【0002】
コンピュータの著しい性能向上に伴い人工知能(Artificial Intelligence:以下、「AI」ともいう。)の開発及びAIを利用した製品の技術開発を担う人材の開発が求められている。AIをはじめとする情報技術(IT)の開発者には、高いコンピュータのプログラミング能力が求められる。そのため、このような技術分野に携わる人材のプログラミング能力を正確に評価する必要がある。プログラミング能力を評価するには、旧来のように多人数が会場に集まってテストする方式もあるが、近年では情報通信システムの発達により自宅に居ながらオンラインでテストを受ける方式が増えている。
【0003】
このような背景の下、プログラミング課題に対する解決能力、特にプログラムの構造を構築する能力を簡易かつ迅速に診断する装置及び方法が提案されている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【発明の開示】
【発明が解決しようとする課題】
【0005】
プログラミングの能力を評価しようとする被評価者に対し、オンラインでプログラミングの能力を評価しようとすると、各人のプログラミング能力を正確に評価できないおそれがある。例えば、全ての被評価者に同じ設問を提供した場合、被評価者同士が設問や回答を共有する事態が発生することが懸念される。出題される設問が全員同じである場合、インターネット等を介してその解答が共有されてしまうと、各人のプログラミング能力を正確に評価できないことが問題となる。このような問題を解消するために、予め設問を大量に用意して全ての被評価者に違う設問を提示するためには、膨大なコストがかかる上に、定期的な問題の入れ替え作業が必要になる。そして、このような措置をとったとしても、不正を完全に防ぐことは難しいのが実情である。
【0006】
本発明はこのような課題に鑑み、自動で設問を生成しつつ、不正が容易にできないプログラミング能力評価システムを提供することを目的の一つとする。
【課題を解決するための手段】
【0007】
本発明の一実施形態に係るプログラミング能力評価システムは、コンピュータのプログラミングに関する問題文と問題文に対する正解のペアを生成する設問生成ジェネレータと、問題文と問題文に対する解答を入力する画面をユーザ端末に提供する設問提供部とを含み、設問生成ジェネレータは、設問のテンプレートから問題文と正解とのペアを生成する。
【0008】
本発明の一実施形態に係るプログラミング能力評価方法は、設問生成ジェネレータ及び設問提供部としての機能を有するコンピュータによるプログラミング能力評価方法であり、設問生成ジェネレータがコンピュータのプログラミングに関する問題文と問題文に対する正解のペアを生成し、設問提供部が問題文と問題文に対する解答を入力する画面をユーザ端末に提供することを含み、設問生成ジェネレータが、問題文と正解とのベアを設問のテンプレートから生成することを含む。
【発明の効果】
【0009】
本発明の一実施形態によれば、設問生成ジェネレータが設問のテンプレートを用いて問題文と正解とのペアを生成することにより、同じ種類の問題でも問題文と正解の内容を1問毎に異ならせることができる。それにより、被評価者が解答を検索又は共有できる環境にあったとしても、他人に出題される問題及びその解答とは一致しないため、解答を共有する形での不正を行うことができず、被評価者のプログラミング能力を正確に評価することができる。すなわち、インターネットを使用してオンラインでテストを行っても、それぞれの被評価者に対して出題される設問が異なる上に、回答も異なるため、問題文や回答文を共有しても、全く同じ回答にならないため不正を防ぐことができ、被評価者のプログラミング能力を正確に評価することができる。
【図面の簡単な説明】
【0010】
【
図1】本発明の一実施形態に係るプログラミング能力評価システムとプログラミング能力評価システムにネットワークを介して接続されるユーザ端末との機能的な構成を示す。
【
図2】本発明の一実施形態に係るプログラミング能力評価システムに用いられる設問のテンプレートの概要を示す。
【
図3】本発明の一実施形態に係るプログラミング能力評価システムによってユーザ端末の表示部に表示される作業画面の一例を示す。
【
図4】本発明の一実施形態に係るプログラミング能力評価システムによってユーザ端末の表示部に表示される作業画面の一例を示す。
【
図5】本発明の一実施形態に係るプログラミング能力評価システムとプログラミング能力評価システムにネットワークを介して接続されるユーザ端末とのハードウェア的構成を示す。
【
図6】本発明の一実施形態に係る学習支援システムによる設問提供とユーザ端末における処理の流れを示す図である。
【発明を実施するための形態】
【0011】
以下、本発明の実施形態を、図面等を参照しながら説明する。但し、本発明は多くの異なる態様を含み、以下に例示する実施形態に限定して解釈されるものではない。本開示において、ある図面に記載された特定の要素と、他の図面に記載された特定の要素とが同一又は対応する関係にあるときは、同一の符号を付して、繰り返しの説明を適宜省略することがある。さらに各要素に対する「第1」、「第2」と付記された文字は、各要素を区別するために用いられる便宜的な標識であり、特段の説明がない限りそれ以上の意味を有しない。
【0012】
本発明の一実施形態に係るプログラミング能力評価システムは、設問とプログラミング環境を提供し、プログラミング能力のレベルを評価する機能を有する。例えば、プログラミング能力評価システムは、AIを開発するために用いられるプログラミング言語のプログラミング環境を提供し、プログラミング言語の習得レベルを評価する機能を有する。なお、プログラミング能力評価システムが対応するプログラミング言語としては、例えば、Python、NumPy、R言語、C++、Julia等が例示される。
【0013】
図1は、本発明の一実施形態に係るプログラミング能力評価システム100とユーザ端末200との機能的な構成を示す。プログラミング能力評価システム100は、設問生成ジェネレータ102、設問提供部104、検証部106、ネットワーク接続部108を含む。また、ユーザ端末200は、設問提示部202、表示部204、入力部206、ネットワーク接続部208を含む。プログラミング能力評価システム100とユーザ端末200とは、電気通信回線(インターネット、イーサネット、ローカルエリアネットワーク等であり、以下においては単に「ネットワーク」ともいう。)を介して接続される。プログラミング能力評価システム100は、ユーザ端末200と、ネットワークを開介して双方向に情報を送受信し、ユーザ端末200を使用するユーザに学習環境を提供する機能を有する。
【0014】
プログラミング能力評価システム100は、ユーザ端末200に提供するプログラミング環境の中で設問を提示し、ユーザが作成した解答を評価する機能を有する。ユーザに設問を提示する機能は、設問生成ジェネレータ102、設問提供部104により実現される。設問生成ジェネレータ102は問題文を生成し、設問提供部104は、ネットワーク接続部108を介してユーザ端末200に問題文を提示し、問題文に対する解答を入力する画面を提供する。なお、
図1は、プログラミング能力評価システム100に1つのユーザ端末200が接続される例を示すが、本実施形態はこのような態様に限定されず、同時に、又は随時複数のユーザ端末200と接続することができる。
【0015】
ユーザ端末200は、設問提示部202により表示部204に問題文を表示し解答を入力する画面が表示される。設問提示部202は、表示部204に問題文及び解答を入力する画面を表示し、ユーザが入力部206を使用してプログラミングを行う(ソースコードの入力を行う)ことのできる環境を提供する。問題文は、例えば、ある結果を得るためのソースコードを記述せよ、といった内容が提示される。例えば、特定の関数を特定のパラメータを使って実行することにより得られる演算処理の結果、特定の文字列等が問題文の中に提示される。このような設問に対し、ユーザは、表示された出力を得るためのソースコードを入力画面に記述して解答を作成する。
【0016】
ユーザがユーザ端末200を操作して作成された解答は、ネットワークを介してプログラミング能力評価システム100に送信される。プログラミング能力評価システム100は、ユーザにより作成された解答(解答コード)を検証部106で実行する。検証部106は、また、設問生成ジェネレータで作成された正解(正解コード)を実行する。そして、検証部106は、解答コードと正解コードを実行した結果を比較して、結果が同じであれば正解、不一致であれば不正解の判定を行う。検証部106は、さらに、検証の結果を、ネットワークを介してユーザ端末200に通知する。このような処理によって評価者は被評価者のプログラミングの能力を評価することができ、被評価者は試験を通じて関数や文字列の扱いを習得しプログラミング能力を高めることができ、また自分のプログラミングの能力を知ることができる。
【0017】
図1は、プログラミング能力評価システム100が、設問生成ジェネレータ102を複数含む例を示す。複数の設問生成ジェネレータ102(102a、102b)は、例えば、設問の種類、範囲、難易度等に応じて設けられる。複数の設問生成ジェネレータ102(102a、102b)を、設問の種類、範囲、難易度等に応じて分けることにより、ジェネレータを最適化することができ処理速度高速化することができる。なお、
図1は、第1の設問生成ジェネレータ102aと第2の設問生成ジェネレータ102bの2つを示すが、プログラミング能力評価システム100はこの例に限定されず、さらに多くの設問生成ジェネレータを含むことができる。
【0018】
複数の設問生成ジェネレータ102(102a、102b)は、テンプレート読み出し部114(114a、114b)と、生成部116(116a、116b)と、を含む。テンプレート読み出し部114(114a、114b)は、記録媒体110から設問のテンプレート120を読み出し、生成部116(116a、116b)に出力する機能を有する。記録媒体110は様々な種類の問題文と正解のペアを作成するための設問のテンプレートが記憶されている。テンプレート読み出し部114(114a、114b)は、記録媒体110から設問のテンプレート120を任意(ランダム)に読み出すことができる。
【0019】
図2は、記録媒体に記憶される設問のテンプレート120の一例を示す。設問のテンプレート120は、問題文118とコード情報部119を含む。設問のテンプレート120の中で、問題文118とコード情報部119は対応付けられている。問題文118は、定型部140、変動部142、パラメータ部144を含む。問題文118において、定型部140は、問題文の中で定型文である情報が格納される領域であり、変動部142はパラメータ部144に格納されるパラメータの値により変動する情報が格納される領域である。パラメータ部144は、変動部142の内容に変化を与える1つ以上のパラメータを含む。パラメータ部144は、少なくとも1つ又は複数のパラメータが格納される。コード情報部119は、正解コードを生成するためのコード情報が格納される。コード情報部119は、パラメータ部144と関連付けられている。コード情報部119には、パラメータ部144のパラメータにより正解コードを実行して得られる結果に影響を与えるソースコードが格納されている。なお、
図2に示す設問のテンプレート120は一例であり、図示される構成に限定されるものではない。
【0020】
図1に示すプログラミング能力評価システムにおいて、複数の設問生成ジェネレータ102(102a、102b)は、テンプレート読み出し部114(114a、114b)により、記録媒体110から設問のテンプレート120が読み出しされる。テンプレート読み出し部114(114a、114b)は、読み出された設問のテンプレート120は生成部116(116a、116b)に出力される。生成部116(116a、116b)は、パラメータ部144に設定されている1つ以上のパラメータに対して、問題文及び正解を生成するためのパラメータ値をランダムに生成する。パラメータ値は、パラメータ毎に範囲が設定されていてもよく、その設定範囲内でランダムに設定され得る。生成部116(116a、116b)は、設定されたパラメータ値を用いて問題文と正解のペアを生成する。
【0021】
このように、設問生成ジェネレータ102(102a、102b)は、設問のテンプレート120に含まれる1つ以上のパラメータに対し、ランダムにパラメータ値を設定して問題文と正解のペアを生成する機能を有する。問題文を生成するに当たって設問のテンプレート120の中に1つ以上のパラメータを含ませ、そのパラメータの値をランダムに設定することで、同じ種類の問題でも問題文と正解のペアの内容が毎回異なるようにすることができる(別言すれば、同じ問題文と正解のペアが出現する確率を大幅に小さくすることができる)。このような機能によれば、複数の設問生成ジェネレータが同時に同じ種類の問題を生成する場合においても、それぞれの設問生成ジェネレータから同時出力される問題文と正解のペアを異ならせることができる。
【0022】
図1において、設問生成ジェネレータ102によって問題文と正解のペアが生成されると、設問提供部104はユーザ端末200に問題文を提供する。プログラミング能力評価システム100に複数のユーザ端末200が接続されている場合には、設問提供部104は複数のユーザ端末200のそれぞれに異なる問題文を提供することができる。設問提供部104から問題文が提供されると、ユーザ端末200の表示部204には、設問提示部202により問題文及び解答を入力する入力画面が表示される。ユーザは、ユーザ端末200を操作して(入力部206の機能を使って)、問題文の解答を指定されたプログラム言語を使ってプログラミングする。
【0023】
図3は、ユーザ端末200の表示部204に表示される作業画面の一例を示す。表示部204の作業画面には、問題文表示領域130、コーディング領域(ソースコード入力画面)134が表示される。また、作業画面には、問題を選択する選択ボタン136、入力したソースコードのバイト数137、入力したソースコードを送信する送信ボタン138等が表示されてもよい。
図3は、問題文の中に8から始まる7行7列の行列が表示されており、「表示されている行列を作成するコードを入力せよ」という問題が出題された例を示す。この問題文を
図2で説明する設問のテンプレート120に当てはめると、定型部140によって「表示されている行列を作成するコードを入力せよ」という表示が作成され、変動部142によって7行7列の行列が作成される。パラメータ部で設定されるパラメータはs(初期値)、n(行列の大きさ)であり、
図3はs=8、n=7がパラメータ値として変動部142に与えられ、問題文が作成された例を示す。ユーザは、このような問題文に対して、指定された出力を生成するためのソースコードをコーディング領域134に入力する。ユーザはコーディングが終了すると、解答(解答コード)をユーザ端末200からプログラミング能力評価システム100へ送信する。
【0024】
図4は、ユーザ端末200の表示部204に表示される作業画面の他の一例を示す。
図3に示す例と同様に、作業画面には問題文表示領域130、コーディング領域134、問題を選択する選択ボタン136、入力したソースコードのバイト数137、入力したソースコードを送信する送信ボタン138等が表示される。
図4に示す問題文の例は、辞書内にある単語からランダムにn個抽出された単語リストと、同じ単語リストの中で特定の文字を別の文字に置換された単語リストが表示されており、「表示された単語リストから置換後の単語リストを生成せよ」といった問題が出題された例を示す。
図4では、置換された単語リストが、各単語に含まれる「o」の文字を「*」に置き換えられた例を示す(置換する文字は「*」に限定されず、「#、%、&」等の各種記号、数字、別の文字であってもよい)。なお、このような文字列を扱う問題においては
図4に例示されるものに限定されず、単語を並べ変えたり、連続する同じ単語を抽出したりする問題が出題されてもよい。。
【0025】
この例を
図2に示す設問のテンプレートに当てはめると、定型部140によって「表示された単語リストから置換後の単語リストを生成せよ」という表示が作成され、変動部142で置換前後の単語リストが作成される。パラメータ部で設定されるパラメータはn(単語数)であり、
図4はs=21がパラメータ値として設定された例を示す。また、
図4に示す問題文は、生成部116が、単語リストの頻出文字を検出する文字検出部、ランダムに文字を選択する文字選択部、選択された文字を他の文字に置き換える置換部の機能を有し、これらの機能によって辞書からランダムに単語が抽出され、任意の文字を別の文字に置き換えた単語リストが問題文として生成される。ユーザは、このような問題文に対して、指定された出力を生成するためのソースコードをコーディング領域134に入力する。ユーザはコーディングが終了すると、解答(解答コード)をユーザ端末200からプログラミング能力評価システム100へ送信する。
【0026】
図3及び
図4に示すように、本実施形態に係るプログラミング能力評価システム100は、ユーザ端末200に問題文と解答を入力するための入力領域を含む作業画面を表示させる機能を有する。
図3及び
図4に示す例では、ユーザは問題文の中に表示されている行列や単語リストを単なる文字列として出力するようにプログラミングすることができる。しかし、このような解答では出題の意図にそぐわないため、単なる文字列の出力を使うことができないように解答として入力するコードにバイト数の制限を設けてもよい。このような制限条件は、設問のテンプレート120の中で予め設定されていてもよい。
【0027】
ユーザ端末200からソースコードが送信されると、プログラミング能力評価システム100は検証部106で問題文とセットで作成された正解コードとユーザから送信された解答コードが実行される。検証部106は、正解コードと解答コードを実行した結果が一致するか否かを検証する。検証部106は、正解コードと解答コードの実行結果が一致した場合は正解と判定し、不一致の場合は不正解と判定する。そして、その判定結果は、ユーザ端末200に通知される。ユーザは、ユーザ端末200によって作成した解答(解答コード)の正誤を確認することができ、正解であった場合には別の設問に取り組むことができ、正解が得られない場合は再度その設問に取り組むことができる。
【0028】
図5は、プログラミング能力評価システム100とユーザ端末200とのハードウェア的な構成を示す。プログラミング能力評価システム100は、プログラムを実行するCPU(Central Processing Unit)122、データ、プログラムを格納するメモリ124、外部機器と接続される入出力インタフェース126、ネットワークと接続される通信回路128等のハードウェア資源により構築され、ソフトウェア資源によって
図1に示す各機能を実現するように駆動される。例えば、設問生成ジェネレータ102の機能は、CPU122、メモリ124、記録媒体110と接続する入出力インタフェース126等のハードウェア資源と、メモリ124に記憶されたソフトウェア資源により実現される。また、設問提供部104及び検証部106は、CPU122、メモリ124等のハードウェア資源と、メモリ124に記憶されたソフトウェア資源により実現され、ネットワーク接続部108は通信回路128により実現される。また、記録媒体110は、ハードディスクドライブ(HDD:Hard Disk Drive)、ソリッドステートドライブ(SSD:Solid State Drive)等で構築される。このようなプログラミング能力評価システム100はサーバによって提供されてもよく、サーバは、物理サーバとして構築されたものであってもよいし、仮想サーバとして構築されたものであってもよい。
【0029】
ユーザ端末200は、CPU210、メモリ212、ディスプレイ214、キーボード、マウス、タッチパッド等の入力デバイス216、通信回路218を備える。このようなユーザ端末200は、デスクトプ型又はノートブック型のパーソナルコンピュータ、タブレット端末等の電子機器で実現される。
【0030】
図6は、本発明の一実施形態に係るプログラミング能力評価システム100を用いてユーザがプログラミングを行う際に行われる処理の流れを説明するシーケンス図を示す。以下、
図6を参照して、プログラミング能力評価システム100で行われる処理の流れの一例を説明する。
【0031】
ここでは、ユーザ端末200の表示部204に設問の選択画面が表示されているものとする。ユーザは、ユーザ端末200の表示部204に1つ以上の設問の設問の選択画面から設問を選択する(S202)。プログラミング能力評価システム100は、設問生成ジェネレータのテンプレート読み出し部114の機能により、選択された設問を記録媒体110から読み出す(S204)。テンプレート読み出し部114は、記録媒体110から設問のテンプレート120を読み出す。
【0032】
プログラミング能力評価システム100は、生成部116の機能により設問のテンプレート120を調製し、異なる設問を生成する(S206)。設問のテンプレート120は、
図2を参照して説明した構成を有する。生成部116は、上記で説明したように、設問のテンプレート120においてパラメータ部144に含まれる1つ以上のパラメータの値をランダムに設定し問題文と解答のペアを作成する処理が行われる。
【0033】
プログラミング能力評価システム100は、設問提供部104の機能により、設問のテンプレートにより生成された設問をユーザ端末200に提供する(S208)。設問提供部104の機能により、ユーザ端末200には、入力条件と、出力値と、入力条件から出力値を得るためのソースコードを入力する入力画面が提供される(S210)。
【0034】
ユーザは、ユーザ端末200を操作して、コーディングを行う(S212)。具体的には、提示された問題文に従い指定された出力を得るためのソースコードを作業画面に入力する。ユーザが、ユーザ端末200にソースコードを入力すると、ユーザ端末200からプログラミング能力評価システム100に解答(解答コード)を送信する(S214)。
【0035】
プログラミング能力評価システム100は、検証部106の機能により、正解(正解コード)と解答(解答コード)を実行し、両者から得られる出力が一致するか否かの検証を行う。検証した結果は、ユーザ端末200に通知される(S218)。正しい結果が得られた場合(正解コードと出力が一致した場合)、正解である旨が通知され、正しい結果が得られない場合(正解コードと出力が一致しない場合)、不正解である旨が通知される。ユーザ端末200の表示部204には、例えば、正解である場合には、次の設問を選択する画面が表示され、不正解の場合には、再度同じ設問が表示され、ユーザは設問に正解するまで繰り返しプログラミングをすることができる(S220)。
【0036】
本実施形態に係るプログラミング能力評価システム100は、設問を生成するためのテンプレートを用い、そのテンプレートに含まれ問題の内容に変更を与える1つ以上のパラメータの値を任意に設定することで、多くの問題文と正解のペアを生成することができる。また、このパラメータの値をランダムに設定することで、設問の出現予測性を低下させ、設問の新規性を高めることができる。
【0037】
単に設問を自動生成するだけでは常に正解が同一になってしまうが、本実施形態に示したように、設問を生成するテンプレートが1つ以上のパラメータを含み、問題文を生成する毎にパラメータの値を異ならせることで、同じ種類の問題でも問題文と正解の内容を1問毎に異ならせることができる。それにより、ユーザ(被評価者)が解答を検索又は共有できる環境にあったとしても、他人に出題される問題及びその解答とは一致しないため、解答を共有する形での不正を行うことを防ぐことができる。
【0038】
本実施形態に係るプログラミング能力評価システムは、設問生成ジェネレータの機能により、膨大な数の問題(設問)を準備するための人的な負担(労力)を軽減することができ、ストレージ等を含めたコンピュータシステムの負荷を軽減することができる。また、本実施形態に係るプログラミング能力評価システム100を利用するユーザ(被評価者)に対しては、プログラミングの過程で新規な問題(設問)を独力で解くという環境を提供することができる。例えば、複数のユーザが随時又は同時に、各自のユーザ端末200で同じ種類の問題を解答する場合でも、それぞれのユーザ端末200には異なる問題文が提供されるので、ユーザは独力で設問を解く必要があり、それによりプログラミングの能力を高めることができる。一方、プログラミング能力評価システム100によるプログラミング環境の提供者の立場によれば、個々のユーザのプログラミング能力の習熟度を正確に評価することができる。
【符号の説明】
【0039】
100・・・プログラミング能力評価システム、102・・・設問生成ジェネレータ、104・・・設問提供部、106・・・検証部、108・・・ネットワーク接続部、110・・・記録媒体、114・・・テンプレート読み出し部、116・・・生成部、118・・・問題文、119・・・コード情報部、120・・・設問のテンプレート、122・・・CPU、124・・・メモリ、126・・・入出力インタフェース、128・・・通信回路、130・・・入力条件、132・・・出力結果、134・・・コーディング領域、136・・・選択ボタン、138・・・送信ボタン、140・・・定型部、142・・・変動部、144・・・パラメータ部、200・・・ユーザ端末、202・・・設問提示部、204・・・表示部、206・・・入力部、208・・・ネットワーク接続部、210・・・CPU、212・・・メモリ、214・・・ディスプレイ、216・・・入力デバイス、218・・・通信回路