2016年度 発展プログラミング演習 講義概要
更新履歴
- 2016/7/11
- 講義資料を更新しました.2016-07-11の更新内容.
- 2016/6/22
- 講義資料を更新しました.2016-06-22の更新内容.
- 2016/6/15
- 講義資料を更新しました.2016-06-15の更新内容.
講義概要
担当教員
- 秋山 豊和
- 玉田 春昭
- 林原 尚浩
- 宮森 恒
概要
本演習では,1年生次に学習した基礎プログラミング演習I, II の知識を前提に,Java言語によるプログラミングの演習を行う. 演習の主題は,プログラミング言語そのものではなく, プログラミング言語を使ったアプリケーションの構築にある. そのため,プログラミングに関する知識は, 各自での復習/予習が必須である.
履修上の注意
- 開講時限
- 木曜 1, 2時限目
- 講義室
- 10201, 10202
- 注意事項
-
- 一般の講義に比べ,欠席・遅刻・早退やレポート未提出は成績に大きく影響する.
また,出席することが前提の授業であるため,出席点は与えない.
- 15分未満の遅刻:-1点
- 15分以上30分未満の遅刻:-2点
- 30分以上の遅刻または欠席:-3点
- 上記の減点が合計15以上となった場合は,原則として出席日数不足で不合格とする.
- LecRecによる講義録画は行わない.すべての教室がLecRecの録画に対応していないためである.
- 授業中の私語は慎むこと.
- 授業中,授業と無関係なことをしていた場合は,「欠席・遅刻・早退」扱いとするので注意すること.
- 演習資料は事前によく読んでおくこと.また,演習資料中の例題は必ずコンパイル・実行すること.
- 疑問点は積極的に質問すること.
- 関連科目:基礎プログラミング演習I, II,数値計算,アルゴリズムとデータ構造
- 一般の講義に比べ,欠席・遅刻・早退やレポート未提出は成績に大きく影響する.
また,出席することが前提の授業であるため,出席点は与えない.
- レポート
-
- 講義資料の指示に従って提出期限までに適切な場所に提出すること.
- レポートとして提出する全てのプログラムに必ず氏名,学生証番号をコメントとして記載すること.これらが記載されていない場合,未提出として扱う.
- プログラムが未完成であったとしても,どこまでできて,どううまく動かないのか,どこがわからないのか,何を試したのかについて,コメントに記載すること.
- その他,各課題の指示に従うこと.
-
他人のプログラムをコピーしないこと.もし,コピーが見つかった場合は, 提出時間が一番早いものをオリジナルとして扱い,その他のプログラムを未提出として扱う. Webページからのコピーが見つかった場合は,未提出として扱う.
今までの経験上,偶然の一致か,意識してコピーしたかは区別できる. とはいえ,コピーであると判断された場合であっても反論の余地は与える. もし,コピーが誤判定である場合は,その旨申し出ること.内容を確認した上で正当な評価を与える.
プログラムのコピー検出には,次の論文で示されている技術を利用する.
- Haruaki Tamada, Masahide Nakamura, Akito Monden, Ken-ichi Matsumoto, ``Java Birthmarks --Detecting the Software Theft--,'' IEICE Transactions on Information and Systems, Vol. E88-D, No. 9, pp.2148--2158, September 2005.
- Toshihiro Kamiya, Shinji Kusumoto, Katsuro Inoue, ``CCFinder: A multilinguistic token-based code clone detection system for large scale source code,'' IEEE Transaction on Software Engineering, Vol.28, No.7, pp.654--670, 2002.
授業計画
概要
この講義では,次の4つの題材を通じて,Javaのアプリケーションの作成方法,そして,様々なアルゴリズムの利用方法を学びます.
- 第1講:基礎の基礎
- 第2講:Javaの基礎
- 第3〜6講:図書館システム
- 第7〜10講:Findプログラム
- 第11〜13講:Diffプログラム 練習問題
- 第14講:GUIプログラム 最終課題について
- 第15講:臨時試験
基礎の基礎
- ターミナルの基本操作
- ファイルやディレクトリの指定方法
- 基本的なコマンド
- Javaプログラムの作成から実行まで
Java言語の基礎
- 基礎
- Javaでのif文やfor文などの制御構文を学ぶ.
- 基本的な型
- この講義で中心的に使う型.
- 複雑データ型
- 単純な型だけではない.Javaには多くの型があり,自分で定義も可能である.
- 変数のスコープ,ライフタイム
- 変数には有効範囲(スコープ; scope)があり,スコープの中でのみ生存している.
図書館システム
- 自分で型を定義する.
- 本の情報を一つの型としてまとめる.
- 自分で複数の型を定義する.
- 貸出の情報を型としてまとめる.
- リストで値を管理する.
- 貸出リストを作成する.
Findプログラム
ディレクトリを指定し,そのディレクトリ以下の,特定の条件のファイルを見つけ出すプログラムを作成する.
- コマンドライン引数
- ユーザからの入力を受け取る.
- 再帰呼び出し.
- ディレクトリをたどるときに再帰呼び出しを用いる.
- 時間計測.
- 見つかるまでの時間を計測するために何をすれば良いか.
- 正規表現
- 正規表現の存在を知る.
- ファイルの入出力.
- ファイルを読む.
- ファイルに出力する.
DIFFプログラム
- 仕様書
- 仕様書に従ってプログラムを書く.
- 計算量
- 計算量の違い.
GUIプログラム
内容はまだ未定.
準備学習等(事前・事後学習)
- 事前学習
-
授業に必要な資料は全てWebページ上に掲載するので,毎回の授業当日までに十分に読み込み, また必要に応じて実際に作業を行ってみて, 自分が理解できない箇所をチェックしておくこと(第1回を除く).
特にキー入力操作が不慣れで授業中の作業時間で間に合わないと感じる場合は, 事前に作業しておくなどの準備をすること。
- 事後学習
-
授業終了後に資料のWebページおよび授業中に取ったノートや演習成果物を見直し, 学習内容を確認して理解を深めること.また、課された課題は必ず提出すること.
本演習で扱う知識は基礎的なものであり,いずれが欠けても今後の学部の専門授業の多くに支障を来す. そのため,理解不十分なまま放置しないこと.
授業の到達目標
- Java言語の基礎知識を身に付け,簡単なJavaプログラムが書けるようになる.
- 与えられた仕様に従って,Javaプログラムが書けるようになる.
身に付く力
- プログラムを書くことによる,論理的思考力(創造力,論理的分析力,総合的判断力)
- プログラムの内容を説明することによる,コミュニケーションスキル(傾聴力,発信力)
- 演習に参加することによる,態度・志向性(規律性,ストレスコントロール力)
評価方法
- 最終課題(30~70%),授業中に行う筆記試験(30%~70%)を総合して評価する.
- また,講義中に随時行う課題を評価(0%~40%)に加える場合もある.
- 詳細は講義中に説明する.
教材
この講義資料を教科書として利用する. 参考書は講義中に適宜紹介する.
その他
オフィスアワーは次の通り.
- 玉田
- 木曜日 12:30-14:30