Slide 1

Slide 1 text

文系学部卒ソフトウェアエンジニアが
 Georgia Techコンピューターサイエンス修士課程で直面したもの
 @toshi0607


Slide 2

Slide 2 text

自己紹介
 ● 杉田 寿憲
 ○ Toshinori Sugita / @toshi0607
 ○ Software Engineer@LegalOn Technologies 
 ○ 全社アプリケーションプラットフォームのTech lead 
 ○ Google Developer Expert & Microsoft MVP 
 ● 本
 ○ 『Google Cloud Platformで学ぶTerraform(基礎編、実践編)』 
 ○ 『エキスパートたちのGo言語(共著)』 
 ○ Knative本 × 3
 ○ 『GoとSAMで学ぶAWS Lambda』 
 ○ 『Extensive Xamarin(共著)』
 ● 趣味
 ○ 猫、サウナ、Platform engineering、CD付握手券の購入


Slide 3

Slide 3 text

OMSCS
 ● Georgia Tech Online Master of Science in Computer Science (OMSCS) 4年目
 ● Specialization in Computing Systems
 ● 8月に始まる最終科目を落とさなければ卒業


Slide 4

Slide 4 text

履修した授業
 ● CS 6310 Software Architecture and Design
 ● CS 6250 Computer Networks
 ● CS 6340 Software Analysis and Testing
 ● CS 6200 Introduction to Operating Systems
 ● CS 6290 High Performance Computer Architecture (履修撤回)
 ● CS 6210 Advanced Operating Systems
 ● CS 6211 System Design for Cloud Computing
 ● CS 6747 Advanced Topics in Malware
 ● CS 7210 Distributed Computing
 ● CS 6422 Database System Implementation
 ● CS 7650 Natural Language Processing


Slide 5

Slide 5 text

トピック
 1. OMSCSへの挑戦: 社会人として学び直しを決意した動機と闘争
 2. 文系学部卒からCSオンライン修士課程へ: 入学の準備と戦略
 3. OMSCS授業から得られた実践的な学びと教訓


Slide 6

Slide 6 text

志望動機
 ● CSの基礎を固めてよりよい仕事がしたい
 ○ Platform Engineering
 ○ 執筆、コミュニティ活動
 ● CSの基礎が純粋に気になる
 ○ もし働かなくていいなら何がしたいか
 ● 闘争
 ○ 一見自分ができなさそうなことに挑戦し、生きてる実感を得たい


Slide 7

Slide 7 text

バックグラウンド
 ● 〜2011年 官僚になるべく法律勉強
 ○ 地方が自律的に問題解決する仕組みを作り、支えたかった
 ○ 試験は二次試験で落ち、OB訪問100人、議員事務所や企業 のインターンシップを経て考え直した
 ● 2012年 SIer営業
 ○ 最終的にコンサルになりたかった
 ○ 最初は開発したかったがなぜか営業配属に
 ○ エンドユーザーから遠くじれったくなる


Slide 8

Slide 8 text

バックグラウンド
 ● 2015年 スタートアップソフトウェアエンジニア
 ○ 週末プログラミングを教えてもらい、ユーザーのフィードバッ クを受け自分の手で変える喜びを知る
 ○ 業務未経験で飛び込む
 ● 〜現在
 ○ フロントエンド、バックエンド、デスクトップアプリ開発、SREな どを経てプラットフォームエンジニアリング推進にたどりつく
 ○ インフラ〜アプリケーション全般を見る必要があるが、どれ も深く知らず特に「基礎」にコンプレックス


Slide 9

Slide 9 text

根源的な欲求
 わざわざ大学院に行ってCSを勉強しなくても、食っていける。真面目に 仕事をし、複業で経験値を稼ぎ、四半期ごとの目標を立てて勉強し、た まに締切に追われながら本を書く。成長には困らなさそうだ。だからこ そ、狭き門をくぐってみたい。闘争は自分の人生の本分だ。闘争、それ は一見今の自分の手に届かなさそうなことに挑み続けることだ。壁は高 ければ高いほど甲斐がある。論理的な説明はこれから捻り出す予定だ が、中核は闘争だ。
 杉田寿憲「来年海外のコンピューターサイエンス修士に出願しよう。」より
 
 https://note.com/toshi0607/n/n246f38be7db0

Slide 10

Slide 10 text

https://note.com/toshi0607/n/n2fc82def9c6b

Slide 11

Slide 11 text

トピック
 1. OMSCSへの挑戦: 社会人として学び直しを決意した動機と闘争
 2. 文系学部卒からCSオンライン修士課程へ: 入学の準備と戦略
 3. OMSCS授業から得られた実践的な学びと教訓


