スタンフォードのコンピューターサイエンスカリキュラム

Google創始者達が在学していた大学だったり、Appleスティーブ・ジョブズが卒業祝賀スピーチをしていたりということでも有名ですし、他にも研究成果のメディアへの露出がすごい印象があります。
あと一部の授業を iTunes 経由で配信していたり、ごく最近のトピックとしては、映画「アバター」で、シガニー・ウィーバーアバターStanford のタンクトップを着ています。(シガニー・ウィーバーStanford を1972年に卒業)実はこのアバターについてはスタンフォード内の Virtual Human Interaction Lab で実際に研究が行われていて、なんでも最近の研究結果ではアバターの存在が実生活をよりよいものにするとか・・・。

卒業後の進路

2005年から2008年までの就職先が学部、学位別に掲載されているのがこちらのリンクです。
http://cardinalcareers.stanford.edu/surveys/0708/destination/placement/default.htm

で Schol of Engineering の初年度年棒調査がこちらです。2008年度卒業分。
http://cardinalcareers.stanford.edu/surveys/0708/engineering.htm
これをみてみると平均 $82k とありますが、参考にするにはちょっと母数が足りないかな。


http://cdc.stanford.edu/guides/handbook/default.htm
就職課のサイトからキャリアハンドブックを参照できますが、日本で就職や転職活動する際にも役立つと思います。その必要のある人、もしくはキャリアコンサルタントなんかの仕事をしている人には是非オススメ。Stanford に限らずあちらの大学の就職課の資料って実際的な部分ですごく役立つと思います。
この資料のなかでも「SAMPLE ACTION VERBS LISTED BY FUNCTIONAL SKILL AREA」という節で、自己アピールをする際に使うと効果的な動詞一覧が各機能スキル別にリストアップされているのにはびっくり。
以下その中からリーダーシップをアピールする際に効果的な動詞一覧を引用してみます。

  • Administered
  • Chaired
  • Convinced
  • Directed
  • Examined
  • Executed
  • Expanded
  • Facilitated
  • Improved
  • Initiated
  • Managed
  • Oversaw
  • Produced
  • Recommended
  • Reviewed
  • Supervised

なるほどねー。自己アピール文では動詞の使い方がポイントになるということでしょうか。
ここにある動詞一覧使って自己アピール欄のアピール度をスコアリングするソフトウェアとか書いてみると面白いかも。

CS カリキュラム

CSをメジャーとする場合、以下の8つのうちいずれかを専攻する必要があります。

  • Artificial Intelligence(人工知能
  • Biocomputation
  • Graphics
  • Human Computer Interaction
  • Systems
  • Theory
  • Unspecialized
  • Individually Designed

この中でUnspecialized と Individually Designed というのがピンとこないですね。
Unspecialized は多岐にわたる領域のクラスを取得する必要があるようで、いわゆるCSゼネラリスト、みたいな感じでしょうか。で、Individually Designed は上記に当てはまらない専門分野に対し、自分でカリキュラムを作成して承認を受けてから履修を進めていくスタイルの専攻です。オレオレカリキュラム。

あとStanford に限らず、クラス用の Twitter もしくは Facebook のアカウントが存在するというのは一般的になってきているようです。確かに Web で「今日は休講です。」なんてアナウンスするよりも twitter 上のほうが効果的なのは確かですよね。

CS106A: Programming Methodology

http://www.stanford.edu/class/cs106a/
Stanford では Java が最初に習う言語になります。
テキスト:

あと Karel the Robot Learns Java というテキストがネット上からフリーでダウンロードできます(どこが正式な配布元かはわからないのですが)。

CS106B Programming Abstractions

http://www.stanford.edu/class/cs106b/
Java の次は C++ です。
テキストは上記サイトからダウンロードできる CourseReader。なんと682ページもあるPDFです。しかもこれをものすごい勢いで消化していきます。途中2章ほどスキップしますが約3ヶ月でこの文書をこなす感じ。

CS106X Programming Abstractions in C++

http://cs106x.stanford.edu/
CS106Bの強化版。CS106Bが生ぬるいと感じる人のためのアドバンストコース。
テキストはCS106Bのものと一緒で、違いとしては B でスキップしていた章は飛ばさず、さらには C++ だけじゃなく Python まで手を広げていくというスパルタンな仕上がり具合。


CS106L: Standard C++ Programming Laboratory
http://cs106l.stanford.edu/
C++を自由自在に使えるようにSTLまわりとか。TEXTはCourseReaderのほかにお勧め本がたくさんあります。シラバスで薦められているのは以下の6冊。

こんだけやればさすがに C++ が自由自在になっていそうですね。

CS107: Computer Organization & Systems

Prerequisites: CS106B or CS106X
http://www.stanford.edu/class/cs107/
上記サイトを見る限り今年のサイト作成は遅れているようなので、Fall 2009 の資料を参照出来るサイトをリンクしておきます。
https://courseware.stanford.edu/pg/courses/4838
パタヘネっぽい感じの授業ですね。ただ、Cとアセンブラを使うまでは一緒ですが、アセンブラのターゲットアーキテクチャMIPS ではなく IA-32 です。
あとテキストはほぼ HandOut を使います。

CS110: Principles of Computer Systems

Prerequisites: CS107 and CS103 or CS103B、あと CS107 レベルのコンピュータのアーキテクチャに関する知識
http://www.stanford.edu/class/cs110/
コンピュータのアーキテクチャについて CS107 よりも掘り下げていくレベルの授業。
TEXT:

実はこのテキストには6章までしか収められていません。
7章から11章までは以下のサイトからオンラインで閲覧することができます。
http://ocw.mit.edu/ans7870/resources/system/index.htm

CS161: Design and Analysis of Algorithms

http://cs161.stanford.edu
アルゴリズムのクラス。内容は結構典型的な感じかな。
TEXT:

MATH41: Calculus

http://math41.stanford.edu
どこの大学にいっても CS で微分積分は必須ということですね。
TEXTは前にも出てきた Stewart のもの。他に8,000円くらいのもあるので万が一にも買おうと思ったら amazon で検索しなおしてくださいね。

MATH42: Calculus

http://math42.stanford.edu
クラスの内容は Math41 の続きでテキストも一緒です。

CS103: Mathematical Foundations of Computing

http://www.stanford.edu/class/cs103/
TEXT:
このテキストについては第一章だけ。

こちらについては共立出版から翻訳が出ていますね。

CS109: Introduction to Probability for Computer Scientists

Prerequisites: CS106B or X, and MATH51 or equivalent
確率の授業です。
TEXT:


ほかに以下3つのクラスも必修なのですが、あいにくサイトが見つからなかったので割愛します。
PHYSICS41
PHYSICS43
ENGR40