computer-science - 🎓 コンピュータサイエンスの無料の独学教育への道!

(:mortar_board: Path to a free self-taught education in Computer Science!)

Created at: 2014-05-04 08:18:39
Language:
License: MIT

オープンソースソサエティ大学(OSSU)

オープンソースソサイエティ大学

コンピュータサイエンスの無料の独学教育への道!

すごい オープンソースソサエティ大学 - コンピュータサイエンス

内容

概要

OSSUカリキュラムは、オンライン教材を使用したコンピュータサイエンスの完全な教育です。 それは単にキャリアトレーニングや専門能力開発のためではありません。 これは、すべてのコンピューティング分野の基本となる概念について、適切で包括的な基礎を身に付けたい人向けです。 そして、規律、意志、そして(最も重要なことに!)この教育を主に自分で受けるための良い習慣を持っている人にとっては、 しかし、仲間の学習者の世界的なコミュニティからのサポートがあります。

これは、学部のコンピュータサイエンス専攻の学位要件から一般教育(非CS)要件を差し引いたものに従って設計されています。 このカリキュラムに従う人々のほとんどは、すでにCSの分野外で教育を受けていると想定されています。 コース自体は世界で最高のものであり、多くの場合、ハーバード、プリンストン、MITなどから来ています。 ただし、具体的には次の基準を満たすように選択されました。

コースは次の条件を満たしている必要があります

  • 登録のために開いている
  • 定期的に実行する(理想的には自分のペースで進められる形式で、それ以外の場合は年に複数回実行する)
  • 教材と教育原則において一般的に高品質であること
  • CS 2013のカリキュラム基準に一致:コンピュータサイエンスの学部課程プログラムのカリキュラムガイドライン

上記の基準を満たすコースがない場合、コースワークは本で補足されます。 カリキュラムに合わないが、それ以外は質の高いコースや本がある場合、 それらはエクストラ/コースまたはエクストラ/リーディングに属しています

組織。カリキュラムは次のように設計されています。

  • イントロCS:学生がCSを試してみて、それが自分に適しているかどうかを確認するための
  • コアCS:コンピュータサイエンスカリキュラムの最初の3年間にほぼ対応し、すべての専攻が受講する必要があるクラスを受講します
  • 上級CS:コンピュータサイエンスカリキュラムの最終学年にほぼ対応し、学生の興味に応じて選択科目を受講します
  • 最終プロジェクト:学生が知識を検証、統合、表示し、世界中の仲間から評価されるプロジェクト

デュレーション。綿密に計画し、週に約2時間勉強をすれば、約20年以内に終了することが可能です。学習者はこのスプレッドシートを使用して終了日を見積もることができます。コピーを作成し、開始日と週あたりの予定時間をシートに入力します。コースを進めながら、実際のコース修了日をシートに入力し、最新の修了見積もりを取得できます。

Timeline
Curriculum Data

コスト。すべてまたはほぼすべてのコース教材が無料で利用できます。ただし、一部のコースでは、採点する課題/テスト/プロジェクトに料金がかかる場合があります。 CourseraedXの両方が財政援助を提供していることに注意してください。

自分の時間と予算に基づいて、費やす金額または少額を決定します。 成功を購入できないことを覚えておいてください!

プロセス。学生は、カリキュラムを単独で、またはグループで、順番に、または順不同で進めることができます。

  • Core CSですべてのコースを実行し、以前に教材をすでに学習したことが確実な場合にのみコースをスキップすることをお勧めします。
  • わかりやすくするために、コース(特にCore CS)は前提条件によってすでにトポロジー的にソートされているため、上から下に順番に作業することをお勧めします。
  • 上級CSのコースは選択科目です。エキスパートになりたい科目(上級プログラミングなど)を1つ選択し、その見出しの下にあるすべてのコースを受講します。独自のカスタム件名を作成することもできますが、選択した件名についてコミュニティから検証を受けることをお勧めします。

コンテンツポリシー。コースワークの一部を公開する場合は、許可されているファイルのみを共有する必要があります。各コースの最初に署名した行動規範を軽視しないでください!

貢献する方法

ヘルプの利用(FAQとチャットルームの詳細)

