コンテンツに移動

サンノゼ州立大学、学生が自分でプログラミングの基礎を学習することを支援

サンノゼ州立大学コンピュータ サイエンス学部では仮想マシンの容量に制限があったため、コンピュータ サイエンスを学ぶ学生が無制限にプログラミングの練習ができるように、リソースを拡張する方法を必要としていました。

学生がコンピュータ サイエンス(CS)の入門コースでプログラミングを学習する際、基本的な概念を実際にプログラミングするにあたって多くの困難が伴います。SJSU のコンピュータ サイエンス学部の教授である Cay Horstmann 氏は、学生がプログラミングの練習を自分で行えるようにして、より速くスキルを向上できるようにしたいと考えていました。残念ながら、多くのプログラム コードは何年も再利用されており、学生はオンラインで解答を簡単に見つけることができました。そのため、Horstmann 教授は答えが簡単に手に入らない、より実践的な方法が必要だと考えていました。

「日曜日の夜に学生が宿題をしているとき、約 20 台の仮想マシンが稼働していて、ワークロードの変化に応じてマシンが自動的に起動したり停止したりします。」

Cay Horstmann, コンピュータ サイエンス教授, サンノゼ州立大学(SJSU)

すべての生徒が使用できる現実に沿った実践的トレーニングを実現する

生物学や法律など、コンピュータ サイエンス分野以外の生徒が、自分の研究に役立てるために、または生産性向上のために、プログラミングに関心を持つようになりました。そのため、生徒が自分で学習できるシステムを作ることがより重要になってきています。プログラミングはもはや熱心なデベロッパーだけのものではありません。

「コンピュータ サイエンス学部は、学生のプログラミング スキル向上のために、この移行に備える必要があります。一般の学生は、自分の専門分野で役に立つようにコンピュータ サイエンスの授業を履修しています。コンピュータ サイエンスの指導者が不足しているため、学生は自習型の練習で学習できる必要があります」と Horstmann 教授は言います。

Cay 氏は Special Interest Group on Computer Science Education(SIGCSE)を通じて Google Cloud(Google Cloud)教育助成クレジット プログラムのことを知りました。そこで Google Cloud クレジットを受け取るために研究助成クレジットを申請したところ、どの Google Cloud プロダクトにも利用可能なクレジットを受け取ることができました。Cay 氏は Google Cloud のツールを使用して自動採点ツール CodeCheck を開発しました。このツールには、学生がプログラミングを練習できる数百もの演習問題が含まれています。

CodeCheck はウェブベースのプログラムで、複数あるプログラミング言語のうち任意の言語を使用し、プログラミングの方法を生徒に教える際の支援を目的として作られました。教授がプログラミングの問題をカスタマイズできるため、生徒はオンラインで解答を見つけるというわけにはいかず、自分で解答を作成する必要があります。コンピュータ サイエンス学部のサーバーはすでにフル稼働状態だったため、Cay 氏は計算能力を無制限に使用できる仮想マシンの Google Compute Engine で CodeCheck を作成しました。また、モニタリング、ログ記録、診断用に Stackdriver を、拡張性と利便性のために Cloud SQL を選択しました。

「日曜日の夜に学生が宿題をしているとき、約 20 台の仮想マシンが稼働していて、ワークロードの変化に応じてマシンが自動的に起動したり停止したりします」と Horstmann 教授は言います。

現在、サンノゼ州立大学コンピュータ サイエンス学部の教授は、クラウド コンピューティング ツールを使用して、学校のサーバーの容量を気にすることなくプログラミングを教えることができるようになりました。これにより、コンピュータ サイエンス以外の学位を目指している学生を含め、より多くの学生に簡単に対応できるようになりました。学生は、リモート システムの管理、ワークロードの拡張、ログ記録、自動デプロイについて学習します。

生徒の自己学習を促進する

CodeCheck では、生徒のコードにリアルタイムでフィードバックが追加されるため、自分の解答が合格か不合格かがすぐにわかります。CodeCheck では生徒が間違えた部分は示されず、生徒が自分で見つける必要があります。これまでは、生徒は解答を提出してから数週間経たないとフィードバックを受け取ることができませんでした。通常、その頃には生徒は解答にたどり着いたプロセスを忘れてしまっていました。

