シラバス
授業科目名 | 年度 | 学期 | 開講曜日・時限 | 学部・研究科など | 担当教員 | 教員カナ氏名 | 配当年次 | 単位数 |
---|---|---|---|---|---|---|---|---|
オブジェクト指向プログラミング | 2024 | 前期 | 水5 | 国際情報学部 | 原田 一義 | ハラダ カズヨシ | 2年次配当 | 2 |
科目ナンバー
GI-IG2-IT09
履修条件・関連科目等
当然どのような学生でも受け入れるのではあるが、1年次の「プログラミング基礎」で学んだレベルのC言語がきちんと身についているという前提で授業を進めるので、それが身についていない学生には、現実的には、この授業の内容は少々難しいかと思われる。
しかし、何事もチャレンジしてみるということは良いことなので、臆せず履修されたい。
授業で使用する言語
日本語
授業で使用する言語(その他の言語)
授業の概要
本授業では、プログラミング言語Cから派生したC++を用いて、オブジェクト指向プログラミングの基礎を学ぶ。
講義および演習を中心として、簡単なソフトウェアを自力で作りながら、プログラミング技法を身につける。
科目目的
本科目の大きな目的は、国際情報学部のディプロマポリシーにあるように、「情報技術の知識と考え方」を身につけて「情報の諸課題を多角的に分析・解明した上で、その問題の解決策を論理的に構築」する能力を培うこと、である。
具体的には、1年次の「プログラミング基礎」で修得したプログラミングスキルをベースに、さらにその知識を発展させ、モダンプログラミングの方法を学習する。
到達目標
「科目目的」欄に書いたように、本科目は、「情報技術の知識と考え方」を身につけて「情報の諸課題を多角的に分析・解明した上で、その問題の解決策を論理的に構築」する能力を培うこと、を大きな目的として設定している。
そこでまず、1年次の「プログラミング基礎」で修得したC言語の知識をベースとして、その上でさらに、クラスとインスタンス、カプセル化、継承、ポリモーフィズムといったオブジェクト理論の基本を学び、C言語のような従来型のプログラミング言語に対してオブジェクト指向言語がどのような優位性を有しているかを学ぶ。
最終的には、オブジェクト指向の考え方に沿った数百行程度の平易なC++のプログラムを実際に作れるようになることを目指す。
授業計画と内容
以下のような内容で全14回の授業を行う予定である。
第1回: プログラミング環境の整備とC言語の復習その1
・VirtualBoxまたはUTMとUbuntuの設定
・if文、switch文、while文、for文などの制御構文
・配列
・関数
・スコープ
第2回: C言語の復習その2
・ポインター
・構造体と共有体
第3回: クラスその1
・インスタンス
・コンストラクターとデストラクター
・継承(インヘリタンス)
第4回: クラスその2
・オブジェクトポインター
・フレンド関数
・カプセル化
第5回: 関数のオーバーロード
第6回: 継承その1
・基底クラスと派生クラス
・オーバーライド
・多重継承
第7回: 継承その2
・仮想基底クラス
・仮想関数
・ポリモーフィズム
第8回: 演算子のオーバーロード
第9回: フレンド関数・ポインター・参照
第10回: 期末課題
第11回: テンプレート・コンテナ
第12回: コンテナの応用
第13回: 標準テンプレートライブラリ(STL)
第14回: 例外処理と入出力処理
ただし、実際の授業の進み具合によって内容を多少変更することもあり得るので、その際は臨機応変に対応されたい。
授業時間外の学修の内容
指定したテキストやレジュメを事前に読み込むこと/授業終了後の課題提出/その他
授業時間外の学修の内容(その他の内容等)
授業各回での小課題が授業時間内に消化できなかった場合は宿題とする(提出期限を守ること)。
授業中に理解できなかった事柄については、きちんと復習をすること。
また、教員が予習するように指示した時は、必ず予習をして授業に臨むこと。
授業時間外の学修に必要な時間数/週
毎週1回の授業が半期(前期または後期)または通年で完結するもの。1週間あたり4時間の学修を基本とします。
成績評価の方法・基準
種別 | 割合(%) | 評価基準 |
---|---|---|
レポート | 30 | <期末課題>授業の内容を応用したプログラムを作成できるかを評価する。 |
平常点 | 70 | <授業各回での小課題(宿題)>授業各回の内容が理解できているか、それを具体的にプログラムとして書けるかを評価する。授業中に有益な質問やコメントをするなどの貢献があった場合には、10%を限度としてこの小課題の点数に加算する(合計した時の70%以上の端数は切り捨て)。 |
成績評価の方法・基準(備考)
以下の(1),(2),...,(5)の順に適用する。
(1) 期末課題が未提出の場合は不合格とする。
(2) 期末課題は提出したが、授業各回での小課題が4割以上未提出の場合は不合格とする。
(3) 期末課題で提出されたプログラムが、友達等他人のファイルをコピーしたもの(あるいはそれを一部改変したもの)と信じられる場合には、不正行為として、ファイル提供者ともども最終成績を不合格とする。
(4) 授業各回での小課題を6割以上提出し、期末課題も提出したが、合計点が60%に達しない場合は不合格とする。
(5) 授業各回での小課題で提出されたプログラムが、友達等他人のファイルをコピーしたもの(あるいはそれを一部改変したもの)と信じられる場合には、不正行為として、ファイル提供者ともども当該の小課題を0点とする。
課題や試験のフィードバック方法
授業時間内で講評・解説の時間を設ける/授業時間に限らず、manabaでフィードバックを行う/その他
課題や試験のフィードバック方法(その他の内容等)
授業時間外は全学メールにて質問対応を行う。
質問の多い内容については、manabaでフィードバックを行う。
陥りやすかった誤りなどについて、次回の授業でクラス全体に対して簡単な解説をおこなう。
提出物に対しての個別の添削はおこなわない。
アクティブ・ラーニングの実施内容
反転授業(教室の中で行う授業学習と課題などの授業外学習を入れ替えた学習形式)/実習、フィールドワーク
アクティブ・ラーニングの実施内容(その他の内容等)
各授業回の小課題で、履修者自身に問題の解き方を考えてもらいながらプログラミングを行ってもらう、という意味で「実習」の要素を含む。
また、先に資料を配布してプログラミングの課題(宿題)に取り組んでもらって、次回の授業で質問に対して答える、という「反転授業」的な進め方をする場合がある。
授業におけるICTの活用方法
その他
授業におけるICTの活用方法(その他の内容等)
BYOD機器、manaba、全学メールを活用して授業や授業時間外の質問対応等を行う。
実務経験のある教員による授業
いいえ
【実務経験有の場合】実務経験の内容
【実務経験有の場合】実務経験に関連する授業内容
テキスト・参考文献等
教科書・参考書は指定しない(資料を授業中に配布する)。
目的に合う参考書を自分で探すことも勉強のうちである。
なお、C++にはいくつかの規格があるが、授業ではおおむね、2014年に発行された規格「C++14」から2017年に発行された規格「C++17」の範囲でプログラムを書いていく予定なので、2014年以前に刊行された参考書には、授業内容に微妙にそぐわない記述があるかもしれない。
また、インターネット上で検索して見つけた他人のプログラムを盗用して提出するのは論外の行為であるが、プログラミング言語の定義や用例をGoogle等で検索するのはとても有効な勉強方法なので、検索をうまく活用して欲しい。
その他特記事項
履修者は、以下の点に留意すること。
(1) この科目は第1週より通常の講義を実施するので、第1週から出席すること。
(2) 以下のプログラミング環境を春休み中に各自のノートPCにインストールして第1週の授業に臨むこと。
・Windowsの人: VirtualBox + Ubuntu
・Intel Macの人: VirtualBox + Ubuntu または UTM + Ubuntu
・M1 Macの人: UTM + Ubuntu
(2-1) VirtualBoxは以下のサイトからバージョン7.0.14以降あるいは6.1.50以降の出来るだけ新しいものをダウンロードしインストールすること。仮想マシンを作成する際にディスク容量を20GB割り当てること。
・VirtualBoxの配布元:
https://www.virtualbox.org/wiki/Downloads
(2-2) UTMは以下のサイトから最新版をダウンロードしインストールすること。仮想マシンを作成する際にディスク容量を20GB割り当てること。
・UTMの配布元:
https://mac.getutm.app/
(2-3) Ubuntuは「Ubuntu 22.04 LTS 日本語 Remix」をインストールする。
Windowsの人、およびIntel Macの人は以下のサイトからIntel CPU向けのイメージをダウンロードすること。ディスク容量を20GB割り当てること。
・Ubuntu 22.04 LTS 日本語 Remix の配布元:
https://www.ubuntulinux.jp/News/ubuntu2204-ja-remix
(2-4) M1 Macの人は、(2-3)のものが使えないので、以下のサイトから「22.04 LTS」の「64-bit ARM (ARMv8/AArch64) desktop image」をダウンロードし、インストールすること。ディスク容量を20GB割り当てること。
・Ubuntu 22.04.3 LTS (Jammy Jellyfish) Daily Build
https://cdimage.ubuntu.com/jammy/daily-live/current/
(2-5) 新学期直前あるいは新学期初旬には、インストールするUbuntuのイメージファイル等がより新しいものに変更になっていることがあり得る。その場合の対応方法はmanaba等で連絡する。
(2-6) コンパイラーはUbuntu用のGCCを用いる。
(3) 履修者一人一人のPCのプログラミング環境の整備に、私が個別につき合って面倒を見てあげることは難しいので、わからない事は友達同士で教え合ったりITサポートデスクのスタッフに相談するなどして、各自で整備すること。