到達目標
1,Processingの基本的な命令やベクトル,物理エンジンの使用方法を理解できる.
2,クラスの記述方法を理解し,新たなクラスを記述することができる.
3,物理現象をプログラムと1対1に対応して読むことができ,自分なりに応用することができる.
4,教科書の内容を理解した上で発表資料を準備し,他の受講者にわかりやすく説明することができる.
ルーブリック
| 理想的な到達レベルの目安 | 標準的な到達レベルの目安 | 未到達レベルの目安 |
評価項目1 | 学習した内容の7割以上を応用することができ,また学習していない内容についてもリファレンスマニュアルを自ら調べ,応用することができる. | 教科書に掲載された基本的な命令について,5割以上の内容を理解し,自分なりに応用することができる. | Processingの基本的な命令やベクトル,物理エンジンの使用法について理解することができない. |
評価項目2 | 学習者自らが継承や多態性を利用した3つ以上の関数を持った新たなクラスを記述できる. | 教科書で紹介されたクラスに対して,関数を改変・追加したり,クラスを利用したプログラムを記述することができる. | クラスの概念を理解しておらず,クラスを利用したプログラムを読むことができない. |
評価項目3 | 教科書で紹介されたプログラムを理解しており,自分なりに新たな物理現象をシミュレートするプログラムを記述することができる. | プログラムと物理現象との因果関係の5割以上を理解しており,物理現象の条件を変更する数式やパラメータを適切に変更することができる. | 物理現象とプログラムとの対応が取れておらず,式や各種パラメータの意味を理解していない. |
評価項目4 | 内容を理解した発表資料を作成しており,他の受講者にわかりやすく説明することができる. | 説明しようとする内容の5割以上の資料を準備しており,教員のサポートにより他の受講者にも理解できるように説明できる. | 内容を理解しておらず,発表資料が未完成である.また,他の受講者に内容を説明できない. |
学科の到達目標項目との関係
教育方法等
概要:
様々な問題を計算機でプログラムとして実現する場合,コーディング上の工夫はプログラムの可読性や保守性などに大きく影響する.そこで,本講義では Processing による,クラスを用いた可読性と保守性の高いプログラムの記述法を学習する.ソースコードを読むことで,プログラムやアルゴリズムの様々なテクニックやデザイン原理について学んでもらいたい.
授業の進め方・方法:
本講義では物理現象を計算機でシミュレーションする際に必要となる,クラスや物理エンジンなどを用いた正確なプログラムの記述方法を学習する.具体的には,力,振動,粒子系,物理エンジン,セルオートマトン,フラクタル,遺伝,ニューラルネットワークといった課題を扱う.本講義は輪講形式とし,事前に教科書を読み,解説資料などを作成し,学生諸君らにより内容を解説してもらう.本講義では,クラスを用いた様々なソースコードを正確に読みこなし,自分なりに応用プログラムを記述できることを目標とする.
この講義では,内容について理解することはもちろんであるが,輪講の当番でない週も予習を心がけ,発表者に積極的に質問するように努めること.講義の質問等は,直接,あるいはメールで随時受け付ける.オフィスアワーなどを有効に活用すること.
注意点:
学習した内容は実際に使用してみることを薦める.実際に利用してはじめて理解できる.
プログラムを読むことは大事であるが,それをイメージとして捉える練習をすること.
プログラムを読む際は各クラスや関数の動作に最大限の注意を払いながら丁寧に読むこと.
*再試験について 定期試験後に成績不良者については再試験を実施することがある.再評価では6割以上を合格とし評価は60点とする.
授業計画
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
1stQ |
1週 |
本講義についてのガイダンス |
科目の概要を理解してもらう.担当を割り当てることで責任感を持たせる.
|
2週 |
乱数の発生方法 |
正規分布や確率の異なる乱数の発生方法,パーリンノイズについて理解する.
|
3週 |
Processingにおけるベクトルの取り扱い |
ベクトルの加減算,正規化について理解し,速度や加速度に応用する.
|
4週 |
重力・摩擦・空気抵抗を考慮したニュートン力学 |
さまざまな力を合成したニュートン力学のシミュレーションを理解する.
|
5週 |
角速度・三角関数を応用した振動系シミュレーション |
角速度と角度,三角関数や波のシミュレーションを理解する.
|
6週 |
粒子系とクラス多態性の表現 |
粒子系をシミュレーションできるようになる
|
7週 |
物理エンジンの扱い方(1) |
物理エンジンの使い方を学習し,自ら利用できるようになる
|
8週 |
物理エンジンの扱い方(2) |
物理エンジンのさらなる応用について学習する
|
2ndQ |
9週 |
自立エージェントによる流体シミュレーション |
クラスにより自立エージェントを作成し,流れ場のシミュレーション方法を理解する.
|
10週 |
セル・オートマトンによる生物シミュレーション |
セルオートおマトンの基本を理解し,ライフゲームなどに応用できる.
|
11週 |
フラクタルと再帰プログラミング |
再帰プログラミングを理解し,再帰によるフラクタル図形を記述できる.
|
12週 |
遺伝と進化のシミュレーション(1) |
遺伝的アルゴリズムの基本的な内容について理解する.
|
13週 |
遺伝と進化のシミュレーション(2) |
遺伝的アルゴリズムのさらなる応用について学習する.
|
14週 |
ニューラルネットワーク |
ニューラルネットワークの基本を理解する.
|
15週 |
期末試験 |
|
16週 |
試験返却と解答 |
|
評価割合
| 試験 | 発表 | 相互評価 | 態度 | ポートフォリオ | その他 | 合計 |
総合評価割合 | 50 | 50 | 0 | 0 | 0 | 0 | 100 |
基礎的能力 | 0 | 10 | 0 | 0 | 0 | 0 | 10 |
専門的能力 | 50 | 20 | 0 | 0 | 0 | 0 | 70 |
分野横断的能力 | 0 | 20 | 0 | 0 | 0 | 0 | 20 |