こんにちは。Japan Illini Club 42期生のRIです。慶應義塾大学法学部に4年生として在籍しています。
8月下旬にイリノイ大学に到着し、すでに1ヶ月が経ちました。9月末には寒くなるとJICの先輩方から教えられましたが、今年は珍しく真夏のような気候が続いています。すぐに冷え込むだろうと思い、冬用のコートも持ってきたのですが、あと1ヶ月は使う出番がなさそうです。さて、現地では2週間前にようやく履修登録が完了し、授業を含め現地での生活に大分慣れてきました。イリノイ大学では日本で学んでいた法学・政治学とは全く異なる、工学部の計算幾何学(以下:CS)をこちらでは専攻しています。元々高校2年生までは理系だったのですが、いざ4年生の時点で理転すると、脳が時々止まってしまうような場面にも直面します。そんな新鮮な経験も含め、これから現地での大学生活についてつらつらと書かせていただきます。
①現地での授業について
こちらの大学では主に4つの授業を履修しています。一つ目はCS101: Introduction to Computer Science(3単位)という、CSを最初の基礎から学ぶ授業です。主な内容としては、CSに関する理論やコンピューターの仕組みを学び、後にPythonというプログラミング言語に取り組みます。Pythonという言語は近年話題のデータサイエンスでも活用される機会が多く、数年前にCS101でもカリキュラムに取り入れたとのことです。週に2回の講義、1回のラボに参加する必要があり、且つ毎週2つの小テストと隔週の試験が待ち受けています。主に1・2年生が参加する授業ですが、CSに少し興味を持つ学生が、この授業を受けて急に専攻を変えることも珍しくないと先日担当の教授が話していました。米国の教育メディアで有名なU.S. Newsは、”Best Undergraduate Computer Engineering Programs(Doctorate)”という全米ランキングでイリノイ大学(アーバナシャンペン校)を4位と評価しているだけあり、学生に対する期待値がとても高いと感じます。また、ランキングで高く評価されていることもあり、多くの学生が最初はこの授業を受けることから、この授業は「(途中で挫折する)CSに興味ある学生」と「CSを本気で学びたい学生」を判別する振り子的な役割を担っているそうです。
二つ目の授業はCS125: Intro Computing – Engineering & Science(4単位)という、Javaというプログラミング言語を中心に学ぶ現地の名物授業です。CS101よりさらにパワーアップして、毎週3回の講義と1回のラボ、1つの小テスト、1つのMachine Problems(以下MP)が待ち構えています。このMPというものが非常に厄介で、毎週3つの応用レベルのプログラミング問題が課され、それを毎週他の課題と共にこなしていく必要があります。CS専攻でも案外時間があるんじゃないのか、と最初に来た時は思っていましたが、見事このMPの存在によってその甘い期待は打ち砕かれました。他の課題や授業を受けつつやっていると、睡眠時間を削るという選択肢以外がありません。1つ目のMPはなんとか徹夜せず終わらせることができましたが、先週提出した2つ目のMPでは、徹夜する羽目になってしまい、せっかくのFriday Nightは爆睡する結末に至りました。イリノイ大学ではCSが一番難関な専攻といわれていますが、今それを痛感しています。ただ、この授業時間以外にTeaching Assistant(以下: TA)がたくさんのオフィスアワーを設けているため、わからないことがあれば直ぐにTAに聞ける体制が整っています。「厳しく教えるけど、ちゃんと学習支援は行うよ!」という姿勢がひしひしと伝わってくる授業です。辛い時もありますが、本当にこの大学にきてよかったと思うことができるようになった授業でした。
三つ目の授業はCS196: Freshmen Honours(1単位)です。この授業は毎週講義と分科会が1回ずつ行われます。この授業はたったの1単位しかありませんが、非常に特殊で且つ人気を誇っています。まず、この授業に担当教授はいません。授業は全てCS196で優秀な成績を残した2・3年生が担当します。次に、学生が取りまとめる授業であるため、授業は全て19時以降に開催されます。日中の授業や課題でクタクタな状況でも、この授業のために遠い工学部キャンパスに戻ります。3つ目は分科会です。この分科会も夜に開催されるのですが、こちらでは自分が興味を持つ分野について学ぶことができます。米国では、データサイエンティストが今最も熱い職業といわれているのと、ちょうどデータサイエンスで活用されているPythonを学んでいたこともあったため、私はデータサイエンス分科会に入りました。講師は2つ下の20歳ですが、すでに大学の米国立スーパーコンピュータ応用研究所にリサーチに携わっており、改めてこの世界で年齢は関係ないと実感した次第です。そしてこの授業はプロジェクトベースとなっています。先週は立候補した学生が取り組みたいプロジェクトをピッチし、今週ついに私もそのプロジェクトの一つにアサインされました。まだアイデア段階ではじまったばかりですが、これからどんなものがつくれるのか、とても楽しみです(寝たい)。
写真②:CS196の授業風景
四つ目の授業ではIS590 Data Visualization(4単位)というものを履修しています。こちらは情報科学という専攻の授業になっていますが、内容は非常にCSに近いものとなっています。インターネットで公開されている様々なデータを用い、Pythonでそれを図式化する手法を学んでいます。これは院生の授業なのですが、先生はとても面倒見がよく、非常に取り組みやすい授業です。また、授業ではテクニカルなことについて教えてくれるだけでなく、データとは一体なんなのか、このデータにどう向き合えば良いのかという抽象度が高い議論も行うので、自分がなぜこの領域を学んでいるのかを考えさせてくれるきっかけとなります。こちらの授業はCS125に比べ、課題量は少ないのですが、Pythonに関する事前知識が必要とされるため、独学でさらに学ばないといけません。なんにせよ、自分で選んだ道なので、これからも頑張って取り組んでいきます(寝たい)。
また、正式に履修はしていないのですが、CS 126: Software Design Studio(3単位)という授業を聴講しています。元々この授業は留学生が取れないものとなっているのですが、担当教授と話し、アドミッション担当者に直談判した結果取れることができました。最初は正式に履修登録を行いましたが、CS125の知識を前提とした授業であったため、「このままの状態では十分に学べない」と判断し、聴講という形式に変更しました。この授業では、プログラミング言語を学ぶのではなく、「いかにコードを綺麗にかけるか」ということが求められます。まだ十分なプログラミング知識はないのですが、授業を聴講するのと、課題図書の『The Art of Readable Code』を読んで、コードを書くときにこんな点に注意をおくのか!、とたくさんの気づきを提供してくれます。また、講義のみならず、少人数で開催されるコーディングセッションでは、5人の学生がお互いにつくった課題コードを見せ合い、それぞれのコードの内容や構成について改善点や疑問点を指摘しあいます。このセッションを通じて、コードは第三者に見られるものであり、仮に一人のプロジェクトでも常に構成は気にすべきだと感じました。また、コードはその人の論理的思考が直接反映されるものなので、その人の経験値や論理構成能力が露わになります。日本でエンジニアの方と話したとき、「コードでその人の性格がわかる」と言われたことがありましたが、ようやくイリノイで理解することができました。
②CSを勉強しながら感じたこと
一通り授業について述べましたので、授業や現地での生活についてこちらで話させていただきます。まず、CSを専攻している学生はThomas M. Siebel Center for Computer Science(以下: Siebels)という施設で講義やラボに参加します。私はキャンパス南側のBousfieldというところに住んでいるのですが、Siebelsは北側にあります。バスで十分、歩いて30分ほどの距離です。遠いのが少し難ですが、施設は新しく綺麗で、大学が理系分野に注力していることが露骨に表れています。そして、このSiebelsという施設では理系の学生が溜まっているのですが、8割りがインド人と東アジア人で構成されているといっても過言ではありません。海外から飛び立った留学生も多いですが、2世や3世も多く、この施設の空間はアメリカは移民の国であることを強く立証しているように感じられます。ただ、日系の留学生や2世は一桁台しかおらず、やはり日本は豊かな国であると実感したと同時に、トビタテや留学支援プログラムが他国に比べとても充実しているのにも関わらずこの数は異常だと、ある種の焦燥感も得ました。異国に旅行するのが大好きな日本人は、異国に住み着くことは選びません。それは日本が住みやすい国であることの裏付けでもありますが、米国では日本の存在感は全くありません。複雑な国際社会で、ここまで影が薄いと、日本国籍を持つ自分はこれからどんな生き方を選べばいいのか、などというぼんやりとしたことについても考えてしまいます。
また、CSの勉強を通じて、集団で学ぶ環境の大切さを感じました。CSに関するほとんどの教材やナレッジはすでにインターネット上に無料で載っていて、独学することが可能です。つまり、日本の四国にある小さな町の家の一室に引きこもっていても、インターネットさえあれば専門知識を得ることができます。故にCSはどこでも学べるし、インターネットがあればどこでもソフトウェアエンジニアは作業できるという風に言われています。しかし、一人で一から学ぶのは相当根性がないと難しいと今回の留学で改めて痛感しました。わからない問題に直面したとき、インターネットで解決方法を探すことはしょっちゅうありますが、集団で勉強する方が圧倒的に効率が良く、学びがあります。自分が理解していない点や直面する課題について、隣に誰かがいるだけですぐに質問することができます。Siebelsは、全米最高峰のCSナレッジが密に集中している空間です。この空間にいることが、この留学の醍醐味だと私は思います。そして、人に自分が問題に直面していることを説明するのは、思考の整理に繋がります。「自分は今この課題を解くアルゴリズムをつくる必要があって、このコードの行にはこんな意図がある。ただ、次のコードを書くときにこんな風に書いたらエラーが出てしまう。どうすればこのエラーは無くなるのだろうか。このコードはどのコードと繋がっているけど、このコードにも影響しているかもしれない。」と、言語化して声に出すだけで、少し脳内がスッキリする感覚が得られます。泥臭い作業が殆どですが、「誰かと一緒に」向き合うというだけでモチベーションは保たれますし、コミュニケーションしながら助け合う姿勢は、CSのみならず、生活の様々な面で役立つのではないのでしょうか。
過去に一年間、イギリスのエジンバラ大学に交換留学生として国際政治について学んでいたのですが、こちらでの授業生活とは全く異なるので驚いています。取り組んでいる学問領域が異なるというのもありますが、こちらでCSを学ぶとなると一時的な暗記や「力技」が全く効きません。CSでは論理に対して本質的な理解が常に求められます。国際政治では、論文構成についての議論や学者が提唱する概念についての理解が求められますが、暗記を求められるケースが多いという所感です。異なる学問でも、学ぶ姿勢という観点では多くの共通項がありますが、試験期間でよく垣間見られる一夜漬けはあくまで暗記ベースでしか応用できません。政治学では、「この年度に、この人物が、こんな外交事件を起こした」ということを暗記で覚えられますが、CSは「考え方」を教えます。つまり、その考え方を一度でも理解すれば類似問題はいくらでも解けますが、その考え方を理解しなければ一生解けません。もちろん、一夜漬けで「考え方」を理解できる人もいるとは思いますが、私は毎日地道にコードに触れて理解していこうと思います。先日、教授との面談が行われたのですが、その際「プログラミングは楽器を練習するのと同じ。毎日触れて、毎日勉強する習慣が鍵です。」とアドバイスをいただきました。今はわからないことだらけですが、来年の夏には全く違う学問に頑張って取り組んでよかったと思えるように、精進してまいります。
写真③:ほぼ毎日通う工学部の図書館。24時間運営しています。
元々日本の大学では法学・政治学という非常に定性的な学問に触れ合ってきましたが、イリノイ大学ではCSの学生として、異なる手法で自身の「考え方」を磨いていきます。また、留学期間に自分で一つ何かプログラミングを作ってみたいと思いますので、乞うご期待ください!拙い文章ですが、年末の時期にまた近況報告をさせていただきます。お読みいただきありがとうございました!