犬も歩けばエンジニアになる

プログラミングや数学や物理に関する技術メモ

米国CS学部で卒業までに履修した授業-1~2年目編

筆者が米国のとあるリベラルアーツカレッジでCS(コンピュータサイエンス)学部と物理学部をダブルメジャーで卒業するまでに履修した授業を紹介してみようと思います。

対象となる読者

  • 理系でアメリカ留学に興味のある方

  • 文系卒エンジニアだけど理系卒エンジニアがどんな勉強をしてきたのか気になる方

一年目

一年目はほとんど数学関連の授業です。すべての基礎となる数学の知識をガチガチに固めます。 リベラルアーツで教養の授業も取らないといけないので、理系科目は少なめです。

1 Calculus (2学期) Math

教科書:Calculus by Michael Spivak

日本の大学でいう解析の授業です。高校時代に習った極限の概念をイプシロン-デルタ論法を使って厳密に定義し、足し算・掛け算から、微分積分まで再定義していきます。

2 Linear Algebra (1学期) Math

教科書:Linear Algebra with Applications by Otto Bretscher

機械学習やグラフィックスなど、線形代数の知識が生きてくるCS分野はたくさんあります。単なるウェブアプリ開発などであれば、これらの分野の知識がなくても生きていけますが、流行りのAI開発に関わりたいのであれば線形代数は欠かせません。

3 Data Structures and Algorithms (1学期) CS

一年目で唯一のプログラミングを伴う授業です。連結リスト、ハッシュマップ、二分木などのデータ構造やバブルソートクイックソートなど基本となるアルゴリズムJavaで実装していきます。 特にハッシュマップは知っているかいないかで世界が変わるので、必須の知識です。

4 Modern Physics (2学期) Physics

教科書:Quantum Physics of Atoms, Molecules, Solids, Nuclei, and Particles by Robert Eisberg

高校で習った古典物理で凝り固まった頭を近代物理へとアップデートします。プランクアインシュタインなど、物理学の英雄たちが編み出した特殊相対性理論量子力学を歴史の順番通りに学んで行きます。 実験やレポートが多く、個人的には四年間の大学生活で一番苦労した授業でした。

二年目

二年目は物理から距離を起き、CS寄りの授業ばかり取っていくことにしました。早めにプログラムを書けるようになって、インターンや金稼ぎをしたいという不純な理由ですw

5 Computer Organization (1学期) CS

そもそもコンピュータってなんだっていうところから始まる授業です。ANDやOR回路など回路の組み合わせで足し算掛け算ができるよっていうお話に始まり、チューリングマシンなど概念的なことからintelSandy Bridge世代に導入されたHyper-Threading(ハイパースレッディング)がどういう仕組みなのかなど、低レベルなコンピュータ技術を中心に学んで行きます。 ラボではVHDLを使ってFGPA上で自作CPUを作り、最終的にはPythonアセンブリ言語を自作するところまで行きました。

6 Data Analysis and Visualization (1学期) CS

基本的なデータサイエンスのお話。はじパタに書いてあるような、ベイズ統計、K近傍法、PCA(主成分分析)などから、ニューラルネットワークPythonとnumpyのみで実装していく授業です。流行りのニューラルネットワークについても教えてもらえたので、教授はちゃんと授業内容をアップデートしているんだなと感心しました。

7 Computer Vision (2学期) CS

前半はディープラーニングが流行る以前の技術である、SIFTなどの特徴量によるObject Recognition(物体認識)の技術などを勉強します。後半ではディープラーニングを使った最先端のモデルの論文を読んでディスカッションするのが主な内容です。後半では、ディープラーニングを使った自然言語処理音声認識の技術であるRNNやLSTMについても学びました。

8 Programming Languages(1学期) CS

プログラミング言語について詳しく学ぶ授業です。Haskellなど関数型プログラミングの方法や、Parallel Computing(並列計算)の方法、c言語のメモリ管理についてなど、雑多な内容が多かった印象ですが知っていいて損はない知識ばかりでした。

9 Vector Calculus(1学期) Math

日本の大学で言うベクトル解析の授業です。ガウス、ストークス、グリーンの定理など、三次元空間上の微積分について学びます。ほとんど物理のために取った授業でしたが、三次元空間での計算に慣れることができたという意味ではCSにも生きている気がします。


リストが長くなってきたので、3~4年目編は別記事にします。