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 カリキュラムは、オンライン教材を使用したコンピュータ サイエンスの完全な教育です。キャリア トレーニングや専門能力開発のためだけではありません。これは、すべてのコンピューティング分野の基礎となる概念の適切でバランスの取れた基盤を求める人、およびこの教育を主に独力で取得するための規律、意志、および (最も重要なことに!) 良い習慣を持っている人のためのものですが、サポートが必要です。仲間の学習者の世界的なコミュニティから。

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

コースは:

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

上記の基準を満たすコースがない場合、コースワークは本で補足されます。カリキュラムに当てはまらないが質の高いコースや本がある場合、それらはExtras/coursesまたはextras/readingsに属します。

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

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

期間。入念に計画を立て、週に約20時間の勉強に専念すれば、約2年で卒業することができます。学習者は、このスプレッド を使用して終了日を見積もることができます。コピーを作成し、

Timeline
シートに開始日と週あたりの予定時間を入力します。コースを進めながら、実際のコース完了日を
Curriculum Data
シートに入力して、更新された完了予定を取得できます。

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

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

プロセス。生徒は、カリキュラムを単独で、またはグループで、順番どおりまたは順不同で学習できます。

  • すべてのコースを Core CS で受講することをお勧めします。コースをスキップするのは、以前にその教材を既に学習したことが確実な場合のみです。
  • 簡単にするために、コース (特にコア CS) を上から下に順番に進めることをお勧めします。
  • Advanced CS のコースは選択科目です。専門家になりたい科目 (上級プログラミングなど) を 1 つ選択し、その見出しの下にあるすべてのコースを受講してください。独自のカスタム件名を作成することもできますが、選択した件名についてコミュニティから検証を受けることをお勧めします。

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

貢献する方法

ヘルプを取得する(よくある質問とチャットルームの詳細)

コミュニティ

  • Discordサーバーがあります!不和これは、他の OSSU の学生と話す最初の場所です。すぐに自己紹介しませんか?OSSUディスコードに参加する
  • GitHub の問題を通じてやり取りすることもできます。コースに問題がある場合、またはカリキュラムを変更する必要がある場合は、ここで会話を開始してください。詳細はこちらをご覧ください。
  • ニュースレターを購読してください。
  • Open Source Society UniversityをLinkedinプロフィールに追加してください!
  • 注: OSSU を検索すると、保守されていない非推奨の firebase アプリが見つかる可能性があります。無視しても問題ありません。詳しくはFAQをご覧ください。

カリキュラム

カリキュラムのバージョン:

8.0.0
( CHANGELOGを参照)


前提条件

  • コア CSは、生徒が代数、幾何学、微積分学を含む高校数学を既に受講していることを前提としています。
  • Advanced CSは、学生がすでに Core CS をすべて受講しており、受講する選択科目を決定するのに十分な知識を持っていることを前提としています。
  • 高度なシステムでは、学生が基本的な物理コース (高校での AP 物理学など) を受講していることを前提としています。

イントロ CS

プログラミング入門

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

取り上げるトピック:

simple programs
simple data structures

コース 間隔 努力 前提条件 討論
みんなのためのPython 10週間 週10時間 なし チャット

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

このコースでは、コンピュータ サイエンスの世界を紹介します。上記のコースから、または他の場所での学習を通じてプログラミングを紹介された学生は、このコースを受講して、教材の風味を習得する必要があります。より多くのことを求めてコースを終了した場合は、コンピューター サイエンスが最適です。

取り上げるトピック:

computation
imperative programming
basic data structures and algorithms
and more

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

コアCS

特に指定がない限り、コア 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

How to Code コースは、教科書How to Design Programs に基づいています。初版はオンラインで無料で入手でき、問題セットと解決策が含まれています。生徒はこれらの課題を行うよう奨励されています。