Slide 12

Slide 12 text

入学準備
 ● 出願校決定
 ● OMSCS出願要件
 ● 文系学部卒特有の準備


Slide 13

Slide 13 text

出願校決定
 ● ジョージア工科大学
 ● ペンシルバニア大学
 ● テキサス大学(UT Austin)
 ● ボストン大学
 ● アリゾナ州立大学
 ● イリノイ大学
 ● コロンビア大学
 ● ジョンズ・ホプキンス大学
 ● ブラウン大学
 ● NCSU
 ● NYU
 ● スタンフォード大学
 ● タフツ大学
 ● シカゴ大学
 ● USC


Slide 14

Slide 14 text

ジョージア工科大学(OMSCS)を目指す
 ● 授業が豊富
 ○ OS、ネットワーク、ストレージ、セキュリティ、分散システム、パフォーマンス、あわよくば専攻横断的 にMLなど
 ● 授業料が圧倒的に安い
 ○ 10万円 × 10科目
 ● 評価
 ○ 大学ランキング系の工学やCS分野で世界屈指 
 ● 学位
 ○ オンキャンパスとオンラインとで差がない 
 ● 合格率
 ○ 80%代後半(CS出身100%、非CS出身70%) 


Slide 15

Slide 15 text

https://note.com/toshi0607/n/n587ffefacfa6

Slide 16

Slide 16 text

OMSCS出願要件
 ● 学士卒
 ○ CSか数学、エンジニアリング、電子工学など関連学部卒 
 ○ 職業上の経験は学部要件の代替にならない 
 ● GPA 3.0以上
 ● TOEFL 100点以上
 ○ 実際は90点以上、各セクション19点以上あればOK 
 ● 推薦状
 ● 小論文、出願理由
 ● 履歴書


Slide 17

Slide 17 text

文系学部特有の準備
 ● Introduction to Programming with Python and Java (University of Pennsylvania)
 ● Computational Thinking for Problem Solving (University of Pennsylvania)
 ● Data Structures and Algorithms (Georgia Institute of Technology)
 ● Introduction to Discrete Mathematics for Computer Science (University of California San Diego)
 ● Build a Modern Computer from First Principles: From Nand to Tetris (Project-Centered Course) (Hebrew University of Jerusalem)
 ● Build a Modern Computer from First Principles: Nand to Tetris Part II (project-centered course) (Hebrew University of Jerusalem)


Slide 18

Slide 18 text

文系学部特有の準備
 ● Google Cloud Certified Professional Data Engineer
 ● Google Cloud Certified Professional Cloud Architect
 ● Google Cloud Certified Professional Cloud DevOps Engineer
 ● Certified Kubernetes Administrator (CKA)
 ● Certified Kubernetes Application Developer (CKAD)
 ● Applied Information Technology Engineer(応用情報)
 ● 職業経験では代替できないとはいうものの、履歴書で必死にアピール
 ○ 技術的スキル、IT系の資格、受賞歴(Microsoft MVP)、出版物(技術書や雑誌への寄稿)、登壇歴 (会全体で200人以上が参加する、プロポーザル選考を通過したもの) 


Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

https://note.com/toshi0607/n/n2fc82def9c6b

Slide 21

Slide 21 text

トピック
 1. OMSCSへの挑戦: 社会人として学び直しを決意した動機と闘争
 2. 文系学部卒からCSオンライン修士課程へ: 入学の準備と戦略
 3. OMSCS授業から得られた実践的な学びと教訓


Slide 22

Slide 22 text

CS 6310 Software Architecture and Design
 ● 名前がついたデザインのパターンは昔の論文内でさえも何千もあったのを知れたこ と。個別のパターンの具体的な実装にあてはまるかどうかに固執するよりは、気持 ち、原則、Whyや課題解決されるかどうかを軸に打ち手の引き出しにラベル付けす るくらいの感覚がよさそうという気持ちが強まった。
 ● 授業を聴いて理解できるようにすべきという理想や、その力を向上させられる期待 があった。しかし、文字で読む方が速いし、それを繰り返したほうが定着度も高いの で必ずしも聴いて理解できる状態になるのが正義でないという割り切りをもてた。
 ● 授業の体系に沿って半強制的に論文を読まされる期間があるのはよい。
 ● ピアレビューの採点方法がよかった。人からのフィードバックが自分の評点になる のではなく、自分が人にどうフィードバックしたかがTAによって採点される。たまに PRレビューのレビューみたいなのも、考えてみると面白いのかもしれない。


Slide 23

Slide 23 text

