アルゴリズムとデータ構造Ⅰ

科目基礎情報

学校 北九州工業高等専門学校 開講年度 平成29年度 (2017年度)
授業科目 アルゴリズムとデータ構造Ⅰ
科目番号 0005 科目区分 専門 / 必修
授業形態 授業 単位の種別と単位数 履修単位: 1
開設学科 生産デザイン工学科(情報システムコース) 対象学年 3
開設期 前期 週時間数 2
教科書/教材 渡部 有隆,プログラミングコンテスト攻略のためのアルゴリズムとデータ構造,マイナビ出版,2015
担当教員 白濵 成希

到達目標

1. アルゴリズムと計算量の概念を理解し,効率のよいアルゴリズムのためのデータ構造を用いることができる.
2. 基本的なソートアルゴリズムについて理解し,プログラムを作成・実行して確認することができる.
3. スタック,キュー,リストなどの基本的なデータ構造について理解し,プログラムを作成・実行して確認することができる.
4. 線形探索,二分探索,ハッシュなどの基本的な探索について,プログラムを作成・実行して確認することができる.

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
アルゴリズムとデータ構造複数のアルゴリズムとデータ構造について説明できる.アルゴリズムとデータ構造の概念と必要性を理解できる.アルゴリズムとデータ構造という概念を理解できない.
ソートアルゴリズム各ソートのアルゴリズムについて比較・検討できる.各ソートの特性を理解し,プログラムを作成することができる.各ソートの特性を理解できない.
データ構造(スタック,キュー,リスト)問題に応じて適切なデータ構造を選択することができる.各データ構造の特性を理解し,プログラムを作成することができる.各データ構造の特性を理解できない.
探索(線形探索,二分探索,ハッシュ)問題に応じて適切な探索アルゴリズムを選択することができる.各データ構造の特性を理解し,プログラムを作成することができる.各探索技法の特性を理解できない.

学科の到達目標項目との関係

準学士課程の教育目標 (A)①  数学・物理・化学などの自然科学、情報技術に関する基礎を理解できる。
準学士課程の教育目標 (A)② 自主的・継続的な学習を通じて、基礎科目に関する問題を解くことができる。
準学士課程の教育目標 (B)① 専門分野における工学の基礎を理解できる。
準学士課程の教育目標 (B)② 自主的・継続的な学習を通じて、専門工学の基礎科目に関する問題を解くことができる。

教育方法等

概要:
アルゴリズムの概要と計算効率の概念を理解し,汎用的なアルゴリズムとデータ構造に関して実際にプログラムを作成し動作を確認しながら学習する.
授業の進め方・方法:
テキストによる解説の後,実際にプログラムを作成し動作を確認する.その後オンラインジャッジの課題のプログラムを作成する.
注意点:
C言語の基本的な知識が要求される.必要に応じてC++にも触れる.

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 ガイダンス アルゴリズムとデータ構造を学習する目的を理解できる.
オンラインジャッジシステムを利用できる.
2週 計算量の評価と比較,O表記法
計算量を理解し,評価・比較できる.
O表記法を理解できる.
3週 挿入ソート 挿入ソートのアルゴリズムについて理解し,課題プログラムを作成できる.
4週 バブルソート バブルソートのアルゴリズムについて理解し,課題プログラムを作成できる.
5週 選択ソート 選択ソートのアルゴリズムについて理解し,課題プログラムを作成できる.
6週 安定なソート 常に安定な出力を行うソートについて理解し,課題プログラムを作成できる.
7週 ソート応用 ソートに関する応用的な話題について理解し,課題プログラムを作成できる.
8週 中間試験
2ndQ
9週 スタック スタックについて理解し,課題プログラムを作成できる.
10週 キュー キューについて理解し,課題プログラムを作成できる.
11週 連結リスト 連結リストについて理解し,課題プログラムを作成できる.
12週 線形探索 線形探索について理解し,課題プログラムを作成できる.
13週 二分探索 二分探索について理解し,課題プログラムを作成できる.
14週 ハッシュ ハッシュについて理解し,課題プログラムを作成できる.
15週 定期試験
16週 答案返却

モデルコアカリキュラムの学習内容と到達目標

分類分野学習内容学習内容の到達目標到達レベル授業週
専門的能力分野別の専門工学情報系分野プログラミング与えられた問題に対して、それを解決するためのソースプログラムを記述できる。4
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。4
プログラミング言語は計算モデルによって分類されることを説明できる。4
主要な計算モデルを説明できる。4
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。4
ソフトウェアアルゴリズムの概念を説明できる。3
与えられたアルゴリズムが問題を解決していく過程を説明できる。3
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。3
時間計算量や領域計算量などによってアルゴリズムを比較・評価できることを理解している。3
整列、探索など、基本的なアルゴリズムについて説明できる。3
コンピュータ内部でデータを表現する方法(データ構造)にはバリエーションがあることを説明できる。3
同一の問題に対し、選択したデータ構造によってアルゴリズムが変化しうることを説明できる。3
リスト構造、スタック、キュー、木構造などの基本的なデータ構造の概念と操作を説明できる。3
ソースプログラムを解析することにより、計算量等のさまざまな観点から評価できる。3
同じ問題を解決する複数のプログラムを計算量等の観点から比較できる。3

評価割合

試験課題合計
総合評価割合5050100
基礎的能力202040
専門的能力303060
分野横断的能力000