授業コード 10035800 単位数 2
科目名 B3群特殊講義a(アルゴリズムとプログラミング発展演習) クラス
履修期 後期授業 カリキュラム *下表参考
担当者 WANG Qi 配当年次 *下表参考

授業の題目 アルゴリズムとプログラミング演習II
学修の概要  企業においてデータ処理やデータ分析,問題解決にコンピュータの利用は不可欠である.そのための様々なソフトウェアも存在しており,直面している問題にぴったりしたソフトウェアを導入することが重要である.このために,企業では,適切なアルゴリズム(問題を解決したり目標を達成したりするための計算方法や処理方法)の考察ができる人材が求められている.
 この授業では,プログラミングの基礎となる基本的な手順(アルゴリズム)とデータ構造,プログラミング言語について学習する.さらに,アルゴリズムの読み取りと作成,プログラミングの演習を行う.
 授業は,講義とその内容の理解を確認する小テスト/プログラム課題をセットに行う.
 プログラミング言語としては,様々なプログラミング言語のもとになっているPython言語を用いる.

この授業の講義内容は
 (1) 情報処理技術者試験の試験範囲
 (2) 高等学校「商業」の『プログラミング』の指導項目
の一部に対応している.

なお,通常の講義に加えて、MoodleとGoogle Classroom(GC)を利用します.
学修の到達目標 ・Python言語で書かれたプログラムが何をするプログラムであるかを説明できる.
・Python言語で書かれたプログラムの誤りを訂正できる.
・指定された処理を行うための基本的なプログラムのアルゴリズムを作成できる.
・指定された処理を行うためのアルゴリズムに従ったPython⾔語の基本的プログラムを作成できる.
授業計画 第1回 ガイダンス︓授業の進め方,評価方法について説明する.
      Moodleへの登録確認とGoogle Classroom(GC)への登録を完了する.
前期の復習①   
※ 前期とは,B2群特殊講義a(アルゴリズムとプログラミング演習Ⅰ)を指している.

・前期に学んだPythonの基礎(変数、データ型、入出力、条件分岐、繰り返し)を簡潔に復習する。
・後期で学ぶアルゴリズムの全体像を把握する。

・前期の基本的なプログラムをスムーズに記述できる状態になる。
第2回 前期の復習② 条件分岐の応用  
・if文、elif、else、論理演算子の復習

・条件分岐を用いたプログラムを自信を持って書ける。
・与えられた仕様から適切な条件式を導き出せる。
第3回 前期の復習③ 反復処理と配列
・前期に学習した反復処理と配列について総復習を行う.
・反復処理と配列を使った復習演習

・反復処理と配列の使い方について説明できるとともに,プログラムを作成できるようになる.
第4回 データの探索① 線形探索
・線形探索のアルゴリズム:先頭から順に要素を比較する手法を学習する。
・講義内容を確認する線形探索に関するプログラミング演習①

・リストから特定の値を探すプログラムを線形探索で実装できる。
・探索の成功/失敗を適切に判定し、結果を返す関数を作成できる。
第5回 データの探索② 二分探索
・二分探索のアルゴリズム:ソート済みデータを対象に範囲を半減しながら探索方法を学習する。
・講義内容を確認する二分探索に関するプログラミング演習②

・ソート済みリストに対して二分探索を実装できる。
・線形探索と二分探索の効率の違いを具体的に説明できる。.
第6回 データの探索③ 二分探索木による探索
・二分探索木の構造と探索アルゴリズムについて学習する.
・講義内容を確認する二分探索木に関するプログラミング演習③

・二分探索木を構築し、目的の値の存在確認を行うプログラムを作成できる。
第7回 ソートアルゴリズム① 挿入ソート 
・挿入ソートのアルゴリズムについて学習する.
・講義内容を確認する挿入ソートに関するプログラミング演習①

・挿入ソートをPythonで実装できる。
・各ステップでの配列の状態をトレースし、動作を説明できる。
第8回 ソートアルゴリズム② クイックソート
・クイックソートのアルゴリズムについて学習する.
・講義内容を確認するクイックソートに関するプログラミング演習②

・クイックソートを実装できる。
第9回 ソートアルゴリズム③ ヒープソート
・ヒープ(完全二分木)の性質と配列による表現を学習する。
・ヒープの構築(ヒープ化)、最大値の取り出しと再構築を学習する。
・講義内容を確認するヒープソートに関するプログラム演習③

・ヒープソートをPythonで実装できる。
・ヒープの性質を説明でき、優先度付きキューとしての利用法を理解する。
第10回 ハッシュ① ハッシュ関数
・ハッシュテーブルの基本概念:ハッシュ関数、ハッシュ値、格納場所の決定を学習する。
・簡単なハッシュテーブルの実装を学習する。
・講義内容を確認するハッシュ関数を使ったプログラム演習①

・ハッシュ関数の役割と望ましい特性を説明できる。
第11回 ハッシュ② 衝突の回避
・衝突回避法(2):オープンアドレス法(線形探査、二重ハッシュ)を学習する。
・講義内容を確認するプログラム演習②

