科目名 |
情報システム工学実験第1 |
担当教員 |
M村 昌則,妻鳥 貴彦 |
対象学年 |
2年 |
クラス |
学部:専門001 |
講義室 |
A−WS |
開講学期 |
1学期 |
曜日・時限 |
火3,金3 |
単位区分 |
選択 |
授業形態 |
一般講義 |
単位数 |
2 |
準備事項 |
|
備考 |
|
授業の詳細1 |
【授業の目的】 本実験は,Javaプログラミングの基本技術を実践的に身につけることを目的としている.まず,Java言語処理系の基本的な使い方を実践する.Javaの構文を理解し,与えられた課題を構文の単位に分解してプログラミングできるようになることを目的とする.最終的に,与えられた仕様に基づいたプログラムが構築できるようになる. 本実験は,情報システム工学科2年次1クオータ開講科目「計算機言語第2(妻鳥)」及び「オブジェクト指向プログラミング基礎(浜村)」,同学科同年次2クオータ開講科目「アルゴリズムとデータ構造1(酒居)」及び「アルゴリズムとデータ構造2(妻鳥)」の講義内容と密接に関係するため,これらの科目を同時期に履修することを強く推奨する.特に,「オブジェクト指向プログラミング基礎」及び「アルゴリズムとデータ構造2」においては,本実験の理解及び実施に不可欠な事柄の説明を受ける.そのため,本実験の履修を希望する場合には,「オブジェクト指向プログラミング基礎」及び「アルゴリズムとデータ構造2」も同時に履修しなければならない.
【授業の進め方】 実験形式の授業である.課題の仕様を満たすプログラムを実装できるまでプログラミング実験を繰り返す.
【達成目標】 本実験により以下の目標を達成する. (1) Javaアプリケーション及びJavaアプレットを作成・実行できる. (2) 参照の概念をJavaプログラミングで実践できる. (3) クラスの継承・オーバーロード・例外をプログラミングに活用できる. (4) スレッドをプログラミングで実践できる (5) 代表的なソートアルゴリズムを理解し,プログラミングできる. (6) 代表的なデータ構造を理解し,プログラミングできる. (7) 小規模の仕様に基づき,完成したプログラムを構築できる. |
授業の詳細2 |
【授業計画】 1.オリエンテーションと計算機環境・プログラミング環境・Java入門 本実験のねらいや実験の進め方,単位認定の方法について説明を受ける. 次に,A-WS室の設備の基本説明(ログイン・ログアウト,Emacsエディタ,LaTeX,プリンタなど)を受ける.さらに,ごく簡単な例を元に,Javaアプリケーション及びJavaアプレットを実行する.プログラムの編集と実行を実際に行い,これらの操作がスムーズにできるようになることを目指す.
2-3.クラスとインスタンス Javaでは「クラス」というやや抽象的な単位でプログラムを作成する.クラスで実行可能な処理は「メソッド」で規定される.(あるクラスから別の)クラスを呼び出すと,クラスとは別の存在として機能を具体化した「インスタンス(オブジェクト)」が生成され,これが実際の処理に使用される.これらに関するプログラミング実験を行う.
4.継承とオーバーライド・オーバーロード 継承・オーバーライド・オーバーロードなど,Javaプログラムの拡張法に関する実験を行う.
5.キャスト,インタフェース 変数には「型」がある.その変数を最初に宣言した型とは異なる型として使用できることを学ぶ.インタフェースの役割も実験を通じて理解する. 6.文字列と配列 文字列および配列を学び,オブジェクト指向プログラミングの理解を深める.
7.処理の制御 Javaの構文単位であるif文,switch文,for文,while文,do-while文の動作を理解し,目的に合った構文を適切に選んだプログラミングができるようになる. |
授業の詳細3 |
8.パッケージとインポート,アクセス制限 クラス名が重複することがある.その対策としてパッケージ化について実験する.パッケージ化したクラスの利用法も実験する.
9.グラフィックユーザインタフェースとイベント処理 Javaでは大量のクラスがライブラリに用意されている.そのライブラリの中からグラフィックユーザインタフェース(GUI)に関するクラスのごく一部を利用して実験を行う.
10. スレッド 二つ以上の処理を平行して実行する仕組み(スレッド)についてプログラミング実験を行う
11.例外処理 プログラムの実行中に予期せぬことが起きたときに行う処理を例外処理という.実験を通じてJavaの優れた例外処理機能を学ぶ.
12-13.データの入出力,アプレット ファイルに書き込まれたデータの読み取りやファイルへの書き込み,さらに,WWWブラウザでJavaプログラムを実行する仕組みについて実験を行う.
14-16.中間課題 Javaプログラミング実験を3回にわたって行い,レポートを作成する.レポートの書き方についても詳細な指示がある. |
授業の詳細4 |
17.配列 データが順番に並んでおり,それぞれのデータを連続する添字によって一意に特定できるようなデータ構造のことを配列と呼ぶ.ここでは,実験を通じて配列を実現するクラスについて理解する.
18-20.連結リスト データをそれぞれの要素に格納し,その要素が次の要素とつながってリストを成しているようなデータ構造を連結リストという.ここでは,実験を通じて連結リストの仕組みを学ぶ.
21.スタック データの挿入と取得をリストの特定の一端でのみ行うようなデータ構造をスタックという.ここでは,実験を通じてスタックの仕組みを理解する.
22. キュー リストの一方の端ではデータの挿入のみを,もう一方の端では取り出しと削除のみを行うようなデータ構造をキュー(待ち行列)という.ここでは,実験を通じてキューの仕組みを理解する.
23-24.二分探索木 木構造のうち,各ノードが持てる子の最大数が2であるものを二分木という.二分木のうち,親よりも小さい値を持つ子は左に,親よりも大きい値を持つ子は右に格納した構造を持つものを二分探索木という.ここでは,二分木を実現し,二分探索木について理解する.
25.ハッシュテーブル データ領域上にデータを並べ,各々に対して特定の「鍵」を用いてアクセスするようなデータ構造をハッシュテーブルという.ここでは,実験を通じてハッシュテーブルの概念を理解する.
26-28.ソート あるデータ構造を,指定された指標に従って順序整理する作業をソートという.ここでは,実験を通じて最も基本的なソートアルゴリズムであるバブルソートとより高速なクイックソートについて理解する.
29-30.最終課題 アルゴリズムとデータ構造に関する課題をJava言語で実装し,最終レポートを作成する. |
授業の詳細5 |
【成績評価】 実験小課題の完成(ほぼ毎回実施)計50点,中間課題レポート25点,最終課題レポート25点,計100点満点で採点を行う.採点の結果より,以下に示す成績判定を行う. ◆AA:毎回の課題および中間・最終課題をほぼ100%完成させ,かつ採点の結果がほぼ100点であった場合 ◆A:毎回の課題および中間・最終課題をほぼ100%完成させ,かつ採点の結果が80点以上であった場合 ◆B:毎回の課題および中間・最終課題を80%完成させた場合,または採点の結果が70点以上であった場合 ◆C:毎回の課題を80%完成させた場合,または採点の結果が60点以上であった場合 ◆F:以上の条件を満たさなかった場合 ただし,採点の結果55〜59点となった者で,小課題の完成やレポートの提出状況に優れる者には,レポートの再提出を要求するなどし,その結果本科目の目標への到達度が他の合格者と同等以上と判定されれば,Cと判定することがある.
□□□□□□□□□□□□□□□□□□□□ ◇テキスト 多数の電子資料を利用する.
◇参考書 『3日で解るJava』,桑原恒夫 著,共立出版 『The Java Programming Language』,A. G. Holmes 著,Addison Wesley 『Javaプログラミング Black Book』,Steven Holzner 著・武藤武志 監修,インプレス 『Javaで学ぶアルゴリズムとデータ構造』,Robert Lafore 著,岩谷 宏 訳,ソフトバンク 『Javaによるプログラミング入門』,権藤 克彦 著,サイエンス 『Javaアルゴリズム+データ構造』,(有)オングス著,技術評論社(絶版) 『アルゴリズムとデータ構造』,石畑清 著,岩波書店
◇備 考:情報ネットワークシステムコース履修登録必須科目 ◇履修の前提となる科目:「コンピュータリテラシー」「情報科学1」「情報科学2」「情報科学3」 ◇事前の履修が望ましい科目:なし ◇同時に履修すべき科目:「計算機言語第2」「オブジェクト指向プログラミング基礎」「アルゴリズムとデータ構造1」「アルゴリズムとデータ構造2」 |
授業の詳細6 |
|
授業の詳細7 |
|
授業の詳細8 |
|
授業の詳細9 |
|
授業の詳細10 |
|