概要:
プログラムを設計するために重要なものは、アルゴリズムとデータ構造である。本科目では、まずC言語の文法を復習して配列やポインタを用いたデータ処理の方法を学び、データの探索や整列を行う基本的なアルゴリズムとその処理に適する基本的なデータ構造について学ぶ。そして、学習したアルゴリズムやデータ構造の理解を深めるために、実際にC言語のプログラムを作成する。さらに、上級CプログラミングとしてC言語ならではの技法も身につける。本科目は講義と演習を交互に実施し、プログラミング能力を身につけるものである。
授業の進め方・方法:
C言語の文法の重要な点を復習し、データの探索や整列のための基本的なアルゴリズムを学ぶ。学習したアルゴリズムについて、実際にプログラミングすることで理解を深める。さらに、上級CプログラミングとしてC言語ならではの技法も身につける。本科目は講義と演習を交互に実施し、プログラミング能力を身につける。
注意点:
プログラミングI, IIA, IIB を修得していることが望ましい。ノートパソコンを持参すること。
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
1stQ |
1週 |
シラバスを用いた授業内容の説明、プログラミング環境の設定、C言語の基礎の復習 |
開発環境を設定し、使用することができる。C言語の文法とプログラミングの基礎が理解できる。
|
2週 |
配列・構造体・ポインタの応用、動的メモリ管理 |
C言語の配列とポインタ、構造体を利用したデータ処理ができる。malloc(), calloc()による動的メモリ管理ができる。
|
3週 |
基本的なアルゴリズムとデータ構造 |
アルゴリズムの概念を理解し、同じ問題を解くために複数のアルゴリズムやデータ構造が存在することを理解する。
|
4週 |
探索アルゴリズム:線形探索・二分探索 |
線形探索アルゴリズム、二分探索アルゴリズムを理解し、プログラムを作成できる。アルゴリズムの計算量を見積もり、比較評価できる。
|
5週 |
探索アルゴリズム:ハッシュ法、小テスト1 |
ハッシュ法による探索アルゴリズムを理解し、プログラムを作成できる。
|
6週 |
データ構造:スタック・キュー・線形リスト |
アルゴリズムを処理するための各データ構造(スタック・キュー・線形リスト)が理解できる。
|
7週 |
再帰アルゴリズム:概念とプログラム、階乗・最大公約数・ハノイの塔 |
再帰アルゴリズムの概念を理解し、具体的な再帰プログラムの処理の流れを解析することができる。
|
8週 |
整列アルゴリズム:選択法・挿入法・交換法 |
整列アルゴリズムの選択法・挿入法・交換法を理解し、プログラムを作成できる。
|
2ndQ |
9週 |
整列アルゴリズム:シェルソート・クイックソート |
整列アルゴリズムのシェルソート・クイックソートを理解し、プログラムを作成できる。
|
10週 |
再帰・整列アルゴリズムのまとめ、小テスト2 |
再帰アルゴリズム・整列アルゴリズムについて説明できる。
|
11週 |
文字列操作:文字列の表現、文字列どうしの比較、パターン検索 |
C言語における文字列操作を理解し、文字列どうしの比較やパターン検索のプログラムを作成できる。
|
12週 |
ビット操作:データのビット表現、ビット演算、ビットベクトルによる集合 |
C言語におけるビット操作を理解し、ビット表現を利用したプログラムを作成できる。
|
13週 |
ファイル処理:データのファイル入出力、テキスト形式とバイナリ形式 |
C言語におけるファイル操作を理解し、データをテキスト形式やバイナリ形式で入出力するプログラムを作成できる。
|
14週 |
ディレクトリ操作:ファイル情報の取得、ファイルリストの作成、ファイル検索 |
C言語によるディレクトリ操作を理解し、ディレクトリ内のファイルを処理するプログラムを作成できる。
|
15週 |
前期総まとめ |
C言語によるプログラミングの基礎から上級までを理解し、各種アルゴリズムを処理するプログラムを作成できる。
|
16週 |
|
|
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
基礎的能力 | 工学基礎 | 情報リテラシー | 情報リテラシー | 同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを知っている。 | 4 | 前3,前4 |
与えられた基本的な問題を解くための適切なアルゴリズムを構築することができる。 | 4 | 前3,前12 |
任意のプログラミング言語を用いて、構築したアルゴリズムを実装できる。 | 4 | 前1,前2 |
専門的能力 | 分野別の専門工学 | 情報系分野 | ソフトウェア | アルゴリズムの概念を説明できる。 | 4 | 前3 |
与えられたアルゴリズムが問題を解決していく過程を説明できる。 | 4 | 前3,前7 |
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。 | 4 | 前3,前8,前9 |
整列、探索など、基本的なアルゴリズムについて説明できる。 | 4 | 前4,前5,前8,前9 |
時間計算量によってアルゴリズムを比較・評価できることを説明できる。 | 4 | 前4 |
領域計算量などによってアルゴリズムを比較・評価できることを説明できる。 | 4 | 前4 |
コンピュータ内部でデータを表現する方法(データ構造)にはバリエーションがあることを説明できる。 | 3 | 前3,前6 |
同一の問題に対し、選択したデータ構造によってアルゴリズムが変化しうることを説明できる。 | 3 | 前3,前6 |
リスト構造、スタック、キュー、木構造などの基本的なデータ構造の概念と操作を説明できる。 | 3 | 前6 |
リスト構造、スタック、キュー、木構造などの基本的なデータ構造を実装することができる。 | 3 | 前6 |
ソースプログラムを解析することにより、計算量等のさまざまな観点から評価できる。 | 4 | 前4 |
同じ問題を解決する複数のプログラムを計算量等の観点から比較できる。 | 4 | 前4 |