pg01
コンピューターを使わない情報教育 → コンピューターサイエンスアンプラグド
例) データの並べ替え
アルゴリズムの学習では、情報をコンピュータを使って整理する方法などを学ぶ。
計算方法など、情報の処理の手順を定めたものを アルゴリズム という。
アルゴリズムに従って、プログラムを作成し、コンピュータで情報を処理(プログラムを実行)することができる。
→手順を考える段階では、コンピューターもプログラムも必要ない。
アンプラグドな演習の紹介:
・コンピュータサイエンス カードマジック → 幽体離脱透視術 テーブルに並べてカードから適当に1枚裏返したものを、部屋の外にいるマジシャンが当てる。
ネタばらし: パリティチェック(誤り検出・誤り訂正・冗長符号)
プログラム言語Scalaによるパリティチェックのデモ
・並び替えネットワーク 時間内に仕事を終えろ
プログラム言語Scalaによるデータの並べ替えの例
ゲームでプログラミング教育
コンピュータ内部の動作、メモリやCPU、論理回路の概念と似ているもの
・マインクラフト レッドストーン回路
・ヒューマン・リソース・マシン iOSアプリ(英語版のみ) Nintendo SwitchのDLコンテンツ(日本語版有り)
・CargoBot iPadのパズルアプリ、次回紹介予定
・Swift Playgrounds iPadのアプリ、プログラミング入門で扱う予定
・Alice CG+プログラミングによるゲーム制作教育ツール 参照:ランディ・パウシュ「最後の授業」 全訳記事 書籍の紹介記事
テーマ アルゴリズム を プログラミング言語のコード を使用せずに表現する
物理シミュレータ Algodoo による情報処理的ステージ制作
プログラム言語を使わずに、ボールの動きを制御する。
ボールは、重力や、モーター、歯車、回転板などによって運ばれるものとする。
演習0:
・作品の例を探す: Algodoo 装置 や Phun 装置 で動画を検索して課題制作の参考にする。 (Phun は、Algodoo の古いVersionの名前)
・チュートリアル動画: https://www.youtube.com/watch?v=yVVzDIVcsTU
演習1:
・ 実習室PCから、Algodooを起動する。
簡単に操作方法をデモするので、一緒にマネしながら操作してみる。
操作説明動画1(起動方法・基本操作)
※ 講義用Webを見ながら、Algodoo を操作するには、F11キーを押して全画面表示を解除してWindow表示に切り替えます。 または、Winキーでタスクバー表示、 Winキー + D でデスクトップを表示するとよいでしょう。
操作説明動画2(回転軸・モーター化・コピー)
操作説明動画3(ピストン機構・バネ装置)
演習2:
・空中に浮かぶ 傾いた板 を作成。 ボールを転がす(再生ボタンでスタート)。 カップで受ける(ゴール)。
・ボールを2個に増やす。2個ともカップに入るように調整する。
うまく行かない場合、ボールのサイズや、板の位置・傾きなどを調整してください。
*プログラム言語によるプログラミングでも、プログラム作成→実行・動作確認→調整(エラー修正、バグ修正)→実行確認 のサイクルを繰り返します。
演習3:
・スタート時点で先を進むボールが、途中で抜かされ、あとからカップインするように、仕掛けを加える(各自で工夫、アイディア交換、共有推奨)
*問題の解決方法は1つとは限りません。シンプルで応用のきく解決方法を見つけたら(他人のやり方でもOK)、皆に広めましょう。
**今回の課題は、 偶然できた でもOKとします。
演習4:
・スタート地点のボールを3個に増やしてみましょう。 逆の順番で、カップインしましたか?
うまくできていたら、逆向きに並べ替える装置(手順)について、言葉で表現してみましょう。
*このように先に発生したデータの処理を先送りにして、あとから来たデータを先に処理し、結果的に、一番最初に発生したデータが一番最後に処理される仕組みを スタック と呼びます。
**ボールの個数を増やしていくと、装置から溢れて、処理がうまく行かなくなりますね? スタックがあふれることを スタックオーバーフローといいます。
***スタックの様に後から到着したものを先に処理して、先に到着したものを後回しにする処理を Last In First Out (LIFO)と呼びます。
****通常の待ち行列(到着順の処理)は、キュー(Que)といい、First In First Out(FIFO)と呼びます。
演習5:
・ステージ全体を横に移動し、空いた場所に別の装置を作成してください。
作成テーマ1: 無限ループ。ゴール地点から、スタート地点にボールを戻す仕掛けを作成する。
*繰り返し処理(ループ)は、プログラミングによる処理の重要な特徴です。
ループアニメーション作品を作ってみましょう。
Algodooにサウンド機能は有りませんが、音声処理ができるプログラミング言語ならループ音源装置を作成できるでしょう。
または
作成テーマ2: 予想外のゴール地点を作る。
ゴールを複数用意する。
多数の障害物、回転羽板など衝突した結果、ボールの僅かなスタート位置のズレや、スタートするタイミングで偶然ゴールするようにする。(ゴールする確率を下げる)
ようするに、パチンコ台の作成。(玉を発射する装置は有っても無くてもどちらでもよい。バネやフリッパーをつけてもよい。)
*いくつかの条件をクリアして(ゲートの通過成功・失敗など)、情報を選別し結果を判定する処理は、プログラムの課題の定番です。
**Algodooによる物理シミュレーションで、ボールがたどり着きやすい場所、たどり着きにくい場所を調べてみましょう。
→多数の球を打ち出して観察できるような装置を作成します。
どちらか片方、または、両方のテーマで作成してもOKです。
ヒント) テーマ1の作成例
https://twitter.com/_kobashi/status/781101085020741632?lang=ja
↑
この例のような複雑な仕組みだと、おそらく授業中には完成しません(微調整に時間がかかる)。
ボールを弾き飛ばして上に登らせる。↓
https://twitter.com/_kobashi/status/781779590767271936
レイヤー(部品の重なり設定)を2枚使う。ボールは、レイヤー1の板と、レイヤー2の板に衝突する設定にする。レイヤー2の板は、レイヤー1の板とは衝突せずにすり抜ける。
↓
https://twitter.com/_kobashi/status/781783268207190016
チェーンにブラシツールで、ボールをひっかける部品を取り付ける。
↓
https://twitter.com/_kobashi/status/781793323191152640
テーマ1の制作をする受講生は、 回転する板 で ボールを弾いて飛ばす など、もっとシンプルな方法を探すとよいでしょう。
↓ バグっているので、一部だけ参考にしてください。
課題提出方法: Algodoo の ファイルメニューから シーンを保存する。
※※ 採点しやすいように、 スタートボタンを押して、動作確認ができたら、時間を巻き戻しておいてください。
提出されたファイルをスタートボタンを押すところから採点します。 ※※
※※ ステージ全体が表示されるように倍率を設定しておいてください。※※
※※ デスクトップ や H:ドライブ(ユーザホーム) に保存できない不具合があります。 ※※
Webclassの第1回課題へ、ファイルをアップロードしてください。
※※※ ↓保存の方法↓ ※※※
ディレクトリの指定は、フォルダアイコンをクリックして、学籍番号フォルダを選択し(chooseボタンを押す)、 ファイルを保存してください。
パソコンの スタート ボタンから コンピュータを開き、↓のフォルダから、 algodoo の保存ファイル(拡張子 phz)を、WebClassにアップロードします。
アップロードするときに、 ファイルをクリックで選択して 開く ボタンを押します。
最後に、提出するボタンを押して、 Webclassの画面に 提出されました と表示されたら提出完了。
提出後にも ファイルを再アップロード することで提出したファイルを更新することができます。