コミュニティ

  • 不和サーバーがあります!不和これは、他のOSSUの学生と話すための最初の停留所である必要があります。今すぐ自己紹介をしてみませんか?OSSUディスコードに参加する
  • また、GitHub の問題を通じて対話することもできます。コースに問題がある場合、またはカリキュラムを変更する必要がある場合は、ここから会話を開始できます。詳しくはこちらをご覧ください
  • ニュースレターを購読する。
  • オープンソースソサエティ大学Linkedinプロフィールに追加してください!
  • 注: OSSU を検索すると、メンテナンスされておらず、非推奨の firebase アプリを見つけることができます。無視しても問題ありません。詳細については、FAQをご覧ください。

カリキュラム

カリキュラムバージョン:(変更ログを参照

8.0.0
)


前提 条件

  • コアCSは、学生が代数、幾何学、微積分を含む高校の数学をすでに受講していることを前提としています。
  • 上級CSは、学生がすでにコアCS全体を受講していることを前提としています そして今、どの選択科目を取るかを決めるのに十分な知識があります。
  • 高度なシステムは、学生が基本的な物理学コース(高校のAP物理学など)を受講していることを前提としていることに注意してください。

イントロCS

プログラミング入門

forループを書いたことがない場合、またはプログラミングで文字列が何であるかわからない場合は、ここから始めてください。このコースは自分のペースで進められ、ニーズに合わせて週に費やす時間数を調整できます。

取り上げるトピック:

simple programs
simple data structures

コース 期間 努力 前提 条件 議論
みんなのためのパイソン 10週間 10時間/週 何一つ チャット

コンピュータサイエンス入門

このコースでは、コンピュータサイエンスの世界を紹介します。上記のコースから、または他の場所での学習を通じてプログラミングを紹介された学生は、今後の資料の味のためにこのコースを受講する必要があります。あなたがもっと欲しがってコースを終えるなら、コンピュータサイエンスはあなたのためである可能性があります!

取り上げるトピック:

computation
imperative programming
basic data structures and algorithms
and more

コース 期間 努力 前提 条件 議論
Pythonを使用したコンピュータサイエンスとプログラミング入門(alt) 9週間 15時間/週 高校代数 チャット

コアCS

特に明記されていない限り、Core CSに基づくすべてのコースワークが必要です

コアプログラミング

取り上げるトピック:

functional programming
design for testing
program requirements
common design patterns
unit testing
object-oriented design
static typing
dynamic typing
ML-family languages (via Standard ML)
Lisp-family languages (via Racket)
Ruby
and more

コース 期間 努力 前提 条件 議論
コーディング方法 - シンプルデータ(教科書) 7週間 8-10時間/週 何一つ チャット
コーディング方法 - 複雑なデータ 6週間 8-10時間/週 コーディング方法: 単純なデータ チャット
プログラミング言語、パートA 5週間 4-8時間/週 コーディング方法(インストラクターを聞く) チャット
プログラミング言語、パートB 3週間 4-8時間/週 プログラミング言語、パートA チャット
プログラミング言語、パートC 3週間 4-8時間/週 プログラミング言語、パートB チャット
オブジェクト指向設計 4週間 4時間/週 基本的なジャワ
デザインパターン 4週間 4時間/週 オブジェクト指向設計
ソフトウェアアーキテクチャ 4週間 2-5時間/週 デザインパターン

コア数学

離散数学(CSの数学)は前提条件であり、アルゴリズムとデータ構造の研究と密接に関連しています。微積分は、離散数学のために学生を準備し、学生が数学の成熟度を発達させるのに役立ちます。

取り上げるトピック:

discrete mathematics
mathematical proofs
basic statistics
O-notation
discrete probability
and more

コース 期間 努力 筆記 前提 条件 議論
積分1A:微分(alt) 13週間 6-10時間/週 代替案は、これと次の2つのコースをカバーしています 高校の数学 チャット
微積分1B:積分 13週間 5-10時間/週 - 微積分1A チャット
微積分1C:座標系と無限級数 6週間 5-10時間/週 - 微積分1B チャット
コンピュータサイエンスのための数学(alt) 13週間 5時間/週 2015/2019ソリューション 2010ソリューション 2005ソリューション。 微積分1C チャット

