到達目標
1.構造化プログラミングにおける基本制御構造(順次・選択・反復)を理解し、擬似言語で表現できる。
2.基本的な探索や整列のアルゴリズムを理解し、擬似言語で表現できる。
3.基本的な探索や整列を実現するプログラムをC言語で記述できる。
4.基本的なデータ構造(スタック、キュー、リスト、木構造、ハッシュ表)を説明できる。
5.スタックやキューを用いた簡単なデータ入出力アルゴリズムを擬似言語で表現できる。
ルーブリック
| 理想的な到達レベルの目安 | 標準的な到達レベルの目安 | 未到達レベルの目安 |
1.基本制御構造を含む簡単なアルゴリズムを擬似言語で書き表せる。
(小テスト、中間試験および定期試験で評価) | 極めて正確に書き表せる。 | 少しの誤りはあるものの、ほぼ正確に書き表せる。 | まったく書き表せないか書き表せても誤りが多い。 |
2.基本的な探索や整列のアルゴリズムを擬似言語で書き表せる。
(小テスト、中間試験および定期試験で評価) | 極めて正確に書き表せる。 | 少しの誤りはあるものの、ほぼ正確に書き表せる。 | まったく書き表せないか書き表せても誤りが多い。 |
3.基本的な探索や整列を実現するC言語プログラムを作成できる。
(実習課題で評価) | 仕様どおりに作成できる。 | おおむね仕様どおりに作成できる。 | 作成できないか、作成できても仕様をほとんど満たしていない。 |
4.基本的なデータ構造について説明できる。
(小テスト、中間試験および定期試験で評価) | 極めて正確に説明できる。 | おおむね説明できる。 | まったくまたはほとんど説明できない。 |
5.スタックやキューを用いた簡単なデータ入出力アルゴリズムを擬似言語で書き表せる。
(小テスト、中間試験および定期試験で評価) | 与えられた仕様どおりに極めて正確に書き表せる。 | 少しの誤りはあったり、一部仕様を満たしていない部分があるものの、ほぼ正確に書き表せる。 | まったく書き表せないか書き表せても誤りが多い。 |
学科の到達目標項目との関係
教育方法等
概要:
この授業ではプログラミングにおいて重要であるアルゴリズムとデータ構造について学習する。
まずアルゴリズムの重要性やその良し悪しについて理解した上で、データの探索や整列などの典型的なアルゴリズムについて学習する。
また、アルゴリズムの実現においてデータ構造が重要であることを理解し、種々の基本的なデータ構造について学習する。
キーワード: プログラミング、擬似言語、C言語、アルゴリズム、探索、ソート、データ構造
授業の進め方・方法:
授業はペアワークやグループワークを含んだ講義形式で進める。
各回の授業の冒頭で前回の内容に関する小テストを実施する。
各回の授業の前にあらかじめ教科書を読み、不明なところは調べるなどしてある程度理解しておくこと。
適宜、プログラミングの実習課題を宿題として課す。
注意点:
わからないことがあればその都度質問するなどしてその場で解決することを心がけること。授業中や教員室への訪問以外に、メールやSNSでの質問も受け付ける。
実習課題は学生同士で教え合うなど協力して取り組んでも良いが、誰かが作ったプログラム(インターネット上の情報も含む)をそのままコピーして提出することは不可とする。
授業計画
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
1stQ |
1週 |
ガイダンス、アルゴリズムとは、問題分析 |
アルゴリズムとは何かを説明できる。
|
2週 |
流れ図(フローチャート)、基本制御構造 |
基本制御構造を含む簡単な処理をフローチャートで表せる。
|
3週 |
擬似言語、アルゴリズムの評価基準 |
基本制御構造を含む簡単な処理を擬似言語で表せる。 アルゴリズムの評価基準を挙げ、それぞれについて説明できる。
|
4週 |
配列、ハッシュ表 |
ハッシュ表について説明できる。 ハッシュ表を用いた簡単な処理をフローチャートや擬似言語で表せる。
|
5週 |
リスト構造 |
リスト構造について説明できる。 リスト構造を用いた簡単な処理をフローチャートや擬似言語で表せる。
|
6週 |
スタック、キュー |
スタックとキューについて説明できる。 スタックやキューを用いた簡単な処理をフローチャートや擬似言語で表わせる。
|
7週 |
木構造、2分木の基本操作 |
木構造や2分木について説明できる。
|
8週 |
中間試験 |
|
2ndQ |
9週 |
中間試験の解説、線形探索、ハッシュ探索 |
線形探索とハッシュ探索について説明できる。 線形探索のアルゴリズムをフローチャートや擬似言語で表せるとともに、簡単なプログラムをC言語で作成することができる。
|
10週 |
2分探索、探索の計算量 |
2分探索と探索アルゴリズムの計算量について説明できる。 2分探索アルゴリズムをフローチャートや擬似言語で表せる。
|
11週 |
基本選択法、ヒープソート |
基本選択法とヒープソートについて説明できる。 基本選択法のアルゴリズムをフローチャートや擬似言語で表せるとともに、簡単なC言語プログラムを作成することができる。
|
12週 |
基本交換法、シェーカソート |
基本交換法とシェーカソートについて説明できる。 基本交換法のアルゴリズムをフローチャートや擬似言語で表せるとともに、簡単なC言語プログラムを作成することができる。
|
13週 |
基本挿入法、シェルソート |
基本挿入法とシェルソートについて説明できる。 基本挿入法のアルゴリズムをフローチャートや擬似言語で表せるとともに、簡単なC言語プログラムを作成することができる。
|
14週 |
マージソート |
マージソートについて説明できる。 マージソートのアルゴリズムをフローチャートや擬似言語で表せるとともに、簡単なC言語プログラムを作成できる。
|
15週 |
クイックソート |
クイックソートについて説明できる。 クイックソートのアルゴリズムをフローチャートや擬似言語で表せるとともに、簡単なC言語プログラムを作成できる。
|
16週 |
定期試験 |
|
モデルコアカリキュラムの学習内容と到達目標
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
専門的能力 | 分野別の専門工学 | 電気・電子系分野 | 情報 | 基本的なアルゴリズムを理解し、図式表現できる。 | 3 | |
プログラミング言語を用いて基本的なプログラミングができる。 | 3 | |
情報系分野 | ソフトウェア | アルゴリズムの概念を説明できる。 | 3 | 前1 |
与えられたアルゴリズムが問題を解決していく過程を説明できる。 | 3 | 前2,前3 |
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。 | 3 | 前1 |
時間計算量や領域計算量などによってアルゴリズムを比較・評価できることを理解している。 | 3 | 前3,前10 |
整列、探索など、基本的なアルゴリズムについて説明できる。 | 3 | 前9,前10,前11,前12,前13,前14,前15 |
コンピュータ内部でデータを表現する方法(データ構造)にはバリエーションがあることを説明できる。 | 3 | 前4 |
同一の問題に対し、選択したデータ構造によってアルゴリズムが変化しうることを説明できる。 | 3 | 前4 |
リスト構造、スタック、キュー、木構造などの基本的なデータ構造の概念と操作を説明できる。 | 3 | 前5,前6,前7 |
評価割合
| 中間試験 | 定期試験 | 小テスト | 実習課題 | 合計 |
総合評価割合 | 35 | 35 | 10 | 20 | 100 |
基礎的能力 | 0 | 0 | 0 | 0 | 0 |
専門的能力 | 35 | 35 | 10 | 20 | 100 |
分野横断的能力 | 0 | 0 | 0 | 0 | 0 |