世界を動かす技術を、日本語で。

オープンソース社会大学 – 自己学習による自由なコンピュータサイエンス教育への道

概要

OSSU(Open Source Society University)は、無料で自学できる コンピュータサイエンス教育カリキュラム を提供。 世界トップレベルの教材 を厳選し、学士課程相当の内容をオンラインで学習可能。 入門から応用、最終プロジェクトまで体系的に構成。 DiscordやGitHub によるコミュニティサポートあり。 受講は基本無料、一部課題の採点等で費用が発生する場合もあり。

OSSUカリキュラム概要

  • OSSUは コンピュータサイエンスの基礎から応用まで を、オンライン教材で体系的に学ぶカリキュラム
  • キャリア訓練や専門スキル取得 だけでなく、計算機科学の原理を深く理解するための設計
  • 世界中の学習者コミュニティ がサポート、自己管理力と学習習慣が求められる
  • 学士課程のCS要件 に基づき設計(一般教養科目は除外)
  • Harvard, MIT, Princeton 等の一流大学のオンラインコースを厳選

コース選定基準

  • 自由に受講可能 で、定期的に開講されていること(理想は自習形式)
  • 教材と教授法が 高品質 であること
  • CS 2013カリキュラムガイドライン に準拠
  • 該当コースがなければ 書籍で補完、高品質な追加教材は「extras」として分類

カリキュラム構成

  • Intro CS :CSの入門、適性確認
  • Core CS :学士課程の1~3年次相当、必修科目
  • Advanced CS :4年次相当、選択科目
  • Final Project :知識統合・証明のための最終プロジェクト、ピアレビュー形式

学習期間・進め方

  • 計画的に進めれば約2年 (週20時間学習の場合)で修了可能
  • 進捗管理用スプレッドシート あり(開始日・学習時間入力で終了予定日を自動計算)
  • OSSU公式サイト・GitHubリポジトリ で最新カリキュラムを確認推奨

費用について

  • 教材は原則無料
  • 一部コースで 課題・テストの採点に費用 が発生する場合あり
  • CourseraやedXの経済的支援制度 利用可能

学習の進め方

  • 個人・グループ学習、順不同も可能
  • 特に Core CSは全科目履修推奨 (既習内容はスキップ可)
  • 複数コース並行学習 も可能(例:数学とプログラミング入門)
  • Advanced CSは選択制、専門分野を自分で選び深掘り
  • Discordコミュニティで相談・フィードバック が可能

コミュニティ・サポート

  • Discordサーバー が主な交流の場、自己紹介推奨
  • GitHub Issues でコース内容やカリキュラムへの提案・問題報告が可能
  • LinkedInプロフィール へのOSSU追加推奨
  • 非公式・古いOSSU教材に注意 (公式サイト・GitHubのみ利用)

カリキュラム詳細

  • 前提知識 :Core CSは高校数学(代数・幾何・数列)必須、Advanced CSはCore CS修了レベル
  • Intro CS :計算・命令型プログラミング・基本アルゴリズム等の基礎
  • Core Programming :関数型・オブジェクト指向・テスト・設計パターン等
  • Core Math :離散数学・証明・統計・確率・微積分
  • CS Tools :シェル・Vim・バージョン管理等
  • Core Systems :コンピュータアーキテクチャ・OS・ネットワーク等
  • Core Theory :分割統治・データ構造・グラフ理論・計算量等
  • Core Security :セキュリティ基礎・暗号・脅威・安全なコーディング
  • Core Applications :データベース・機械学習・グラフィックス・ソフトウェア工学等
  • Core Ethics :技術倫理・知的財産・プライバシー等

OSSUの特徴

  • 自学自習型 カリキュラム
  • 世界水準の教材 を無料で利用可能
  • 実践的プロジェクト で学びを証明
  • グローバルな学習コミュニティ によるサポート
  • 柔軟な進め方 と自己管理力の養成

OSSUは、コンピュータサイエンス分野で 独学で本格的な学位レベルの知識 を身につけたい全ての人に最適なカリキュラム設計。 公式サイト・Discord・GitHub を活用し、世界中の仲間とともに学びを進めてください。

