SWEet

A Software Engineer Is Eating Technologies

2018上半期院の授業振り返り

お久しぶりです。 今回は僕が上半期に芝浦工業大学大学院電気電子情報工学専攻で取った授業についてレビューというか感想的なものを書いていこうと思います。

後輩の方々に向けての参考になれば幸いです。

構成はこんな感じで書いていきます。

  • 授業名
    • 概要
    • よかったところ
    • 悪かったところ
    • オススメ度

オススメ度は4段階評価です。

分散システム特論

概要

広域ネットワークを前提とした分散システムを実現するために必要な知識や概念を体系的に学び、実装を通して技術的概要を理解する。 実装に関しては主に5つの課題があります。

  1. TCP/IPスタックの実装
  2. プロセス間通信の演習(pthread, fork)
  3. javaとC間のRPC 実装(javaのオブジェクトシリアライザ、デシリアライザの実装)
  4. 名前付け演習(Linux V6のファイルシステム実装)
  5. 同期演習(Lamportの全順序アルゴリズムの実装)

よかったところ

ファイルシステムjavaシリアライズについての仕様について実装を通して学べる。実装する言語を自分で選べる課題も多くて助かりました。ゴリゴリ実装する授業なので個人的に非常に楽しかったです。

悪かったところ

火曜1限というとこ

オススメ度

  • 3 プログラミング好きな人なら取るべき。そうでないならお勧めしない。

自然言語処理システム特論

概要

自然言語処理システムの基礎となる理論的モデルと処理技術を理解し、 システム作成実験や論文輪講を通じてその実現手法と応用事例について学ぶ。 この授業は主に二つのフェーズに分かれます。

  1. グループでテーマごとに応じた自然言語処理システムの実装
  2. グループでの輪講

僕のグループは単語の類似度計算というテーマでword2vecなどを用いず、共起度とSVD演算を用いて意味の類似度を演算するシステムを実装しました。大変でした。

輪講はこちら

http://www.aclweb.org/anthology/W16-3641

の論文を読みましたが、これは次の研究へつなげるための前座的論文なので実装的なお話は一切ありませんでした。

よかったところ

自然言語処理における、意味解析、構文解析、応用としてのシステムに関しての知識を一通り学べるのはよかったです。

悪かったところ

課題が割とヘヴィということ。二単位でやる感じではない。 グループでの作業分担がしっかりできる人は大丈夫なはず。

オススメ度

  • 2 微妙なラインです。 この時限に他に取りたいのがあるならそちらを取るべきかもしれない。 ただ、最近は自然言語処理機械学習はほぼセット扱いでバズワードなのでやっといて損はないはず。 何にしても他の授業とかと比較してみるのがお勧め

基盤システム特論

実践的な研究開発を通じて、分散システムプラットフォームの本質である並行性、並列性、信頼性についての理解を深める。 この授業は最初は分散システム特論と同じ教科書を使った輪講、その後にグループでのシステム開発になります。 開発するシステムは基本的にIoTデバイス、要はロボットとかセンサが一つ絡んであることが必須条件でそれ以外は特にありません。

よかったところ

自分の実装力を確認できる。

悪かったところ

一言でいうと概要詐欺だということ。 僕がこの授業に最初に想像していたのは 「分散システムを実装してスケールアウトできるか、信頼性などはあるかといった評価をする」ものだと思っていました。 それが蓋をあけてみれば、「どっかの学会に論文出せるようなアイディア重視のシステム作って論文書いて!!」と教授がひたすらしつこく要求してくるものでした。

要は分散システムである必要とかなくてシステムのアイディアが一番重要視されてスケールなんかしなくてもいいんです。 分散システムどこいった。

僕が一生懸命draw.ioで作った下の図は構想発表などでも特に触れられず、他の班の「脳波から感情を推定する」「植物の感情を推定する」とかに教授は嬉々としていました。 アイディアはすごいけどそれ分散システムの体なしてなくない?って感じでした。

なお他の班の多くは一切並列性、並行性、信頼性などに関しては触れていませんでした。システム自体もセンサとサーバ一対一で繋がってるだけ。 なんだこれ。 なんだか必死にスケールできるように!ってアーキテクチャを考えた僕が唐突に恥ずかしくなりました。 f:id:kk_river108:20180728171724p:plain

最初からそういう授業だとわかっていればいいですが、これに関してはあまりにもシラバスで言及がなさすぎます。 あと一つ個人的に言うならインプットが一切なかったということです。

授業なので何かしら新しい知識や技術を期待していましたが全くありませんでした。輪講は分散システム特論と被っているので全く意味がありません。 ただオレオレシステムを実装するだけです。

加えて、授業終了後の夏休み後も論文を学会に提出する人(一応希望制)は引き続き評価とか執筆に勤しみます。

オススメ度

  • -255 悪いところばかり書いたのでお分かりかと思いますが、全くお勧めしません。 時間を無駄にするだけなので他の授業を取ることをお勧めします。 唯一お勧めできるのは「なんかようわからんアイディアもってるけどこれで単位が欲しい!」という人だけです。

データ工学特論

概要

多くのデータから有意な情報を抽出するデータマイニング手法のうち代表的なものを理解し、輪講を通して、基礎的な知識の習得と最新の研究動向の把握を行う。 この授業は先生の講義とグループでの論文輪講が主です。

講義では以下のような手法に関して詳しく解説されます

輪講で僕のグループが読んだ論文はこちらです。

http://db-event.jpn.org/deim2017/papers/64.pdf

セキュリティ系のクラスタリング手法を絡めた研究は実用化が結構大変そうなイメージですね。

よかったところ

各手法に関して基礎的な数学の話も含めて、応用先などを丁寧に解説してくれて非常にわかりやすい授業でした。 必然的に機械学習の手法も多く絡んでくるので聞いてて楽しかったです。

悪かったところ

特にないです。

オススメ度

  • 4 最近のバズワードである機械学習と非常に縁が深い分野の授業なので取っておいて損はないはず。

ソフトウェア構成特論

概要

単純な型システムをもつプログラミング言語を定義し、それについての操作的意味や、記述された式に対して型についての整合性などについての理解を促す。

この授業は

https://www.amazon.co.jp/%E5%9E%8B%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E5%85%A5%E9%96%80-%E2%88%92%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E%E3%81%A8%E5%9E%8B%E3%81%AE%E7%90%86%E8%AB%96%E2%88%92-Benjamin-C-Pierce/dp/4274069117

の本を噛み砕いて説明、問題の演習を行ってくれています。 この授業を通じて静的型付け言語に対して基礎的な理解を深めることが目的となっています。

よかったところ

書籍をよりわかりやすく、演習問題を通じて丁寧に解説してくれています。 型付きラムダ計算などを代数学?てきに証明するっていうのは解いてて面白かったです。

わるかったところ

特になし

オススメ度

  • 3 4にしたかったんですが分野があまりにもニッチなので一応3にしておきました。 ただプログラミング言語に対してもっと理解を深めたい人にはすごくお勧めできる授業です。

まとめ

以上が僕が今期にとった授業についてです。 とにかく基盤システム特論だけはオススメしません。

他の授業は結構身になるものが多かったので良かったです。 この記事が少しでも誰かの参考になればうれしいです。