CSツール

理論を理解することも重要ですが、プログラムを作成することも求められます。そのプロセスを簡単にするために広く使用されているツールがいくつかあります。あなたの将来の仕事を書くプログラムを容易にするために今それらを学びましょう。

取り上げるトピック:

terminals and shell scripting
vim
command line environments
version control
and more

コース 期間 努力 前提 条件 議論
CS教育の行方不明の学期 2週間 12時間/週 - チャット

基幹システム

取り上げるトピック:

procedural programming
manual memory management
boolean algebra
gate logic
memory
computer architecture
assembly
machine language
virtual machines
high-level languages
compilers
operating systems
network protocols
and more

コース 期間 努力 追加のテキスト/課題 前提 条件 議論
第一原理から現代のコンピュータを構築する:ナンドからテトリスまで(alt) 6週間 7-13時間/週 - Cライクなプログラミング言語 チャット
第一原理から現代のコンピュータを構築する:ナンドからテトリスパートII 6週間 12-18時間/週 - これらのプログラミング言語の1つ、ナンドからテトリスパートI チャット
オペレーティングシステム:3つの簡単な部分 10-12週間 6-10時間/週 - ナンドからテトリスパートII チャット
コンピュータネットワーキング:トップダウンアプローチ 8週間 週4〜12時間 ワイヤーシャークラボ 代数、確率、基本CS チャット

コア理論

取り上げるトピック:

divide and conquer
sorting and searching
randomized algorithms
graph search
shortest paths
data structures
greedy algorithms
minimum spanning trees
dynamic programming
NP-completeness
and more

コース 期間 努力 前提 条件 議論
分割統治、並べ替えと検索、ランダム化されたアルゴリズム 4週間 4-8時間/週 任意のプログラミング言語、コンピュータサイエンスのための数学 チャット
グラフ検索、最短パス、データ構造 4週間 4-8時間/週 分割統治、並べ替えと検索、ランダム化されたアルゴリズム チャット
貪欲アルゴリズム、最小スパニングツリー、動的計画法 4週間 4-8時間/週 グラフ検索、最短パス、データ構造 チャット
最短経路の再検討、NP完了問題とその対処方法 4週間 4-8時間/週 貪欲アルゴリズム、最小スパニングツリー、動的計画法 チャット

コアセキュリティ

取り上げるトピック

Confidentiality, Integrity, Availability
Secure Design
Defensive Programming
Threats and Attacks
Network Security
Cryptography
and more

コース 期間 努力 前提 条件 議論
サイバーセキュリティの基礎 8週間 10-12時間/週 - チャット
セキュアコーディングの原則 4週間 4時間/週 - チャット
セキュリティ脆弱性の特定 4週間 4時間/週 - チャット

次のいずれかを選択します。

コース 期間 努力 前提 条件 議論
C/C++ プログラミングにおけるセキュリティ脆弱性の特定 4週間 5時間/週 - チャット
Javaアプリケーションの脆弱性の悪用と保護 4週間 5時間/週 - チャット

コアアプリケーション

取り上げるトピック:

Agile methodology
REST
software specifications
refactoring
relational databases
transaction processing
data modeling
neural networks
supervised learning
unsupervised learning
OpenGL
ray tracing
and more

コース 期間 努力 前提 条件 議論
データベース:モデリングと理論 2週間 10時間/週 コアプログラミング チャット
データベース: リレーショナル データベースと SQL 2週間 10時間/週 コアプログラミング チャット
データベース: 半構造化データ 2週間 10時間/週 コアプログラミング チャット
機械学習 11週間 4-6時間/週 線形代数 チャット
コングラ 6週間 12時間/週 C ++またはJava、線形代数 チャット
ソフトウェア工学:はじめに 6週間 8-10時間/週 コアプログラミング、および大規模なプロジェクト チャット

コア倫理

取り上げるトピック:

Social Context
Analytical Tools
Professional Ethics
Intellectual Property
Privacy and Civil Liberties
and more

コース 期間 努力 前提 条件 議論
倫理、技術、工学 9週間 2時間/週 何一つ チャット
知的財産入門 4週間 2時間/週 何一つ チャット
データプライバシーの基礎 3週間 3時間/週 何一つ チャット

