情報と計算の理論的基礎、及びそのコンピュータ上への実装と応用に関する研究分野である。
コンピュータ科学には様々な分野がある。コンピュータグラフィックスのように応用に力点がある領域もあれば、理論計算機科学と呼ばれる分野のように数学的な性格が強い分野もある。
計算科学は科学技術計算という「計算需要」に応えるための分野であり、それを実現する手段の研究は高性能計算である。また、一見わかりやすい分類として、計算機工学など「ハードウェア」と、プログラミングなど「ソフトウェア」という分類があるが、再構成可能コンピューティングのようにその両方と言える分野があるなど、単純に分類ができるようなものではない。(Wikipedia)
特に必要な事前準備はない。最初はプログラミングの経験がなくても大丈夫。天文学に望遠鏡が必要と同じように、情報科学には数学が必要なので数学ができると良い。(Izuho)
「この授業を受ければ、シリコンバレーのほとんどの会社のエンジニア面接を突破できる」とも言われる授業。データ構造とアルゴリズムについて手を動かしながら学んでいく。毎週課されるプログラミングの宿題では,正しく速く動くプログラムを書くことが求められる。宿題を提出すると自動でプログラムの速さが計測され、常にランキングが公開されていた。
エンジニアとして働く卒業生Hiroによる詳しい経験談はこちらから!(外部リンクです)
(Logo: Harvard University)
Hiro
「この授業を受ければ、シリコンバレーのほとんどの会社でエンジニアとして活躍できる」とも言われる授業。WindowsやMac、Linuxなど世の中にたくさんあるOSを、ほぼ0から作る。ハーバードのコンピューターサイエンスで最も大変な授業で、予習や課題を含めると1週間に40時間かかるとも言われている。
エンジニアとして働く卒業生Hiroによる詳しい経験談はこちらから!(外部リンクです)
(Logo: Harvard University)
Hiro
HMCコアの授業の一つで、一年生の秋学期に取る授業。
CS5 gold, green, blackまたはCS 42を選ぶことができる。CS5 goldはプログラミング初心者用、greenは生物に興味のある初心者用、blackは中級者用、CS 42は上級者用。
レクチャー以外に実践的なラボの参加も必須なので、教授や先輩がいる環境で授業内容を理解しているか確認しながら課題を進めていけるため、初心者にも優しい構図になっている。
CSの幅広い内容を少しずつ試せるのでHMC生以外にも人気。個人的には暗号を解いたり、文章の傾向を分析する自然言語処理の単元が一番おもしろかった。
(Logo: Harvey Mudd College)
Nanako
「君たちは3週間半で Java を習得するんだよ、ありえないよね!」と教授から言われて始まるこの授業。
その通り Java というプログラミング言語の基礎を3週間半で身に着けるというのがコンセプト。毎日朝3時間、昼1時間のラボ、その後翌日提出の課題を夜に行うためブルーライトを遮断する眼鏡が必須になる。
筆者は最終的に画面上で2人で行うことのできるブラックジャックやかなり複雑なアニメーションを制作できるようになった。
(Logo: Colorado College)
Takuto
機械学習の理論の授業。機械学習の中でも教師あり学習と教師なし学習を重点的に学んだ。
授業では証明テクニックについてレクチャーをうけ、宿題では授業中に学んだ証明テクニックを使い、機械学習の理論を証明していく。コンピューターサイエンスの授業であるのにも関わらず、授業でコンピューターやプログラミングは一切出てこない。
線形代数、確率論、統計学、微分積分の知識が必要になる。宿題も1つの宿題を終わらせるのに数十時間かかるなど、ヘビーな授業だった。だが、興味深い宿題が多く、ニューラルネットワークの理論を証明したあと、その証明を使ってニューラルネットワークをゼロから実装したり、論文を読み、そこで得た知識を用いて実装をしたりするなど、理論と応用が結びついていて、自分が証明したことがどのように現実世界に落とし込まれているのか理解することができる。
また、証明のテクニックや数学的知識が身につくことにより、授業を受け終わった頃には機械学習の理論研究ができるレベルまでに到達し、難しいがやりがいのある授業だったと思う。
(Logo: Columbia University)
Riku
音声言語処理の授業。自然言語処理が先修科目ということもあり、自然言語処理に音声情報を組み合わせることにより、どのような情報を得ることができるのか学んでいった。
具体的には声質と喋っている内容を組み合わせることにより話者の感情を推測したり、喋っている人の意図を機械学習を使って学んだりする。宿題は毎週論文を読んで要約をするのと、プロジェクトがある。この授業がきっかけで後に音声言語処理のラボで研究することになった。
(Logo: Columbia University)
Riku
防御の方法を考えるためには攻撃の方法を知らないといけない、ということで主要なサイバー攻撃の行い方やマルウェアの構造、暗号の仕組みなどを学んだ。攻撃の手法が多岐にわたるため、インターネットの仕組みやメモリーの仕組みなど、様々な前提知識が要求される。
宿題では授業用のサーバーを攻撃したり、マルウェアを作ったり、暗号を解読したりなど、実践的な内容が多かった。先生がインド人のだいぶアクセントの強い方で、授業の内容より先生の言ってることを聞き取ることのほうが難しかった。
(Logo: Columbia University)
Riku
因果推論に関する上級機械学習の授業。
一般的な機械学習では相関関係は学ぶことができるが因果関係を学ぶことはできない。例えば薬を服用した人が回復する確率が高いとわかったとしても、母集団の偏りなどの影響で薬を服用することが回復率を高めるかはわからない。そんな中、ベイズ統計や確率論を使って、因果関係を導き出そうとする学問。
人間の学習は因果推論によるものが多いと言われていることから、1つのタスクだけにしか使えない機械学習ではなく、汎用人工知能の実現のために必要となるのがこの学問だ。授業を受けている生徒の過半数が博士課程の生徒で、難しい授業だった。
学期末までにプロジェクトを仕上げないといけないのだが、因果推論を使った強化学習の理論研究を行った。
(Logo: Columbia University)
Riku
大学で学ぶコンピューターサイエンスは理論が多いが、この授業は機械学習の応用に関して。Kaggleのようなデータ分析コンペで勝つための実践的な機械学習のテクニックを学ぶ。有名な機械学習ライブラリScikit-learnのコアデベロッパーの方が先生。
(Logo: Columbia University)
Riku
機械学習の中でもディーブラーニングの応用の授業。
課題が面白く、大学のランドマークの写真を分類するような基本的なものから、写真とその写真に関する質問を与えられたときに質問に回答するようなモデルを作ったり、白黒写真をカラー写真にするなど。現在ディーブラーニングでホットな分野、説明可能性やプライバシーなどについても学んだ。
(Logo: Columbia University)
Riku