講義コード 1411J
講義名 ソフトウェアデザインII
(副題)
開講責任部署 全体
講義開講時期 秋学期
講義区分
基準単位数 1
時間 0.00
代表曜日 金曜日
代表時限 5時限
開講学科 情報処理学科
必選別 選択
履修セメスター 第2セメスター
その他
担当教員

職種 氏名 所属
准教授 ◎ 宮川 幹平 (指定なし)

講義概要
本実習は、Java言語によるプログラミングを取り扱う授業である。
Javaは、学びやすい文法構成を採用しているほか、大規模開発にも対応できるオブジェクト指向言語であり、様々なコンピュータ環境において同じように動作する(Write Once, Run Anywhere)といった特徴を持っている。そのため、コマンドラインアプリケーションやウィンドウアプリケーション、Webアプリケーション、モバイル端末用アプリケーションなど、幅広い分野でJavaが活用されている。
本実習では、上記のような多様な応用分野でのJavaプログラミングに挑むための基盤として、Javaの基本文法とオブジェクト指向プログラミングの基礎を実践的に学んでいく。
到達目標
・基本型変数及び文字列クラスの宣言・初期化、定数の宣言・初期化、代入・演算、キーボードからの入力(Scannerクラス利用)、コンソールディスプレイへの出力、条件分岐と繰り返し構文、論理演算、構文の入れ子、配列の利用、メソッドの定義と利用について、Javaの文法に則った表現ができる。
・素数判定・最大公約数の計算・探索・整列といった基本的なアルゴリズムに基づき、これらを実装したJavaプログラム(コンソールプログラム)を作成できる
履修のポイント及び留意事項
実習授業であり、1回でも欠席すれば授業に追いつけなくなる可能性がある。欠席分を取り戻すことは学生諸君の自己責任であることに注意されたい。また、プログラミング技術の修得に演習は必要不可欠である。授業時間以外において、課題だけに留まらず、数多くのプログラムを作成することを期待する。
講義日程
テーマ内容
第1週Javaの世界と開発環境、Javaプログラムの基本構造Javaによるプログラミングの基本的な流れについて学ぶ。また、最も基本的なプログラム構造を例として、インデントとコメントの重要性について理解する。
第2週変数と定数、キーボードからの入力基本的なデータ型と種別について理解するとともに、変数の宣言・代入・初期化の方法、定数の宣言について学ぶ。また、Scannerクラスを利用したキーボードからの入力と変数への格納方法を学ぶ。
第3週式と演算子リテラルの表現方法、式の構成要素と評価の流れ、演算子とその優先順位・結合規則について学ぶとともに、自動型変換(代入時・演算時)・キャストについて理解する。
その他、今後のプログラムにおいて用いるいくつかのクラス・メソッドについて紹介する(Mathクラス、Randomクラス、Dateクラス等)
第4週制御構造(1)条件分岐(if構文)と繰り返し(while構文)の基本的な記述方法とともに、ブロックの記述方法と変数のスコープ、条件(論理式)の記述方法について学ぶ。
第5週制御構造(2) 分岐構造のバリエーションとして、else句の省略、ifの入れ子、switch構文について学ぶ。
第6週制御構造(3)繰り返し構文のバリエーションとして、do-while構文、for構文について学ぶとともに、多重ループ・breakとcontinueによる繰り返しの制御について理解する。
第7週実践1 ユークリッドの互除法を活用したプログラムを作成する
第8週配列(1)配列の宣言と初期化、拡張for構文の活用について学ぶ。
第9週配列(2)変数とメモリ領域、参照型変数の意味、ガーベジコレクションの基礎について学ぶとともに、多次元配列の宣言・利用法を理解する。
第10週メソッドメソッドの定義、引数・戻り値の利用、オーバーロード、配列引数、コマンドライン引数について学ぶ。
第11週実践2線形探索、二分探索のアルゴリズムを活用した探索プログラムを作成する
第12週実践3基本選択法、基本交換法、基本挿入法に基づく整列プログラムを作成する。
さらには、シェルソートのアルゴリズムを体験する。
第13週実践4分割統治の考え方を踏まえた基本的なアルゴリズムのプログラムを作成する(べき乗・フィボナッチ数列・ハノイの塔)
第14週実践5クイックソートのアルゴリズムを活用した整列プログラムを作成する。
再帰版のほか、スタック構造を用いた非再帰版についても挑戦する。
第15週実践6マージソートのアルゴリズムを活用した整列プログラムを作成する

他の授業科目との関連
「ソフトウェアデザインI」については履修済みであることを強く推奨する。また、「ソフトウェアデザインIII及びIV」を履修するためには、本授業の内容を理解することが必要不可欠である。
また、「アルゴリズム」と連携して授業を展開するため、並行して履修すること。
その他、ソフトウェア開発プロセスに関しては「システムマネジメント」の内容が参考になるだろう。また、オブジェクト指向に関する概念的な内容については「ICT経営論」で学ぶことが出来る。
その他、コンピュータシステムに関する科目群「コンピュータ科学基礎」「コンピュータシステム」「コンピュータネットワーク」「データベース」等は、プログラマとしての基本教養として履修しておくことが望ましい。
評価方法
(1)文法に関する理解度を図る小テストの成績:50%
(2)提示アルゴリズムを実装したプログラムの品質:50%
上記の合計点により評価する。
教科書
スッキリわかるJava入門
インプレスジャパン
参考図書
明解 Javaによるアルゴリズムとデータ構造 柴田 望洋
ソフトバンククリエイティブ
オフィスアワー(授業相談)
いつでも可
学生へのメッセージ
プログラミングは実際に作ってみなければ上達しません。プログラミングを楽しんでください。
準備学習の内容
テキストは自習に適したものを指定してある。毎回、次回学習する範囲を指示するので、各自予習しておくこと。授業時間にテキストを端から端まで一緒に読む、などといったことは行わない。