情報科学部Faculty of Computer and Information Sciences
COT211KA-CS-202(計算基盤 / Computing technologies 200)プログラミング2(C/C++)Programming 2(C/C++)
相島 健助、廣津 登志夫Kensuke AISHIMA, Toshio HIROTSU
授業コードなどClass code etc
学部・研究科Faculty/Graduate school | 情報科学部Faculty of Computer and Information Sciences |
添付ファイル名Attached documents | |
年度Year | 2022 |
授業コードClass code | J0505 |
旧授業コードPrevious Class code | |
旧科目名Previous Class title | |
開講時期Term | 春学期授業/Spring |
曜日・時限Day/Period | 月3/Mon.3,月4/Mon.4 |
科目種別Class Type | |
キャンパスCampus | 小金井 / Koganei |
教室名称Classroom name | 各学部・研究科等の時間割等で確認 |
配当年次Grade | |
単位数Credit(s) | 4 |
備考(履修条件等)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 aims to learn general principle and techniques of object-oriented programming in C++, as the advanced course of Programming1(C/C++). In the lectures of the course, the computer structure and its relation to programming in C++ are also explained and discussed. The students are expected to learn the basic concepts and mechanisms of C++ and to gain sufficient ability to construct simple programs in C++. They are also expected to build up their ability for understanding the behaviors of programs in C++.
[Learning Objectives]
Students expected to understand the basic concepts and functionality of object-oriented programming using C and C++. They also expected to build program using object-oriented manner, such as class, inheritance and encapsulation.
[Learning activities outside of classroom]
Students will be expected to spend eight hours to pre/post study of the course including programming the homework and next week's pre-studying contents.
[Grading Criteria /Policy]
Attending the class and submission of mandatory exams are prerequisite for the evaluation.
Final grade will be calculated according to the following process; term-end examination (70%), and homework (30%).
授業で使用する言語Default language used in class
日本語 / Japanese
授業の概要と目的(何を学ぶか)Outline and objectives
本授業はプログラミング1(C/C++)の後続科目として、C++用いたオブジェクト指向プログラミングにより小規模のプログラムを作成できるようになることを目的とする。学習においてはオブジェクト指向プログラミングの基本概念を意識し、コンピュータの仕組みと結びつけて、プログラムの動作を理解する視点を獲得することめざす。
到達目標Goal
・オブジェクト指向の基本的な考え方を説明できる。
・C++ を用いて、オブジェクト指向に沿ったクラス設計を行うことができる。
・オブジェクトのポインタを用いたプログラムを作成・理解できる。
・オブジェクトの継承を理解し、プログラムを作成できる。
・カプセル化を意識したプログラムを作成できる。
この授業を履修することで学部等のディプロマポリシーに示されたどの能力を習得することができるか(該当授業科目と学位授与方針に明示された学習成果との関連)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. )
講義は本科目の前段科目であるプログラミング1(C/C++)と同様に、反転学習の形態を取る。事前学習資料の内容を理解した上で、講義までに演習のプログラムについては各自で動かして動作を確認しておく。講義の最初に事前学習内容の理解度や課題の理解度のアンケートを実施し、事前学習及び課題のフィードバックを行う。講義中は主に課題のプログラミングを行い、TA及び教員により質問等への個別対応を行う。
アクティブラーニング(グループディスカッション、ディベート等)の実施Active learning in class (Group discussion, Debate.etc.)
あり / Yes
フィールドワーク(学外での実習等)の実施Fieldwork in class
なし / No
授業計画Schedule
授業形態/methods of teaching:対面/face to face
※各回の授業形態は予定です。教員の指示に従ってください。
第1回[対面/face to face]:オブジェクト指向の基本
オブジェクト指向の考え方を理解し、メンバ変数、メンバ関数を持ったクラスを作成し、オブジェクトを生成する。
第2回[対面/face to face]:コンストラクタ
オブジェクトの初期化手順として、デフォルトコンストラクタ、コピーコンストラクタ、変換コンストラクタの作成方法を学ぶ。
第3回[対面/face to face]:カプセル化、演算子関数
クラスのカプセル化についてpublicとprivate の使い分け、ヘッダファイルとソースファイルの分割について学ぶ。
第4回[対面/face to face]:静的メンバ、コンストラクタ初期化子
静的メンバと動的メンバの違いを理解する。代入演算子(operator=) 、入れ子のクラス構造とコンストラクタ初期化子について理解する。
第5回[対面/face to face]:定値オブジェクト、friend関数
定値オブジェクトを有効に扱うためのメンバ関数定義法を学ぶ。friend関数も紹介する。また、変換関数、演算子関数を学ぶ。
第6回[対面/face to face]:クラスの継承
派生クラスへの継承について学ぶ。継承の本質、継承の仕組み、および継承の表現し方などを理解する。
第7回[対面/face to face]:仮想関数とポリモーフィズム
virtual 関数を作成して、動的な型情報によるプログラミング手法を学ぶ。ポリモーフィズムを理解する。
第8回[対面/face to face]:抽象クラス
純粋仮装関数を理解し、抽象クラスの設計と使い方を学ぶ。
第9回[対面/face to face]:ヒープメモリとポインタ
ヒープメモリとポインタを使ったオブジェクト管理を学ぶ。new 演算子を使って生成されたオブジェクトはヒープメモリに管理する仕組みを理解し、メモリの解放方法も学ぶ。
第10回[対面/face to face]:例外処理
例外処理の書き方について学び、標準の例外クラスを使えるようになる。
第11回[対面/face to face]:クラステンプレート
クラステンプレートと関数テンプレートを活用したプログラミング手法を学ぶ。
第12回[対面/face to face]:ベクトルライブラリ
可変長配列などのベクトルライブラリの使い方を学ぶ。
第13回[対面/face to face]:ベクトル以外のコンテナ
リストやスタックマップなどデータ構造の設計と使い方を学ぶ。
第14回[対面/face to face]:関数ポインタ
関数ポインタによる関数の入れ替え手法を学ぶ。文字列クラスの使い方も学ぶ。
授業時間外の学習(準備学習・復習・宿題等)Work to be done outside of class (preparation, etc.)
本授業の準備・復習等の授業時間外学習は、各週につき8時間を標準とする。
事前学習資料(映像・演習プログラム)について、必ず、講義前に各自で予習した上で演習プログラムを全て動かしておくこと。
講義中に完了しなかった課題は次週までの宿題となる。
テキスト(教科書)Textbooks
柴田望洋, "新・明解C++で学ぶオブジェクト指向プログラミング", ソフトバンククリエイティブ, 2018. ISBN:978-4-7973-9716-1
参考書References
柴田望洋, “新版 明解 C++ 入門”, ソフトバンククリエイティブ, 2017. ISBN:978-4-7973-9463-4 (1年秋に使用したもの)
成績評価の方法と基準Grading criteria
講義への出席と全ての必須課題の提出は成績評価の前提条件となる。
期末試験を実施し、理解度を評価する。
成績は、期末試験を70%、課題提出を30%で評価する。
学生の意見等からの気づきChanges following student comments
特になし。
学生が準備すべき機器他Equipment student needs to prepare
貸与PCを利用してプログラミングを行う。
対面・オンラインにかかわらず、質問対応には Zoom による画面共有を使用するので、講義での指示に従い Zoom に接続すること。
その他の重要事項Others
プログラミング1(C/C++)の講義内容を理解していることを前提とする。
本講義の内容は、担当教員の企業研究所での実務経験により得た知見に基づき構成している。