コンピュータサイエンスの無料の独学教育への道!
OSSUカリキュラムは、オンライン教材を使用したコンピュータサイエンスの完全な教育です。 それは単にキャリアトレーニングや専門能力開発のためではありません。 これは、すべてのコンピューティング分野の基本となる概念について、適切で包括的な基礎を身に付けたい人向けです。 そして、規律、意志、そして(最も重要なことに!)この教育を主に自分で受けるための良い習慣を持っている人にとっては、 しかし、仲間の学習者の世界的なコミュニティからのサポートがあります。
これは、学部のコンピュータサイエンス専攻の学位要件から一般教育(非CS)要件を差し引いたものに従って設計されています。 このカリキュラムに従う人々のほとんどは、すでにCSの分野外で教育を受けていると想定されています。 コース自体は世界で最高のものであり、多くの場合、ハーバード、プリンストン、MITなどから来ています。 ただし、具体的には次の基準を満たすように選択されました。
コースは次の条件を満たしている必要があります。
上記の基準を満たすコースがない場合、コースワークは本で補足されます。 カリキュラムに合わないが、それ以外は質の高いコースや本がある場合、 それらはエクストラ/コースまたはエクストラ/リーディングに属しています。
組織。カリキュラムは次のように設計されています。
デュレーション。綿密に計画し、週に約2時間勉強をすれば、約20年以内に終了することが可能です。学習者はこのスプレッドシートを使用して終了日を見積もることができます。コピーを作成し、開始日と週あたりの予定時間をシートに入力します。コースを進めながら、実際のコース修了日をシートに入力し、最新の修了見積もりを取得できます。
Timeline
Curriculum Data
コスト。すべてまたはほぼすべてのコース教材が無料で利用できます。ただし、一部のコースでは、採点する課題/テスト/プロジェクトに料金がかかる場合があります。 CourseraとedXの両方が財政援助を提供していることに注意してください。
自分の時間と予算に基づいて、費やす金額または少額を決定します。 成功を購入できないことを覚えておいてください!
プロセス。学生は、カリキュラムを単独で、またはグループで、順番に、または順不同で進めることができます。
コンテンツポリシー。コースワークの一部を公開する場合は、許可されているファイルのみを共有する必要があります。各コースの最初に署名した行動規範を軽視しないでください!
ヘルプの利用(FAQとチャットルームの詳細)
カリキュラムバージョン:(変更ログを参照
8.0.0)
forループを書いたことがない場合、またはプログラミングで文字列が何であるかわからない場合は、ここから始めてください。このコースは自分のペースで進められ、ニーズに合わせて週に費やす時間数を調整できます。
取り上げるトピック:
simple programs
simple data structures
コース | 期間 | 努力 | 前提 条件 | 議論 |
---|---|---|---|---|
みんなのためのパイソン | 10週間 | 10時間/週 | 何一つ | チャット |
このコースでは、コンピュータサイエンスの世界を紹介します。上記のコースから、または他の場所での学習を通じてプログラミングを紹介された学生は、今後の資料の味のためにこのコースを受講する必要があります。あなたがもっと欲しがってコースを終えるなら、コンピュータサイエンスはあなたのためである可能性があります!
取り上げるトピック:
computation
imperative programming
basic data structures and algorithms
and more
コース | 期間 | 努力 | 前提 条件 | 議論 |
---|---|---|---|---|
Pythonを使用したコンピュータサイエンスとプログラミング入門(alt) | 9週間 | 15時間/週 | 高校代数 | チャット |
特に明記されていない限り、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 | チャット |
理論を理解することも重要ですが、プログラムを作成することも求められます。そのプロセスを簡単にするために広く使用されているツールがいくつかあります。あなたの将来の仕事を書くプログラムを容易にするために今それらを学びましょう。
取り上げるトピック:
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からコースのサブセットを選択する必要があります。 サブカテゴリのすべてのコースを受講する必要はありません。 しかし、学生は自分が進もうとしている分野に関連するすべてのコースを受講する必要があります。
取り上げるトピック:
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 |
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 |
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 |
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!
[](https://github.com/ossu/computer-science)
<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.
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!
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.
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:
公式ボードのコピーができたので、学習を進めながらカードを列または列に渡すだけです。
Doing
Done
また、プロセスをより細かく制御するのに役立つラベルもあります。 これらの各ラベルの意味は次のとおりです。
Main Curriculum:そのラベルの付いたカードは、カリキュラムにリストされているコースを表します。
Extra Resources:そのラベルの付いたカードは、学生が追加したコースを表します。
Doing: そのラベルの付いたカードは、学生が現在行っているコースを表します。
Done: そのラベルの付いたカードは、学生が終了したコースを表します。 これらのカードには、そのようなコースで習得した知識で構築された少なくとも1つのプロジェクト/記事へのリンクも必要です。
Section:そのラベルの付いたカードは、カリキュラムにあるセクションを表しています。 ラベルの付いたカードは、[完了] 列の整理を支援するためだけのものです。 コースのカードは、それぞれのセクションのカードの下に配置する必要があります。
Section
このボードの目的は、生徒に進捗状況を追跡する方法と、友人、家族、雇用主などの公開ページを通じて進捗状況を示す機能を提供することです。 ボードのステータスをパブリックまたはプライベートに変更できます。