・異なる衝突解決手法の長所・短所を説明できる。
第12回 各種のアルゴリズム① 文字列探索
・多数の文字が並ぶ文字列を探索する方法について学習する.
・講義内容を確認するプログラム演習①

・異なる文字列探索方法を説明できるようになる.
第13回 各種のアルゴリズム② 最短経路問題
・重み付きグラフの最短経路問題について学習する.
・ダイクストラ法のアルゴリズムを学習する。
・講義内容を確認する最短経路問題に関するプログラム演習②

・ダイクストラ法の手順を理解し、Pythonで実装できる。
第14回 アルゴリズムの可視化 
・tkinterモジュールの基本について学習する.
・講義内容を確認するtkinterモジュールを用いたプログラミング演習

・簡単な可視化プログラムを作成し、アルゴリズムの内部動作を視覚的に確認できる。
・可視化が理解促進に役立つことを実感する。
第15回 総合演習
・この講義における学習内容の振り返りを行う.
・後期の総合課題として、学んだ複数のアルゴリズムを組み合わせた応用プログラムを開発する。

・この講義における学習内容にかかるプログラムを作成し,実行できるようになる.
授業外学習の課題 授業外学習の課題
事前学修(2時間程度):
・事前に次回の講義範囲を発表し講義資料をMoodle/GCに公開するので,この講義資料と対応するテキストの範囲を通読しておくこと.
・講義資料内の例題プログラムを実行してみること.
事後学修(2時間程度):
・テキスト,講義資料や課題の解答例などを用いて,演習問題や課題プログラムについて復習し、内容を理解しておく.
・GC/Moodleに出題された課題を解答し,指定された期限までに指定された提出先に送信する.
履修上の注意事項 この授業は,B2群特殊講義a(アルゴリズムとプログラミング演習/アルゴリズムとプログラミング演習Ⅰ)を履修していることを前提とする.

① 履修登録に先立ちWeb抽選を行う.
② 事前にあげられた講義資料を,印刷して授業に持参する.
③ 毎回の出欠確認は情報センターの出席票で行う.出席票提出時刻が10分までを出席,20分までを遅刻,それ以降を欠席とする.遅刻は2回で1回の欠席とする.
④ 授業は指定席で行う.授業中は携帯電話の使用を禁止するので,鞄などにしまっておくこと.
⑤ 実習が中心となるので,小テスト・課題を必ず提出することが重要である.
⑥ 講義では限られた内容しか説明できない.授業で話すことは,あくまでも自分で勉強するための手がかりだと考え,配付資料やテキストを使って必ず予習・復習をしてくること.
⑦ 自宅にPCとインターネット環境があることが望ましい.

<公認欠席に係る対応>
公認欠席は欠席として扱うが、単位認定要件または期末試験の受験要件には影響しないように配慮する.
小テストやプレゼンテーション時に公認欠席となる場合、追試または代替措置で対応する.
公認欠席時の資料は後日配布する.
成績評価の方法・基準 全授業への出席を前提とし、欠席回数に応じて、評価点数の上限(100~60)を変える。十分な出席がある学生に対しては、以下の構成で評価する。
期末試験(40%)と課題・小テスト(60%)を目安に総合的に評価する予定である.
最終的な評価点においては、授業への取り組み姿勢によって、±40点の範囲で加減する。

テキストを購入していない場合は,D評価とする.テキスト所有の有無を確認します。ただし,今年度前期にB2群特殊講義a/B3群特殊講義a(アルゴリズムとプログラミング演習Ⅰ)で指定したテキストをすでに購入している人は購入する必要はない.
テキスト 今年度前期 B2群特殊講義a(アルゴリズムとプログラミング演習Ⅰ)で用いたテキストを引き続き使用する.
参考文献 適宜に紹介する.
主な関連科目 B2群特殊講義a(アルゴリズムとプログラミング演習Ⅰ),経営情報論Ⅰ・Ⅱ,情報処理
オフィスアワー及び
質問・相談への対応
1.質問については基本的にGC内のミニッツペーパーで受け付けます.質問の内容やその回答について、その他の学生にも説明をした方がよいと判断した場合、講義時に解説します。
2.授業開始前、授業中及び授業終了時に受け付けますが、授業進行その他の都合上、すぐに対応できない場合があります.そのときは、事後にメールあるいはGCで説明します.
3.小テスト・課題に関する解答やフィードバックは,締切後の授業回またはGC/Moodleで行います.期末試験に関する質問は個別に対応しますので,予約を取るようにして下さい.

■カリキュラム情報
所属 ナンバリングコード 適用入学年度 配当年次 身につく能力
知識・技能 思考力 判断力 表現力 協創力
商学部商学科(B3群) FCBS22345 2020~2022 2・3・4 - - - - -
商学部商学科(B3群) FCBS22345 2023~2023 2・3・4 -