プログラムを《設計すること》の教育

計算機プログラムによって多くの問題を解決することができます。問題解決には、問題の本質を理解し、問題として解くべき仕様を明確にし、その仕様を満たすプログラムを作ることが必要です。多くのプログラミング教育では、このうちの最後の段階―プログラムを書く―ことに重点を置いています。しかし問題解決全体―我々はこれをプログラムを設計することと呼んでいます―を教えることは、プログラムを書くことと同じくらい重要なことです。

我々はプログラムを設計することの教育方法、特に教育のためのツールを研究しています。具体的にはFelleisenらが提唱するデザインレシピに基づくプログラム設計を支援するような開発環境を試作しています。

デザインレシピとは、プログラミングによる問題解決の際に行うべき一連の手順です。これは、白紙症候群(初心者が与えられた問題にどうアプローチしたら良いか分からず、手が止まってしまう現象)の解決策として、Felleisenらによって提唱されたもので、実際にコードを書く前に入出力の分析や計算構造の下書きを行うことが特徴です。デザインレシピを授業で採用している大学は数多く存在しますが、コーディング前に行う作業を学習者が独力で行うことは容易でありません。

本プロジェクトでは、デザインレシピのコーディングより前の段階を行うためのプログラミング環境を作成しています。これまでに、構造的帰納法に基づいた関数を定義するための環境を実装しています。今後は、より複雑な関数定義(ネストしたデータ構造や一般的な再帰、アキュムレータを使用したもの)にも対応できるよう、拡張していく予定です。

作成したプログラミング環境MioはScratchに似た外観ですがプログラムそのものを定義する場ではありません。学習者はこの環境で与えられた問題の入出力の分析や、入力型に基づいた計算構造の下書きを行います。

お知らせ