Syllabus data

開講年度
2025Year
開講学期
First Semester
科目名
Data Structure and Algorithm with Exercises
授業種別
Lecture and Practice
科目名(英語)
Data Structure and Algorithm with Exercises
授業情報(授業コード・クラス・授業形態)
A0400229 Data Structure and Algorithm with Exercises
担当教員
FUJII Akihiro,KONDO Tadahisa,null,NISHIYAMA Hiroyasu,TANAKA Teruo
単位数
3.0Credits
曜日時限
前期(1Q)(Mon.2Period,Mon.3Period),前期(2Q)(Mon.2Period,Mon.3Period)
キャンパス
Hachioji Campus
教室
1N-028講義室,1N-029講義室,1N-214講義室,1N-217講義室,1N-335講義室

学位授与の方針
1 基礎知識の修得 10%
2 専門分野の知識・専門技術の修得 60%
3 汎用的問題解決力の修得 30%
4 道徳的態度と社会性の修得 0%
具体的な到達目標
・基本的なデータ構造とアルゴリズムを理解する.
・データ構造がどのように有効に働き,アルゴリズムがどのように振舞うかを理解し説明できる.
・データの性質あるいは利用目的に合わせた処理効率を意識したデータ構造とアルゴリズムを選択できる.
受講にあたっての前提条件
・到達目標をよく理解し,高いレベルでの達成を目指す意欲があること
・Cコードの理解を必要とするので必修のプログラミング科目の基礎を合わせて理解しておくこと
授業の方法とねらい
プログラムを作るときに必要になるのは,取り扱う「データ」をどのような「構造」で表現するかということ,および,それを取り扱う手順,すなわち「アルゴリズム」をどのように設計するかです.ここでは,『プログラム=データ構造+アルゴリズム』という関係式が成り立ちます.本講義では,基本的な「データ構造とアルゴリズム」を理解することにより,プログラミング能力向上の一助とします.この講義では,プログラミングおよび演習1〜4と合わせてC言語を前提としますが,データ構造とアルゴリズムの用語は,プログラミング言語とは独立に定義することを心がけます.言語に依存する場合については,その都度,説明を行います.
さらに,演習により理解を深めるとともに,基本的なアルゴリズムを実際に計算機上で動作させ実感していただきます.加えて,その動作の特徴を整理・分析することにより,実問題に対応するスキルを磨くことを目標とします.演習では,各回に基本的な課題を実施するとともに3回程度の課題レポートを課すことを予定しています.
本演習はプログラミングが主目的ではありません.演習に必要なプログラムの基本部分は提供し,それを修正・追加することにより,いろいろなデータを用いた実験を行い,考察することを主眼とします.シームレスな実験環境の確保ならびにデータ構造とアルゴリズムを理解することに特化するために,実験環境はgoogle colaboratoryを用います.これにより,講義と同じ環境で教室以外での予習・復習を可能とします.
言語は基本をCとし,グラフ化などのために一部Pythonを用います.ただし,Pythonの知識は前提とはしません.演習を行う上で,必要な説明は行います.
講義及び演習を連続して教室にて行います.そのため,各自,PCを持参すること,また,PCは3時間余り稼働できるように十分充電をしておいてください.当日は他科目でもPCを使うことが予想されますので、朝方、ほぼフル充電状態にしておくことを勧めます.
AL・ICT活用
Support for self-learning using ICT