Hackerたちの意見

独学の道は絶対に成功するよ。私がその証拠で、業界で20年以上働いてきたから。ただ、言いたいことがある。特定の企業や役割には、絶対にアクセスできないことがあるんだ。これらはしばしば最高の役割や企業で、最もお金があるところだよ。学位は単に勉強に費やした時間や知識だけじゃない。そこは自分でできる部分なんだ。もっと価値があるのは、ネットワークや、同じ学校を卒業した人たちの卒業生ネットワークへのアクセスだよ。彼らは同じ学校に行ったからって理由で、君を自分の会社に雇ってくれるんだ。大きなクラブみたいなもので、独学を選ぶとその中には入れない。これが冷酷な現実なんだ。じゃあ、学位のない独学の人には何が残るのか?他の人がやりたがらない仕事が残るだけだよ。クレイジーな案件や、詐欺、資金が乏しい会社、すでに困難な状態にある場所をひたすら探すことになる。長期間働けるような本当の仕事を見つけるのは非常に稀だよ。給料も少なくなるし、利用されやすくなる。複数のオファーを同時に得るのも難しくなる、全体的な需要が低いからね。だから、市場での立場が侵食されて、時間が経つにつれて経済的に全く別のトラックにいるように感じるだろう。新しい仕事を見つけるのはずっと大変だから、良いスキルがあっても二倍の努力が必要になる。自分自身に疑念を抱くことが常にあって、次に学位を持っている周りの人たちからも疑われる。ミスを一つすると、その影響はもっと深刻になる。何もないよりはマシだけど、学校に行く機会があるなら(私はなかった)、独学よりもそっちを選ぶべきだよ。

あなたの個人的な経験を否定するつもりはないけど、私は100%独学で、いくつかの高級なメガコーポやユニコーン、さまざまな成熟度のスタートアップで働いてきた。教育がないからといって、ドアが閉ざされたり、他の人が私を疑ったりしたことは一度もないよ。GoogleやCitadelで面接を受けたし、Metaからオファーももらった。誰も私にチャンスを拒否したとは感じていない。年収は20万ドル以上で、初期のスタートアップでの株式や特典もある。これまでに2回のエグジットを経験したけど、特別なことはないけど、ほとんどの人の基準では裕福だよ。学歴が私の経済的な面に影響を与えたとは感じていない。19歳でプログラミングやスタートアップのことを始めたから、早いスタートがアドバンテージだったのかもしれない。単に運が良かっただけかもしれないけど、私の視点から見ると、独学の道を警告するのは若い人たちにとって不利益だと思う。

私も独学だったから、この意見には少し共感する。最初は本当に低いレベルの仕事を得るのも苦労したからね。オフの時間をたくさん使って新しいことを学び、先に進む必要がある。大学で学んだCS専攻の多くは、大学卒業後に新しいことを学ばず、仕事をするために必要なことだけをこなしている。独学だと、トレンドの先を行くためにもっと積極的にならなきゃいけないし、技術を知っている人があまりいないフロントラインにいる必要がある。私は幸運にも、JavaScriptが世界を席巻する前にその波に乗ることができた。8年後には、MVPを構築するための最高のスタックになる可能性を見込んでElixirに切り替えた。今はそのプロジェクトのCTOとしてメンテナンスをしていて、ポジションの候補者を面接している。個人的には、10年前の大学での経験よりも、前の仕事やサイドプロジェクトでの実績を重視している。面接側としての一つの問題は、実際に適切に面接を行うのには多くの努力が必要だということ。私は、あなたが取り組むことになるタスクに特化したコーディングテストを作成するのに多くの時間を費やしたし、応募者が適当にやっていないか確認するために一緒にテストを行った。正しい採用をするためにはそれだけの価値がある。スタートアップでは、採用一つが会社を左右する可能性があるからね。

私はスタートアップの採用プロセスに個人的に関わっていて、あなたに約束するけど、どこの学校に行ったかは全く関係ない。実際、私が一緒に働くことができたお気に入りの同僚の一人は独学で、哲学の学位を持っていた。実際、大きな学校の学位を持っている人たちは、頭が高くなりがちで、彼らにとって障害になることもあったよ。

