概要

目標

あるデータが与えられますので,そのデータを分析し,結果を出力するプログラムを作成します. いくつかのステップが与えられるので,各ステップで指定された分析を行ってください.

参考資料

課題の進め方

この課題は大きく6つのステップに分けられます. それぞれのステップで MovieAnalyzer1.javaMovieAnalyzer6.java を作成します. 以下のことを念頭に課題を進めてください.

  • ステップ1からステップ2ステップ3と順番に課題を進めてください. 途中のステップのスキップはできません.
  • ステップ1で作成した内容を元に, ステップ2を作成してください.
    • ステップ3以降も同様に,前のステップで作成した内容を全て含めて当該ステップに取り組んでください.
    • プログラムを作成するとき,一つ前のステップのプログラムをコピーして始めると良いでしょう.
      • ただし,mainメソッドの内容を修正することを忘れないようにしましょう.
      • mainメソッドで異なる型をnewするバグはなかなか気付きません.
  • ステップ3までが必須で,ステップ4ステップ5ステップ6がチャレンジ問題です.
    • ただし,必須問題しか完成させていない場合,最高でも60点にしかならないため,試験で失敗すると単位取得が厳しくなります.
    • ステップ4までを完成させていれば,たとえ試験で失敗したとしても単位取得が現実的になります.
      • もちろん,失敗の度合いもありますし,ステップ4まで完成させたつもりが完成できていないこともありますので,確実に単位取得を保証する訳ではありません.

課題の提出方法

この課題は6つのステップに分けられています. 各ステップでMovieAnalyzer1.javaMovieAnalyzer6.javaを作成します. 具体的に指示はしていませんが,独自の型を作成する必要もあるでしょう. それら全てのソースファイルを zip 圧縮し,zipファイルを Moodle に提出してください.

  • 学生証番号(6桁)のディレクトリを作成し,そこに全てのソースファイルをいれてください.
  • 自分の学生証番号が 123456 の場合,展開すると次のようになっているようにしてください.
$ ls
123456.zip
$ unzip 123456.zip
$ ls
123456.zip      123456
$ tree 123456
123456
... # 必要なファイル
├── MovieAnalyzer1.java
├── MovieAnalyzer2.java
... # 必要なファイル
└── MovieAnalyzer6.java
  • 提出期限は 2019年1月30日(水)24:00です.
  • 提出先は Moodle の【〆切 2019/1/30(水) 24:00】最終課題 です.
  • 次のチェックリストを提出前に確認してください.
    • zipファイルを空のディレクトリに展開したとき,上記のような構造になっているか.
    • その状態でコンパイルに成功するか.
    • 全てのソースファイルにコメントとして,自分の学生証番号,名前が記載されているか.

課題のデータ

課題には次のデータを利用してください. なお,評価には,このページからダウンロードできるデータとは異なるものを利用します. データの形式は同じですが,記載されているデータやデータ量は異なります. しっかりとデータを読み,適切な分析を行うようにして下さい. なお,多少の計算誤差は許容されます. また,与えられるデータはソートされているとは限りません.

  • この課題で利用するデータです
  • これらのデータはKaggleWikipedia Movie Plotsからダウンロードしたものを改変したものです.改変内容は次の通りです.
    • ランダムに4,000件を抽出し,並び順もランダムにしています.
    • Plotカラムの項目に改行が入っていた場合,改行を削除しました(全てのデータが1行に収まるようになっています).

なお,元のデータのライセンスに従い,上記の movie1.csvmovie4.csvCC BY-SA 4.0として共有します.

評価項目

以下の点を満たしていれば,加点されます. また,それぞれのステップで確認事項があります.それぞれを満たすことで加点されていきます.

  • インデントがずれている部分がないこと.
    • 少しでもインデントがずれているとNG.
  • ループ制御変数以外で1文字の変数名を利用していないこと.
  • 1つのメソッドが30行以内であること.
    • メソッド開始の{と終了の}は含まない.
  • 3つ以上のネストが存在しないこと.
    • 2重ループ内の条件分岐はアウト.別のメソッドに切り出しましょう.
  • 配列を使っていないこと.ただし,以下の部分は除きます.
    • mainメソッドの引数,及びその変数を他のメソッドに渡した時の引数,
    • splitメソッドの返り値.
  • クラス定義の基本形に従ってプログラムを書いていること.