第1回
授業形態
対面
事前学習
事前学習として,「アルゴリズム」という用語を調べておくこと.
1時間
授業内容
【アルゴリズム入門】アルゴリズムとは:アルゴリズムの例,アルゴリズムの表現,Colaboratoryの操作.
事後学習・事前学習
事後学習:講義ノートおよび各自が作成した学習ノートを読み直し,さらに演習問題を解き直すことにより「アルゴリズムとは:アルゴリズムの例,アルゴリズムの表現」を再確認すること.課題を用いてColaboratoryの操作を試してみること.
事前学習:講義ノートを事前に読み,「データ構造:配列,スタック,キュー」の用語,操作を調べておくこと.
2時間
第2回
授業形態
対面
授業内容
【データ構造】配列,スタック,キュー
事後学習・事前学習
事後学習:講義ノートおよび各自が作成した学習ノートを読み直し,さらに演習問題を解き直すことにより「配列,スタック,キュー」を再確認すること.
事前学習:講義ノートを事前に読み,「再帰アルゴリズム」の用語,操作を調べておくこと.
2時間
第3回
授業形態
対面
授業内容
【アルゴリズム】再帰アルゴリズム
事後学習・事前学習
事後学習:講義ノートおよび各自が作成した学習ノートを読み直し,さらに演習問題を解き直すことにより「再帰アルゴリズム」を再確認すること.
事前学習:講義ノートを事前に読み,「連結リスト:連結リストとは,連結リストの宣言,連結リストの生成,連結リストの探索・挿入・削除」の用語,操作を調べておくこと.
2時間
第4回
授業形態
対面
授業内容
【データ構造】連結リスト:連結リストとは,連結リストの宣言,連結リストの生成,連結リストの探索・挿入・削除
事後学習・事前学習
事後学習:講義ノートおよび各自が作成した学習ノートを読み直し,さらに演習問題を解き直すことにより「データ構造:連結リストの探索・挿入・削除,双方向リスト,環状リスト」を再確認すること.
事前学習:講義ノートを事前に読み,「木:木とは,木の用語,木の走査,2分木,一般の木,木の操作」の用語,操作を調べておくこと.
2時間
第5回
授業形態
対面
授業内容
【データ構造】木:木とは,木の用語,木の走査,2分木,一般の木,木の操作
事後学習・事前学習
事後学習:講義ノートおよび各自が作成した学習ノートを読み直し,さらに演習問題を解き直すことにより「木:木とは,木の用語,木の走査,2分木,一般の木,木の操作」を再確認すること.
事前学習:講義ノートを事前に読み,「グラフ:グラフとは,グラフの用語,グラフの表現,グラフの探索,最短路問題」の用語,操作を調べておくこと.
2時間
第6回
授業形態
対面
授業内容
【データ構造】グラフ:グラフとは,グラフの用語,グラフの表現,グラフの探索,最短路問題
事後学習・事前学習
事後学習:講義ノートおよび各自が作成した学習ノートを読み直し,さらに演習問題を解き直すことにより「グラフ:グラフとは,グラフの用語,グラフの表現,グラフの探索,最短路問題」を再確認すること.
事前学習:講義ノートを事前に読み,「アルゴリズムの評価:最大・平均計算量,計算量の漸近的評価」の用語,操作を調べておくこと.
2時間
第7回
授業形態
対面
授業内容
【評価】アルゴリズムの評価:最大・平均計算量,計算量の漸近的評価
事後学習・事前学習
事後学習:講義ノートおよび各自が作成した学習ノートを読み直し,さらに演習問題を解き直すことにより「アルゴリズムの評価:最大・平均計算量,計算量の漸近的評価」を再確認すること.

