プログラム設計演習

科目基礎情報

学校 苫小牧工業高等専門学校 開講年度 平成29年度 (2017年度)
授業科目 プログラム設計演習
科目番号 J3-4069 科目区分 専門 / 必修
授業形態 演習 単位の種別と単位数 履修単位: 3
開設学科 情報工学科 対象学年 3
開設期 通年 週時間数 3
教科書/教材 教科書:柴田 望洋 他「新・明解 C言語によるアルゴリズムとデータ構造」ソフトバンククリエイティブ/参考書:J.L.アントナコス他 「C/C++アルゴリズム入門」 ピアソンエデュケーション, R.L.クルーズ「C++データ構造とプログラム設計」ピアソンエデュケーション, 浅野他「計算とアルゴリズム」 オーム社, 石畑「岩波講座ソフトウェア科学3 アルゴリズムとデータ構造」岩波書店, 疋田「Cで書くアルゴリズム」サイエンス社, 野崎「アルゴリズムと計算量」共立出版, 河西「Javaによるはじめてのアルゴリズム入門」技術評論社, 他多数.
担当教員 原田 恵雨

到達目標

1) 与えられたプログラムの読解,要求仕様を満たすプログラムの作成ができる.
2) 代表的なソートアルゴリズムについて,実装を通して理解できる.
3) 代表的なデータ構造について,実装を通して理解できる.
4) ソートアルゴリズム,データ構造について,計算量,安定性等の面から性能を評価できる.

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
評価項目1アルゴリズムやデータ構造の実装に必要となる,再帰呼出し・ファイル入出力等について,読解,コーディングができる.アルゴリズムやデータ構造の実装に必要となる,再帰呼出し・ファイル入出力等の基本的な部分について,読解,コーディングができる.アルゴリズムやデータ構造の実装に必要となる,再帰呼出し・ファイル入出力等について,読解,コーディングができない.
評価項目2基本的なデータ構造である連結リストの仕組み,およびスタック・キューへの応用について理解し,自力でコーディングできる.基本的なデータ構造である連結リストの仕組み,およびスタック・キューの基本について理解し,自力でコーディングできる.基本的なデータ構造である連結リストの仕組み,およびスタック・キューへの応用について理解できず,自力でコーディングできない.
評価項目3比較的簡単なソートアルゴリズムおよび高度なソートアルゴリズムを理解し,自力でコーディングできる.比較的簡単なソートアルゴリズムを理解し,自力でコーディングできる.比較的簡単なソートアルゴリズムおよび高度なソートアルゴリズムを理解できず,自力でコーディングできない.

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

学習目標 Ⅱ 学校目標 D(工学基礎) 学科目標 D(工学基礎) 本科の点検項目 D-ⅲ 学校目標 E(継続的学習) 本科の点検項目 E-ⅱ 学校目標 F(専門の実践技術) 学科目標 F(専門の実践技術) 本科の点検項目 F-ⅰ

教育方法等

概要:
この授業では,1,2年で学んできたプログラミングの基礎知識を要する.
第1,2学年で開講されている「プログラミング」は,情報処理技術者としてソフトウェア開発を行うために必要なプログラミング技法を修得することが目的であり,第3学年の「プログラム設計演習」では,有用なアルゴリズムおよびデータ構造を学び,さらに何らかのプログラミング言語で実現することにより,計算の効率も含めて理解することに重点を置く.
授業の進め方と授業内容・方法:
授業は各単元において,教科書と配布資料に基づき口頭説明した上,各自プログラムを実装する.適宜参考コードを示し,各自が書いたプログラムと比較し,理解を深める。
関連文書は実習室のPCで閲覧可とする.
不定期に提出が必要な課題を課すが,授業時間内に完成しない場合は自習時間を使って完成させること.
注意点:
プログラミング技術向上のためには,日頃の努力が必要である.したがって,不定期に出題される課題については,提出の要・不要を問わず,必ずすべて完成させるよう努力すること.
原則,実習室で授業を行うものとする.
基本的にプログラムは一人で組むが,相当考えても問題が解決しない場合は周囲の学生や教員と相談することが望ましい.当たり前のことだが,そこで教わったことは理解してかつ他の問題にも適用できるようにする努力が必要である.
提出が必要な課題において,不正コピーが見つかった場合は当該課題点を0にするなどのペナルティを与える.

授業計画

