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