科目名 |
情報システム工学実験第2 |
担当教員 |
松崎 公紀,酒居 敬一,高田 喜朗 |
対象学年 |
2年 |
クラス |
学部:専門001 |
講義室 |
A−WS |
開講学期 |
2学期 |
曜日・時限 |
火3,金3 |
単位区分 |
選択 |
授業形態 |
一般講義 |
単位数 |
2 |
準備事項 |
|
備考 |
|
授業の詳細1 |
◆授業の目的
効果的な情報システム・通信システムを構築するためには, 計算機自身の仕組みを深く理解すること, および, システムへの要求をプログラムに反映する能力が要求される. 本科目では, 大きく次の2点について学習する. 1. これまでに学習した基本的なアルゴリズムやデータ構造の知識を, Javaを用いて実用的な課題に応用することにより, 実践的なソフトウェア開発能力を習得する. 2. アセンブリ言語によるプログラミングを通して, 「プログラム実行機械」である計算機の仕組みを学習する. |
授業の詳細2 |
◆授業の進め方
下記の一連の作業を基本的に4〜5人のグループで行う. ただし, 基礎的な内容の学習にあたっては, 個人で取り組む課題も設定する.
[前半] 授業の前半では, いくつかの実際によく見られる分野からの応用課題を対象とし, ソフトウェア開発の一連の作業を実践する. より具体的には, オブジェクト指向に基づいたソフトウェア設計すること, Java言語による効率的な実装すること, これらの作業を的確に報告書としてまとめること, を行う.
[後半] 授業の後半では, まず, 講義と演習を通してアセンブリ言語プログラミングの基礎を学ぶ. さらに, Lego Mindstormによるライントレーサ開発のための一連の作業を4〜5人のグループで体験する. その中で, 通信プログラムや制御プログラムなどについて実践的に学習する. |
授業の詳細3 |
◆達成目標
以下の能力を修得すること. * 課題の記述から複数のオブジェクトを抽出し, それらの関係を図を用いて表現できる. * ソフトウェア工学に基づいた適切なテスト設計ができる. * 読みやすいプログラムを書くことの必要性を理解し, 実践できる. * Makeやバージョン管理システムなどを使って効率よくソフトウェア開発を行うことができる. * ソースコードを共同所有する開発形態に馴染んでいる. * 一般的な計算機の構成(アーキテクチャ)について説明できる. * アセンブリ言語でプログラムを記述できる. * 周辺装置から入力を受け取ったり制御したりするプログラムを作成できる. * 決められた通信手順に従う通信プログラムを作成できる. * 作業工程の記述と結果に対する考察を含む報告書を作成できる. |
授業の詳細4 |
◆授業計画
以下のような順序で授業を進める. なお, 項目はおおよその順序を表すもので, 1項目が1回の実験時間に対応しているわけではない.
[1] 実験ガイダンス 実験の全体像, スケジュールについて説明する.
[2] GUIプログラミング 2-1. AppletとGPI基礎 Java Appletの基本的な動作を理解し, アプレットとアプリケーションのユーザインターフェイスの作成方法を取得する.
2-2. イベント処理 GUI部品をインタラクティブに動作させるためのイベント処理の概念を理解し, そのプログラムを作成する.
2-3. AWT, Swing AWTやSwingに含まれるボタンやラベルなどのGUI部品を利用したより規模の大きいプログラム作成を行う.
2-4. バージョン管理, ビルド・コンパイルツール プログラムなどのバージョン管理ツール, および, 依存関係のあるファイルのビルド・コンパイルツールの基本的な使い方を習得する.
2-5. まとめ 作成したプログラムを各自のウェブページに掲載し, 評価を行う. |
授業の詳細5 |
[3] 画像処理プログラミング
3-1. 画像データの表示 画像の表示の仕方 (座標系, 画素の階調値) を理解し, 画像の読み込み・表示を行うサンプルプログラムを理解する.
3-2. 画像の基本変換処理 画像データの基本変換として, 画像の反転・回転・拡大縮小などについてのアルゴリズムを理解し, そのプログラムを作成する.
3-3. 画像のフィルタリング処理 いくつかの基礎的なフィルタ (Sobelフィルタ, ラプラシアンフィルタ等) に関するアルゴリズムを理解し, それらを使って輪郭強調処理を行うプログラムを作成す.
3-4. 画像の幾何学的変換処理 最も広く用いられているアフィン変換 (Affine transformation) について学び, 任意の角度での回転や移動を行うプログラムを作成する.
3-5. まとめ 作成したプログラムを各自のウェブページに掲載し, 評価を行う. |
授業の詳細6 |
[4] ネットワークプログラミング
4-1. 例外処理 クラスの継承の概念と例外処理について理解し, それを用いたプログラミングを作成する.
4-2. ストリーム入出力 Javaの特長のひとつである, 入出力におけるデータストリームの考え方を理解する. 標準入出力やシリアライズなどのデータストリームにおける基礎の考え方を学び, それを用いたプログラムの作成する.
4-3. TCP/IPとソケット Java言語の標準ライブラリとして用意されているソケットを用いて, TCP/IPを使用したプログラムを作成する. また, これを通して, ネットワークやストリーム入出力についての理解を深める.
4-4. まとめ 作成したプログラムについて動作の仕組みを説明するとともに, 評価を行う. |
授業の詳細7 |
[5] アセンブリ言語プログラミングの基礎
5-1. 最初のアセンブリプログラム 基本構文, アセンブル方法などを学ぶ. アセンブリ言語と機械語の関係について学ぶ.
5-2. 計算機の構成 Lego MindstormのRCXに内蔵されているMCUであるH8/3292の命令セットアーキテクチャについて学ぶ.
5-3. アセンブリプログラミング 条件分岐・反復・サブルーチン呼び出し/復帰等の実行制御をどのように実現するかを学ぶ. 文字・実数・それらの配列等のデータの扱い方についても学ぶ. さまざまな小規模プログラムを作成し, アセンブリ言語プログラミングに親しむ.
5-4. まとめ 作成したプログラムについて動作の仕組みを説明するとともに, 評価を行う. |
授業の詳細8 |
[6] ライントレーサの開発 6-1. 16 進数表示ルーチンの開発 RCX本体の液晶部に指定された数値を表示するプログラムを作成する.
6-2. センサとD/A変換 RCX に内蔵のD/A変換器を使って光センサからの入力を読み取るプログラムを作成する. また,低域通過デジタルフィルタをプログラムして, 安定した入力が得られるようにする.
6-3. モータ制御 モータの回転方向を制御するプログラムを作成する. 光センサからの入力に応じてモータの回転を変えるプログラムを作成する.
6-4. ライントレーサの作成 Legoブロックを組み立てて, ライントレーサを完成させる.
6-5. まとめ 作成したプログラム・ライントレーサの動作を説明・確認し, 評価を行う. |
授業の詳細9 |
テキスト: 実験指導書を配布する.
参考書: [前半] 『Javaで学ぶアルゴリズムとデータ構造』,Robert Lafore著,岩谷宏訳(ソフトバンク) 『Javaによるオブジェクト指向プログラミング入門』,越田一郎(培風館) 『プログラミング作法』,Brian Kernighan, Rob Pike著(アスキー) 『アルゴリズムとデータ構造』, 石畑清著(岩波書店) 『Javaプログラミング Black Book』,Steven Holzner 著・武藤武志 監修,インプレス [後半] 『やさしいコンピュータ科学』,A.W. Biermann著(アスキー) 『独習アセンブラ』, 日向俊二著(翔泳社) 『アセンブラ言語CASL II』, 東田幸樹, 山本芳人, 広瀬啓雄著(工学図書) 『プログラミング言語C 第2版』,B.W. Kernighan, D.M. Ritchie著(共立出版) |
授業の詳細10 |
成績評価: レポート提出と口頭試問 (ヒアリング) により評価する. レポートにおいては, 課題解決方法, 結果, 結果に対する考察, 設計にあたり工夫した点などを見る. ヒアリングでは, 作成した課題プログラムについて, 基本的なアルゴリズム, データ構造の説明を見る. また, レポートの内容に関連する質疑応答も行う. ヒアリング55点, レポート45点とし, 全課題の合計が60点以上あれば合格とする. 再試験はしない. AA: 90点以上100点 A: 80点以上90点未満 B: 70点以上80点未満 C: 60点以上70点未満 F: 60点未満
履修上の注意: 本実験の履修を希望する場合には,「情報システムプログラミング」「情報ネットワークプログラミング」を同時に履修すること.
備 考: 履修の前提となる必須科目=「情報システム工学実験第1」 履修前の受講が望ましい科目=「アルゴリズムとデータ構造1」「計算機言語第1」 同時履修すべき科目=「情報システムプログラミング」「情報ネットワークプログラミング」 |
|