これにはちょっと真実があると思うけど、ほとんどが最初の方だけだし、仲間の中で下の方にいることを期待してる場合ね。その基準をクリアしたら、結局は人生を通じてのネットワーキング能力(大学だけじゃなくて)や、一般的な運が大きな要素になるよね。キャリアの初めに大学が提供できるのは、学んだことを証明するための「私は本当に関連することを学びましたし、実行する能力があります」という証明書だけ。実際にその分野で仕事をする機会がある前にね。最初にネットワークを築くチャンスもあるけど、それは最初の2〜4年をどう過ごすかにもよる。最初の仕事をいくつか経験した後は、学位の教育に関する価値は急激に下がるし(教育部分は、数十年かけて得る職務特有の知識の中でますます小さくなる)。私の体験(ただのエピソードだけど)は、学位なしでスタートして、10年後に楽しみで学位を取得したことから来てる。どの仕事でも全く価値はなかったし、今はすべて以前働いていた人からの紹介や推薦で得たものばかり。楽しかったけど、普段触れないテーマに関わるチャンスがあったからね。

この見解はちょっと大げさだと思う。最初の部分には共感するけど、つながりは本当に大事だけど、時間が経てば自分の仕事の質や他の人とのやり取り、結果を出す能力で評判を築くことができるよ。これらは無名のスタートアップでもFAANGでも育てられる。大学には行ったけど、そこで学んだことの5%くらいしか日常の仕事には使ってない。会社を立ち上げて成長させたし、他の会社でも上級職を経験した。エンジニアのポジションの面接では、どの学校に行ったかや誰と接触したかよりも、他の要素にもっと興味がある。親のコメント者の経験は違うかもしれないけど、自己学習の旅には敬意を表するよ。(実際、与えられたものを待たずに自分で解決できる人は、チームに欲しいタイプだね)。

大学自体の経験を軽視することはないと思う。私は独学で、16歳で学校を辞めて、24歳で今の自分に至るキャリアを築いたけど、後悔もある。オフィスで働くようになったことで、若さが終わった感じがして、それ以来社会的なつながりがなくなった。借金がないのはいいけど、時間とお金の両方で大学に行けるなら、家族のサポートもあるなら、行った方がいいと思う。仕事を始めたら、もう戻れないからね。厳しい現実の世界に入るんだ。

私はおそらくADHDで、ある程度スペクトラムに入ってると思う。大学には3回行ったけど、毎回お金や退屈、21歳で父が癌で亡くなったことなどの個人的な問題で中退した。Cコンパイラの会社でテクニカルサポートからソフトウェア開発に入って、そこからキャリアを積んできた。ニューヨーク証券取引所や、トップクラスのブローカレッジ、いくつかの著名なフィンテックで働いて、最終的には銀行や決済会社のコンサルティングもした。私にはこれがうまくいったのは、基本的に独学で、学校環境では全然ダメだから。学位がないことは数回しか問題にならなかったし、誰も気にしてなかった。少なくともソフトウェア開発のキャリアでは、学位はほとんど関係ないね。

ソフトウェア開発者として数年働いた後に、CSの学位を取得するために学校に戻った。準備されたカリキュラムを3年間勉強したおかげで、ずっと良い開発者になったと思う(すでに90時間の歴史の学位は持ってたけど)。自分でそれをすることは可能だけど、ほとんどの人はそこに近づくこともないだろう。自分より優れた独学のプログラマーとも確かに働いたけど、彼らにはギャップがあったし、みんな4年間の良いCSプログラムで学んでいたらもっと良かったと思う。

これがよく見落とされることなんだけど、このコメントだけじゃなくて一般的な会話でもね。コンピュータサイエンスを学ぶ理由は、仕事を得るためや自分をより良い労働者にするためだけじゃないんだ。つまり、楽しいから!生涯学び続けることができて、とてもやりがいがあるんだよ。実践的な側面(プログラミング)や、数学的な基礎(理論)や計算の歴史に深く関わることもね。若者に「コンピュータサイエンスを学ぶな」って言うニュース記事は、そういうことを理解してないんだ。

