オープンソース・ソサエティ・ユニバーシティ — コンピュータサイエンス独学のための無料ロードマップ
(github.com/ossu)- OSSUカリキュラムは、世界有数の大学のオンライン資料を通じて、コンピュータサイエンスの完全な教育課程を無料で提供する
- 入門、コア、上級、ファイナルプロジェクトという構成で、大学学士レベルのコンピュータサイエンスカリキュラムを再現している
- すべての講義と課題は無料、またはほとんど無料だが、一部の評価課題では費用が発生する場合がある
- Discordコミュニティなど、活発なグローバル学習者支援ネットワークがあり、資料の更新も継続的に行われている
- 学習者は個人でもグループでも、自分の状況に合わせて柔軟に進度を調整し、選択できる
OSSUとは何か、なぜ重要なのか
OSSU(Open Source Society University)は、誰でも費用をかけずにコンピュータサイエンスの正規学位レベルの教育を自力で受けられるよう設計されたオープンソースカリキュラムである。ハーバード、MIT、プリンストンなど世界トップ大学の公開講義や資料を活用し、一度きりの知識伝達ではなく、理論・実習・応用のバランスが取れた学習体験を提供することを目指している。
- すべての学習資料は、オンラインで公開されている高品質な無料リソースから厳選されている
- CS2013標準のような、国際的なコンピュータ工学の基本学士課程基準を厳格に反映している
- 自ら動機づけを行い、継続的な学習習慣を持ち、世界中の学習コミュニティから支援を得られる人を主な対象としている
カリキュラム構成と特徴
- 入門(Introduction to CS) : コンピュータサイエンスとプログラミングの基本概念や面白さを体験できる。Pythonプログラミング、計算理論、基礎データ構造、アルゴリズムなどを含む
- コア(Core CS) : 大学3年次相当のカリキュラムで、プログラミング(関数型、オブジェクト指向、ソフトウェア設計)、数学(離散数学、統計、確率、微積分)、システム(コンピュータアーキテクチャ、OS、ネットワーキング)、理論(アルゴリズム、NP問題など)、セキュリティ、応用、倫理などを必須としている
- 上級(Advanced CS) : 最終学年相当。高度なプログラミング、システム、理論、情報セキュリティ、高等数学の中から関心分野を選べる
- ファイナルプロジェクト: 学んだ知識を活用して実際のプロジェクトを遂行し、世界の仲間の学習者と成果を共有し検証する。実務能力の証明や就職ポートフォリオとして活用できる
学習方法と費用
- 個人でもグループでもカリキュラムを学習できる
- 各課程は順番に履修することが推奨されるが、すでに習得済みの内容があれば飛ばすことも可能
- すべての講義はオンラインで無料提供される。一部のプラットフォーム(Coursera、edXなど)では、課題・試験・プロジェクトの評価時に費用が発生する場合があるが、ほとんどのケースで学習そのものは無料である。経済的負担を減らすために、財政支援(奨学金/Financial Aid)についての案内もある
- 学習進捗と修了予定日の管理を支援するGoogleスプレッドシートのテンプレートを提供
コミュニティと支援
- 参加者向けのDiscordサーバーを運営中。講義の議論、質問、仲間とのつながりが活発に行われている
- GitHub Issueやカリキュラム改善提案など、活発なフィードバックチャネルがある
- LinkedInプロフィールにOSSUの修了履歴を追加できる
公式サイトおよびGitHubリポジトリで最新のカリキュラムを確認することを推奨
カリキュラム詳細一覧
前提条件
- コアCSでは**高校レベルの数学(代数、幾何、微積分前段階)**が必須
- 上級CSはコア課程をすべて終えてから選択可能
- Advanced systems科目では高校レベルの基礎物理学の知識が求められる
入門CS(Introduction to CS)
- コンピュータサイエンスの第一歩。基本的な演算、命令型プログラミング、データ構造、アルゴリズムなどを紹介
- 必須講義: 'Introduction to Computer Science and Programming using Python' (14週間)
コアCS(Core CS)
プログラミング
- 関数型/オブジェクト指向/テスト/パターン/タイピング/言語の多様性など、幅広い実習
- Systematic Program Design, Programming Languages (A–C), Object-Oriented Design, Software Architecture など
数学
- 離散数学、数学的証明、基礎統計、O記法、確率、微積分を含む
開発ツールと環境
- ターミナル、シェルスクリプティング、vim、コマンドライン、バージョン管理(git)など、実務に必須のツール
システム
- ハードウェアからOS、ネットワークまで、コンピュータの動作原理を全般的に理解する
- 例: Nand to Tetrisプロジェクト, OS Three Easy Pieces, Networking など
理論
- アルゴリズム解析、分割統治、グラフ、動的計画法、NP問題などを含む
セキュリティ
- 情報セキュリティの基礎、安全なコーディング、脆弱性分析、ネットワーク/暗号などの選択科目を含む
応用
- データベース、機械学習、コンピュータグラフィックス、ソフトウェア工学など、実践的な活用領域まで幅広く扱う
倫理
- 技術の社会的文脈、専門性、知的財産権、データプライバシーなど、技術者に必須の倫理性を強調
上級CS(Advanced CS)
- 進路や関心分野ごとに選択。並列プログラミング、コンパイラ、Haskell/Prologなどの言語、ソフトウェアのデバッグ/テスト
- コンピュータアーキテクチャ、数値解析/論理/確率、計算理論、情報セキュリティ、システム構築など幅広い選択肢
ファイナルプロジェクト(Final Project)
- 実践型プロジェクトを選択し、設計・実装・共有を行う
- オプション例: フルスタックサービス、ロボティクス、データマイニング、ビッグデータ、IoT、クラウドコンピューティング、データサイエンス、ゲーム開発など
- 自力で進めることも、推奨コースを活用することも可能
学習完了後
- CS分野の学士号と同等の知識を身につけたことの証明
- 就職準備、発展的な読書(List提供)、オフライン開発者ミートアップなどとの連携を推奨
- 新技術の探索(Elixir/Rust/Idris言語など)を奨励
運営ルールとチーム
- OSSU行動規範を遵守
- GitHubで自身の進捗状況を表示・管理する方法を案内(kanban活用)
OSSU主要運営メンバー
- Eric Douglas(OSSU創設者), Josh Hanson(技術メンテナー), Waciuma Wanjohi(学術メンテナー), その他世界中の貢献者
まとめ
OSSUは、世界中の誰もが無料でコンピュータサイエンスの正規学位レベルの能力を身につけ、現代IT業界の実務やキャリアへ幅広く参入できる道を開く。
柔軟な進度、厳格な基準、グローバルコミュニティ、高品質な無料資料の組み合わせが、他の公開カリキュラムと比べた大きな強みである。
4件のコメント
> 「コンピューターサイエンスを学ぶな」という類いのニュース記事は、本当の意味を見失っていると思う
翻訳がすごくこなれていて不思議だね(笑)
OSSU オープンソース・ソサエティ・ユニバーシティ - Computer Science 独学する
GeekNewsの初期に紹介されていましたね。その間にかなり多くの内容が追加されました。
Hacker Newsの意見
経験豊富なエンジニアとして、学習者を支援したいならOSSUは本当に良い場だと思う
私は学生が自主的にコンピュータサイエンスを学べるよう支援する教育プログラムを運営している。しばしばOSSUのカリキュラムも参考資料として活用している
セルフラーニングには多くの利点があるが、注意点もあることを学生には必ず知ってほしい
「シグナリング」とネットワーキングをより積極的に自分で進める必要があり、大学に所属しているときに得られる社会的な利点はセルフラーニングでは不足しがち
学位がないというのは「marked」な状態だと言えるが、これについてはこちらを参照
失敗したり困難が生じたりすると、その原因を学位がないことに結び付けられやすい
採用担当者の中には、学位のない人を雇うのは政治的リスクだと考える人もいるので、入社自体が難しくなることがある
乗り越えられないものではないが、だからこそ私たちは最初からそれを一緒に準備し、克服する形を取っている
セルフラーニングの利点は、学習スピードが速く、無駄な過程の反復なしにすべてを文脈の中で学べる点
もし基礎が足りないと気づいたら、その時点で戻って学べばよい
この方式は技術職では必然的な学習方法だと思うが、すべての学生に向いているわけではない
現実的には、経済状況のために大学へ行けず、セルフラーニングを「強いられる」ことが多いのが残念
トレードオフをよく知らないと、さらに大変になりうる
参考: Divepod
私は複数の人のセルフラーニングの過程をメンタリングした経験がある
私は高校卒業直後、若さゆえにCS学位をきちんと終えられず、良い機会を逃してしまった
個人的には Teach Yourself CS のほうがより良い代替案だと思う
私はセルフラーニングだけでも十分にキャリアを築けることを証明する事例だ
すでに20年以上この業界で働いている
ただし、この道を選ぶと「絶対に」行けない会社や役割が確かに存在する
こうした会社はたいてい最高の企業、最も高給な場所、条件の良い職場を意味する
学位そのものよりもっと重要なのは同窓ネットワークだ。学位があると、その学校の出身者が無条件で採用してくれる「大きなクラブ」が存在する
セルフラーニングではそのネットワークを決して持てない
現実はどうか。みんなが断るような職場ばかりが残る。とんでもない場所、詐欺、資金不足のスタートアップ、すでに危機にある会社だらけ
ごくまれに良いポジションを得ても、長くとどまるのは難しい
年収は低く、簡単に搾取されるリスクも大きい
複数オファーを得るのも難しいので、市場での立場が狭まる
このため、キャリア全体が経済的にまったく別のトラックのように感じられることがある
就職活動ははるかに大変で、2倍は努力しなければならない
自分自身からも同僚からも、「自分は資格不足ではないか」というような疑いをしばしば向けられる
1回のミスの波及が非常に大きい
それでも何もしないよりはましだが、機会があるなら学校へ行くほうが良いと思う
あなたの経験を軽んじたいわけではないが、私は100%セルフラーニングでさまざまな企業(大企業、ユニコーン、スタートアップなど)で働いてきた経験がある
私は数年間ソフトウェア開発者として働いた後、CS学位のために学校へ戻った
この話にはある程度真実があるが、たいていは初期段階か、自分の実力が同僚グループの下位にいるときに限られる
私はADHD気味で、自閉スペクトラムも多少ある
この話でよく忘れられるが、コンピュータサイエンスを学ぶ最大の理由は、必ずしも就職や職務スキル向上のためだけではない
カリキュラムが「無料かつオープンソース」の講義だけで構成されていることで、むしろ限界があるのではないかと気になる
きちんと学ぶなら、質の高い資料にお金を投資することもためらうべきではないと思う
この意見には同感
学位はたいていの社会的な弱点を相殺する効果があると思う
多くのコメントでは、学校がネットワークを作ってくれるとか、特定の学校出身者だけを採用するという話が混ざっている
大学や経歴内の人脈を通じて求職機会が増えるのは事実だ
しかしキャリアが積み上がるほど、大学以後に築かれた人脈の力のほうが強くなる
特定大学の学位や博士号が必要なポジションでは、ネットワークよりも「シグナル」としての意味が大きい
つまり、採用側がそれ以上尋ねなくてもよい、信頼できるシグナルだ
セルフラーナーはこれを迂回するか、追加の努力が必要になる
自分のつながりや成果物で注目を集めたり、推薦を受けて通常の採用プロセスを回避したりする方向を目指すべきだ
「そもそもチャンス自体が消える」という話を聞くと、「運は戦略ではないが、試行回数を増やせば幸運の確率は上がる」という話を思い出す
目標がいったい何なのか気になる
こういう議論では、両側ともやや過剰に防御的になっているのが少し残念だ
本当に素晴らしいですね