情報科学部Faculty of Computer and Information Sciences
COT211KA-CS-245(計算基盤 / Computing technologies 200)プログラム設計Program Design
栗田 太郎Taro KURITA
授業コードなどClass code etc
学部・研究科Faculty/Graduate school | 情報科学部Faculty of Computer and Information Sciences |
添付ファイル名Attached documents | |
年度Year | 2022 |
授業コードClass code | J0525 |
旧授業コードPrevious Class code | |
旧科目名Previous Class title | |
開講時期Term | 秋学期授業/Fall |
曜日・時限Day/Period | 木3/Thu.3 |
科目種別Class Type | |
キャンパスCampus | 小金井 / Koganei |
教室名称Classroom name | 各学部・研究科等の時間割等で確認 |
配当年次Grade | |
単位数Credit(s) | 2 |
備考(履修条件等)Notes | |
他学部公開科目Open Program | |
他学部公開(履修条件等)Open Program (Notes) | |
グローバル・オープン科目Global Open Program | |
成績優秀者の他学部科目履修制度対象Interdepartmental class taking system for Academic Achievers | ○ |
成績優秀者の他学部科目履修(履修条件等)Interdepartmental class taking system for Academic Achievers (Notes) |
(1) 受講希望者 (受講検討中の者も含む) は、情報科学部学部Googleフォーム(https://forms.gle/ECvwxVe2NcxmrbTK9)で初回講義前までに希望申請をしてください。(※以下URLのご案内があるGoogleフォームとは異なるのでご注意ください。) (2) 以下のURLと教育開発支援機構事務局の案内に従って、履修希望の申請を行ってください。 https://www.hoseikyoiku.jp/risyu/index.html (3) 履修取消については、ご自身の所属学部の履修取消期間内に必ず同時に履修削除を行ってください。 |
実務経験のある教員による授業科目Class taught by instructors with practical experience | |
SDGsCPSDGs CP | |
アーバンデザインCPUrban Design CP | |
ダイバーシティCPDiversity CP | |
未来教室CPLearning for the Future CP | |
カーボンニュートラルCPCarbon Neutral CP | |
千代田コンソ単位互換提供(他大学向け)Chiyoda Campus Consortium | |
選択・必修Optional/Compulsory | |
カテゴリー(2022年度以降入学者)Category (2022~) | |
カテゴリー(2021年度以前入学者)Category (~2021) | |
カテゴリーCategory |
専門教育科目 専門科目 |
すべて開くShow all
すべて閉じるHide All
Outline (in English)
[Course Outline]
This course introduces the basic concepts and various methods for program design, including structured programming, structured analysis and design, data-oriented design, software testing, object-oriented analysis and design, design pattern, design by contract, formal methods, and formal verification. Students are expected to learn the basics of these issues and methods, and to build up their ability to apply them in practice.
[Learning Objectives]
By the end of the course, students should be able to do the followings:
1. Explain what is written in the course outline.
2. Design programs of thousands of lines using several notations.
[Learning Activities Outside of Classroom]
Before/after each class meeting, students will be expected to spend four hours to understand the course content.
[Grading Criteria/Policy]
Overall grade in the class will be decided based on the following:
Term-end report: 40%
Short reports: 30%
In-class contribution: 30%
授業で使用する言語Default language used in class
日本語 / Japanese
授業の概要と目的(何を学ぶか)Outline and objectives
プログラム設計の基本概念と原理原則を理解した上で,構造化プログラミング,構造化分析設計,データ中心設計,ソフトウェアのテスト,オブジェクト指向分析設計,デザインパターン,契約による設計,形式手法,形式検証等について学び,実践的なプログラム設計とプログラミングに向けた基礎的な力を養成する.
到達目標Goal
本授業を受講すると,プログラム設計の基本事項,原理原則,構造化プログラミング,構造化分析設計,オブジェクト指向分析設計等について理解し,他者に説明できるようになる.そして,数千行のプログラムの設計や,各種言語や記法を用いた思考や設計の表現,他者の設計表現のレビュー,ソフトウェアやプロジェクトの品質特性との紐づけ等を行いはじめることができるようになる.さらに,プログラム設計に関する発展的な事項に関する独習を行うことができるようになる.
また,基本情報技術者試験と応用情報技術者試験のシラバスの中でプログラム設計に関係する事項を学ぶことができる.
この授業を履修することで学部等のディプロマポリシーに示されたどの能力を習得することができるか(該当授業科目と学位授与方針に明示された学習成果との関連)Which item of the diploma policy will be obtained by taking this class?
ディプロマポリシーのうち「DP2」と「DP4-1」に関連
授業で使用する言語Default language used in class
日本語 / Japanese
授業の進め方と方法Method(s)(学期の途中で変更になる場合には、別途提示します。 /If the Method(s) is changed, we will announce the details of any changes. )
本授業では,プログラム設計についての基本的な知識や発展的な事項,とくに設計に関する考え方や態度について学ぶ.さらに,授業時間や授業時間外における演習,演習課題,授業時間における受講生同士の議論・対話により,設計に関する知識への理解を有機的に深くしながら,プログラムや設計書,記法の品質,とくに分かりやすさや,説明の仕方等について学んでいく.
また,受講生が課題やリアクションペーパーに書いた質問や意見を,講師が授業時間において受講生のプライバシーに配慮しつつ紹介・回答することで,疑問点を解消したり,クラス全体で学びを深めたりする.
アクティブラーニング(グループディスカッション、ディベート等)の実施Active learning in class (Group discussion, Debate.etc.)
あり / Yes
フィールドワーク(学外での実習等)の実施Fieldwork in class
なし / No
授業計画Schedule
授業形態/methods of teaching:オンライン/online
※各回の授業形態は予定です。教員の指示に従ってください。
1[オンライン/online]:プログラム設計の概要
オリエンテーションの後,プログラム設計の概要と歴史.2 回目以降で取り扱う事項の紹介を行う.
2[オンライン/online]:ソフトウェアおよびその開発とプログラム設計
ソフトウェアおよびその開発の全体像とプログラム設計との関係性について紹介する.
3[オンライン/online]:プログラム設計の原理原則と構造化プログラミング
プログラム設計に関する基本的な用語の説明の後,よく知られた原理原則や構造化プログラミングについて紹介する.
4[オンライン/online]:構造化分析設計 1
構造化分析設計の基礎について具体例を交えながら説明する.
5[オンライン/online]:構造化分析設計 2
構造化分析設計の演習を行う.各自が設計した流れ図等を,グループでレビューし合ったり,議論したりする.
6[オンライン/online]:データ中心設計
データの取り扱い,データ中心設計,各種表記方法について紹介する.
7[オンライン/online]:プログラムのテストとレビュー
ソフトウェアのテストの全体像とプログラムのテストとレビューの技法について紹介する.単体テストとレビューの演習も行う.
8[オンライン/online]:ワークショップ 1
第 7 回までの内容を用いる設計とプログラミングの演習を行う.グループで討議し,より良い設計について対話を通して考えていく.
9[オンライン/online]:オブジェクト指向分析設計 1
オブジェクト指向分析設計の基礎についてその基本概念を具体例を交えながら説明する.
10[オンライン/online]:オブジェクト指向分析設計 2
オブジェクト指向分析設計の演習を行う.各自が設計したクラス図等を,グループでレビューし合ったり,議論したりする.
11[オンライン/online]:デザインパターン
オブジェクト指向分析設計におけるデザインパターンについて解説する.その他のパターンについても紹介する.
12[オンライン/online]:契約による設計と形式手法・形式検証
契約による設計と,プログラムの証明等のための形式手法・形式検証について紹介する.
13[オンライン/online]:ワークショップ 2
第 12 回までの内容を用いる設計とプログラミングの演習を行う.グループで討議し,よりよい設計について対話を通して考えていく.
14[オンライン/online]:まとめ
発展的な内容について紹介するとともに,授業全体の振り返りとまとめを行う.
授業時間外の学習(準備学習・復習・宿題等)Work to be done outside of class (preparation, etc.)
1 回目開始以降,授業資料を用いて,授業後の復習,他受講生との議論・対話の内容の整理,授業前の準備学習,演習課題への取り組み等を行う.本授業の予習・復習等の時間は,1 回につき,4 時間を標準とする.
テキスト(教科書)Textbooks
特定の教科書は使用しない.授業にて資料を提示する.
参考書References
Brian W. Kernighan, P. J. Plauger: プログラム書法 (第 2 版), 共立出版 (1982).
Brian Kernighan, Rob Pike: プログラミング作法, アスキー (2000).
トム・デマルコ: 構造化分析とシステム仕様 (新装版), 日経 BP 出版センター (1994).
バートランド・メイヤー: オブジェクト指向入門 (第 2 版) -原則・コンセプト-, 翔泳社 (2007).
バートランド・メイヤー: オブジェクト指向入門 (第 2 版) -方法論・実践-, 翔泳社 (2008).
Eric Gamma, Richard Helm, Ralph Johnson, John Vlissides: オブジェクト指向における再利用のためのデザインパターン (改訂版), ソフトバンククリエイティブ (1999).
荒木 啓二郎,張 漢明: プログラム仕様記述論, オーム社 (2002).
成績評価の方法と基準Grading criteria
平常点: 30%
レポート課題: 30%,最終課題: 40%
学生の意見等からの気づきChanges following student comments
オンライン授業においても閲覧しやすい,また,授業の後に復習や参照がしやすい配付資料を作成する.
学生が準備すべき機器他Equipment student needs to prepare
筆記用具およびノート PC 等
その他の重要事項Others
正しい知識と基礎的な実践力を身につけると同時に,正解がないことに関して,他受講生との対話を通して,考察を深めていくことが重要である.