あなたは他の人が望まない仕事だけが残る。 これはちょっと違うと思う。ジュニアレベルの最初の選択肢の仕事から外れるかもしれないけど、だからって最下層の仕事を得るわけじゃないよ。学校に行ってよかったと思ってる。迷ってたけど、キャリアが良くなったし、学位がなくても一生仕事を見つけられたことも知ってる。チャンスに満ちた経済がそこにあるんだ。

私の意見では、もっと良い選択肢があるよ。 https://teachyourselfcs.com

CS教育をどう完成させるか考えてた時にこれを調べたんだ。コミュニティがないのがOSSUを選んだ主な理由なんだけど、素朴な疑問として、なぜ「Teach Yourself CS」がOSSUより優れていると思うの?特にコミュニティの面で。全てを正直に言うと、私はOSSUのコホートの「ソーシャルオーガナイザー」なんだ。たまにOSSUについてブログも書いてるよ。

私は学生が自分の教育を自己指導できるようにするためのコンピュータサイエンス教育プログラムを運営している。時々、OSSUのカリキュラムを参照することもある。独学には多くの利点があるけど、学生が知っておくべきいくつかの注意点もある。特に「シグナル」やネットワーキングにもっと努力が必要になる。大学に関連することには確実に社会的な利点があるし、学位がないと「マーク」されてしまうこともある。これは克服しなければならない。後退やミスは、学位がないせいにされることが多いし、正当な理由があってもそうなることがある。一部の採用マネージャーは、学位のない候補者を雇う政治的リスクを取れないこともある。克服できないわけではないけど、これは初日から取り組む必要があることだよ。もし自己指導で教育を進めることに決めたら、学ぶのが早く、無駄な時間を過ごさずに済むという利点がある。学んだことはすべて文脈に関連しているし、もし基本的なことを見逃していると気づいたら、その概念やトピックを戻って学ぶことができる。これは技術職にとって避けられない学び方だと思う。ただ、誰にでも合うわけではなく、学生によってはそれに合う人もいる。悲しいことに、多くの学生は大学に行くための財政的資源がないため、独学の道を選ばざるを得ない。もし彼らがトレードオフを理解していなければ、本当に苦労することになる。

私は数人の独学の教育を部分的にメンターとして支援してきた。注意しないと間違った道に進む危険がたくさんある。予想外だったけど、振り返ると明らかだったことの一つは、Redditを読んだり、開発者が業界について愚痴を言っているTwitchのストリームを見たりして、実際のスキルが重要でなくなったと思ってしまうことだ。面接スキルを最適化することが本当に必要だと考えて、仕事のスキルを学んだり練習したりするのは愚かだと思ってしまう誘惑がある。だから、彼らはすべてを放り出してLeetCodeをひたすらやり始め、README.mdに正しいことが書かれた未完成の「サイドプロジェクト」をGitHubに載せる(ただし、誰もコードを見ないことを願っている)し、一般的な行動面接の質問に対するS.T.A.R.形式の回答を暗記する。実際、この戦略は数年間はうまくいったけど、ゲームは変わって、ほとんどの企業は他に何もできないプロの面接者を見抜くのが上手くなった。これは独学の人に特有の考え方ではないことも言っておくべきだ。大学生の間でも「ただの紙切れ」と見なして、実際に教科内容を学ぶのは愚かだと思っている学生の間に、同様のカンニングの流行がある。卒業後に現在の面接スタイルに直面したとき、彼らは予想以上に苦労することになる。

このスレッドでは、学問がネットワークを提供し、それを通じて仕事を得ることについて話している人が多いけど、特定の学校からしか採用しない企業と混同していることもある。大学やキャリアを通じて築く人脈は、普段なら応募する機会がない仕事について耳にするためのメカニズムなんだ。これは非常に現実的なことだけど、キャリアが進むにつれて大学卒業後に築く人脈が支配的になる傾向がある。特定の大学や博士号が必要だということは、ネットワークのためというよりは、その学位が一種のシビルスルー(通過儀礼)であることが多い。応募書類を読む人はそれを見て、聞く必要のない質問があることを知っている。これらは独学の道を選んだ場合に、回避する必要があることだし、やりたい仕事によっては、他の人が見えるような仕事をする必要があるかもしれない。

