
「未経験から挑戦!南カリフォルニア大学・コンピュータサイエンス留学」 半年後
Polymathはニューヨークとロサンゼルスを拠点とする、理系専門留学コンサルティングファームです。アドバイザーは米国の第一線で働くGAFAM・外資投資銀行エンジニア、現役CS大学院生で構成されており、エッセイ添削、出願、合格まで力強くバックアップ致します。元々は家族・友人・同僚向けにアドバイスをしていましたが、より多くの皆様の留学成功にコミットしたいという想いから会社を設立しました。
こんにちは、Polymathのカイです。南カリフォルニア大学(USC)のComputer Science, Scientists and Engineersに2021年秋から通っています。
未経験ながらコンピュータサイエンスに進んだ私がクラスで何を勉強したのか、ついていけたのか等のついて備忘録も兼ねて記します。
2022年春に受けたクラスは
1. Analysis of Algorithms
2. Web Technologies
の二つでした。
USC コンピュータサイエンス Scientists and Engineers学科の人達は二学期目から好きに授業を取れるようになりますが、私が選んだのは上の二つでした。
アルゴリズムはコンピュータサイエンスの基礎でありこれを学ぶことで就活にも活きること、Web Technologiesは自分のアイデアをweb上で実現できるスキルをいち早く身につけたい、との思いからこれらにしました。
Analysis of Algorithm
コンピュータサイエンスの基礎であるアルゴリズムを学ぶクラス。競プロやリートコードに出てくるようなアルゴリズムの問題を解くのではなく、より理論的な側面を疑似コードを使って学んでいくスタイル。
具体的には、Greedy・ Divide and Conquer・Dynamic Programming・Network Flow・Linear Programming等を学びました。テキストはアルゴリズム教材として定番のAlgorithm Design。
クラス難易度はやや高めとの前評判で、前学期に本クラスを受けていたインド出身の友人達が苦労しているのを見ていましたが、日本である程度理系科目が得意だった人なら普通にこなせるクラスだと感じました。
先生はShahriar Shamsian。テキストよりも先生の講義が断然わかりやすかったので、録画された講義を何回も見ることで理解度を高めました。USCで受けていた授業の中で一番分かりやすかったです。
一応毎回課題が与えられますが、課題の添削コメントが対して意味が無かったのと、成績には反映されないため、私は途中で提出するのを辞めました。
期末テスト後の最終課題のみは点数が与えられましたが(5点)、数日で完了できる内容でした。
成績は中間テスト2回、期末テスト、最終課題の合計で判断され、私はA-でした。人によっては苦戦していたようですが、数学や競プロが得意な人には問題無いクラスでした。
Web Technologies
HTML/CSSから始まり、JavaScript Framework、携帯アプリ作成までを行う実務的なクラス。
先生はMarco Papa。授業自体は各種テクノロジーの歴史について学ぶのがメインだったので簡単でしたが、この講座のプログラミング課題は後半に行くに従って急速にヘビーとなり、寝る間を惜しんでプログラミングし続ける生活となりました。
課題1
与えられたウェブページの模写。
課題2
Python Flaskを用いたバックエンド構築、
HTML/CSS, JavaScriptによるウェブページ作成、AWS/GCP/Azureへのデプロイ。
課題3
Node.js/Expressを用いたバックエンド構築、Angular/HTML5/Bootstrapによるフロントエンド構築、
AWS/GCP/Azureへのデプロイ。
成果物例↓ 調べながらやったので100時間以上かかりました。。。
Stock Search

課題4
Swiftによるモバイルアプリ開発。バックエンドは課題3と共通しているため、Swiftのスキル獲得に集中できました。
テストは中間試験 x 1回と期末試験がありますが、配点が低かったのと、膨大な問題サンプルから各自ランダムに出題される仕様のため、対策はあまりしませんでした。
成績はA-。いままで受けてきたクラスの中で一番時間を費やしましたが、試行錯誤しながらウェブ開発をすることで、ハードスキルとポートフォリオを得られる授業でした。
また、Web開発でわからないことがあっても公式ドキュメントを覗けばどうにかなると分かり、知らないことへの恐怖心が格段に薄れました。Web開発のスキルを持っていると明確なハードスキルが身につくだけではなく、学内の様々なアルバイトに応募出来たり、就職活動でもアピールしやすくなるため、おすすめの授業の一つです。何より、自分で自分の作りたいものが目に見えて出来上がるのを見れるのはとても楽しいですね!