科目名:プログラミング入門 (Cricket Logo)
担当者:斉藤 賢爾
実施大学:慶應義塾大学湘南藤沢キャンパス
学期:2005年度春学期


1. 主題と目標/授業の手法など

1.1 ねらい

この授業は、Cricket1 と呼ばれる小型コンピュータを用い、 簡単なロボットなどを制作することを通して、 未経験者が初めてプログラミングを学ぶ入門コースです。

プログラムは、データ構造 (整理された情報のかたち) と アルゴリズム (問題の定型的な解き方) から成ると言われます。 自分が解決したい問題を、論理的な考えに基づいて分析して、 データ構造とアルゴリズムの形で表現できるようになることが、 このコースの目標です。

1.2 ツール

プログラミングを学ぶためには、実際にプログラムを作成し、 それを動かし、確かめることができる環境が不可欠です。 同時に、プログラムの動作を紙などに描いて表現し、 伝えるためのいくつかの設計図の形式も紹介し、授業で用いていきます。

【プログラミング環境】

プログラミングの対象となるコンピュータとして Cricket を、 プログラミング言語として Cricket Logo および LogoBlocks を用います。 Cricket Logo は、Cricket 用に仕様が制限された Logo 言語です。 Logo は、初心者でも扱いやすいように設計されたプログラミング言語です。 Cricket LogoBlocks は、Logo を視覚化し、 ブロックのアイコンを組み合わせることでプログラムを作れるようにしたものです。 この授業では、初期の段階では LogoBlocks を用い、 その後、Cricket Logo を中心に用いていきます。

注: SFC にて開発中の新しい環境で LogoBlocks を置き換える可能性があります。

【設計図】
  1. フローチャート
    • プログラムの処理の流れを表し、コンピュータの動作に近い記述ができます。 ただし、コンピュータに近い分、人間の考え方とはギャップがありますので、 この授業では、フローチャートは導入部にだけ用い、 実際の設計は PAD と状態遷移図を用いて行なうようにします。
  2. PAD (Problem Analysis Diagram)
    • Logo や Java、C言語などの高級言語 (より人間に近いプログラミング言語) で 用いられる「連接」「選択」「反復」の 3つの制御構造、 および「手続き」を表現できます。 PAD で用いる図形は、LogoBlocks のブロックに対応しているので、 LogoBlocks が手元になくても、紙と鉛筆があれば設計でき、 その内容は簡単に LogoBlocks に移すことができます。
  3. 状態遷移図
    • 物体の振る舞いを記述するのに適しています。 この授業では、ゴールとして簡単なロボットや wearable computer といった、自律的に振る舞う物体を制作しますので、 状態遷移図の描き方を知ることが役立ちます。

1.3 授業日程

授業は、大きく 4段階に分けて進めます。 最初は反復練習を中心に行なうことで、プログラミングの考え方に慣れてもらいます。 後期になるに従って、自ら問題を発見し、その解決方法を考え、 実際に実施して確かめていくという、問題解決型の授業に移行していきます。

  1. 制御構造 (連接・選択・反復)
  2. 手続きと例外・マルチタスク
  3. 通信とデータ構造
  4. 期末制作 (デザインワークショップ)

2. 教材・参考文献

SOI (School Of Internet; http://www.soi.wide.ad.jp/) にて公開する教材を用います。

3. 授業計画 (全13回)

  1. Cricket 入門
    • 授業の紹介を行ないます。
    • Cricket を使ったプログラミング作業の一連の流れを体験します。
  2. フローチャートで理解する
    • 処理の流れを図形で理解します。
  3. PAD によるアルゴリズムの表現
    • アルゴリズムを「連接」「選択」「反復」の組み合わせとして理解し、表現します。
  4. 簡単なルールで動くロボットの制作
    • これまで習ったことを使って、ロボットを制作します。
  5. 手続きと段階詳細化
    • まとまった処理に名前をつけて、手続きとして使えるようにします。
    • 大雑把な考えから、次第に詳細化して設計する手法を学びます。
  6. 例外と簡単なマルチタスク処理
    • 外界の条件の変化に応じた処理を作ります。
    • 複数の処理の流れが同時に動くようなモデルとしてシステムを捉えます。
  7. 状態遷移図によるシステムの記述
    • 外界からのイベントに反応して状態を変化させる機械としてシステムを捉え、 図に描きます。
  8. Cricket における赤外線通信
    • Cricket における赤外線通信を使ったプログラムを作ります。
  9. プロデューサ/コンシューマモデルによる設計
    • データの生成側と消費側に分けて、 ふたつのロボットから成るシステムを作ります。
  10. データの収集と利用
    • Cricket Logo におけるデータの扱い方を学びます。
  11. デザインワークショップ I 〜設計と実装
    • 期末制作の設計を行い、実際に作ります。
  12. デザインワークショップ II 〜テストしよう
    • できたところから、プログラムをテストしていきます。
    • 効果的なテスト方法を学びます。
  13. デザインワークショップ III 〜発表
    • できあがった期末制作の成果を各自が発表します。

4. 提出課題・試験・成績評価の方法など

期末に、各自が決めたテーマに基づく簡単な制作を行ないます。 より具体的には、Cricket の赤外線通信機能を用い、 ふたつの Cricket を使って何かひとつのことを実現するシステムを、 ふたり一組で制作してもらいます2。 ひとりがひとつの Cricket のプログラミングを担当します。

成績は、毎週出題する課題と期末制作、および授業への貢献度 (よく質問をしているか、クラスメイトを助けているか、等) により評価します。

また、学期中に、Cricket を用いたこども向けワークショップに ファシリテータとして参加してもらう可能性がありますが、 そこで活躍した人は、特に高く評価します (よいアドバイスができるということは、 よく理解していることを表していると考えます)。

5. 履修上の注意・その他

【SFC で履修する場合】

Cricket を用いる、 こども向けのワークショップにファシリテータとして参加可能なこと。

【SOI で履修する場合】

(Cricket ハードウェアの入手は困難だと思いますので) 今期中に提供予定の Cricket シミュレータを用いて授業に参加してください。

6. 前提となる知識 (科目名等)

【SFC で履修する場合】
2004年度以降入学者は、情報技術認定試験に合格していることを履修条件とします。

1

MIT で開発された、 モータやセンサを取り付けられる小型コンピュータです。 簡単な自律ロボットや wearable computer などを作ることができます。 モータやセンサは、LEGO社の MindStorms と互換性があります。

2

簡単なものではモールス信号機、 難しいものではファクシミリなどを作ることができます。 SOI で履修する人は、 ひとりでひとつの作品を作っていただければよいと思います。