そうでなければ応募するチャンスがなかったかもしれない。なんか「運は戦略じゃないけど、試みの数を増やすことは戦略になる」っていうのを思い出す。ネットワークがあれば、運が良くなるチャンスが増える。友達が仕事のソフトボールリーグに参加して、そのネットワークが最終的に別の会社での役割につながったんだ。

経験豊富なエンジニアで、学ぶ人たちに貢献したいなら、OSSUは素晴らしい場所だよ。具体的には: - OSSUの学習者と一緒に自分のサイドプロジェクトでペアプログラミング(またはモブプログラミング)する定期的な時間を設定する。 - カリキュラムの一つ以上のコースに慣れ親しみ、質問がある学生に答える。 - 週ごとのチェックインミーティングに参加して、自分が取り組んでいることを共有し、学習者が何に取り組んでいるかを聞く。そうするためには - Discordサーバーに参加してね:https://discord.gg/wuytwK5s9h - そして、私に@waciumaか、@tutorの役割にメンションして。私はOSSUのリーダーの一人で、コミュニティ、ネットワーキング、プロジェクトが完全な教育の一部だと考えてる。だから、無料のコースを作っている教授や大学だけでなく、これまでOSSUの学習者とボランティアしてきた多くのエンジニアや実務者も称賛してるんだ。ぜひ、みんなもそのグループに参加してほしいな!

このカリキュラムの「無料でオープンソース」という要件がどれだけ足を引っ張っているのか気になる。自己学習に真剣な人は、良い教材にお金を投資することをためらうべきじゃないと思う。

これは妥当だね。例えば、離散数学のコース(CSのための数学って呼ばれてる)なんだけど、MITのコースはDiscordサーバーでも難しいって意見が多いんだ。良い離散数学の教科書よりも難しいって言われてるけど、無料でオープンソースの高品質な離散数学の教科書はないんだよね(少なくとも私が知る限りでは)。私はOSSUをやってて、Susanna Eppsの「Discrete Mathematics with Applications」を選んだよ。中古の教科書で50ドルだった。技術的にはカリキュラムから外れてるけど、まだ「OSSUをやってる」って言えるかな。

何のために?コミュニティカレッジの教育の方が仕事を得るには向いてると思うけど。お金を稼ぐのが目的なら、neil.funやlevels.ioに近いことを試みる方がいいんじゃないかな。もしその紙切れが手に入らないなら、思い切ってやっちゃった方がいいよね。それって結局、興味本位で学ぶだけってことになるの?

高校を卒業したばかりの頃は未熟で、コンピュータサイエンスの学位を取るチャンスを逃しちゃったんだ。結婚して子供ができた後に戻って、ITの学位をすぐに取得したけど、CSはいつも最初の愛だった。数年前、CSの教育を終えることで本当に得られるものがあると感じたんだ。本当に第二の学位を取得することや、ポストバッカ、ブートキャンプなどを考えたけど、最終的にはOSSUに決めた。思ったより時間がかかっちゃったけど(人生ってそういうもんだよね)、カリキュラムについては今のところポジティブなことしか言えないし、キャリアや自分の幸せにも影響を与えてる。たまにブログも書いてるよ。これが最初のもので、OSSUを選んだ理由を説明してるんだ:https://dustinbriles.com/ossu-blog-1/

たぶん、学位を取得することで多くの人の社会的な短所がカバーされるんだよね。要するに、ドアを開けるための紙切れってわけ。これで「私はこの分野に3〜4年かけて取り組んできた、少なくとも半分は頭が良くて、コミットしてる」って言えるから。だから、もし人と話すのが苦手でも(まだ)何かしらのアドバンテージがあるんだ。自己学習の場合はそれがないから、社交的でネットワーキングが得意じゃないといけないし、ほんとに運が良くないといけない。社交的であることは、正直言って全てのルールを破るスーパーパワーみたいなもので、実際のスキルがあまりなくても大抵のことを話しで乗り切れると思う。

そして、24ヶ月以内に誰にとっても完全に無駄な時間になるだろうね。