調査結果によると、学生はオンラインの練習用リソースがあることが重要だと感じています。間違えても注意されることがなく、一定の時間内に終わらせるというプレッシャーもないためです。

Horstmann 氏によると、CodeCheck を使用すると生徒の学習方法とテストの成績も向上します。2 つのグループによる非専攻者向け Java コースでは、CodeCheck を使用したグループが、コントロール グループに比べて 50% 高いスコアでした。プログラミング言語のクラスでは、スキーマのプログラミングに関する問題で、CodeCheck を使用したグループが、コントロール グループに比べて 20% 高いスコアでした。練習問題に含まれていなかったある問題では、2 つのグループでスコアは同じでした。転編入生向け C++ クラスではすべての生徒が練習問題を行う必要があり、問題ごとの平均試行回数は、コースの初めと終わりで 3 分の 1 に減少しました。また、完了までにかかった平均時間は半分になりました。

あらゆる人にプログラミングを教える

最近の学生はクラウドを使用することが当然になってきており、教育ツールはコンピュータ サイエンスを学ぶ学生だけでなく、他の分野の学生にも役立つよう進化する必要があります。たとえば、学生が画像を使用した基礎的な問題からループ処理の作成に進むと、概念的に大きな飛躍があります。ループ処理はすべての入力に対して機能する必要があります。多くの学生は概念を理解しますが、それを適用するのは難しいことです。パターンを学習すれば、概念をコードに適用する方法を理解できます。

自動採点ツールでは、5 行の小規模なコードから開始できます。学生が授業の課題で 200 行のコードを書く必要がある場合に比べると、5 行のコードは少なく感じるかもしれませんが、ここでの目標は学生が少しずつ学習し、学習した内容を徐々により複雑な課題に適用できるようにすることです。

「プログラミングは、ビジネスマン、科学者、法律家、ジャーナリストなど、データを扱うすべての人が使用できる 21 世紀のスキルです。コンピュータ サイエンス専攻の学生が従来型の講義と宿題によるモデルの教育で結果を出せないことが多い場合、コンピュータ サイエンス専攻ではない学生にそのやり方は適さないでしょう。時間をかけてテストした『反復によって教える』アプローチを私が採用しているのはそのためです」と Horstmann 教授は言います。

「プログラミングは、ビジネスマン、科学者、法律家、ジャーナリストなど、データを扱うすべての人が使用できる 21 世紀のスキルです。」

Cay Horstmann, コンピュータ サイエンス教授, サンノゼ州立大学(SJSU)

シームレスなバックエンド操作で自動採点ツールを実行する

Stackdriver には高性能なモニタリング機能と診断機能があるため、Cay 氏はトラブルシューティングを行ったり、学生が自動採点ツールを正しく使用していることを確認したりすることができます。たとえば、学生が他のプログラムを消去したり、マシンをシャットダウンしたりするプログラムを実行しようとすると、自動採点ツールがそのようなコマンドをブロックするようになっています。以前は、Cay 氏が数時間かけてプログラムのデバッグを行い、問題の原因を見つけることがありました。

CodeCheck の主な目標は、プログラミングの練習をしたいすべての学生がスムーズに行えるようにすることです。学生は自動採点ツールを使用する際に登録したりログインしたりする必要がありません。教授は CodeCheck と学習管理システム(LMS)を統合することができます。学生は LMS で直接操作し、自動採点ツールでスコアを確認できます。Cloud SQL は、学生が課題に費やした時間を追跡して自動で保存します。この統合によって、学生はスコア保存用のボタンをクリックすることで課題を提出できるようになり、教授と学生の両方にとってプログラムの提出が簡単になります。

「プログラミングはデベロッパーのためのスキルではなく、将来のために必要なスキルになりました。そのため、コンピュータ サイエンス学部は、学生が自分のペースで学習できるように適応する必要があります。CodeCheck によって、学生は教室の外でも自分で学習を継続できます」と Horstmann 教授は言います。

こちらから、最新情報、分析情報、各種リソースなどの配信にご登録ください。