授業内容・方法 週ごとの到達目標
前期
1週 各プログラミング言語の比較,基本事項の修得/基本的な知識/構文等,言語間の比較 新しいプログラミング言語の基本的な文法・ファイル入出力等について,コーディングまたは読解ができる.
2週 各プログラミング言語の比較,基本事項の修得/基本的な知識/構文等,言語間の比較 新しいプログラミング言語の基本的な文法・ファイル入出力等について,コーディングまたは読解ができる.
3週 各プログラミング言語の比較,基本事項の修得/基本的な知識/構文等,言語間の比較 新しいプログラミング言語の基本的な文法・ファイル入出力等について,コーディングまたは読解ができる.
4週 各プログラミング言語の比較,基本事項の修得/基本的な知識/構文等,言語間の比較 新しいプログラミング言語の基本的な文法・ファイル入出力等について,コーディングまたは読解ができる.
5週 各プログラミング言語の比較,基本事項の修得/基本的な知識/ファイル入出力・例外処理 新しいプログラミング言語の基本的な文法・ファイル入出力等について,コーディングまたは読解ができる.
6週 各プログラミング言語の比較,基本事項の修得/基本的な知識/ファイル入出力・例外処理 新しいプログラミング言語の基本的な文法・ファイル入出力等について,コーディングまたは読解ができる.
7週 各プログラミング言語の比較,基本事項の修得/基本的な知識/ファイル入出力・例外処理 新しいプログラミング言語の基本的な文法・ファイル入出力等について,コーディングまたは読解ができる.
8週 探索アルゴリズム 基本的な探索アルゴリズムについて理解し,自力でコーディングできる.
9週 再帰的アルゴリズム 再帰的アルゴリズムについて理解し,自力でコーディングできる.
10週 再帰的アルゴリズム 再帰的アルゴリズムについて理解し,自力でコーディングできる.
11週 簡単なソートアルゴリズム 比較的簡単なソートアルゴリズムを理解し,自力でコーディングできる.
12週 簡単なソートアルゴリズム 比較的簡単なソートアルゴリズムを理解し,自力でコーディングできる.
13週 計算量と安定性 時間計算量/空間計算量を比較し,各ソートアルゴリズムの特徴を捉える.
14週 シェルソート 高度なソートアルゴリズムを理解し,自力でコーディングできる.
15週 シェルソート 高度なソートアルゴリズムを理解し,自力でコーディングできる.
16週 (1~15週を通して、計画性やコミュニケーションをとることを求める) (1~15週を通して、計画性やコミュニケーションをとることを求める)
後期
1週 マージソート 高度なソートアルゴリズムを理解し,自力でコーディングできる.
2週 マージソート 高度なソートアルゴリズムを理解し,自力でコーディングできる.
3週 クイックソート 高度なソートアルゴリズムを理解し,自力でコーディングできる.
4週 クイックソート 高度なソートアルゴリズムを理解し,自力でコーディングできる.
5週 クイックソート 高度なソートアルゴリズムを理解し,自力でコーディングできる.
6週 連結リスト 基本的なデータ構造である連結リストの仕組みについて理解し,自力でコーディングできる.
7週 連結リスト 基本的なデータ構造である連結リストの仕組みについて理解し,自力でコーディングできる.
8週 連結リスト 基本的なデータ構造である連結リストの仕組みについて理解し,自力でコーディングできる.
9週 連結リスト 基本的なデータ構造である連結リストの仕組みについて理解し,自力でコーディングできる.
10週 スタック・キュー 連結リストの,スタック・キューへの応用について理解し,自力でコーディングできる.
11週 スタック・キュー 連結リストの,スタック・キューへの応用について理解し,自力でコーディングできる.
12週 木構造 木構造に関連する概念および実装方法について理解し,自力でコーディングできる.
13週 木構造 木構造に関連する概念および実装方法について理解し,自力でコーディングできる.
14週 木構造 木構造に関連する概念および実装方法について理解し,自力でコーディングできる.
15週 木構造 木構造に関連する概念および実装方法について理解し,自力でコーディングできる.
16週 (1~15週を通して、計画性やコミュニケーションをとることを求める) (1~15週を通して、計画性やコミュニケーションをとることを求める)

評価割合

課題の体裁・内容および取り組み方合計
総合評価割合100100
基礎的能力5050
専門的能力5050
分野横断的能力00