2時間
第8回
授業形態
遠隔(オンデマンド)
授業内容
【試験対策】中間試験に向けての演習問題を配布するので各自で解くこと.解答(例)は別途配布予定
事後学習・事前学習
中間試験に向けて,これまでの講義ノートおよび各自が作成した学習ノートを読み直し,さらに演習問題を解き直しておくこと.
6時間
第9回
授業形態
対面
授業内容
【授業内試験】中間試験
事後学習・事前学習
事後学習:中間試験で解けなかった問題を見直しておくこと.
事前学習:講義ノートを事前に読み「ソーティング:バブルソート,シェーカソート,選択ソート,挿入ソート,クイックソートなど」の用語,操作を調べておくこと.
2時間
第10回
授業形態
対面
授業内容
【アルゴリズム】ソーティング1:バブルソート,シェーカソート,選択ソート,挿入ソート,クイックソートなど
事後学習・事前学習
事後学習:講義ノートおよび各自が作成した学習ノートを読み直し,さらに演習問題を解き直すことにより「ソーティング1:バブルソート,シェーカソート,選択ソート,挿入ソート,クイックソートなど」を再確認すること.
事前学習:講義ノートを事前に読み,「ソーティング2:マージソート,バケットソート,ヒープソートなど」の用語,操作を調べておくこと.
2時間
第11回
授業形態
対面
授業内容
【アルゴリズム】ソーティング2:マージソート,バケットソート,ヒープソートなど
事後学習・事前学習
事後学習:講義ノートおよび各自が作成した学習ノートを読み直し,さらに演習問題を解き直すことにより「ソーティング2:マージソート,バケットソート,ヒープソートなど」を再確認すること.
事前学習:講義ノートを事前に読み,「探索:線形探索,二分探索,文字列の探索」の用語,操作を調べておくこと.
2時間
第12回
授業形態
対面
授業内容
【アルゴリズム】探索:線形探索,二分探索,文字列の探索
事後学習・事前学習
事後学習:講義ノートおよび各自が作成した学習ノートを読み直し,さらに演習問題を解き直すことにより「探索:線形探索,二分探索,文字列の探索」を再確認すること.
事前学習:講義ノートを事前に読み,「面白いアルゴリズム」を熟読しておくこと.
2時間
第13回
授業形態
対面
授業内容
【アルゴリズム】面白いアルゴリズム1
事後学習・事前学習
事後学習:講義ノートおよび各自が作成した学習ノートを読み直し,さらに演習問題を解き直すことにより「面白いアルゴリズム」の課題を行うこと.
事前学習:期末試験に備え,ここまでの講義ノートならびに講義中に説明した内容を再確認しておくこと.
2時間
第14回
授業形態
対面
授業内容
【アルゴリズム】面白いアルゴリズム2,期末試験に向けて
事後学習・事前学習
期末試験に向けて,これまでの講義ノートおよび各自が作成した学習ノートを読み直し,さらに演習問題を解き直しておくこと.
6時間
第15回
授業形態
対面
授業内容
【講義内試験】期末試験
事後学習
期末試験の内容を振り返り,解けなかった問題を解いておくこと.
1時間

成績評価の方法
期末試験を主に,中間試験,確認テストを加味して到達目標に照らして,
6段階のGrade(A+,A,B,C,D,F)で評価し,D以上の者に単位を認める.
受講生へのフィードバック方法
期末試験の模範解答を配布する.

教科書
指定教科書はない.
毎回,講義ノートを提供する.
参考書
講義の中で,紹介する.

オフィスアワー
講義・演習を担当する教員の指示に従うこと.
受講生へのメッセージ
関数や条件分岐やポインタなどの基礎的なプログラミング技法を覚えたり,とにかく動くプログラムを書くことに集中するのではなく,データ構造とアルゴリズムという観点からプログラムを捉え直すことを目指してください.特に,演習では,紙と鉛筆では対応できない大規模なデータを扱い,実験・分析することで,実践的なデータ構造とアルゴリズムの特性の理解を深めてください.将来,情報システムを扱う際,その高性能化,高機能化,高信頼化に向けて,どのようなアルゴリズムに基づいたアプリケーションプログラムを適用すべきかを検討するための基礎知識として,役立ててください.さらに,プログラミングが得意でない学生でも,この授業でアルゴリズムから理解することでプログラムに親しんで苦手意識を払しょくしていただきたいと考えます.

なお,この科目は「情報学のための数理・データサイエンス・AI教育プログラム(応用基礎レベル)」の修了要件に必須の科目です.
詳しくは下記の授業一覧を参照してください.
https://drive.google.com/file/d/1t8yglmjSUw5wWSwlljYdNqwC3JN3Axug/view?usp=sharing

実務家担当科目
Not applicable
実務経験の内容

教職課程認定該当学科
Department of Information Design
その他の資格・認定プログラムとの関連
関連する科目である
教育課程コード
Ⅱ2c
教育課程コードの見方【例】 Ⅰ2a(Ⅰ…Ⅰ群、2…2年配当、a…必修) ※ a : 必修 b : 選択必修 c : 選択 ※複数コードが表示されている場合には入学年度・所属学科の学生便覧を参照のこと