ブラウン大学3年生、専攻をコンピュータ・サイエンスに決める

みなさんこんにちは! ブラウン大学3年生のKentaです!

今回の記事では、僕が悩みに悩んだ末、4つに絞った履修科目を紹介できればと思います。どれもとても興味深い科目です。できるだけわかりやすく説明しますので、お付き合いのほどよろしくお願いします。

専攻をコンピュータ・サイエンスにする

3年生にもなると、履修科目もかなり上級レベルのものになっていきます。それに加えて、そろそろ卒業までに必要な科目や単位などを積極的に考える時期にもなりました。

ブラウン大学では2年生の冬までに専攻をdeclare(宣言)しなければいけません。それもあって、僕は先学期に、前々から勉強してきたコンピュータ・サイエンスを主専攻として宣言しました。

専攻をdeclareすると、1人ひとりの学生に、その専攻学科の教授がカウンセラーとしてつきます。そしてそのカウンセラーと卒業までの履修計画や卒業後の進路、インターシップの機会などについていろいろ話し合うことになります。

自分でカウンセラーを選べるようになっているため、僕は以前履修したデータ・サイエンスの科目の教授を選ばせてもらいました。

カウンセラーと相談して履修科目を決める

今学期の科目を選ぶのに際して、僕が勉強したいことや、とりたい科目、宿題の量など、カウンセラーにさまざまな相談に乗ってもらいました。

僕は大学1・2年目に、他の学生と比較してもかなりの量のコンピュータ・サイエンスの科目をとっていたので、卒業までに必要な要件に関しては、かなり余裕がありました。

ところが、この秋学期はとくに、おもしろいコンピュータ・サイエンスの科目が数多く提供されていて、僕はその機会をものにしようと、できるだけ多くの科目をとることにしました。本当は別にとりたい科目もあるのですが、それらは来年とることにします。

以下にそれらの科目を1つひとつ、できるだけわかりやすく紹介したいと思います。

Computer Networks(コンピュータ・ネットワーク)

みなさん日々Wi-Fiや4G/5G回線を、スマートフォンやPCで利用していると思います。

それらがどのような仕組みでできているかご存じでしょうか? スマートフォンから写真をインストールするときやZoomの会議に参加するとき、どのようにして音声データや画像データが送られているかご存じでしょうか?

これらの質問は僕も抱いていました。

この科目では、インターネットの仕組みを本当に一から勉強するもので、ブラウン大学の中でもトップ10には入るであろうむずかしい科目として悪名高いものです。

プロジェクトが3つあって、どれも大規模なだけではなく、まったくもって単純明快ではありません。その1つが、何といっても一からインターネットを実装するというもの。この科目を履修した学生は週に平均して40時間費やしていたそうです。かなり自分の将来が心配ですが、今学期はがんばって、インターネットについての理解を深めたいと思っています。

簡易インターネット
簡易インターネット

データの送受信
簡単なデータの送受信

Programming Languages(プログラミング言語)

この世界にはプログラミング言語がたくさんあります。用途もさまざまですし、文法もスタイルもまったく異なるものが多くあります。

それらの言語がどのようにして生まれたかご存知でしょうか? どのような経緯で、それぞれの言語たちがそれぞれの文法をもって生まれのでしょうか? そしてなぜそれらは、異なるのでしょうか?

この科目では、プログラミング言語の根本的なことについて勉強します。どのようにしてプログラムが遂行されるのか、すべてのプログラミング言語に共通してあることは何か、などです。

担当のShriram Krishnamurthiという教授はこの分野の第一人者で、ブラウン大学でもこの教授の授業は大人気です。

この科目をとり終えた学生が口をそろえて言うのが「このクラスのおかげで、プログラミング言語についての理解がものすごく深まった」というもの。

僕自身、いまはただコードを書いているだけですが、このクラスを通してコードの意味などを理解したいです。2年ぶりの開講ということもあって、がんばりたいところです。

Multiprocessor Synchronization(マルチプロセッサ)

パソコンはハードウェアとしてたくさんの部品で成り立っています。その1つがCPUです。マルチプロセッサというのは、1台のコンピュータシステムに複数のマイクロプロセッサ(CPU)を搭載することです。この複数のプロセッサで異なるデータや命令を並列に処理することで、システム全体の処理能力を向上させることができます。

しかし、単に向上するといっても、どのくらい向上するのでしょうか? 搭載するCPUの数に上限はあるのでしょうか? そして何より、いかなるプログラムを並列処理することができるのでしょうか(たとえば片方の結果に依存するプログラムを想像してみてください)?

この科目では、マルチプロセッサの理論から、実際にプログラム規模の実装まで、並列処理について学習します。

僕がこの科目を履修する決め手になったのが、教授の存在です。Maurice Herlihyという、この分野のリーダーともいえる先生によって教えられます。アメリカの大学のあらゆるマルチプロセッサの授業で使われている教科書があるのですが、この先生が、おもな執筆を担当しています。そのくらいすごい人なのです。もちろん科目自体にも興味はありましたが、そんな先生から学べることにも興奮して、今回この科目を履修することにしました。

中間や期末は対面で行われるのが本当に嫌ですが(ブラウン大学に来て初めて対面テストをやる気がします。高校では当たり前だったのですが、大学はそうではないんですね)、がんばりたいと思います。

Introduction to Software Security(ソフトウェア・セキュリティ)

いま、みなさんが当たり前のように毎日使っているソフトウェアには、じつは脆弱性を抱えているものもあったりします。

たとえば、ユーザーの入力を求めるフォームがあるとします(アカウントにログインする際に入力するパスワードがその一例)。そこに、パスワードではなく、パソコンが理解できるような指令を与えたらどうなるでしょう?

起きうる例としては、あなたの個人情報の第3者への流出であったり、最悪の場合、そのサイトに登録している全ユーザーの情報が漏洩してしまうかもしれません。

この科目では、まずそのような脆弱性の理論的部分を勉強します。その原因や回避の方法などです。その後、宿題として実際に脆弱なプログラムが与えられます。私たちのタスクは、そのプログラムの弱点を見抜き、プログラムを制御することです。

まるでハッカーみたいですよね。それが楽しそうだなと思い、今回この科目を履修することに決めました。もう1つの理由は、将来的にソフトウェア・エンジニアとして働くならこのようなソフトウェアの弱みなどを知る必要があると感じたからです。

プログラムの弱点探索
プログラムの弱点を探索中

以上4つのクラスが、3年生の春学期に僕がとる科目です。

これに加えて、ティーチング・アシスタントの仕事が2つあることを思うと、かなりハードでタフなスケジュールになりそうですね。

でも、ブラウン大学にいられる時間も限られているため、僕も精一杯チャレンジ精神をもってがんばっていきたいと思います! では今回の記事はここまでです! 次回の記事でお会いしましょう!

Kentaくんの記事一覧


このページが気に入ったら→ 

Facebook

Twitter


▼ 読むだけでアメリカ留学に役立つ資料をお送りします。

留学資料を無料でとりよせる

留学相談 留学講演会
留学中の就職支援
栄陽子の書籍
栄 陽子の留学コラム