CS 6250 Computer Networks
 ● 抽象化されてよくわからないクラウドのネットワーク設定も、基礎から知識を積み上 げたり、(機器をいじるまでもなく)ソフトウェアでの実験で理解が深まるということが 知れた。
 ● 読もうと思って読んでなかった『マスタリングTCP/IP』をついでに読み切れてよかっ た。


Slide 24

Slide 24 text

CS 6340 Software Analysis and Testing
 ● シラバス上の必要要件が厳しい風に書いてあっても、そうでもないこともある。興味 あることが一番大事なので物怖じせずに科目選択する。
 ● LLVMには構文解析ツール的な触れ方をしたが、コンパイラとしての挙動やアセン ブリ言語入門としての中間生成コードで来年から履修する一連の授業への連続性 を感じることができた。
 ● 授業で扱われるトピックを身近な実装(GoのFuzzing、gollvmなど)でどう実現されて いるか、(業務上の)身近な課題にどう適用できるかの考察、実験、アウトプットは やっていきたいがそこまで手が回らなくてもどかしい。


Slide 25

Slide 25 text

CS 6200 Introduction to Operating Systems
 ● 4プロジェクトあったうち最初のプロジェクトが一番難しく感じ、提出締め切りが延長 された上で締め切り2時間前に実装を終えた。この授業の理解の上に自分の履修 計画が成り立つためかなり焦った。最初から悲観的にならず、線形に難易度が上 がっていく想定ももたず、授業レビューで課題が厳しいタイミングを見極めながらが んばるべし。
 ● どうしようもないことだが、転職活動時期、コロナ罹患、ほぼ初心者であったC言語 での実装も重なってしまい、かなりきつかった。授業を含め、なんとか生活を維持で きる大きめのイベントは2つまでなので、3つ目以降は諦めるべし。
 ● 学業に費やした時間は、1月が21時間、2月が135時間、3月が98時間だった。コー スのレビューサイト通り、3ヶ月でならせば週平均負荷20時間だったが、仕事と両立 する上では平均負荷よりもMaxを気にする必要がある。


Slide 26

Slide 26 text

CS 6290 High Performance Computer Architecture
 
 
 ● 仕事と折り合いをつけることができず、履修撤回することになってしまった。夏学期 ということで、授業スケジュールがタイトな中課題をこなす以上の時間を確保できな かった。テスト前に授業を一気見するも中間試験でふるわず、挽回が難しい状態で 心も折れたので見送ることにした。しばらく週3くらいで働く業務委託で仕事を探すこ とも考えたが、現職で勤怠面の配慮をいただけることになり、残りの履修計画に希 望を見いだせるようになった。
 ● OSやCPUに関連するハードウェアの話は自分にとって(少なくとも課題に正確に答 えられる形で)すんなり理解できる話ではなく、おそらくコンパイラの授業でもつまず きそうだ。よい登り方は見いだせていないので、出直す。


Slide 27

Slide 27 text

CS 6210 Advanced Operating Systems
 ● 論文を読み、実装する課題が2つあったのがよかった。論文を読んで理解したつも りになっても、いざ実装してみるとあやふやな部分が多かった。その分意図通りの 挙動を示したときの感動が大きかった。
 ● 春学期の苦しみを踏まえ、事前に全課題の大体のスケジュール、難しい課題、課 題に関連する論文などの把握や、難しそうなポイントの予習を行えたのはとてもよ かった。平均週20時間、最大週46時間を費やしたので、準備がなければ扱いきれ なかったかもしれない。
 ● 何よりも気になるのは、説明できる深さで授業の内容を理解していないこと、期末 試験を終えて1ヶ月程度経った今では頭にほとんど残っていないということだ。あま り実利は求めず在籍しているが、だからこそあまりにも理解度が低すぎると何のた めに苦しんでいるのかわからなくなる。学びのフォーム改善もプライベートOKRに据 えて取り組んでいきたい。知らないものに触れ、わかる喜びを感じられる後半戦を 目指す。


Slide 28

Slide 28 text

CS 6211 System Design for Cloud Computing
 ● 普段ネットワーク設定を行ってからコンポーネント同士が最終的につながる(遮断さ れる)まで中で何が起こっているかイメージできていないことが多い。授業では単純 なネットワークトポロジーにはじまり、ファイアウォールやNATの設定、さらにそれら のソフトウェア制御を行った。物理の世界だとよりイメージも湧くかもしれないが、仮 想環境の設定をいじってデータを届くようにしたり、各ネットワークレイヤーのツール を使ったデバッグによる擬似的な体験でかなりカバーされるように思えてよかった。
 ● MapReduceではフレームワークをGoで実装し、ユーザーが実装したMap/Reduceロ ジックをアップロードできるようにした。実行環境が限定される中であらゆるケース の安全な実行を担保するものではなく、アップロード方法も限定してはいた。それで も、多くのユーザーを支えるための堅牢なインフラや利用者の開発体験をイメージ しながら進めた開発は、授業の趣旨である「クラウドプロバイダーの気持ち」を味わ うには十分だ。


