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