この授業では,プログラムを完成させることに加え,計算機システムの機能を分析した上で,適切なステップを踏みつつ段階的にプログラムを完成させる過程を重視します.システムの分析し,その性質を記述し,技術的な問題点を明らかにしつつ,適切な実装手段を選択する能力を培います.
(1回の授業あたり,講義2時限,演習1時限を行う)
【到達目標】 自動ビルドシステム,コンパイラ,テストツール,ソフトウェアリポジトリなどを用いた現代的なプログラミング環境を効果的に利用できること,システムの状態という概念を理解し,状態を扱うプログラミングの設計・開発ができる能力を身につけること,ある程度の規模の実用性のあるソフトウェアの開発の能力を身につけることを目標とする.
【テーマ】 関数型プログラミングの初初歩を学んだ学生を対象として,状態を扱ったプログラミングの基礎を学ぶ.
Programming, Software development, Scala, Testing
✔ 専門力 | 教養力 | コミュニケーション力 | ✔ 展開力(探究力又は設定力) | ✔ 展開力(実践力又は解決力) |
演習では,個人的な課題のほか,グループワークに取り組む.
授業計画 | 課題 | |
---|---|---|
第1回 | プログラム,コンパイラ,実行可能形式 | プログラム実行のさまざまな方式について学ぶ |
第2回 | 単体テスト,テスト駆動開発 | 単体テストについて学び,テスト駆動開発ができるようになる. |
第3回 | デバッグ | テスト駆動開発についてさらに深く学び,プログラムのデバッグに応用する手法を身につける. |
第4回 | 数値データ,浮動小数点数の表現,誤差と誤差の蓄積 | 計算機における整数と浮動小数点数の表現形式について学び,そのことから生じる問題について理解する. |
第5回 | システムの状態と変数 | システムを状態遷移という面で捉え,それを変数の組み合わせとして表現することについて学ぶ. |
第6回 | 変数を用いたプログラムのデザインレシピ | 変数を用いることで状態遷移するシステムをプログラムするための方法論について学ぶ. |
第7回 | 状態変化を伴うプログラミング | 状態遷移するシステムをプログラムする手法についてさらに深く学ぶ. |
第8回 | 複合的な構造を持つデータの扱い | 状態変数の組み合わせとしての複合的なデータ構造について学ぶ. |
第9回 | オブジェクトとクラス | データ構造を抽象化した概念としてオブジェクトとクラスについて学ぶ. |
第10回 | 例外処理 | 例外処理について学ぶ. |
第11回 | 応用実習プロジェクト:システムの雛形 | 一ヶ月程度にわたり,やや大き目のプログラミング課題に取り組む.第一週では,全体の大枠を与えるシステムの雛形の理解を試みる. |
第12回 | 応用実習プロジェクト:拡張(データ形式の拡張) | 応用実習プロジェクトの第二週では,データ形式を拡張し,システムが扱える対象を拡げることについて学ぶ. |
第13回 | 応用実習プロジェクト:拡張(機能の拡張) | 応用実習プロジェクト第3週では,システムの機能の拡張に取り組む.実装する機能と実装方法についてはグループワークのなかで議論し,発表も行う. |
第14回 | 応用実習プロジェクト:入出力,データ交換 | 応用実習プロジェクト第4週では,入出力に焦点を合わせてシステムの拡張を行う. |
第15回 | 総括 |
未定
講義資料は GitHub に補間し,GitHubリポジトリの情報は OCW-i を介して通知します.
ビルドシステム,テストシステムなどの基本的な開発ツールを利用した開発ができること,小規模なプログラム開発にあたって要求を分析し,プログラムとして構成する能力を有すること,グラフィカルユーザインタフェイスを有する小規模のプロジェクトを設計し実装する能力を身につけることを評価する.小テスト(30%),およびレポート課題(70%)で評価する.
MCS.T204 (計算機科学概論)を履修すること