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のアプリケーションの作成方法,そして,様々なアルゴリズムの利用方法を学びます.

基礎の基礎

ターミナルの基本操作
ファイルやディレクトリの指定方法
基本的なコマンド
Javaプログラムの作成から実行まで

基礎の基礎の講義ページへ

Java言語の基礎

基礎
Javaでのif文やfor文などの制御構文を学ぶ.
基本的な型
この講義で中心的に使う型.
複雑データ型
単純な型だけではない.Javaには多くの型があり,自分で定義も可能である.
変数のスコープ,ライフタイム
変数には有効範囲(スコープ; scope)があり,スコープの中でのみ生存している.

Java言語の基礎の講義ページへ

図書館システム

自分で型を定義する.
本の情報を一つの型としてまとめる.
自分で複数の型を定義する.
貸出の情報を型としてまとめる.
リストで値を管理する.
貸出リストを作成する.

図書館システムの講義ページへ

Findプログラム

ディレクトリを指定し,そのディレクトリ以下の,特定の条件のファイルを見つけ出すプログラムを作成する.

コマンドライン引数
ユーザからの入力を受け取る.
再帰呼び出し.
ディレクトリをたどるときに再帰呼び出しを用いる.
時間計測.
見つかるまでの時間を計測するために何をすれば良いか.
正規表現
正規表現の存在を知る.
ファイルの入出力.
ファイルを読む.
ファイルに出力する.

Findプログラムの講義ページへ

DIFFプログラム

仕様書
仕様書に従ってプログラムを書く.
計算量
計算量の違い.

Diffプログラムの講義ページへ

GUIプログラム

内容はまだ未定.

GUIプログラムの講義ページへ

準備学習等(事前・事後学習)

事前学習

授業に必要な資料は全てWebページ上に掲載するので,毎回の授業当日までに十分に読み込み, また必要に応じて実際に作業を行ってみて, 自分が理解できない箇所をチェックしておくこと(第1回を除く).

特にキー入力操作が不慣れで授業中の作業時間で間に合わないと感じる場合は, 事前に作業しておくなどの準備をすること。

事後学習

授業終了後に資料のWebページおよび授業中に取ったノートや演習成果物を見直し, 学習内容を確認して理解を深めること.また、課された課題は必ず提出すること.

本演習で扱う知識は基礎的なものであり,いずれが欠けても今後の学部の専門授業の多くに支障を来す. そのため,理解不十分なまま放置しないこと.

授業の到達目標

身に付く力

評価方法

教材

この講義資料を教科書として利用する. 参考書は講義中に適宜紹介する.

その他

オフィスアワーは次の通り.

玉田
木曜日 12:30-14:30