シラバス
授業科目名 | 年度 | 学期 | 開講曜日・時限 | 学部・研究科など | 担当教員 | 教員カナ氏名 | 配当年次 | 単位数 |
---|---|---|---|---|---|---|---|---|
問題解決とアルゴリズム | 2025 | 後期 | 水3 | 国際情報学部 | 原田 一義 | ハラダ カズヨシ | 2年次配当 | 2 |
科目ナンバー
GI-IG2-IT12
履修条件・関連科目等
必須となる「履修条件」は無いが、1年次の「プログラミング基礎」で学んだレベルのC言語、具体的には、if文による条件分岐、for文やwhile文での繰り返し処理、配列、関数などが理解できているという前提で授業を進める(ポインタや構造体まで理解できているとなおよい)。
それから、対数、数列、確率、集合などの数学の基礎知識も必要である(これは高校の教科書レベルの理解でよい)。
授業で使用する言語
日本語
授業で使用する言語(その他の言語)
授業の概要
「問題を解くためのうまい手順」を考えることがこの授業のテーマである。
ただし、一口に「問題」と言っても、社会生活の中で発生する種々の問題は不定形で複雑である。
そこでこの授業では、現実における複雑な問題の中にしばしば部分的な問題として現れる数理パズル的な問題を取り上げて、その「解法(アルゴリズム)」について学ぶ。
ただし、数理パズル的な問題と言っても、単に数学的な興味のみに基づいて問題を選ぶわけではなく、プログラミングや実務に十分応用可能な問題を選んで取り上げる。
授業は講義を中心とし、授業時間の最後の10~30分程度を理解確認のための演習や小テストにあてる予定である。
科目目的
本科目の大きな目的は、国際情報学部のディプロマポリシーにあるように、「情報技術の知識と考え方」を身につけて「情報の諸課題を多角的に分析・解明した上で、その問題の解決策を論理的に構築」する能力を培うこと、である。
具体的には、1年次の「プログラミング基礎」で学んだプログラミングの知識をベースに、数理パズル的な問題の「解法(アルゴリズム)」について学び、その知見をより現実的な複雑な問題へ応用できるようになることを目指す。
到達目標
「科目目的」欄に書いたように、本科目は、「情報技術の知識と考え方」を身につけて「情報の諸課題を多角的に分析・解明した上で、その問題の解決策を論理的に構築」する能力を培うこと、を大きな目的として設定している。
そこでまず、高校までに習った数学と1年次の「プログラミング基礎」で修得したC言語の知識をベースとして、数理的な問題の形式化と、その問題に適した具体的なデータ構造の選び方および効率の良い処理方法を学び、プログラミングや実務へ応用できるようになることを目指す。
授業計画と内容
以下のような内容で全14回の授業を行う予定である。
第1回: アルゴリズムとは
第2回: 高校の数学とC言語のふりかえり
第3回: チューリングマシーン
第4回: 有限オートマトン
第5回: 計算量とソート(バブルソート、挿入ソート)
第6回: ソート(マージソート、ヒープソート)
第7回: ソート(クイックソート)
第8回: リストとグラフ
第9回: 再帰的手続き
第10回: スタック
第11回: キュー
第12回: 2分探索
第13回: ハッシュ
第14回: 応用的な話題
ただし、実際の授業の進み具合によって順序や内容を多少変更することもあり得るので、その際は臨機応変に対応されたい。
授業時間外の学修の内容
指定したテキストやレジュメを事前に読み込むこと/授業終了後の課題提出/その他
授業時間外の学修の内容(その他の内容等)
宿題は提出期限を守ること。
授業中に理解できなかった事柄については、きちんと復習をすること。
また、教員が予習するように指示した時は、必ず予習をして授業に臨むこと。
授業時間外の学修に必要な時間数/週
毎週1回の授業が半期(前期または後期)または通年で完結するもの。1週間あたり4時間の学修を基本とします。
成績評価の方法・基準
種別 | 割合(%) | 評価基準 |
---|---|---|
期末試験(到達度確認) | 60 | データ構造、アルゴリズムの具体的な処理手順、計算量などに関しての総合的な理解度をはかるために、対面形式で、持ち込み不可の筆記試験をおこなう。ただし、授業の進み行きによっては、期末試験ではなく「期末レポート」に変更する可能性もあるので、その際は臨機応変に対応されたい。 |
平常点 | 40 | 授業中におこなう小テストや演習、あるいは宿題の点数を合計したもの。単純ないわゆる「出席点」は計上しない。 |
成績評価の方法・基準(備考)
課題や試験のフィードバック方法
授業時間内で講評・解説の時間を設ける/授業時間に限らず、manabaでフィードバックを行う/その他
課題や試験のフィードバック方法(その他の内容等)
授業時間外は全学メールにて質問対応を行う。
質問の多い内容については、manabaでフィードバックを行う。
陥りやすかった誤りなどについて、次回の授業でクラス全体に対して簡単な解説をおこなう。
提出物に対しての個別の添削はおこなわない。
アクティブ・ラーニングの実施内容
反転授業(教室の中で行う授業学習と課題などの授業外学習を入れ替えた学習形式)/実習、フィールドワーク
アクティブ・ラーニングの実施内容(その他の内容等)
授業の中で、履修者自身に問題を解いてもらう、という意味で「実習」の要素を含む。
また、先に資料を配布して宿題に取り組んでもらって、次回の授業で質問に対して答える、という「反転授業」的な進め方をする場合がある。
授業におけるICTの活用方法
その他
授業におけるICTの活用方法(その他の内容等)
BYOD機器、manaba、全学メールを活用して授業や授業時間外の質問対応等を行う。
実務経験のある教員による授業
いいえ
【実務経験有の場合】実務経験の内容
【実務経験有の場合】実務経験に関連する授業内容
テキスト・参考文献等
教科書・参考書は指定しない(資料を授業中に配布する)。
目的に合う参考書を自分で探すことも勉強のうちである。
その他特記事項
1年次の必修科目の「プログラミング基礎」で使用したC言語のプログラミングができるUbuntuの環境をそのまま利用する。