アドバンストCS

コアCSのすべての必須コースを修了した後、学生は興味に基づいてアドバンストCSからコースのサブセットを選択する必要があります。 サブカテゴリのすべてのコースを受講する必要はありません。 しかし、学生は自分が進もうとしている分野に関連するすべてのコースを受講する必要があります。

高度なプログラミング

取り上げるトピック:

debugging theory and practice
goal-oriented programming
parallel computing
object-oriented analysis and design
UML
large-scale software architecture and design
and more

コース 期間 努力 前提 条件
並列プログラミング 4週間 6-8時間/週 スカラプログラミング
コンパイラ 9週間 6-8時間/週 何一つ
ハスケル入門 14週間 - -
今すぐプロローグを学びましょう!(alt)* 12週間 - -
ソフトウェアデバッグ 8週間 6時間/週 Python、オブジェクト指向プログラミング
ソフトウェアテスト 4週間 6時間/週 パイソン、プログラミング経験

(*)Blackburn、Bos、Striegnitzによる本(ソースから編集され、CCライセンスの下で再配布されました))

高度なシステム

取り上げるトピック:

digital signaling
combinational logic
CMOS technologies
sequential logic
finite state machines
processor instruction sets
caches
pipelining
virtualization
parallel processing
virtual memory
synchronization primitives
system call interface
and more

コース 期間 努力 前提 条件 筆記
計算構造1:デジタル回路 alt1 alt2 10週間 6時間/週 ナンド2テトリスII 代替リンクには、3つのコースすべてが含まれています。
計算構造2:コンピュータアーキテクチャ 10週間 6時間/週 計算構造1
計算構造3:コンピュータ構成 10週間 6時間/週 計算構造2

先端理論

取り上げるトピック:

formal languages
Turing machines
computability
event-driven concurrency
automata
distributed shared memory
consensus algorithms
state machine replication
computational geometry theory
propositional logic
relational logic
Herbrand logic
game trees
and more

コース 期間 努力 前提 条件
計算理論(alt) 13週間 10時間/週 コンピュータサイエンスのための数学、論理、アルゴリズム
計算幾何学 16週間 8時間/週 アルゴリズム、C++
ゲーム理論 8週間 3時間/週 数学的思考、確率、微積分

高度な情報セキュリティ

コース 期間 努力 前提 条件
Web Security Fundamentals 5 weeks 4-6 hours/week understanding basic web technologies
Security Governance & Compliance 3 weeks 3 hours/week -
Digital Forensics Concepts 3 weeks 2-3 hours/week Core Security
Secure Software Development: Requirements, Design, and Reuse 7 weeks 1-2 hours/week Core Programming and Core Security
Secure Software Development: Implementation 7 weeks 1-2 hours/week Secure Software Development: Requirements, Design, and Reuse
Secure Software Development: Verification and More Specialized Topics 7 weeks 1-2 hours/week Secure Software Development: Implementation

Advanced math

Courses Duration Effort Prerequisites Discussion
Essence of Linear Algebra - - high school math chat
Linear Algebra 14 weeks 12 hours/week corequisite: Essence of Linear Algebra chat
Introduction to Numerical Methods 14 weeks 12 hours/week Linear Algebra chat
Introduction to Formal Logic 10 weeks 4-8 hours/week Set Theory chat
Probability 15 weeks 5-10 hours/week Differentiation and Integration chat

Final project

OSS University is project-focused. The assignments and exams for each course are to prepare you to use your knowledge to solve real-world problems.

After you've gotten through all of Core CS and the parts of Advanced CS relevant to you, you should think about a problem that you can solve using the knowledge you've acquired. Not only does real project work look great on a resume, but the project will also validate and consolidate your knowledge. You can create something entirely new, or you can find an existing project that needs help via websites like CodeTriage or First Timers Only.

Students who would like more guidance in creating a project may choose to use a series of project oriented courses. Here is a sample of options (many more are available, at this point you should be capable of identifying a series that is interesting and relevant to you):

