研究室【広報】ホームページ(IndexPage) > 2018年度研究室配属・新人募集(recruit/2017/IndexPage) > 研究について(recruit/2017/Skill)


研究室【広報】ホームページ - 飯島研で身につくスキル(Skill)

(公開)





研究室で身につくスキル

  • 飯島研で身につくことを目指しているスキル (iijima 2015-11-27)
    • 私自身が以下のスキルを身に着けたいと考えています.学生の皆さんも一緒に,こうした能力を伸ばしていただければ何よりです.
    • 問題解決能力
      • 問題に関する取り組み方
      • 解くべき問題のモデリング,定式化
      • 解決手段のレシピの蓄積
      • 解決手段の調整・適応
      • 解決手段の評価
    • プロジェクト管理能力
      • スケジューリング
        • イテレーション
      • リソース配分
    • コミュニケーション能力
      • プレゼンテーション技術
      • 質疑応答技術
        • 質問者の質問を的確に理解し,こちらの考えを伝えることは,重要な双方向コミュニケーションです.
      • 議事録を作成する能力
        • 決定事項・合意事項を整理する
        • 議論経過の記録
    • 文献調査能力
      • 分類と流れの理解
      • 他分野との関係づけ
      • 文献の収集と整理


研究室でのアルゴリズム教育とモデリング教育

  • 飯島研で目指しているアルゴリズム教育 (iijima 2015-11-27)
    • どんなプログラミング言語,ライブラリ(API),フレームワークを使うか,ということよりも,本質的な要素がアルゴリズムです.
      • アルゴリズムは,問題解決手段として核となるものです.
      • 既存アルゴリズムの改良から始めましょう.
        • どこを工夫したのかを明確にしましょう.
          • 手軽な改良は,対象ドメインの性質を利用した「適応」です.
        • アルゴリズムの評価は公平に.
          • なぜ,それがうまくいくのか説明できるように.
    • 飯島研では,基本的なアルゴリズムとデータ構造の輪講を「必ず」実施します
      • 概念だけでなく,実際に動かすことが重要です.
      • オブジェクト指向プログラミング言語を使って実装します.
      • アルゴリズムの「可視化」も,アルゴリズムの理解には重要です.
      • 加えて,特に計算幾何学アルゴリズムを重視しています.
  • 飯島研で目指しているモデリング教育 (iijima 2015-11-27)
    • 対象を抽象化し,モデル化することは,解決の第一歩です.
      • 何を捨象するか,何をモデルの核に据えるかは大事なポイントです.
    • 解決手段に応じた,適切なモデリングを常に心がけるべきです.
      • 但し,解決手段に引きずられて,何を解決したいのかを忘れてしまうのはナンセンスです.