Slide 29

Slide 29 text

CS 6747 Advanced Topics in Malware
 ● 授業でLLM利用が禁止されたことは少ないが、この授業で特徴的だったのは「現代 のアタッカーは、LLMなどあらゆる手段を尽くして攻撃を仕掛けてくる。そのため、こ の授業でもあらゆる手段を尽くしてそれに立ち向かう必要がある。LLMの利用も行 うべきだ」というスタンスが明示されていた点だ。ツールを使いこなすことも含めて鍛 錬だと思って取り組むことで実践的な知見も得られるだろう。
 ● 1つのマルウェアを色んな手法で解析すると、プログラムに対する理解が深まる。マ ルウェアをデコンパイルしたアセンブリコードをある程度の意味のまとまりごとに何 の処理を行っているのか全行コメントをつける気の遠くなるような作業に始まり、 instruction毎に変更対象のレジスタと利用するレジスタのラベルを付与したcontrol flow graph生成、VMで実際にマルウェアを動かしながら出力するdynamic control dependence graph生成まで静的・動的に処理の記述やふるまいを追えた


Slide 30

Slide 30 text

CS 7210 Distributed Computing
 ● レビューサイト上OMSCSにおいて最も難易度の高い授業のひとつであり、週平均 負荷も50時間(近年はスケジュール調整もあり30時間程度)と高く、仕事と両立でき るイメージがまったくわかない。それでも、「大学院でCSを学びたいと思った動機の 核のような部分」などと理由をつけて無理やりねじこんだのは自分の限界を広げて いくきっかけになるのだろう。
 ● 結果的に最後の2つの課題は消化不良だった。あるべき姿を理解し、挙動を追って 修正する基礎的なふるまいができていなかったように思う。
 ● 求めている3割くらいの解には素早くたどり着くが、4、5割と深めていく道が見つけら れなかったり、3割周辺をさまよっていたずらに時間が経過して疲弊する。「性急に 証明や理由を求めずに、不確実さや不思議さ、懐疑の中にいることができる能力」 をネガティブ・ケイパビリティと呼ぶ。知的な文脈に限らず、そういう耐性が低いので はないかという仮説がある。この概念の理解や向き合い方を直近のテーマにした い。


Slide 31

Slide 31 text

CS 6422 Database System Implementation
 ● 2025年1〜3月の個人OKRである「ネガティブケイパビリティを体得し、創造的で複雑 な複数のタスクに向き合える精神的余白を確保する」を意識しながら落ち着いて取 り組めた。LLMを利用しながらとことん質問して疑問を解消するプロセスを回しやす い。理解せずにただ講義ビデオを再生したり、とりあえず自動テストを通して課題を 提出したりすることがなく、知識が積み上がり、それを活かして課題にとりくむ実感 が持てたのが大きなったように思う。
 ● 講義内容の予習・復習にもLLMを活用した。結果的に頭への定着もよく、繰り返す 中で理解が曖昧な内容はClaudのproject内で掘り下げやすかった。ClaudとNotion の往復や、フォーマットを指定してもClaudの出力が変わってしまうことへの対応は 面倒だったので、LLM、エディタ、生成ファイル、ビューアの組み合わせは改善でき そうだ。


Slide 32

Slide 32 text

CS 7650 Natural Language Processing
 ● 馴染みの薄い分野(ML)もLLMがあればキャッチアップできるのか挑戦すべく履修 した。授業によっては何言ってるか意味不明だったが、授業内容の再整理、確認問 題や模擬試験の反復など、3〜4周したら完全理解は程遠いが多少解像度は上 がった。LLMの出力が矛盾してたり、不正確な部分も意外と見えてくる。Googleの NotebookLM大活躍。
 ● 生徒のLLM利用動向を踏まえ、今学期から定期試験形式が大幅変更。中間試験 が新し目の論文に関するの短答式問題、期末試験が授業内容の短答式問題を期 間内に提出する形式だったのが、中間・期末いずれも持ち込み可でシステム監視 下の授業内容の短答式問題に変わった。課題や試験でLLM利用を強く反対するス タイルの授業なだけに、LLM時代の授業のあり方を苦慮している様子だった。


Slide 33

Slide 33 text

https://note.com/toshi0607

Slide 34

Slide 34 text

ご清聴ありがとうございました!
 文系学部卒ソフトウェアエンジニアがGeorgia Techコンピューターサイエンス修士課程で直面したもの