Subscribed unsubscribe Subscribe Subscribe

SE Can't Code

A Tokyo based Software Engineer. Not System Engineer :(

Udacity「Intro to Theoretical Computer Science」を修了した.

エンジニアとしてキャリアをスタートさせて3年半が経つが、コンピュータサイエンスの理論をしっかり学ばないと今後辛くなっていくな、という勝手な思い込みがあった。特に自分は文系出身なのでその思いは強く、今年に入ってからSICPを始めとしてコンピュータ理論に関連したいろんな文献を読み漁るようになり、その中の一つとしてUdacityの「Intro to Theoretical Computer Science」のコースを受講していた。そして二ヶ月近くかかったが、ようやく修了することができた。ノートにまとめながら進めていたので凄まじく遅かった。

www.udacity.com

NP完全性といったところから、自分が苦手意識を持っている理論面の補完としては割と効果があったと思う。コンピュータサイエンスの理論を知ることは、アルゴリズムを解く時の手助けとなる。この講義では実践の中で強力なツールとしての理論を学ぶことができるので、エンジニアとして問題解決にこれから先も取り組んでいこうものなら、知っておくべき内容だったと思う。そして単純に面白い。世の中、頭の良い人間がいるもんだな、と思わせられるし、テクノロジーの凄さとコンピュータ理論の深さの一端に触れるには良い講義だった。

Syllabus

Lesson 1: Challenging Problems

  • An introduction to tough problems and their analysis

Lesson 2: Understanding Hardness

  • What we mean when a problem is “hard” and the concept of NP-completeness

Lesson 3: Showing Hardness

  • Tools to let you recognize and prove that a problem is hard

Lesson 4: Intelligent Force

  • Smart techniques to solve problems that should – theoretically – be impossible to solve

Lesson 5: Sloppy Solutions

  • Gaining speed by accepting approximate solutions

Lesson 6: Poking Around

  • Why randomness can be of help – sometimes. An introduction to complexity classes.

Lesson 7: Ultimate Limits

  • Problems that no computer can ever solve. In theory.
Remove all ads