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

科目基礎情報

学校 鳥羽商船高等専門学校 開講年度 平成30年度 (2018年度)
授業科目 アルゴリズムとデータ構造
科目番号 1148 科目区分 専門 / 必修
授業形態 講義 単位の種別と単位数 履修単位: 2
開設学科 制御情報工学科 対象学年 3
開設期 通年 週時間数 2
教科書/教材 新・明解C言語によるアルゴリズムとデータ構造 柴田望洋、辻亮介 ソフトバンククリエイティブ
担当教員 土田 隼之

到達目標

1.与えられたアルゴリズムが問題をといていく過程を説明できる.
2.同じ問題を解決する複数のプログラムを,時間計算量等の観点から比較できる.

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
評価項目1データ構造とアルゴリズムの関係について説明できる.スタック,キューについて説明できる.基本的なプログラムを作成できない.
評価項目2整列・検索のプログラムを作成することができる.整列・検索のアルゴリズムを説明できる.整列・検索のアルゴリズムの説明ができない.
評価項目3時間計算量を計算し,アルゴリズムを比較することができる.時間計算量を説明できる.計算量の説明ができない.

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

学習・教育到達度目標 (B2) 説明 閉じる
学習・教育到達度目標 (B3) 説明 閉じる

教育方法等

概要:
本科目の目的は,効率的なプログラムを作成するための,基本的なアルゴリズムに関する知識と,実際にプログラムを作成することができる技術の習得である.
授業の進め方・方法:
・講義内容は,C言語に用いて説明をする.
・講義で取り上げたアルゴリズムは,演習問題,課題によって,実際にプログラムを作成して理解を深める.
注意点:
・C言語に関するプログラミングの授業を履修していることが望ましい
・講義前半で,C言語開発環境でのプログラミング説明を行うが,C言語を用いた基本的なプログラム能力は必須である.

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 ガイダンス 授業内容の工学的位置づけを説明できる.世の中で使われているアルゴリズムの具体例と効果が説明できる.
2週 アルゴリズムと基本データ構造1 アルゴリズムとは何か説明できる.配列,構造体について説明できる.
3週 アルゴリズムと基本データ構造2 配列,構造体が作成できる.
4週 探索1 探索アルゴリズムの概要を説明できる.
5週 探索2 探索アルゴリズムの詳細を説明できる.
6週 探索3 探索プログラムを作成できる.
7週 中間試験 中間試験
8週 スタックとキュー1 スタックとキューのプログラムの概要を説明できる.
2ndQ
9週 スタックとキュー2 スタックとキューのプログラムの詳細を説明できる.
10週 スタックとキュー3 スタックとキューのプログラムを作成できる.
11週 再帰アルゴリズム1 再帰アルゴリズムの概要を説明できる.
12週 再帰アルゴリズム2 再帰アルゴリズムの詳細を説明できる.
13週 再帰アルゴリズム3 再帰アルゴリズムをアドバイスをもらいながら作成できる.
14週 再帰アルゴリズム4 再帰アルゴリズムを作成できる.
15週 定期試験 定期試験
16週 試験解説と総括 間違った問題を解くことができる.
後期
3rdQ
1週 整列1 整列アルゴリズムの概要を説明できる.
2週 整列2 整列アルゴリズムの詳細を説明できる.
3週 整列3 整列のプログラムをアドバイスをもらいながら作成できる.
4週 整列4 整列のプログラムを作成できる.
5週 集合1 集合のプログラムの説明ができる.
6週 集合2 集合のプログラムが作成できる.
7週 中間試験 中間試験
8週 文字列探索1 文字列探索のプログラムを説明できる.
4thQ
9週 文字列探索2 文字列探索のプログラムが作成できる.
10週 線形リスト1 線形リストのプログラムの概要が説明できる.
11週 線形リスト2 線形リストのプログラムの詳細が説明できる.
12週 線形リスト3 線形リストのプログラムを作成できる.
13週 木構造1 木構造のアルゴリズムを説明できる.
14週 木構造2 木構造のアルゴリズムを作成できる.
15週 定期試験 定期試験
16週 試験解説と総括 間違った問題を解くことができる.

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