Courses Duration Effort Prerequisites
Fullstack Open 12 weeks 15 hours/week programming
Modern Robotics (Specialization) 26 weeks 2-5 hours/week freshman-level physics, linear algebra, calculus, linear ordinary differential equations
Data Mining (Specialization) 30 weeks 2-5 hours/week machine learning
Big Data (Specialization) 30 weeks 3-5 hours/week none
Internet of Things (Specialization) 30 weeks 1-5 hours/week strong programming
Cloud Computing (Specialization) 30 weeks 2-6 hours/week C++ programming
Data Science (Specialization) 43 weeks 1-6 hours/week none
Functional Programming in Scala (Specialization) 29 weeks 4-5 hours/week One year programming experience
Game Design and Development with Unity 2020 (Specialization) 6 months 5 hours/week programming, interactive design

Evaluation

Upon completing your final project:

  • Submit your project's information to PROJECTS via a pull request.

  • Put the OSSU-CS badge in the README of your repository! Open Source Society University - Computer Science

    • Markdown:
      [![Open Source Society University - Computer Science](https://img.shields.io/badge/OSSU-computer--science-blue.svg)](https://github.com/ossu/computer-science)
    • HTML:
      <a href="https://github.com/ossu/computer-science"><img alt="Open Source Society University - Computer Science" src="https://img.shields.io/badge/OSSU-computer--science-blue.svg"></a>
  • Use our community channels to announce it to your fellow students.

Solicit feedback from your OSSU peers. You will not be "graded" in the traditional sense — everyone has their own measurements for what they consider a success. The purpose of the evaluation is to act as your first announcement to the world that you are a computer scientist and to get experience listening to feedback — both positive and negative.

The final project evaluation has a second purpose: to evaluate whether OSSU, through its community and curriculum, is successful in its mission to guide independent learners in obtaining a world-class computer science education.

Cooperative work

You can create this project alone or with other students! We love cooperative work! Use our channels to communicate with other fellows to combine and create new projects!

Which programming languages should I use?

My friend, here is the best part of liberty! You can use any language that you want to complete the final project.

The important thing is to internalize the core concepts and to be able to use them with whatever tool (programming language) that you wish.

Congratulations

After completing the requirements of the curriculum above, you will have completed the equivalent of a full bachelor's degree in Computer Science. Congratulations!

What is next for you? The possibilities are boundless and overlapping:

  • Look for a job as a developer!
  • Check out the readings for classic books you can read that will sharpen your skills and expand your knowledge.
  • Join a local developer meetup (e.g. via meetup.com).
  • Pay attention to emerging technologies in the world of software development:
    • Explore the actor model through Elixir, a new functional programming language for the web based on the battle-tested Erlang Virtual Machine!
    • Explore borrowing and lifetimes through Rust, a systems language which achieves memory- and thread-safety without a garbage collector!
    • Explore dependent type systems through Idris, a new Haskell-inspired language with unprecedented support for type-driven development.

keep learning

Code of conduct

OSSU's code of conduct.

進捗状況を表示する方法

  1. Trello でアカウントを作成します。
  2. このボードを個人アカウントにコピーします。 ボードをコピーする方法については、こちらをご覧ください

公式ボードのコピーができたので、学習を進めながらカードを列または列に渡すだけです。

Doing
Done

また、プロセスをより細かく制御するのに役立つラベルもあります。 これらの各ラベルの意味は次のとおりです。

  • Main Curriculum
    :そのラベルの付いたカードは、カリキュラムにリストされているコースを表します。
  • Extra Resources
    :そのラベルの付いたカードは、学生が追加したコースを表します。
  • Doing
    : そのラベルの付いたカードは、学生が現在行っているコースを表します。
  • Done
    : そのラベルの付いたカードは、学生が終了したコースを表します。 これらのカードには、そのようなコースで習得した知識で構築された少なくとも1つのプロジェクト/記事へのリンクも必要です。
  • Section
    :そのラベルの付いたカードは、カリキュラムにあるセクションを表しています。 ラベルの付いたカードは、[完了] 列の整理を支援するためだけのものです。 コースのカード、それぞれのセクションのカードの下に配置する必要があります。
    Section

このボードの目的は、生徒に進捗状況を追跡する方法と、友人、家族、雇用主などの公開ページを通じて進捗状況を示す機能を提供することです。 ボードのステータスをパブリックまたはプライベートに変更できます。

チーム