コース 間隔 努力 前提条件 討論
コーディング方法 - 単純なデータ 7週間 週8~10時間 なし チャット
コーディング方法 - 複雑なデータ 6週間 週8~10時間 コーディング方法: 単純なデータ チャット
プログラミング言語、パート A 5週間 週4~8時間 コーディング方法 (インストラクターの話を聞く) チャット
プログラミング言語、パート B 3週間 週4~8時間 プログラミング言語、パート A チャット
プログラミング言語、パート C 3週間 週4~8時間 プログラミング言語、パート B チャット
オブジェクト指向設計 4週間 週4時間 基本的なJava
デザインパターン 4週間 週4時間 オブジェクト指向設計
ソフトウェア アーキテクチャ 4週間 週2~5時間 デザインパターン

コア数学

離散数学(Math for 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

コース 間隔 努力 追加テキスト/課題 前提条件 討論
第一原理から最新のコンピューターを構築する: Nand から Tetris まで( alt ) 6週間 週7~13時間 - Cライクなプログラミング言語 チャット
第一原理から最新のコンピューターを構築する: Nand から Tetris パート II 6週間 週12~18時間 - これらのプログラミング言語の 1 つ , Nand から Tetris へ Part I チャット
オペレーティング システム: 3 つの簡単な要素 10~12週間 週6~10時間 - 強力な C プログラミング チャット
コンピュータ ネットワーキング: トップダウン アプローチ 8週間 週4~12時間 Wireshark ラボ 代数、確率、基礎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

Core CS で必要なすべてのコースを修了した後、学生は興味に基づいて Advanced 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週間 - -
今すぐプロローグを学ぼう!(代替)* 12週間 - -
ソフトウェアのデバッグ 8週間 週6時間 Python、オブジェクト指向プログラミング
ソフトウェアテスト 4週間 週6時間 Python、プログラミング経験

(*) book by Blackburn, Bos, Striegnitz (compiled from source, redistributed under CC license)

Advanced systems

Topics covered:

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

Courses Duration Effort Prerequisites Notes
Computation Structures 1: Digital Circuits alt1 alt2 10 weeks 6 hours/week Nand2Tetris II Alternate links contain all 3 courses.
Computation Structures 2: Computer Architecture 10 weeks 6 hours/week Computation Structures 1
Computation Structures 3: Computer Organization 10 weeks 6 hours/week Computation Structures 2

Advanced theory

Topics covered:

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

Courses Duration Effort Prerequisites
Theory of Computation (Lectures) 8 weeks 10 hours/week discrete mathematics, logic, algorithms
Computational Geometry 16 weeks 8 hours/week algorithms, C++
Game Theory 8 weeks 3 hours/week mathematical thinking, probability, calculus

Advanced Information Security

Courses Duration Effort Prerequisites
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 Logic 10 weeks 4-8 hours/week set theory chat
Probability 24 weeks 12 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! オープン ソース ソサエティ大学 - コンピューター サイエンス

    • 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

上記のカリキュラムの要件を完了すると、コンピューター サイエンスの完全な学士号に相当する学位を取得したことになります。おめでとう!

あなたにとって次は何ですか?可能性は無限であり、重なり合っています。

  • 開発者としての仕事を探してください!
  • あなたのスキルを磨き、知識を広げるために読むことができる古典的な本の読み物をチェックしてください.
  • 地域のデベロッパー ミートアップに参加します (例: meetup.com経由)。
  • ソフトウェア開発の世界における新しいテクノロジーに注目してください。
    • 実戦でテスト済みの Erlang 仮想マシンに基づいた Web 用の新しい関数型プログラミング言語であるElixirを使用して、アクター モデルを調べてください。
    • ガベージコレクタなしでメモリおよびスレッド セーフを実現するシステム言語であるRustを使用して、借用とライフタイムを調べてください。
    • Idrisは、型駆動型開発を前例のない方法でサポートする、Haskell に着想を得た新しい言語です。

学び続けます

行動規範

OSSUの行動規範。

進捗状況を表示する方法

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

これで公式ボードのコピーができたので、研究を進めながらカードを

Doing
列または列に渡す必要があります。
Done

また、プロセス全体をより詳細に制御できるようにするためのラベルも用意されています。これらの各ラベルの意味は次のとおりです。

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

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

チーム