この授業では,プログラムを完成させることに加え,計算機システムの機能を分析した上で,適切なステップを踏みつつ段階的にプログラムを完成させる過程を重視します.システムの分析し,その性質を記述し,技術的な問題点を明らかにしつつ,適切な実装手段を選択する能力を培います.
(1回の授業あたり,講義2時限,演習1時限を行う)
【到達目標】 自動ビルドシステム,コンパイラ,テストツール,ソフトウェアリポジトリなどを用いた現代的なプログラミング環境を効果的に利用できること,システムの状態という概念を理解し,状態を扱うプログラミングの設計・開発ができる能力を身につけること,ある程度の規模の実用性のあるソフトウェアの開発の能力を身につけることを目標とする.
【テーマ】 関数型プログラミングの初初歩を学んだ学生を対象として,状態を扱ったプログラミングの基礎を学ぶ.
プログラミング, ソフトウェア開発, Scala, テスティング
✔ 専門力 | 教養力 | コミュニケーション力 | ✔ 展開力(探究力又は設定力) | ✔ 展開力(実践力又は解決力) |
演習では,個人的な課題のほか,グループワークに取り組む.
授業計画 | 課題 | |
---|---|---|
第1回 | Scala のプログラムと Scala の開発 | Scala 言語と開発環境について学ぶ |
第2回 | 構造的再帰 | 構造的再帰のためのデザインレシピについて学ぶ |
第3回 | 状態 | 状態とその表現について学ぶ |
第4回 | イベント処理 | イベント処理、および付随する副作用と例外処理について学ぶ |
第5回 | 高階関数 | 高階関数の利用方法を学ぶ |
第6回 | 状態表現の拡張 | 既存の状態表現を拡張する技術について学ぶ |
第7回 | 木構造を扱うデザインレシピ | 木構造を扱う手法とそのためのデザインレシピを学ぶ(オンライン講義・詳細は講義中に周知予定) |
第8回 | 木構造の構成、検索、探索 | 木構造の構成、検索、探索について学ぶ |
第9回 | オブジェクトとクラス | データ構造を抽象化した概念としてオブジェクトとクラスについて学ぶ |
第10回 | ゲーム戦略と枝刈り (1) | ゲーム戦略と枝刈りについて学ぶ |
第11回 | ゲーム戦略と枝刈り (2) | ゲーム戦略と枝刈りについて学ぶ(続き) |
第12回 | 並行計算と並列実行(データ並列) | 並行計算と並列実行の例として構造的なデータ並列の手法を学ぶ |
第13回 | 並行計算と並列実行(タスク並列) | 並行計算と並列実行の例として Actor 計算に基づくマルチスレッドプログラミングの手法を学ぶ |
第14回 | 超並列計算 (GPGPU) | 並行計算と並列実行の例として汎用 GPU 計算の手法を学ぶ |
第15回 | 最終発表会 (トーナメント) | 演習の最終成果発表会を行う |
未定
講義資料は GitHub に補間し,GitHubリポジトリの情報は OCW-i を介して通知します.
基本的な開発ツールを利用した開発ができること,小規模なプログラム開発にあたって要求分析、設計、実装する能力を有すること.小テスト(20%),およびレポート課題(80%)で評価する.
MCS.T204 (計算機科学概論)を履修すること.