応用プログラミング

科目基礎情報

学校 仙台高等専門学校 開講年度 令和03年度 (2021年度)
授業科目 応用プログラミング
科目番号 0045 科目区分 専門 / 必修
授業形態 授業 単位の種別と単位数 学修単位: 2
開設学科 総合工学科Ⅰ類 対象学年 3
開設期 後期 週時間数 2
教科書/教材 アルゴリズムとデータ構造 第2版,藤原暁宏著,森北出版
担当教員 安藤 敏彦

到達目標

配列やリスト、スタック,キュー,木などデータ構造の説明ができ、探索、ソートなどの主要なアルゴリズムの実装ができる.また、計算量の考え方を使って複数のアルゴリズムの間の比較ができる.

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
データ構造の説明データ構造各々の特徴を理解し、具体的な応用例を説明できる.データ構造各々の特徴を説明できる.データ構造の特徴を説明できない.
アルゴリズムの実装C言語でアルゴリズムを実装し、他の課題について応用できる.C言語でアルゴリズムを実装してプログラムを作成できる.C言語でアルゴリズムを実装することができない.
複数のアルゴリズムの間の比較複数のアルゴリズムを計算量をもとに比較することができる.いくつかのアルゴリズムの計算量をオーダ記法で評価できる.オーダ記法による評価ができない.

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

教育方法等

概要:
基本的なデータ構造の概念と操作を理解し,問題に対し適切なデータ構造を選択する重要性を学ぶ。
また,基本的なアルゴリズムを理解し,コンピュータプログラムとして実装・評価していく。
授業の進め方・方法:
毎回、講義および演習を行う。講義資料はBlackboardにアップロードし、自宅からも閲覧できるようにしておく。
[事前学習] テキストを確認し予習をしておく。
[事後学習] 授業内容を復習し、課題を行うことでアルゴリズムの詳細を理解する。
注意点:
学習内容には抽象度の高い概念が含まれる。これらの概念を定着させ,実現するために,演習内容に習熟するよう留意すること。また,アルゴリズムの内容とデータ構造を正しく理解するために,積極的にそれらを用いて習熟するよう留意すること。
自学自習として,各回の授業内容,達成項目及び教科書内容を確認しておくこと。学習内容に含まれる概念を理解するために,教科書等に掲載されている例題を基に十分復習すること。理解を確実にするため,各回の授業内容に関連する例題や練習問題を実行し解くこと。

授業の属性・履修上の区分

アクティブラーニング
ICT 利用
遠隔授業対応
実務経験のある教員による授業

授業計画

授業内容 週ごとの到達目標
後期
3rdQ
1週 アルゴリズムの基礎。 アルゴリズムの意味と、アルゴリズムの評価について理解できる。
アルゴリズムの表記法について理解できる。
2週 配列を用いた探索(配列)1 線形探索について理解できる。2分探索法について理解できる。
3週 配列を用いた探索(配列)2 ハッシュ法について理解できる。
4週 ソート(配列)1 選択ソート,挿入ソートについて理解できる。
5週 ソート(配列)2 ヒープソートについて理解できる。
6週 ソート(配列)3 クイックソートについて理解できる。
7週 データ構造1 連結リスト(線形リスト)とデータの追加、探索について理解できる.
8週 後期中間試験の返却、解説
データ構造 2 
線形リストとデータの追加、探索について理解できる。
4thQ
9週 データ構造 3 スタック、キューについて理解できる。
10週 データ構造 4 木構造とデータの追加、探索について理解できる。
11週 計算量 アルゴリズムの評価について理解できる。O記法について理解できる。
12週 応用1 探索法:深さ優先、幅優先 アルゴリズムを設計するための設計手法について理解できる。
13週 応用2 ダイクストラ法 アルゴリズムを設計するための設計手法について理解できる.
14週 応用 3 アルゴリズムの設計手法 アルゴリズムを設計するための設計手法について理解できる.
15週 後期期末試験の返却
16週

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

分類分野学習内容学習内容の到達目標到達レベル授業週
基礎的能力工学基礎情報リテラシー情報リテラシー同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを知っている。3
与えられた基本的な問題を解くための適切なアルゴリズムを構築することができる。3
任意のプログラミング言語を用いて、構築したアルゴリズムを実装できる。3
専門的能力分野別の専門工学情報系分野プログラミング与えられた問題に対して、それを解決するためのソースプログラムを記述できる。4
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。4
与えられたソースプログラムを解析し、プログラムの動作を予測することができる。4
主要な言語処理プロセッサの種類と特徴を説明できる。4
ソフトウェアアルゴリズムの概念を説明できる。4
与えられたアルゴリズムが問題を解決していく過程を説明できる。4
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。4
整列、探索など、基本的なアルゴリズムについて説明できる。4
時間計算量によってアルゴリズムを比較・評価できることを説明できる。4
領域計算量などによってアルゴリズムを比較・評価できることを説明できる。4
コンピュータ内部でデータを表現する方法(データ構造)にはバリエーションがあることを説明できる。4
同一の問題に対し、選択したデータ構造によってアルゴリズムが変化しうることを説明できる。4
リスト構造、スタック、キュー、木構造などの基本的なデータ構造の概念と操作を説明できる。4
リスト構造、スタック、キュー、木構造などの基本的なデータ構造を実装することができる。4
ソースプログラムを解析することにより、計算量等のさまざまな観点から評価できる。3
同じ問題を解決する複数のプログラムを計算量等の観点から比較できる。3
分野別の工学実験・実習能力情報系分野【実験・実習能力】情報系【実験・実習】与えられた問題に対してそれを解決するためのソースプログラムを、標準的な開発ツールや開発環境を利用して記述できる。4
ソフトウェア生成に利用される標準的なツールや環境を使い、ソースプログラムをロードモジュールに変換して実行できる。4
ソフトウェア開発の現場において標準的とされるツールを使い、生成したロードモジュールの動作を確認できる。4
フローチャートなどを用いて、作成するプログラムの設計図を作成することができる。4
問題を解決するために、与えられたアルゴリズムを用いてソースプログラムを記述し、得られた実行結果を確認できる。4
標準的な開発ツールを用いてプログラミングするための開発環境構築ができる。4
要求仕様にあったソフトウェア(アプリケーション)を構築するために必要なツールや開発環境を構築することができる。4

評価割合

試験発表相互評価態度ポートフォリオ課題合計
総合評価割合70000030100
専門的能力70000030100