250時間かかった科目も! コンピュータのクラスの課題とは?
みなさんこんにちは!アメリカのブラウン大学に留学中のKentaです。
今回は、前回の記事に続いて僕が今学期(2021年秋学期)にとった科目についてお話ししたいと思います。
僕はいま(2021年12月下旬)、シカゴの空港で4時間にわたる乗継便待ちをしています。1つ驚いたのは国内便の利用者がとても多いことです。アメリカもオミクロンの影響を受け始めていて大変なのですが、日本のように規制が引き締まっていないので少し心配です。
では、本題に入っていきましょう!
課題でつくった植物図鑑のページ
Introduction to Computer Systems
この科目は、Systemsというように、コンピュータのソフトフェアをつくるというよりは、コンピュータの構造を理解しようというものです。言語はCを使いました。
たとえば、みなさんの使っているパソコンがどのようにファイルを保存しているのか、どのようにコンピュータメモリが機能しているのか、どのように複数のプログラムが同時進行で互いを干渉しないようにするのか、こういったことが学習内容です。
僕が気に入った宿題を2つ紹介します。
1.Shell
自作のShell
みなさんはShellってご存じでしょうか?
簡単に説明すると、Shellというのはパソコンと私たちがコミュニケートする手段です。
- ファイルやフォルダを作成・削除する
- アプリケーションを開く
- プログラムを書く・実行する
などの機能に対応しています。
みなさんのパソコンがどのオペレーティングシステム(MacやWindowsやLinux)であっても、必ずShellは存在します(僕の場合はCommand Prompt/Windows Shell/Git Bash)。
この宿題は、「Shellを一から作成しろ」というものでした。といっても一人前のShellではなく、以下の機能を実装したShellです(少しテクニカルなので簡潔にします)。
- cd, rm, ln, exitコマンドの対応(cdはフォルダの移動、rmは削除、lnはリンクといい、ファイルとフォルダをつなげるもの、exitは僕のShellを閉じるコマンド)
- SIGINTなどのシグナルハンドル
- pid やjobを使ってのbg と fdの実装(bgはいま実行されているプログラムを背景にもってき、fdは背景で実行されているプログラムを表にもってくる)
僕が何を書いているかわからない人はすみません。要はかなり労力のかかる宿題でした(笑)。
2.Buffer
この宿題はたしか3つ目の宿題で、難易度はそれほどでもないのですが、内容がおもしろかったので紹介します。
ハッキングの手法の1つにBuffer Overflowというものがあるのですが、この宿題は与えられたコードを解読し、いくつか修正点を加え、プログラムをハックしろというものでした。
コンピュータメモリというのは複数の階層に分かれており、その1つがBufferです。そしてBufferのすぐ上にはStackというものがあり、私たちのコンピュータは、Stack内にある指示に従いプログラムを実行します。
Buffer Overflowは、Stackのすぐ下にあるBufferをでたらめなもので埋め、Stackの領域に侵入し、私たちがコンピュータに実行してほしいプログラムのアドレスに入れ替えます。そしてコンピュータがそのプログラムを実行したときにハッキングが起こるわけです(現実世界ではここまで単純ではないのでご安心を)。
この宿題で大変だったのは、与えられたコードを理解するところ、Buffer のサイズ、StackとBufferのアドレスを見つけることでした。Gdbというツールを使って、一行一行コードが何をしているかを理解しなくてはいけなかったため、かなり苦痛でした。
でも、この科目を履修し終えた感想は、「ものすごくおもしろい」に尽きます。いままでコンピュータを使う中で、Shellやメモリに注意を向けることはありませんでした。このクラスをとり終えたいま、それらについて理解が深まっただけではなく、日々の生活においても新しく得た知識を使えるようになりました。
加えてC言語を学べたことで、他の言語(JavaやPython)にはないアドレスやポインタの知識や、よりきれいなコードを書くことをつねに意識する習慣もつきました。
Introduction to Software Engineering
打って変わってこの科目は、コンピュータのソフトウェア作成を中心としたクラスです。
当初は履修登録することができなかったのですが、補欠リストから繰り上がって履修することができました。
このクラスは週に平均20〜25時間というワークロード(課題)があることで有名で、今学期はそのワークロードを軽減しようと、レターグレード(ABCによる成績評価)からパス/フェイル(S/NCによる評価)に変更されました。要はこのクラスの課題を終わらせる努力をすれば単位は獲得できるということです。
この変更にはネガティブな点もあり、それについては後で触れたいと思います。
プロジェクトは2つあり、その上に最終課題があるといった感じです。それに加えて毎週ラボがあり、異なるトピックをカバーしました(React、HTML/CSS/JS、SQL、APIなど)。
1つ目のプロジェクトは大したことなかったので、2つ目のプロジェクトと最終課題を紹介します。
1.Maps
この宿題では
- 最初の2週間でスクリーンリーダーの実装
- 次の2週間で簡易版Google Maps(ブラウン大学の地図)の実装
という形で構成されていました
スクリーンリーダーとは、盲目のかたや、ウェブを利用する上で何かしら不便しているかたのためのプログラムです。文章の読み上げ(スピード調節・音量調節)や、ウェブサイトとキーボードの互換性などに対応するようにしなければなりませんでした。
大変だったのは、このスクリーンリーダーがすべてのウェブサイトで動くようにコードを書かなければいけなかったところです。ウェブサイトによって構造(HTMLの書かれかた)が違ったためです。
後半もかなり大変で、まず莫大なデータを取り入れる必要がありました。そしてそのデータを得た後はウェブに表示しなければいけなかったのですが、このやりかたというのが、線を一本一本引いていくというもの。
全体地図を実装した後は、ズームイン・アウトの機能を実装しなければいけなかったのですが、これもかなり大変でした。最後にクリックドラッグの機能も実装しました。
2.BloomO(最終課題)
ログイン画面
6人グループで最終課題に取り組みました。内容は庭師用のウェブサイトの作成で、以下の機能をもっています。
ログイン・ログアウト
ユーザーはこのウェブサイトにログインすることで自分のアカウントをつくることができます。
植物図鑑
ユーザーは植物のラテン語の名前を入力することでその植物についてのもっと詳しい情報と写真を閲覧することができます。ラテン語の名前がわからなくても、植物名からのラテン語変換検索もあるため大丈夫です。そしてユーザーは、もしその植物が気に入ったら♡ボタンを押して、お気に入りリストに入れることができます。
ハーディネスゾーン検索
植物を植える上で、自分が住んでいるところでどのような植物が育つかを理解することが大切です。そこでハーディネスゾーン(植物耐寒ゾーン)というものが使えます(各ゾーンによって年間を通しての気温などが違う)。これは郵便番号を入力することで検索可能です。
植物レコメンデーション
ログイン後、そのユーザーのお気に入りリストをもとに、「今度はこの植物を植えてみたら?」というレコメンデーションをします。推薦の数や、ハーディネスゾーンも指定可能です。
さて、先ほど、このクラスの成績のつけかたが変わったのでネガティブな点があると言いましたが、もう少しそれについて触れたいと思います。
このクラスで単位をとるためには、すべてのプロジェクトを終わらせる必要はありません。仕事は他人に任せてしまおうという人もいて、じつは僕の知る限り大半の人がそうでした。
そのため最終課題は6人グループであったにもかかわらず実際3人しか稼働していないといった状況で、私たちの負担も倍増した感じです。しかしその分、ソフトフェア開発の知識や興味が倍増したこともたしかです。このクラスには200〜250時間をかけることになりましたが、それだけスキルも身についたのでよしとしましょう(笑)。
では、また次回の記事でお会いしましょう!
Kentaくんの記事一覧
- 第1回 どうしていま、アメリカの大学に留学するのか?
- 第2回 留学先としてリベラルアーツ・カレッジを選んだ理由
- 第3回 まさか!? ブラウン大学から合格通知が!
- 第4回 アメリカの大学受験。「僕はこういう人間」と伝えるために
- 第5回 100%の自分自身を表現。アメリカの大学への出願エッセーの書きかた
- 第6回 アメリカ大学受験のカギを握る「推薦状」と「大学個別のエッセー課題」について
- 第7回 いよいよ渡米! 2つのスーツケースと共に、ブラウン大学に向けて飛び立ちます!
- 第8回 ついにブラウン大学に到着! 入寮からPCR検査まで
- 第9回 PCR検査は週に2回。ブラウン大学の隔離生活
- 第10回 ブラウン大学の日常。寮生活から勉強、週末の過ごしかたまで
- 第11回 ブラウン大学で初の期末試験! 次の学期にとる科目も思案中
- 第12回 ブラウン大学の期末試験。何が問われ、どれだけの勉強が求められるのか?
- 第13回 寝ずに勉強! 留学して初の期末試験。その結果は?
- 第14回 ブラウン大学生活の余暇。ボストンへ! ニューヨークへ!
- 第15回 ブラウン大学の夏学期。今期の履修科目を紹介します!
- 第16回 コロナが収束しつつあるブラウン大学。普通の学生生活が戻るか?
- 第17回 ブラウン大学1年生を締めくくる期末試験。その内容を科目ごとに紹介します!
- 第18回 ブラウン大学で1年を終えて。来年度に向けて寮と科目を選びました!
- 第19回 ブラウン大学の1年度が終わり、夏休みに向けた準備を開始!
- 第20回 ボストンからオレゴンへ。鉄道でアメリカ横断の1人旅
- 第21回 オレゴン州ポートランドのホストファミリーと再会! アメリカの「家族」のありがたさを実感
- 第22回 オレゴンからロス、そしてミシガンからボストンへ。夏休みも終わりです
- 第23回 いま話題のディープラーニング。ブラウン大学の「深層学習」の課題を紹介します!
▼ 読むだけでアメリカ留学に役立つ資料をお送りします。▼
12/21
しっかり分かる
留学講演会
>
まずは
資料請求
>