(57)【特許請求の範囲】
【請求項１】
サーバに教員クライアント端末と学習者クライアント端末が接続されてなるプログラミング学習支援システムにおいて、
サーバは、問題データベース、問題生成モジュール、コンパイラーモジュールおよび可視化モジュールを備え、
問題データベースは、問題識別子、ソースプログラムを実行したときの実行結果を問うものとする問題文、ソースプログラム、制御構造記述、ソースプログラムの各命令の解説の説明文および問題の正答を含むシステムに必要なデータを管理し、
問題生成モジュールは、教員クライアント端末から入力された、ソースプログラムを実行したときの実行結果を問うものとする問題文と問題の内容であるソースプログラムからなる出題データを受け取り、受け取った出題データをもとに、そのソースプログラムのどの内容を変更するかについての教員クライアント端末からのデータを受けて、類似問題のソースプログラムを生成した後、出題問題のソースプログラムと生成した類似問題のソースプログラムをコンパイラーモジュールに渡し、コンパイラーモジュールから出題問題および類似問題のソースプログラムの各命令の解説の説明文、正答である実行結果および制御構造記述を受け取り、これらのデータに問題識別子、問題文ならびに出題問題および類似問題のソースプログラムを加えて問題データベースに渡し、
コンパイラーモジュールは、字句解析および構文解析部と機械語翻訳部を有し、字句解析および構文解析部は、問題データベースより受け取ったソースプログラムの字句解析および構文解析を行い、ソースプログラムの各命令の解説の説明文および制御構造記述を問題生成モジュールに返し、機械語翻訳部は、コンパイラーによりコンパイルを行い、ソースプログラムを実行して、正答である実行結果を問題生成モジュールに返し、
可視化モジュールは、問題データベースのデータを用い、制御構造記述よりチャートを作成し、ソースプログラム、チャートおよびソースプログラムの各命令の解説の説明文を同期させ、変数の内容を得て、学習者クライアント端末からの要求を受けて表示画面を生成し、
教員クライアント端末は、ソースプログラムを実行したときの実行結果を問うものとする問題文と問題の内容であるソースプログラムからなる出題データ、解答選択肢の記述または解答欄の設定のデータ、類似問題作成のために出題データのソースプログラムのどの内容を変更するかについてのデータの入力を受け付け、
学習者クライアント端末は、問題提示画面を表示し、その問題の解答を受け付けた後、ソースプログラムのトレース実行画面を表示することを特徴とするプログラミング学習支援システム。
【請求項２】
学習者クライアント端末は、学習者が作成したソースプログラムを受け付け、そのソースプログラムをコンパイラーモジュールに渡し、サーバの各モジュールは教員作成ソースプログラムに代えて学習者自作のソースプログラムをもとに各処理を行うことを特徴とする請求項１に記載のプログラミング学習支援システム。
【請求項３】
サーバと教員クライアント端末および学習者クライアント端末がインターネットにより接続されていることを特徴とする請求項１または２に記載のプログラミング学習支援システム。
【請求項４】
教員クライアント端末の画面レイアウトが、ソースプログラムを実行したときの実行結果を問うものとする問題文および問題の内容であるソースプログラムからなる出題データを入力するための出題データ入力画面と、類似問題を出題可能にするために出題データのどの内容を変更するかについての変更項目選択および変更項目設定を行う複数問題設定画面を有することを特徴とする請求項１から３のいずれかに記載のプログラミング学習支援システム。
【請求項５】
問題識別子、ソースプログラムを実行したときの実行結果を問うものとする問題文解答を施す問題文、ソースプログラム、制御構造記述、ソースプログラムの各命令の解説の説明文および問題の正答を含むシステムに必要なデータを管理する問題データベースを有するとともに問題生成モジュール、コンパイラーモジュールおよび可視化モジュールを備えたサーバに、教員クライアント端末と学習者クライアント端末が接続されたシステムにおけるプログラミング学習支援方法であって、
前記サーバの問題生成モジュールが、教員クライアント端末から入力された、ソースプログラムを実行したときの実行結果を問うものとする問題文と問題の内容であるソースプログラムからなる出題データを受け取り、受け取った出題データをもとに、そのソースプログラムのどの内容を変更するかについての教員クライアント端末からのデータを受けて、類似問題のソースプログラムを生成した後、出題問題のソースプログラムと生成した類似問題のソースプログラムをコンパイラーモジュールに渡し、コンパイラーモジュールから出題問題および類似問題のソースプログラムの各命令の解説の説明文、正答である実行結果および制御構造記述を受け取り、これらのデータに問題識別子、問題文ならびに出題問題および類似問題のソースプログラムを加えて問題データベースに渡し、
前記サーバのコンパイラーモジュールが、字句解析および構文解析部と機械語翻訳部を有し、字句解析および構文解析部は、問題データベースより受け取ったソースプログラムの字句解析および構文解析を行い、ソースプログラムの各命令の解説の説明文および制御構造記述を問題生成モジュールに返し、機械語翻訳部は、コンパイラーによりコンパイルを行い、ソースプログラムを実行して、正答である実行結果を問題生成モジュールに返し、
前記サーバの可視化モジュールが、問題データベースのデータを用い、制御構造記述よりチャートを作成し、ソースプログラム、チャートおよびソースプログラムの各命令の解説の説明文を同期させ、変数の内容を得て、学習者クライアント端末からの要求を受けて表示画面を生成し、
教員クライアント端末が、ソースプログラムを実行したときの実行結果を問うものとする問題文と問題の内容であるソースプログラムからなる出題データ、解答選択肢の記述または解答欄の設定のデータ、類似問題作成のために出題データのソースプログラムのどの内容を変更するかについてのデータの入力を受け付け、
学習者クライアント端末が、問題提示画面を表示し、その問題の解答を受け付けた後、ソースプログラムのトレース実行画面を表示することを特徴とするプログラミング学習支援方法。
【請求項６】
学習者クライアント端末が、学習者が作成したソースプログラムを受け付け、そのソースプログラムをコンパイラーモジュールに渡し、サーバの各モジュールは教員作成ソースプログラムに代えて学習者自作のソースプログラムをもとに各処理を行うことを特徴とする請求項５に記載のプログラミング学習支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この出願の発明は、プログラミング学習支援システムに関するものである。さらに詳しくは、この出願の発明は、ソースプログラムと連動して、プログラミング初学者に重要と考えられる制御構造、変数の内容、入出力データなどの情報を可視化した、新しいプログラミング学習支援システムおよびプログラミング学習支援方法に関するものである。
【背景技術】
【０００２】
大学の理工学部系学部情報系学科（以下、情報系学科と呼ぶ）の学生にとって、プログラミングの学習は必須である。多くの情報系学科では、１年生からプログラミング教育がはじまり、その後３年生くらいまで、積み重ね的な教育を行っている。このため、情報系学科において、初学者が初期にプログラミングでつまずくと、その後の学習に大きく影響を与えてしまう可能性がある。プログラミング初学者がつまずく理由は次のように考えられる。
【０００３】
一般に、アルゴリズムを熟考し決定後、プログラムを記述するという習慣がつかない時期に、プログラミング初期教育が始まる場合が多く、論理的思考定着前のプログラミング学習には障害が多い。また、既存のプログラミング言語はヨーロッパ言語を使う人間が設計しており、印欧語の影響を強く受けている。従って、プログラミング学習においても、外国語の学習と同様、多くのプログラムに触れ、多くの優れたソースコードを読む、などが有効であると考えられる。しかし、このような学習環境は現状では整っていない。
【０００４】
プログラミング学習に限ったことではないが、学習者個人に合った方法・手順で学習を進めることが望ましいが、現状では、教科書などに沿った画一的学習が一般的に行われている。
【０００５】
プログラミング初学者は、次のような過程を経て、プログラミングを修得しているのではないかと考えられる。
【０００６】
（１）プログラムの全体構造の理解と、入出力文、変数、定数、式、代入、変数宣言、変数の型などの理解
（２）連接、条件判断処理、反復処理などのアルゴリズムの基本構成要素の理解と、それらを使ったソースプログラムを１行１行追う（トレースする）能力の修得
（３）連接、判断、繰り返しなどのアルゴリズムの基本構成要素を用いて、簡単なプログラムを作成する能力の修得
（４）各種のアルゴリズムやデータ構造をプログラムとして記述する能力の修得
【非特許文献１】Brown, M.H.: Exploring Algorithm Using Balsa-II, Computer, Vol.5, pp.14-36 (1998)
【非特許文献２】Brown, M.H.: Zeus: A System for Algorithm Animation and Multi View Editing, Preceeding IEEE Workshop Visual Languages, IEEE CS Press, pp.4-9 (1991)
【非特許文献３】Stasko J.T.: Tango: A Framework and System for Algorithm Animation, IEEE Computer, Vol. 23, No.9, pp.27-39 (1990)
【非特許文献４】Beaza-Yates R.A., Quezada G., and Valmadre G.: Visula Debugging and Automatic Animation of C Programs, Software Visualization, Vol.7, pp.46-58 (1997)
【非特許文献５】De Pauw W., Mitchell N., Robillard M., Sevitsky G., and Srinivasan H.: Drive-by Analysis of Running Programs, Proceeding for Workshop on Software Visualization, International Conference on Software Engineering, pp.17-23 (2001)
【発明の開示】
【発明が解決しようとする課題】
【０００７】
プログラミング学習を支援するシステムは数多く存在する。しかし、それらの多くは上記学習過程（３）（４）を支援するものであり、上記学習過程（１）（２）を支援するシステムは少ない。上記学習過程（１）については、講義、教科書、参考書などの教材で学習することが一般的である。上記学習過程（２）の能力を修得するためには、教科書などの静的な教材ではなく、可視化システムなど動的な教材が望まれるが、初学者を対象としたそのようなシステムは存在しない。
【０００８】
そこで、この出願の発明は、以上のとおりの事情に鑑みてなされたもので、上記学習過程（２）のアルゴリズムの基本構成要素の理解と、それらを使ったソースプログラムをトレースする能力を初学者でも動的な教材により容易に修得することができるプログラミング学習支援システムおよびプログラミング学習支援方法を提供することを課題とする。
【課題を解決するための手段】
【０００９】
この出願の発明は、上記課題を解決するものとして、第１には、サーバに教員クライアント端末と学習者クライアント端末が接続されてなるプログラミング学習支援システムにおいて、サーバは、問題データベース、問題生成モジュール、コンパイラーモジュールおよび可視化モジュールを備え、問題データベースは、問題識別子、ソースプログラムを実行したときの実行結果を問うものとする問題文、ソースプログラム、制御構造記述、ソースプログラムの各命令の解説の説明文および問題の正答を含むシステムに必要なデータを管理し、問題生成モジュールは、教員クライアント端末から入力された、ソースプログラムを実行したときの実行結果を問うものとする問題文と問題の内容であるソースプログラムからなる出題データを受け取り、受け取った出題データをもとに、そのソースプログラムのどの内容を変更するかについての教員クライアント端末からのデータを受けて、類似問題のソースプログラムを生成した後、出題問題のソースプログラムと生成した類似問題のソースプログラムをコンパイラーモジュールに渡し、コンパイラーモジュールから出題問題および類似問題のソースプログラムの各命令の解説の説明文、正答である実行結果および制御構造記述を受け取り、これらのデータに問題識別子、問題文ならびに出題問題および類似問題のソースプログラムを加えて問題データベースに渡し、コンパイラーモジュールは、字句解析および構文解析部と機械語翻訳部を有し、字句解析および構文解析部は、問題データベースより受け取ったソースプログラムの字句解析および構文解析を行い、ソースプログラムの各命令の解説の説明文および制御構造記述を問題生成モジュールに返し、機械語翻訳部は、コンパイラーによりコンパイルを行い、ソースプログラムを実行して、正答である実行結果を問題生成モジュールに返し、可視化モジュールは、問題データベースのデータを用い、制御構造記述よりチャートを作成し、ソースプログラム、チャートおよびソースプログラムの各命令の解説の説明文を同期させ、変数の内容を得て、学習者クライアント端末からの要求を受けて表示画面を生成し、教員クライアント端末は、ソースプログラムを実行したときの実行結果を問うものとする問題文と問題の内容であるソースプログラムからなる出題データ、解答選択肢の記述または解答欄の設定のデータ、類似問題作成のために出題データのソースプログラムのどの内容を変更するかについてのデータの入力を受け付け、学習者クライアント端末は、問題提示画面を表示し、その問題の解答を受け付けた後、ソースプログラムのトレース実行画面を表示することを特徴とするプログラミング学習支援システムを提供する。
【００１０】
また、第２には、上記第１の発明において、学習者クライアント端末は、学習者が作成したソースプログラムを受け付け、そのソースプログラムをコンパイラーモジュールに渡し、サーバの各モジュールは教師からのソースプログラムに代えて学習者自作のソースプログラムをもとに各処理を行うことを特徴とするプログラミング学習支援システムを提供する。
【００１１】
また、第３には、上記第１または第２の発明において、サーバと教員クライアント端末および学習者クライアント端末がインターネットにより接続されていることを特徴とするプログラミング学習支援システムを提供する。
【００１２】
また、第４には、上記第１から第３のいずれかの発明において、教員クライアント端末の画面レイアウトが、ソースプログラムを実行したときの実行結果を問うものとする問題文および問題の内容であるソースプログラムからなる出題データを入力するための出題データ入力画面と、類似問題を出題可能にするために出題データのどの内容を変更するかについての変更項目選択および変更項目設定を行う複数問題設定画面を有することを特徴とするプログラミング学習支援システムを提供する。
【００１３】
また、第５には、問題識別子、ソースプログラムを実行したときの実行結果を問うものとする問題文解答を施す問題文、ソースプログラム、制御構造記述、ソースプログラムの各命令の解説の説明文および問題の正答を含むシステムに必要なデータを管理する問題データベースを有するとともに問題生成モジュール、コンパイラーモジュールおよび可視化モジュールを備えたサーバに、教員クライアント端末と学習者クライアント端末が接続されたシステムにおけるプログラミング学習支援方法であって、前記サーバの問題生成モジュールが、教員クライアント端末から入力された、ソースプログラムを実行したときの実行結果を問うものとする問題文と問題の内容であるソースプログラムからなる出題データを受け取り、受け取った出題データをもとに、そのソースプログラムのどの内容を変更するかについての教員クライアント端末からのデータを受けて、類似問題のソースプログラムを生成した後、出題問題のソースプログラムと生成した類似問題のソースプログラムをコンパイラーモジュールに渡し、コンパイラーモジュールから出題問題および類似問題のソースプログラムの各命令の解説の説明文、正答である実行結果および制御構造記述を受け取り、これらのデータに問題識別子、問題文ならびに出題問題および類似問題のソースプログラムを加えて問題データベースに渡し、前記サーバのコンパイラーモジュールが、字句解析および構文解析部と機械語翻訳部を有し、字句解析および構文解析部は、問題データベースより受け取ったソースプログラムの字句解析および構文解析を行い、ソースプログラムの各命令の解説の説明文および制御構造記述を問題生成モジュールに返し、機械語翻訳部は、コンパイラーによりコンパイルを行い、ソースプログラムを実行して、正答である実行結果を問題生成モジュールに返し、前記サーバの可視化モジュールが、問題データベースのデータを用い、制御構造記述よりチャートを作成し、ソースプログラム、チャートおよびソースプログラムの各命令の解説の説明文を同期させ、変数の内容を得て、学習者クライアント端末からの要求を受けて表示画面を生成し、教員クライアント端末が、解答を施す問題文と問題の内容であるソースプログラムからなる出題データ、解答選択肢の記述または解答欄の設定のデータ、類似問題作成のために出題データのソースプログラムのどの内容を変更するかについてのデータの入力を受け付け、学習者クライアント端末が、問題提示画面を表示し、その問題の解答を受け付けた後、ソースプログラムのトレース実行画面を表示することを特徴とするプログラミング学習支援方法を提供する。
【００１４】
さらに、第６には、上記第５の発明において、学習者クライアント端末が、学習者が作成したソースプログラムを受け付け、そのソースプログラムをコンパイラーモジュールに渡し、サーバの各モジュールは教員作成ソースプログラムに代えて学習者自作のソースプログラムをもとに各処理を行うことを特徴とするプログラミング学習支援方法を提供する。
【発明の効果】
【００１５】
この出願の発明に係るプログラミング学習支援システムおよびプログラム学習支援方法によれば、動的な教材を介して多くのプログラミング初学者がソースプログラムをトレースする能力を容易に身につけることが可能になる。そして、学習者は次の学習過程である「連接、判断、繰り返しなどのアルゴリズムの基本構成要素を用いて、簡単なプログラムを作成する能力の修得」にスムーズに進むことが可能となり、学習初期において、プログラミングにつまずく学生の割合を低減させることができる。
【発明を実施するための最良の形態】
【００１６】
この出願の発明は上記のとおりの特徴をもつものであるが、以下にその実施の形態について説明する。
【００１７】
ソースプログラムをトレースする力を養うためには、トレースしている命令とプログラム全体の制御構造との関係、その時点の変数の内容との関係、入出力内容との関係などを理解することが重要である。そこで、この出願の発明に係る実施形態のプログラミング学習支援システムには、次のような機能を持たせている。
【００１８】
・ソースプログラムと制御構造を表したチャートを並行して表示して、学習者が指でなぞりながらトレースできる機能：初学者には身体性が重要である。
【００１９】
・変数の内容の変移を表示する機能：トレースを行うためには、実行時の変数の内容と同時に、変数の内容の変移の理解が重要である。
【００２０】
・類似問題を半自動的に作成する機能：初学者には、類似プログラムを何度も読み書きする反復学習が重要である。
【００２１】
また、時間や場所に関係なく学習できる環境の整備が重要である。このため、この実施形態のシステムは、サーバ−クライアント方式で実現し、クライアントにはウェブブラウザさえあれば、いつでもどこでも学習が可能とする。
【００２２】
この出願の発明に係るプログラミング学習支援システムの構成を図１にブロック図で模式的に示す。
【００２３】
このプログラミング学習支援システムは、サーバ（１０）および教員クライアント端末（２０）と学習者クライアント端末（３０）から構成される。サーバ（１０）はこの実施形態ではインターネット（図示せず）を介して教員クライアント端末（２０）と学習者クライアント（３０）に接続されている。
【００２４】
サーバ（１０）は、問題データベース（１）、問題生成モジュール（２）、コンパイラーモジュール（３）、可視化モジュール（４）、制御部（５）、主記憶部（６）および入出力（Ｉ／Ｏ）インターフェース（７）を有する。
【００２５】
問題データベース（１）は、システムに必要である次のようなデータを管理するデータベースである。
【００２６】
・問題識別子
・問題文
・ソースプログラムの説明文
・制御構造記述
・キーワード
・ソースプログラム
・正答
問題生成モジュール(２）は、教員が出題したデータを元に、半自動的に類似問題を複数生成する。生成されたソースプログラムは、出題問題のソースプログラムとともにコンパイラーモジュール（３）に渡され、構文チェックが行われる。構文エラーがない場合、問題生成モジュール（２）は、コンパイラーモジュール（３）から、ソースプログラムの説明、実行結果（正答）、制御構造記述を受け取り、それらのデータに問題識別子、キーワード、問題文、ソースプログラムを加えて、問題データベース（１）へ格納する。
【００２７】
コンパイラーモジュール（３）は、「字句解析および構文解析機能」を備えた字句解析および構文解析部（図示せず）と「機械語翻訳機能」を備えた機械語翻訳部の２つの機能部を有する。字句解析および構文解析部は、問題生成モジュール（３）または学習者クライアント端末（３０）から受け取ったソースプログラムの字句解析および構文解析を行い、ソースプログラムの説明、制御構造記述を問題生成モジュール（２）に返す。機械語翻訳部は、たとえば既存のフリーのコンパイラーを用いてコンパイルを行い、構文エラーのチェックを行い、構文エラーがない場合は、プログラムを実行して、実行結果（正答）を問題設定モジュールに返す。構文エラーがあった場合は、教員クライアント端末（２０）または学習者クライアント端末（３０）にエラーを表示し、教員または学習者は、表示されたエラーを元にソースプログラムを書き換える。
【００２８】
可視化モジュール(４）は、問題データベース（１）の情報を用いて、学習者クライアント端末（３０）に画面表示を行うため、次のような機能を有する。
【００２９】
・制御構造記述を用いて、チャートを生成する。
【００３０】
・ソースプログラム、チャート、説明文を同期させる。
【００３１】
・変数の内容を得る。
【００３２】
・学習者クライアント端末（３０）からの要求に合わせて画面を生成する。
【００３３】
主記憶部（６）は、サーバ（１０）の制御プログラム等を有しており、制御部（５）がその制御プログラムに基づいて各モジュールの動作の制御を行う。入出力インターフェース（７）はサーバ（１０）と教員クライアント端末（２０）および学習者クライアント端末（３０）との間でデータのやりとりを行うためのモジュールである。
【００３４】
教員クライアント端末（２０）は、教員が出題するためのインターフェースであり、次のような機能を持つ。
【００３５】
・問題記述
・ソースプログラム記述
・解答選択肢の記述
・問題バリエーションの設定：たとえば、条件判断処理では条件のバリエーション、繰り返し処理の場合には、ループカウンタの初期化、繰り返し条件、ループカウンタの刻みなどの設定を可能にする。
【００３６】
教員クライアント端末（２０）としては、たとえばＰＣ本体とキーボード、マウス、ディスプレイ等の周辺機器を接続した通常のパーソナルコンピュータを用いることができるが、これに限定されない。
【００３７】
学習者クライアント端末（３０）は、学習者のためのインターフェースである。このプログラミング学習支援システムでは、教員から出題された問題を解いて、その問題のトレースを行える第１のモード（ａ）と、学習者自作のプログラムがトレースできる第２のモード（ｂ）、の２つのモードが用意されている。第２のモードの場合は、学習者が作成したソースプログラムをサーバ（１０）のコンパイラーモジュール（３）に渡す。学習者クライアント端末（３０）としても、たとえばＰＣ本体とキーボード、マウス、ディスプレイ等の周辺機器を接続した通常のパーソナルコンピュータを用いることができるが、これに限定されない。
【００３８】
以下、この実施形態のプログラミング学習支援システムにおける学習支援動作について図２のフローチャートを参照しながら説明する。
【００３９】
先ず、教員クライアント端末（２０）におけるデータ入力の受け付けについて述べる。教員クライアント端末（２０）の画面レイアウトを図３に示す。教員は「問題文およびソースプログラム入力画面」で問題文とソースプログラムを入力し、その後、類似問題を複数出題可能とするために、「複数問題設定画面」に移り設定を行う。以下に各サブウィンドウの説明を行う。
[１]問題文入力
学習者クライアント端末（３０）に表示されるべき問題文を、このサブウィンドウに入力する。たとえば、対象となる言語がＣ＋＋の場合は、次のような内容となる。
【００４０】
【表１】
0004808041.tif 000002
[２]ソースプログラム入力
学習者クライアント端末（３０）に表示されるべきソースプログラムを、このサブウィンドウに入力する。たとえば、対象となる言語がＣ＋＋の場合は、次のような内容となる。
【００４１】
【表２】
0004808041.tif 000003
[３]変更項目選択
「変更項目選択」のサブウィンドウは、サーバ（１０）の問題生成モジュール（２）において複数の類似問題を半自動的に作るために、ソースプログラムのどの内容を変更するかを選択するサブウィンドウである。たとえば、[２]のソースプログラムにおいて、繰り返しの条件とループカウンタの刻みを変更した場合は、次のように選択する。（四角で囲った部分が選択項目）
【００４２】
【表３】
0004808041.tif 000004
[４]変更項目設定
[３]のサブウィンドウで選択した項目に対して、どのような内容に変更するかを設定するサブウィンドウである。入力後、問題生成モジュール（２）は、ソースプログラムを、ここで設定した項目に書き換えて、複数の問題を生成する。たとえば、類似問題を３つ作成する場合には、次のように３つの条件を設定する。（四角で囲った部分が入力部分）
【００４３】
【表４】
0004808041.tif 000005
また、教師クライアント端末（２０）は、解答選択肢の記述等も受け付ける。
【００４４】
以上のようにして教師クライアント端末（２０）で受け付けたデータはインターネットを通じてサーバ（１０）に送られ、入出力インターフェース（６）により受け取られる（ステップＳ１）。
【００４５】
問題生成モジュール(２）は、主記憶部（６）が有する制御プログラムに基づき制御部（５）の制御のもとで、教員が出題したデータを元に、半自動的に類似問題を複数生成する（ステップＳ２）。生成された類似問題のソースプログラムは、出題問題のソースプログラムとともにコンパイラーモジュール（３）に渡される。コンパイラーモジュール（３）の字句解析および構文解析部は、受け取ったソースプログラムの字句解析および構文解析を行い、ソースプログラムの説明、制御構造記述を問題生成モジュール（２）に返す（ステップＳ３）。また、コンパイラーモジュール（３）の機械語翻訳部は、構文エラーのチェックを行い、構文エラーがない場合は、プログラムを実行して、実行結果（正答）を問題生成モジュール（２）に返す。構文エラーがない場合、問題生成モジュール（２）は、コンパイラーモジュール（３）から、ソースプログラムの説明、実行結果（正答）、制御構造記述を受け取り、それらのデータに問題識別子、キーワード、問題文、ソースプログラムを加えて、問題データベース（１）へ格納する（ステップＳ４）。構文エラーがあった場合は、教員クライアント端末（２０）または学習者クライアント端末（３０）にエラーを表示し、教員または学習者は、表示されたエラーを元にソースプログラムを書き換える。
【００４６】
可視化モジュール(４）は、問題データベース（１）にアクセスし、学習者クライアント端末（３０）のディスプレイに画面表示を行うため、制御構造記述を用いて、チャートを生成し、ソースプログラム、チャート、説明文を同期させ、変数の内容を得る（ステップＳ５）。そして学習者クライアント端末（３０）から要求があれば、画面を生成し（ステップＳ６）、入出力インターフェース（７）よりインターネットを介して学習者クライアント端末（３０）の表示データを送るようになっている。
【００４７】
一方、学習者クライアント端末（３０）では、上記のように第１のモード（ａ）と第２のモード（ｂ）がある。
【００４８】
第１のモード（ａ）における学習者クライアント端末（３０）の画面のレイアウトを図４に示す。学習者は、問題提示画面で解答を行い（ステップＳ７）、トレース実行画面に進むことができるようになっている。解答は、問題データベース（１）に保存されている正答データを参照して、可視化モジュール（２）が評価する。問題は、ソースプログラムをトレースして、実行結果を問うような内容とすることができる。トレース実行画面では、学習者がボタンをクリックすると、プログラムが１行１行実行され、実行されている命令に応じた命令の説明、変数の内容、制御構造の内容が表示される。
【００４９】
ここで、学習者クライアント端末の画面のサブウィンドウについて述べる。
[１]問題文
出題する問題文を表示する。「問題提示画面」の内容と同一内容が「トレース実行画面」にも表示される。たとえば、問題文は次のような内容となる。
【００５０】
【表５】
0004808041.tif 000006
[２]ソースプログラム表示
学習者クライアント端末（３０）では、サーバ（１０）から送られてきたソースプログラムを画面表示する。「問題提示画面」の内容と同一内容が「トレース実行画面」にも表示される。このとき「トレース実行画面」では、現在実行している命令の色を変えて、どこを実行しているのか理解しやすいようにすることが望ましい。たとえば、対象となる言語がＣ＋＋の場合は、次のような内容となる。
【００５１】
【表６】
0004808041.tif 000007
[３]解答選択肢または解答入力欄
選択式問題の場合は、解答群を表示し選択し、記述式問題の場合は、解答をキーボードから入力する。たとえば、[１][２]の例において、選択問題とする場合は、解答群として次のような内容となる。
【００５２】
【表７】
0004808041.tif 000008
[４]命令の説明
現在実行している命令の解説を画面表示する。たとえば、[２]のソースプログラムの４行目int i=1, x=1;を実行している時には、次のような内容となる。
【００５３】
【表８】
0004808041.tif 000009
[５]変数の内容
現在実行している命令を行った後の変数の内容を表示する。[２]のソースプログラムの４行目int i=1, x=1;を実行している時には、次のような内容となる。
【００５４】
【表９】
0004808041.tif 000010
[６]制御構造の図
ソースプログラムに対応した制御構造を下記のように図で表示する。このとき現在実行している場所の色を変えて、どこを実行しているのか理解しやすいようにすることが望ましい。
【００５５】
【表１０】
0004808041.tif 000011
[７]各種ボタン
画面上の「各種ボタン」は、次の命令を実行、命令を１つ戻す、一時停止などを可能とするためのボタンである。
【００５６】
以上のようにして学習者は、この実施形態のプログラミング学習支援システムを利用して、ソースプログラムの学習を行うことができる（ステップＳ８）。
【００５７】
この実施形態のプログラミング学習支援システムでは、学習者が自作したソースプログラムにより学習を行うこともできる。
【００５８】
この場合、学習者クライアント端末（３０）のディスプレイには、図４の左に示すような学習者が自作のソースプログラムを入力する画面となる。ただし、同画面中、「[１]問題文」のサブウィンドウには、何も表示されない。
【００５９】
学習者クライアント端末（３０）がソースプログラムの入力を受け付けると、そのデータはインターネットを介してサーバ（１０）に送られ、コンパイラーモジュール（３）により上記と同様な処理が行われる。その後、図４の右のトレース実行画面に推移し、上記と同様にしてソフトプログラムのトレースが行われる。
【００６０】
以上、この出願の発明を一実施形態に基づいて説明したが、この出願の発明はこの実施形態に限定されるものではなく、種々の変形、変更が可能である。
【００６１】
たとえば、上記実施形態では、インターネットを利用したがＬＡＮ等を利用してもよい。
【００６２】
また、システムに必要なデータは上記のものに限らず、必要に応じて各種データを用いることができる。
【００６３】
ここで、この出願の発明に係るプログラミング学習支援システムによる手法を従来手法と比較してみる。
【００６４】
ソフトウェアの可視化に関する研究は、アルゴリズムアニメーションとプログラムビジュアライゼーションの２つに大きく分類される。アルゴリズムアニメーションは、アルゴリズムを動画または静止画を用いて可視化する研究であり、主に情報処理教育におけるアルゴリズムの学習を目的としている。
【００６５】
最もよく知られているアルゴリズムアニメーションシステムとして、Balsa （非特許文献１）、 Zeus （非特許文献２）, Tango （非特許文献３）がある。もう一方のプログラムビジュアライゼーションは、プログラムの振る舞いを可視化する研究であり、主に情報処理教育におけるプログラミングの学習を目的としている。また、プログラムの理解を助けるため、ソフトウェアのテストやデバッグ作業にも使用できる。
【００６６】
プログラムビジュアライゼーションは、さらにビジュアルデバッガとビジュアルプログラムトレーシングに分類することができる。ビジュアルトレーシングで広く知られているものとして、ＩＢＭのJinsight （非特許文献４）がある。Jinsightは、実行するプログラムから多くの情報を集め、その情報を図式化する。プログラマは、これらの図式化された情報からプログラムの振る舞いを理解する。しかし、図式化された情報は経験を積んだプログラマ向けの情報なので、ソースプログラムレベルにいたるほど詳細なものではない。プログラミング初学者がこれらの情報でプログラムの振る舞いを理解するのは困難と考えられる。
【００６７】
この出願の発明に係るプログラミング学習支援システムは、プログラムビジュアライゼーションの中のビジュアルプログラムトレーシングに分類されるものである。既存のシステムと異なる点は、プログラミング初学者向けであり、初学者に重要と考えられる制御構造、変数の内容、入出力データ等の情報を可視化し、それらの情報がソースプログラムと連動して、ソースプログラムレベルで学習できるところである。
【図面の簡単な説明】
【００６８】
【図１】この出願の発明に係るプログラミング学習支援システムの構成を示すブロック図である。
【図２】この出願の発明に係るプログラミング学習支援システムの主たる動作を示すフローチャートである。
【図３】学習者クライアント端末における、出題された問題を解いて、その問題のトレースを行える第１のモードの場合の画面のレイアウトを示す図である。
【図４】教員クライアント端末の画面のレイアウトを示す図である。
【符号の説明】
【００６９】
１０    サーバ
２０    教員クライアント端末
３０    学習者クライアント端末
１    問題データベース
２    問題生成モジュール
３    コンパイラーモジュール
４    可視化モジュール
５    制御部
６    主記憶部
７    入出力インターフェース
【図１】
0004808041.tif 000012
【図２】
0004808041.tif 000013
【図３】
0004808041.tif 000014
【図４】
0004808041.tif 000015