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の画面に 提出されました と表示されたら提出完了。

提出後にも ファイルを再アップロード することで提出したファイルを更新することができます。