アルゴリズム演習

科目基礎情報

学校 鶴岡工業高等専門学校 開講年度 2018
授業科目 アルゴリズム演習
科目番号 0236 科目区分 専門 / 選択
授業形態 演習 単位の種別と単位数 学修単位: 1
開設学科 _創造工学科 対象学年 4
開設期 前期 週時間数 前期:2
教科書/教材 河西朝雄: C言語によるはじめてのアルゴリズム入門,技術評論社/久保田稔: 基礎から学ぶ アルゴリズムとデータ構造,ムイスリ出版
担当教員 吉住 圭市

到達目標

技術者として必要なアルゴリズムの基礎を学び,学んだ内容をC言語で実現できる。

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
評価項目1代表的なアルゴリズムをプログラムとして実装し,改良することができる。代表的なアルゴリズムをプログラムとして実装できる。代表的なアルゴリズムをプログラムとして実装できない。
評価項目2
評価項目3

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

教育方法等

概要:
技術者として必要なアルゴリズムの基礎を学び,その応用方法を習得する。また,実際の工学で使われている例を多く知ることで,決まった解法(公式)を覚えるのではなく,コンピュータを用いた問題解決法を学ぶ。
授業の進め方・方法:
課題について,実際にプログラムを作成し,動作を確認することで,アルゴリズムの理解を深める。4年次開講データ構造で学んだことを実際にプログラムとして実現することで,アルゴリズムとデータ構造の関係について理解を深める。代表的なアルゴリズムについて,C言語のプログラムとして実装する。
演習への取り組み30%,レポート70%で総合評価し,60点以上を合格とする。
注意点:
演習科目であり,実際にパソコンを使い,積極的にプログラミングに取り組むことが重要である。

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 配列
・順位付け
・エラトステネスの篩
エラトステネスの篩により,素数を求めることができる。
2週 エラトステネスの篩の改良 エラトステネスの篩を改良し,大きな素数を求める。
3週 探索
・逐次探索と番兵
・2分探索
逐次探索法における「番兵」について説明できる。
4週 探索
・ハッシュ
ハッシュ法を理解し,プログラムとして実現できる。
5週 スタック スタックを理解し,C言語で実現できる。
6週 キュー キューを理解し,C言語で実現できる。
7週 連結リスト 連結リストとポインタについて理解する。
8週 連結リストによるデータ管理(1) 連結リストを使ったプログラムを作成できる。
2ndQ
9週 連結リストによるデータ管理(2) 連結リストを使ったプログラムを作成できる。
10週 2分探索木
・配列表現
・動的表現
2分探索木を理解し,C言語で実現できる。
11週 2分探索木によるデータ管理(1) 動的表現法により2分探索木を実装する。
12週 2分探索木によるデータ管理(2) 動的表現法により2分探索木を実装する。
13週 整列(基本ソート)
・バブルソート
・直接選択法
・基本挿入法
整列に関する基本的なアルゴリズムの特徴を理解する。
14週 再帰
・フィボナッチ数列
・ユークリッドの互除法
再帰の考え方を理解し,プログラムとして実現する。
15週 整列
・クイックソート
・ヒープソート
クイックソート,ヒープソートを再帰を使って実現できる。
16週

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

分類分野学習内容学習内容の到達目標到達レベル授業週
専門的能力分野別の専門工学情報系分野プログラミング代入や演算子の概念を理解し、式を記述できる。4
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。4
変数の概念を説明できる。4
データ型の概念を説明できる。4
制御構造の概念を理解し、条件分岐を記述できる。4
制御構造の概念を理解し、反復処理を記述できる。4
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。4
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。4
与えられたソースプログラムを解析し、プログラムの動作を予測することができる。4
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。4
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。3
ソフトウェアアルゴリズムの概念を説明できる。4
与えられたアルゴリズムが問題を解決していく過程を説明できる。3
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。3
整列、探索など、基本的なアルゴリズムについて説明できる。4
コンピュータ内部でデータを表現する方法(データ構造)にはバリエーションがあることを説明できる。4
同一の問題に対し、選択したデータ構造によってアルゴリズムが変化しうることを説明できる。4
リスト構造、スタック、キュー、木構造などの基本的なデータ構造の概念と操作を説明できる。4
リスト構造、スタック、キュー、木構造などの基本的なデータ構造を実装することができる。4
ソフトウェアを中心としたシステム開発のプロセスを説明できる。4
ソースプログラムを解析することにより、計算量等のさまざまな観点から評価できる。4
同じ問題を解決する複数のプログラムを計算量等の観点から比較できる。4
その他の学習内容少なくとも一つの具体的なコンピュータシステムについて、起動・終了やファイル操作など、基本的操作が行える。4
少なくとも一つの具体的なオフィススイート等を使って、文書作成や図表作成ができ、報告書やプレゼンテーション資料を作成できる。4
少なくとも一つのメールツールとWebブラウザを使って、メールの送受信とWebブラウジングを行うことができる。4

評価割合

試験発表相互評価態度ポートフォリオその他合計
総合評価割合00030070100
基礎的能力0003003060
専門的能力000003030
分野横断的能力000001010