分類分野学習内容学習内容の到達目標到達レベル授業週
基礎的能力工学基礎情報リテラシー情報リテラシー同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを知っている。3前1,前2,前4,前5,後1,後2,後8
与えられた基本的な問題を解くための適切なアルゴリズムを構築することができる。3前3,前6,前10,前13,前14,後3,後4,後6,後9,後12,後14
任意のプログラミング言語を用いて、構築したアルゴリズムを実装できる。3前6,前10,前13,前14,後3,後4,後6,後9,後12,後14
専門的能力分野別の専門工学電気・電子系分野電気回路電荷と電流、電圧を説明できる。1
オームの法則を説明し、電流・電圧・抵抗の計算ができる。2
電子回路ダイオードの特徴を説明できる。2
バイポーラトランジスタの特徴と等価回路を説明できる。2
FETの特徴と等価回路を説明できる。2
情報系分野プログラミング代入や演算子の概念を理解し、式を記述できる。4前2,前6,前10,前13,前14,後3,後4,後6
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。3前2,前6,前10,前13,前14,後3,後4,後6
変数の概念を説明できる。4前2,前6,前10,前13,前14,後3,後4,後6
データ型の概念を説明できる。4前2,前6,前10,前13,前14,後3,後4,後6
制御構造の概念を理解し、条件分岐を記述できる。4前3,前6,前10,前13,前14,後3,後4,後6
制御構造の概念を理解し、反復処理を記述できる。4前3,前6,前10,前13,前14,後3,後4,後6
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。3前3,前6,前10,前13,前14,後3,後4,後6,後9,後12,後14
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。4前3,前6,前10,前13,前14,後3,後4,後6,後9,後12,後14
与えられたソースプログラムを解析し、プログラムの動作を予測することができる。3前3,前6,前10,前13,前14,後3,後4,後6,後9,後12,後14
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。3前3,前6,前10,前13,前14,後3,後4,後6,後9,後12,後14
要求仕様に従って、いずれかの手法により動作するプログラムを設計することができる。3前3,前6,前10,前13,前14,後3,後4,後6,後9,後12,後14
要求仕様に従って、いずれかの手法により動作するプログラムを実装することができる。3前3,前6,前10,前13,前14,後3,後4,後6,後9,後12,後14
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを実装できる。3前3,前6,前10,前13,前14,後3,後4,後6,後9,後12,後14
ソフトウェアアルゴリズムの概念を説明できる。4前1,前2,前4,前5,前8,前9,前11,前12,後1,後2,後5,後8,後10,後11,後13
与えられたアルゴリズムが問題を解決していく過程を説明できる。4前4,前5,前8,前9,前11,前12,後1,後2,後5,後8,後10,後11,後13
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。4前4,前5,前8,前9,前11,前12,後1,後2,後8
整列、探索など、基本的なアルゴリズムについて説明できる。4前4,前5,後1,後2
時間計算量によってアルゴリズムを比較・評価できることを説明できる。4前4,前5,後1,後2
領域計算量などによってアルゴリズムを比較・評価できることを説明できる。4後1,後2
コンピュータ内部でデータを表現する方法(データ構造)にはバリエーションがあることを説明できる。4前8,前9,後5,後8,後10,後11,後13
同一の問題に対し、選択したデータ構造によってアルゴリズムが変化しうることを説明できる。4後10,後11
リスト構造、スタック、キュー、木構造などの基本的なデータ構造の概念と操作を説明できる。4前8,前9,後10,後11,後13
リスト構造、スタック、キュー、木構造などの基本的なデータ構造を実装することができる。4前10,後12,後14
ソースプログラムを解析することにより、計算量等のさまざまな観点から評価できる。4前4,前5,後1,後2
同じ問題を解決する複数のプログラムを計算量等の観点から比較できる。4前4,前5,後1,後2
その他の学習内容少なくとも一つの具体的なコンピュータシステムについて、起動・終了やファイル操作など、基本的操作が行える。4前1,前2,前3,前4,前5,前6,前8,前9,前10,前11,前12,前13,前14,後1,後2,後3,後4,後5,後6,後8,後9,後10,後11,後12,後13,後14
少なくとも一つの具体的なオフィススイート等を使って、文書作成や図表作成ができ、報告書やプレゼンテーション資料を作成できる。4前3,前6,前10,前14,後4,後6,後12,後14
分野別の工学実験・実習能力情報系分野【実験・実習能力】情報系【実験・実習】与えられた問題に対してそれを解決するためのソースプログラムを、標準的な開発ツールや開発環境を利用して記述できる。4前3,前6,前10,前13,前14,後3,後4,後6,後9,後12,後14
ソフトウェア生成に利用される標準的なツールや環境を使い、ソースプログラムをロードモジュールに変換して実行できる。4前3,前6,前10,前13,前14,後3,後4,後6,後9,後12,後14
ソフトウェア開発の現場において標準的とされるツールを使い、生成したロードモジュールの動作を確認できる。4前3,前6,前10,前13,前14,後3,後4,後6,後9,後12,後14
フローチャートなどを用いて、作成するプログラムの設計図を作成することができる。3前3,前6,前10,前13,前14,後3,後4,後6,後9,後12,後14
問題を解決するために、与えられたアルゴリズムを用いてソースプログラムを記述し、得られた実行結果を確認できる。3前3,前6,前10,前13,前14,後3,後4,後6,後9,後12,後14
標準的な開発ツールを用いてプログラミングするための開発環境構築ができる。3前1,前3,前6,前10,前13,前14,後3,後4,後6,後9,後12,後14
要求仕様にあったソフトウェア(アプリケーション)を構築するために必要なツールや開発環境を構築することができる。3前1,前3,前6,前10,前13,前14,後3,後4,後6,後9,後12,後14

評価割合

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