数百行程度のプログラム規模が想定される問題に対して、それを解くためのプログラムを設計、実装し、文書化するソフトウェア開発のプロセスを遂行する基礎的な能力を習得する。
概要:
小さなゲームを題材として、プログラムの設計、実装、文書化の手法を学習する。
授業の進め方・方法:
教員からの指示は最小限にとどめ、受講者自身の考えにもとづいて設計、実装する。
注意点:
これまでに講義で学習したデータ構造、アルゴリズムの知識を、現実の問題、実際のプログラミングに対して積極的に適用してみること。
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
1stQ |
1週 |
msweeperプログラムの作成(1):設計 |
msweeperに必要な機能を理解し、プログラムを設計できる。
|
2週 |
msweeperプログラムの作成(2):実装 |
設計にもとづいて各関数等を実装できる。
|
3週 |
msweeperプログラムの作成(3):実装 |
設計にもとづいて各関数等を実装できる。
|
4週 |
msweeperプログラムの作成(4):テスト |
実装したプログラムのテストができる。
|
5週 |
msweeperプログラムの作成(5):文書化 |
作成したプログラムの仕様を文書化できる。
|
6週 |
robotsプログラムの作成(1):設計 |
robotsに必要な機能を理解し、プログラムを設計できる。
|
7週 |
robotsプログラムの作成(2):実装 |
設計にもとづいて各関数等を実装できる。
|
8週 |
(中間試験) |
|
2ndQ |
9週 |
robotsプログラムの作成(3):実装 |
設計にもとづいて各関数等を実装できる。
|
10週 |
robotsプログラムの作成(4):テスト |
実装したプログラムのテストができる。
|
11週 |
robotsプログラムの作成(5):文書化 |
作成したプログラムの仕様を文書化できる。
|
12週 |
グループ課題(1):設計 |
開発期間、メンバのスキルを考慮して開発するゲームの概要を合意できる。
|
13週 |
グループ課題(2):設計 |
開発期間、メンバのスキルを考慮して開発するゲームの機能仕様を決定できる。
|
14週 |
グループ課題(3): |
システム構造設計を行い、メンバのスキルを考慮して分担を決定できる。
|
15週 |
グループ課題(4) |
各担当部分について、詳細設計を行える。
|
16週 |
|
|
後期 |
3rdQ |
1週 |
グループ課題(5) |
設計にもとづいて関数等の機能単位の実装ができる。
|
2週 |
グループ課題(6) |
設計にもとづいて関数等の機能単位の実装ができる。
|
3週 |
グループ課題(7) |
設計上の問題を発見し、グループ全体で修正することができる。
|
4週 |
グループ課題(8) |
チーム全体の進捗を把握し、遅れている部分の援助、または援助の要請ができる。
|
5週 |
グループ課題(9) |
各担当部分をすべて実装することができる。
|
6週 |
グループ課題(10) |
各担当部分の単体テストが行える。
|
7週 |
グループ課題(11) |
単体テストで発見した問題を修正できる。
|
8週 |
(中間試験) |
|
4thQ |
9週 |
グループ課題(12) |
システム全体の結合テストを行える。
|
10週 |
グループ課題(13) |
結合テストで発見した問題を修正できる。
|
11週 |
グループ課題(14) |
システムの仕様を文書化できる。
|
12週 |
グループ課題(15) |
作成したプログラムの機能を発表、デモンストレーションするための資料を作成できる。
|
13週 |
グループ課題(16) |
作成したプログラムの機能を発表、デモンストレーションによって伝えることができる。
|
14週 |
セキュアプログラミング(1) |
バッファオーバフロー等の脆弱性の発生、悪用のメカニズムを理解する。
|
15週 |
セキュアプログラミング(2) |
自分のプログラムの脆弱性を発見し、修正できる。
|
16週 |
|
|
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
専門的能力 | 分野別の専門工学 | 情報系 | プログラミング | 変数とデータ型の概念を説明できる。 | 3 | |
代入や演算子の概念を理解し、式を記述できる。 | 3 | |
制御構造の概念を理解し、条件分岐や反復処理を記述できる。 | 4 | |
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。 | 4 | |
与えられた簡単な問題に対して、それを解決するためのソースプログラムを記述できる。 | 6 | |
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。 | 4 | |
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。 | 3 | |
ソフトウェア | アルゴリズムの概念を説明できる。 | 4 | |
与えられたアルゴリズムが問題を解決していく過程を説明できる。 | 4 | |
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを理解している。 | 5 | |
時間計算量や領域計算量などによってアルゴリズムを比較・評価できることを理解している。 | 3 | |
コンピュータ内部でデータを表現する方法(データ構造)にはバリエーションがあることを理解している。 | 5 | |
同一の問題に対し、選択したデータ構造によってアルゴリズムが変化しうることを理解している。 | 4 | |
ソースプログラムを解析することにより、計算量等のさまざまな観点から評価できる。 | 3 | |
同じ問題を解決する複数のプログラムを計算量等の観点から比較できる。 | 3 | |