1. C言語の文法全般を理解し、小・中規模なプログラムを作成できる。
2. 基本アルゴリズム(整列、探索)について説明でき、それらを使ったプログラミングができる。
3. Java言語を用いてクラスとメソッドを理解し、小規模なJavaプログラムを作成できる。
概要:
2年次の「プログラミング基礎」で学んだC言語プログラミングを復習および強化しながら、不足していた文法(構造体等)学習し、小・中規模のプログラムを作成する課題に取り組む。基本アルゴリズム(整列、探索)について学習し、それらを使ったプログラムを作成する。Java言語を学習し,オブジェクト指向プログラミングの基礎であるクラスとメソッドについて学習する。
授業の進め方・方法:
前期前半はC言語の完成、前期後半は基本アルゴリズムの整列・探索、後期前半は応用課題、後期後半はJava言語の導入を行う。前期の基本的な1回の授業の構成は、前半に説明・演習問題・確認問題等により、その単元の内容を理解し、後半にプログラムを作成する実習課題に取り組む。実習課題は次の授業までに提出する。試験前には演習問題を行う。
注意点:
・本科目は,2年の「プログラミング基礎」の続きであり,4年の「応用プログラミングI」,「ディジタルシステムA・B」に発展する。Java言語については4年の「ソフトウェア分析設計」への導入である。
・授業は講義と実習からなり,実習課題はレポートとして提出する。
・プログラムの作成にあたっては,①課題内容を十分検討,②プログラムの設計図(フローチャート/PAD),③コーディング,④検証(テスト)を行い、課題を満足するか確認することが大切である。
・事前事後の学習内容:実習課題は授業時間内に終わらない場合が多いため、事後の学習として放課後等を利用して実習課題を完成させる。
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
1stQ |
1週 |
◇C言語の完成 導入、復習1、PADの導入 |
基礎的なプログラムを読み書きできる。PADを描ける。
|
2週 |
復習2:課題プログラミング |
乱数関数を使うことが出来る。じゃんけんの勝敗規則を発見できる。「じゃんけんゲーム」のPADを描き、プログラミングできる。
|
3週 |
復習3:ポインタとコマンドライン入力 |
ポインタを使ったプログラムを読み書きできる。コマンドライン引数を使ったプログラミングができる。
|
4週 |
構造体1 |
構造体を使ったプログラムを読み書きできる。
|
5週 |
構造体2 |
構造体のポインタを使ったプログラムを読み書きできる。
|
6週 |
動的領域確保 malloc |
記憶領域の動的確保関数mallocを使ったプログラムを 読み書きできる。
|
7週 |
演習問題 |
演習問題を解くことができる。
|
8週 |
前期中間試験 |
試験問題を解くことができる。
|
2ndQ |
9週 |
デバッガ(gdb) |
デバッガgdbを使うことができる。gdbのクイック・リファレンスを作成できる。
|
10週 |
◇アルゴリズム基礎 ウォーミングアップ:漸化式 |
アルゴリズムとは何か説明できる。「組み合わせ数」を求めるプログラムを求めるプログラムを、複数のアルゴリズムで作成できる。
|
11週 |
基本ソート1:直接選択法、バブルソート |
基本ソートである直接選択法とバブルソートについてアルゴリズムを説明できる。バブルソートのプログラムを作成できる。
|
12週 |
基本ソート2:基本挿入法 |
基本挿入法によるソートアルゴリズムを説明できる。基本挿入法によるソー トプログラムを作成できる。直接選択法、バブルソート、 基本挿入法のプログラムを作成できる。
|
13週 |
ソートの計算量 |
基本ソートの計算量(ビッグO表記)を求めることができる
|
14週 |
サーチ:逐次探索、2分探索 |
探索アルゴリズムを2種類学び、それらの探索速度が 大きく異ることを説明できる。2分探索法のアルゴリズム のPADを描ける。2分探索法を用いたプログラムを作成で きる。
|
15週 |
演習問題 |
演習問題を解くことができる。
|
16週 |
試験返却 |
テストの間違いを修正できる。
|
後期 |
3rdQ |
1週 |
文字列の照合、置き換え |
文字列の照合アルゴリズムBoyer-Moore法を説明できる。Boyer-Moore法によるテキスト照合のプログラムを作成できる。
|
2週 |
ハッシュ |
ハッシュについて説明できる。ハッシュを用いた探索プログラムを作成できる。
|
3週 |
再帰呼び出し、組み合わせ数 |
再帰呼び出しとは何か説明できる。再帰呼出しを用いた組み合わせ数の計算プログラムを作成できる。
|
4週 |
迷路 |
再帰呼び出しの応用として、迷路を探索するプログラムを作成できる。
|
5週 |
クイックソート |
クイックソートアルゴリズムを説明できる。そのプログラムを作成できる。
|
6週 |
応用課題 |
応用課題のプログラミングができる。
|
7週 |
演習問題 |
演習問題を解くことができる。
|
8週 |
中間試験 |
中間試験問題を解くことができる。
|
4thQ |
9週 |
◇Java言語とオブジェクト指向プログラミング オブジェクト指向概論 |
オブジェクト指向の特徴である継承、カプセル化、ポリモーフィズムについて説明できる。
|
10週 |
クラスとインスタンス 演習(Java言語の基本的な書き方) |
クラスを用いたJava言語のプログラムを書くことができる。
|
11週 |
クラスと継承 演習(継承) |
クラスの継承をJava言語で書くことができる。
|
12週 |
パッケージとクラスのアクセス制限 |
Java言語における変数やメソッドのスコープについて説明できる。
|
13週 |
ポリモーフィズム1 抽象クラス |
抽象クラスについて説明でき、抽象クラスを使ったプログラムを書くことができる。
|
14週 |
ポリモーフィズム2 インタフェース 演習(ポリモーフィズム) |
インタフェースについて説明でき、インタフェースを使ったプログラムを作ることができる。
|
15週 |
まとめ |
|
16週 |
試験返却 |
|
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
専門的能力 | 分野別の専門工学 | 情報系分野 | プログラミング | 代入や演算子の概念を理解し、式を記述できる。 | 3 | 前1,前2 |
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。 | 3 | 前1,前2 |
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。 | 3 | 前2 |
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。 | 3 | 前1,前2 |
主要な言語処理プロセッサの種類と特徴を説明できる。 | 3 | 前1 |
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。 | 3 | 前1 |
ソフトウェア | アルゴリズムの概念を説明できる。 | 3 | 前10 |
与えられたアルゴリズムが問題を解決していく過程を説明できる。 | 3 | 前10,前11,前12 |
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。 | 3 | 前10,前11,前12 |
整列、探索など、基本的なアルゴリズムについて説明できる。 | 3 | 前11,前12,前14 |
コンピュータ内部でデータを表現する方法(データ構造)にはバリエーションがあることを説明できる。 | 3 | 前3,前4,前5,前6 |
同一の問題に対し、選択したデータ構造によってアルゴリズムが変化しうることを説明できる。 | 3 | |
リスト構造、スタック、キュー、木構造などの基本的なデータ構造の概念と操作を説明できる。 | 3 | |
分野別の工学実験・実習能力 | 情報系分野【実験・実習能力】 | 情報系【実験・実習】 | 与えられた問題に対してそれを解決するためのソースプログラムを、標準的な開発ツールや開発環境を利用して記述できる。 | 3 | 前1,前2,前3,前4,前5,前6,後1,後2,後3,後4,後5,後6 |
ソフトウェア生成に利用される標準的なツールや環境を使い、ソースプログラムをロードモジュールに変換して実行できる。 | 3 | 前1,前2,前3,前4,前5,前6,後1,後2,後3,後4,後5,後6 |
ソフトウェア開発の現場において標準的とされるツールを使い、生成したロードモジュールの動作を確認できる。 | 3 | 前9 |