研究室で使用するプログラミング言語

  • 飯島研で使用するプログラミング言語 (iijima 2015-11-27)

    言語

    統合開発環境(IDE)

    Java

    Java SE SDK8

    NetBeans 8.1

    Python

    Python 3.5.0

    PyCharm CE 5.0.1

    Cython

    NetBeans Python Plugin

    Jython

    Python Tools for Visual Studio(PTVS)

    MATLAB

    Scala

    Scala 2.11.7

    IntelliJ IDEA Scala Pulgin

    Groovy

    Groovy 2.4.5

    NetBeans Groovy Plugin

    Mono/C#

    Mono

    MonoDevelop

    Visual C#

    VisualStudio

    C/C++

    MinGW gcc/g++

    NetBeans C/C++ Plugin

    Clang/LLVM

    Visual C/C++

    VisualStudio

    OCaml

    OCaml 4.02.3

    TypeRex OCaml-Top

    Haskell

    GHC 7.10.2

    Leksah

    IntelliJ IDEA Haskell Pulgin

    Prolog

    SWI-Prolog

    Erlang

  • プログラミングで身に着けてほしいこと (iijima 2015-11-27)
    • プログラミングで重要なこと
      • プログラミング言語の構文を知っていること,概念を理解していることは前提です
      • 何よりも,問題解決能力としてカテゴライズできることが重要と考えています.
      • プログラミングに習熟するためには...
        • だだ,プログラミング言語の構文を知っているだけでは,入門以上のことは難しいでしょう.
        • 単にいろいろな機能を盛り込むことよりも...
          • 将来的な拡張に耐えられる基盤を,まずは少ない本質的な機能で実現することが重要です.
          • 何が本質的なのかを見抜く洞察力を養うことが大事だと考えています.
          • アーキテクチャを意識しましょう.
    • プログラミング言語
      • プログラミング言語の選択は,研究プロジェクトの継続性にとって重要です.
        • たまたま,目前の作業項目で他の選択肢に心惹かれるときもあるのですが,
        • 継続や将来的な統合のことを考えて選択する必要があります.
        • ですが,新しいものは,どんどん取り入れていきましょう.
          • TensorFlowには,研究室として早く習熟したいところです.

          • Deep Learningに関しても,まだまだ,研究室の保有している蓄積は十分ではありません.
          • ECMAScript 6(2015-06-17)が出て,JavaScriptも本当に無視できなくなりました.

    • JavaとPythonは全員が自由に使えるようになっていただきます.
      • GUIとWebアプリケーションもやります
        • GUI
          • Javaの場合は,標準的なSwing/AWTですが,JavaFXも取り入れたいところです
          • Pythonの場合は,PyQtを使いましょう.

            • wxPythonの方が情報が多いと感じるときもあるでしょうけど...
              • 大して違いはありませんし,ちょっとしたテストのためには,どれでも使えるのが一番です.
              • ですが,研究プロジェクトでは,次年度以降への継続や,将来的な統合も意識する必要があります.
              • OCamlやHaskellのようなC/C++と親和性の高い言語のためには
              • 当研究室では,互換性のためにQtの利用を第一に考えています.
            • 現状では,PySideよりもPyQtでしょうか...

            • 授業などで使うのであれば,インストール不要のTkinterを使う予定です.
        • Webアプリケーション
          • 「Pythonで手軽に,Javaでしっかり」
          • Javaの場合
            • まず,Servlet/JSP(とWebSocket)をやります.基本ですから.

            • Tomcatでは,WebSocketも使います

              • 研究プロジェクトでは,2013年頃から本格的に使い始めました.
            • PlayとSpringも検討中です
              • Playについては,2014年度に輪講で採用しましたが,最初でつまずいてしまいました.
          • Pythonの場合
            • 定番として,まずはDjangoを使いましょう.
            • WebSocketの理解のためには,Tornadeを使いましょう.

      • Graphics
        • Javaでは,Java3Dを中心にOpenGL(JOGL)も使ってきました.
          • Java3Dから同じくSceneグラフ方式のJavaFXへ移行したいところですが,
          • 今のところは,未だJava3Dが手放せません
          • OpenGLも継続して使っていく必要がありそうです.
        • Pythonでは,PyOpenGLを使いましょう
      • 各種ライブラリ(API)も使います
        • グラフ描画,編集: JGraph, Jung
    • その他のプログラミング言語は...
      • MATLABはツールボックスを使う研究プロジェクトで使用します
      • ScalaとGroovyはJavaと併用して使います
        • ScalaはAkkaを使う際にも使用します(Javaでもよいのですが)
        • ScalaはDSL(Domain Specific Language)の研究プロジェクトでも使用します
        • GroovyはGrailsでも使います.
      • C#,C/C++は,センサーを使う研究プロジェクトで使用します.
      • 現時点では,Haskell, OCaml, Prolog, Erlangを積極的に使うプロジェクトはありません
        • しかし,それぞれ概念的に,非常に面白い言語です.
        • 元々,私も学部生~修士の頃,LispやPrologの処理系の実装を趣味でやっていました.
        • ErlangやAkkaを使ったシミュレーションのプロジェクトを計画しています.


研究室で使用するツール/ライブラリ/フレームワーク

  • 飯島研で使用するツール/ライブラリ/フレームワーク (iijima 2015-11-27)
    • 機械学習関連は,未だ未だ研究室に技術の蓄積が足りません.これから頑張っていきましょう

    Unity

    ゲームエンジン

    jMonkeyEngine

    ゲームエンジン

    pyGame

    ゲームエンジン

    JGraphX

    グラフの可視化と編集

    Jung

    グラフの可視化と編集

    Java3D

    3Dグラフィックス

    OpenGL

    3Dグラフィックス

    OpenCV

    コンピュータビジョン,画像処理

    MASON

    エージェント・ベースド・シミュレーション

    ArcGIS

    地理情報システム

    QGIS

    地理情報システム

    Uppaal

    モデル検査器

    Tappaal

    モデル検査器(Timed-Arc Petri Net)

    CIlib

    Computational Intelligence

    DEAP

    Computational Intelligence

    Coq

    定理証明系

    TensorFlow

    機械学習

    Hadoop/Mahout

    機械学習

    Spark/MLlib

    機械学習

    Theano

    機械学習

    PyLearn2

    機械学習

    Blocks

    機械学習

    Keras

    機械学習

    Lasagne

    機械学習

    Caffee

    機械学習

    Torch7

    機械学習





IijimaLab: recruit/2017/Skill (last edited 2017-10-20 00:45:49 by TadashiIijima)