Release of the verson 1.0.0 of the CS curriculum

This commit is contained in:
Eric Douglas 2015-10-08 12:13:17 -03:00
parent f5d81b1b90
commit 39e71e4535
3 changed files with 454 additions and 38 deletions

8
CHANGELOG.md Normal file
View File

@ -0,0 +1,8 @@
# Change Log
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).
## [1.0.0] 2015-10-08
Release of the first **complete** version of the Computer Science curriculum.

174
README.md
View File

@ -1,9 +1,10 @@
![open source society university](http://i.imgur.com/h8xjrrj.png)
### Open Source Society University
:mortar_board: **Path to a free self-taught graduation in Computer Science!**
<h3 align="center">Open Source Society University</h3>
<p align="center">
Path to a free self-taught graduation in Computer Science!
</p>
## Contents
@ -19,11 +20,9 @@
## About
This is a **solid path** for those of you who want to complete a Computer Science course on your own time, **for free**, with courses from the **best universities** in the World.
This is a **solid path** for those of you who want to complete a **Computer Science** course on your own time, **for free**, with courses from the **best universities** in the World.
In the future, more categories and/or courses will be added to this list or a more advanced/specialized list.
Initially, we will also give preference to MOOC (Massive Open Online Course) type of courses because those courses were created with our style of learning in mind.
In our curriculum, we gave preference to MOOC (Massive Open Online Course) type of courses because those courses were created with our style of learning in mind.
## Becoming an OSS student
@ -63,37 +62,54 @@ That is why we are using this strategy.
## Curriculum
- [Introduction](#introduction)
- [Introduction to Computer Science](#introduction-to-computer-science)
- [Math (Mathematical Thinking)](#math-mathematical-thinking)
- [Program Design](#program-design)
- [Math (Discrete Math)](#math-discrete-math)
- [Algorithms](#algorithms)
- [Programming Paradigms](#programming-paradigms)
- [Software Testing](#software-testing)
- [Math](#math)
- [Math (Calculus)](#math-calculus)
- [Software Architecture](#software-architecture)
- [Theory](#theory)
- [Software Engineering](#software-engineering)
- [Math (Probability)](#math-probability)
- [Computer Architecture](#computer-architecture)
- [Operating Systems](#operating-systems)
- [Computer Networks](#computer-networks)
- [Databases](#databases)
- [Cloud Computing](#cloud-computing)
- [Math (Linear Algebra)](#math-linear-algebra)
- [Cryptography](#cryptography)
- [Security](#security)
- [Compilers](#compilers)
- [Parallel Computing](#parallel-computing)
- [UX Design](#ux-design)
- [Computer Graphics](#computer-graphics)
- [Artificial Intelligence](#artificial-intelligence)
- [Machine Learning](#machine-learning)
- [Natural Language Processing](#natural-language-processing)
- [Big Data](#big-data)
- [Data Mining](#data-mining)
- [Internet of Things](#internet-of-things)
- [Specializations](#specializations)
---
### Introduction
### Introduction to Computer Science
Courses | Duration | Effort
:-- | :--: | :--:
[Introduction to Computer Science](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x#!)| 12 weeks | 10-20 hours/week
[Introduction to Computer Science and Programming Using Python](https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x-5#!)| 9 weeks | 15 hours/week
[Introduction to Computational Thinking and Data Science](https://www.edx.org/course/introduction-computational-thinking-data-mitx-6-00-2x-2#!)| 10 weeks | 15 hours/week
[From Nand to Tetris](https://www.coursera.org/course/nand2tetris1) | 7 weeks | 5-10 hours/week
### Math (Mathematical Thinking)
Courses | Duration | Effort
:-- | :--: | :--:
[Effective Thinking Through Mathematics](https://www.edx.org/course/effective-thinking-through-mathematics-utaustinx-ut-9-01x) | 9 weeks | 5 hours/week
### Program Design
@ -103,6 +119,12 @@ Courses | Duration | Effort
[Systematic Program Design- Part 2: Arbitrary Sized Data](https://www.edx.org/course/systematic-program-design-part-2-ubcx-spd2x)| 5 weeks | 8-12 hours/week
[Systematic Program Design- Part 3: Abstraction, Search and Graphs](https://www.edx.org/course/systematic-program-design-part-3-ubcx-spd3x)| 5 weeks | 8-12 hours/week
### Math (Discrete Math)
Courses | Duration | Effort
:-- | :--: | :--:
[Mathematics for Computer Science](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/index.htm)| - | -
### Algorithms
Courses | Duration | Effort
@ -115,10 +137,9 @@ Courses | Duration | Effort
Courses | Duration | Effort
:-- | :--: | :--:
[Introduction to Functional Programming](https://www.edx.org/course/introduction-functional-programming-delftx-fp101x-0#ct-read-review-widget)| 7 weeks | 4-6 hours/week
[Object Oriented Programming in Java](https://www.coursera.org/learn/object-oriented-java) | 6 weeks | 4-6 hours/week
[Principles of Reactive Programming](https://www.coursera.org/course/reactive)| 7 weeks | 5-7 hours/week
[Functional Programming Principles in Scala](https://www.coursera.org/course/progfun)| 7 weeks | 5-7 hours/week
[Principles of Reactive Programming](https://www.coursera.org/course/reactive)| 7 weeks | 5-7 hours/week
[Object Oriented Programming in Java](https://www.coursera.org/learn/object-oriented-java) | 6 weeks | 4-6 hours/week
### Software Testing
@ -127,16 +148,13 @@ Courses | Duration | Effort
[Software Testing](https://www.udacity.com/course/software-testing--cs258)| 4 weeks | 6 hours/week
[Software Debugging](https://www.udacity.com/course/software-debugging--cs259)| 8 weeks | 6 hours/week
### Math
### Math (Calculus)
Courses | Duration | Effort
:-- | :--: | :--:
[Effective Thinking Through Mathematics](https://www.edx.org/course/effective-thinking-through-mathematics-utaustinx-ut-9-01x)| 9 weeks | 5 hours/week
[Applications of Linear Algebra Part 1](https://www.edx.org/course/applications-linear-algebra-part-1-davidsonx-d003x-1#ct-read-review-widget)| 5 weeks | 12-18 hours/week
[Applications of Linear Algebra Part 2](https://www.edx.org/course/applications-linear-algebra-part-2-davidsonx-d003x-2)| 4 weeks | 12-18 hours/week
[Linear and Discrete Optimization](https://www.coursera.org/course/linearopt)| 7 weeks | 3-6 hours/week
[Probabilistic Graphical Models](https://www.coursera.org/course/pgm)| 11 weeks | 15-20 hours/week
[Game Theory](https://www.coursera.org/course/gametheory)| 9 weeks | 5-7 hours/week
[Calculus One](https://www.coursera.org/learn/calculus1)| 16 weeks | 8-10 hours/week
[Calculus Two: Sequences and Series](https://www.coursera.org/learn/advanced-calculus)| 7 weeks | 9-10 hours/week
[Multivariable Calculus](https://www.coursera.org/course/m2o2c2)| 6 weeks | 5-7 hours/week
### Software Architecture
@ -145,6 +163,12 @@ Courses | Duration | Effort
[Web Application Architectures](https://www.coursera.org/course/webapplications)| 6 weeks | 6-9 hours/week
[Software Architecture & Design](https://www.udacity.com/course/software-architecture-design--ud821)| 8 weeks | 6 hours/week
### Theory
Courses | Duration | Effort
:-- | :--: | :--:
[Automata](https://www.coursera.org/course/automata)| 6 weeks | 8-10 hours/week
### Software Engineering
Courses | Duration | Effort
@ -152,13 +176,27 @@ Courses | Duration | Effort
[Engineering Software as a Service (SaaS), Part 1](https://www.edx.org/course/engineering-software-service-saas-part-1-uc-berkeleyx-cs169-1x)| 9 weeks | 12 hours/week
[Engineering Software as a Service (Saas), Part 2](https://www.edx.org/course/engineering-software-service-saas-part-2-uc-berkeleyx-cs169-2x)| 8 weeks | 12 hours/week
[Software Processes and Agile Practices](https://www.coursera.org/learn/software-processes-and-agile-practices)| 4 weeks | 6-8 hours/week
[Startup Engineering](https://www.coursera.org/course/startup) | 12 weeks | 2-20 hours/week
### Math (Probability)
Courses | Duration | Effort
:-- | :--: | :--:
[Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-0)| 16 weeks | 12 hours/week
### Computer Architecture
Courses | Duration | Effort
:-- | :--: | :--:
[The Hardware/Software Interface](https://www.coursera.org/course/hwswinterface)| 8 weeks | 10-15 hours/week
[Computer Architecture](https://www.coursera.org/course/comparch)| - | 5-8 hours/week
### Operating Systems
Courses | Duration | Effort
:-- | :--: | :--:
[Operating System Engineering](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2012/)| - | -
[Operating Systems and System Programming](https://www.youtube.com/watch?v=XgQo4JkN4Bw&list=PL3289DD0D0F0CD4A3)| - | -
[Operating Systems and System Programming](https://www.youtube.com/watch?v=XgQo4JkN4Bw&list=PL3289DD0D0F0CD4A3)| 10 weeks | -
### Computer Networks
@ -179,6 +217,12 @@ Courses | Duration | Effort
:-- | :--: | :--:
[Introduction to Cloud Computing](https://www.edx.org/course/introduction-cloud-computing-ieeex-cloudintro-x-0)| 4 weeks | 1 hour/week
### Math (Linear Algebra)
Courses | Duration | Effort
:-- | :--: | :--:
[Coding the Matrix: Linear Algebra through Computer Science Applications](https://www.coursera.org/course/matrix)| 10 weeks | 7-10 hours/week
### Cryptography
Courses | Duration | Effort
@ -187,11 +231,23 @@ Courses | Duration | Effort
[Cryptography II](https://www.coursera.org/course/crypto2)| 6 weeks | 6-8 hours/week
[Applied Cryptography](https://www.udacity.com/course/applied-cryptography--cs387)| 8 weeks | 6 hours/week
### Security
Courses | Duration | Effort
:-- | :--: | :--:
[Introduction to Cyber Security](https://www.futurelearn.com/courses/introduction-to-cyber-security) | 8 weeks | 3 hours/week
### Compilers
Courses | Duration | Effort
:-- | :--: | :--:
[Compilers](https://www.coursera.org/course/compilers)| 11 weeks | 8-10 hours/week
[Compilers](https://www.coursera.org/course/compilers)| 9 weeks | 6-8 hours/week
### Parallel Computing
Courses | Duration | Effort
:-- | :--: | :--:
[Heterogeneous Parallel Programming](https://www.coursera.org/course/hetero)| 11 weeks | 8-10 hours/week
### UX Design
@ -199,6 +255,12 @@ Courses | Duration | Effort
:-- | :--: | :--:
[UX Design for Mobile Developers](https://www.udacity.com/course/ux-design-for-mobile-developers--ud849)| 6 weeks | 6 hours/week
### Computer Graphics
Courses | Duration | Effort
:-- | :--: | :--:
[Computer Graphics](https://www.edx.org/course/computer-graphics-uc-san-diegox-cse167x)| 6 weeks | 12 hours/week
### Artificial Intelligence
Courses | Duration | Effort
@ -235,6 +297,16 @@ Courses | Duration | Effort
:-- | :--: | :--:
[The Internet of Things](https://www.futurelearn.com/courses/internet-of-things)| 4 weeks | hours/week
### Specializations
After finishing the courses above, start your specializations on the topics that you have more interest.
Search such specializations in the following platforms:
#### [Coursera](https://www.coursera.org/) | [edX](https://www.edx.org/) | [Udacity](https://www.udacity.com/) | [Future Learn](https://www.futurelearn.com/) | [Udemy](https://www.udemy.com)
![keep learning](http://i.imgur.com/REQK0VU.jpg)
## How to use this guide
### Order of the classes
@ -257,27 +329,23 @@ You must focus on your **habit**, and **forget** about goals. Try to invest 1 ~
> See more about "Commit to a process, not a goal" [here](http://jamesclear.com/goals-systems).
### How can I track/show my progress?
### Project Based
To **track** your progress, you should update the profile that you created and add the courses that you began or ended.
Here in **OSS University**, you do **not** need to take exams, because we are focused on **real projects**!
To **show** your progress, you should create a repository on GitHub to put all of the files that you created for each course.
In order to show for everyone that you **successfully** finished a course, you should create a **"startup project"**.
You can create one repository per course, or just one repository that will contain all of the files for each course. The first option is our preferred approach.
> "What does it mean?"
**ps**: You should share **only** files that you are **allowed** to! **Do NOT disrespect the code of conduct** that you signed in the beginning of some courses.
After finish a course, you should think about a **real problem** that you can solve using the acquired knowledge in the course. You don't need to create a big project, but you must create something to **validate** and **consolidate** your knowledge, and also to show to the world that you are capable to create something useful with the concepts that you learned.
[Be creative](#be-creative) in order to show your progress! :smile:
The projects of all students will be listed in [this](projects.md) file. Submit your project's informations in that file after you conclude it.
### Cooperative work
**You can create this project alone or with other students!**
**We love cooperative work**! But is quite difficult to manage a large base of students with specific projects. Use our channels to communicate with other fellows to combine and create new projects.
> Some project suggestions [here](https://github.com/karan/Projects) and [here](https://github.com/ericdouglas/app-specs).
### 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 courses.
The **important** thing for each course is to **internalize** the **core concepts** and to be able to use them with whatever tool (programming language) that you wish.
And you should also...
### Be creative!
@ -291,7 +359,22 @@ Here are some tips about how you can do that:
- **Articles**: create blog posts to synthesize/summarize what you learned.
- **GitHub repository**: keep your course's files organized in a GH repository, so in that way other students can use it to study with your annotations.
- **Real projects**: you can try to develop at least **one real project** for each course that you enroll. It doesn't need to be a big project, just a **small one** to **validate** and **consolidate** your knowledge. Some project suggestions [here](https://github.com/karan/Projects) and [here](https://github.com/ericdouglas/app-specs).
### Cooperative work
**We love cooperative work**! Use our [channels](#community) 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 courses.
The **important** thing for each course is to **internalize** the **core concepts** and to be able to use them with whatever tool (programming language) that you wish.
### Content Policy
You must share **only** files that you are **allowed** to! **Do NOT disrespect the code of conduct** that you signed in the beginning of some courses.
[Be creative](#be-creative) in order to show your progress! :smile:
### Stay tuned
@ -309,6 +392,18 @@ The **only things** that you need to know are how to use **Git** and **GitHub**.
**ps**: You don't need to do all of the courses. Just pick one and learn the basics because you will learn more on the go!
## Change Log
**Curriculum Version**: `1.0.0`
To show **respect** to all of our students, we will keep a [CHANGELOG](CHANGELOG.md) file that contains all the alterations that our curriculum may suffer.
Now we have a **stable** version of the curriculum, which won't change anymore, only in exceptional cases (outdated courses, broken links, etc).
Our students can **trust** in this curriculum because it has been **carefully planned** and covers **all** the **core topics** that a conventional Computer Science course covers.
We also include modern topics, making this course one of the **best options** for those who want to become a Computer Scientist and/or a Software Engineer.
## How to collaborate
You can [open an issue](https://help.github.com/articles/creating-an-issue/) and give us your suggestions as to how we can improve this guide, or what we can do to improve the learning experience.
@ -319,6 +414,8 @@ Let's do it together! =)
## Community
Subscribe to [/r/opensourcesociety](https://www.reddit.com/r/opensourcesociety/)!
Join us in our [group](https://groups.google.com/forum/#!forum/open-source-society-university)!
You can also interact through [GitHub issues](https://github.com/open-source-society/computer-science-and-engineering/issues).
@ -327,11 +424,11 @@ We also have a chat room! [![Join the chat at https://gitter.im/open-source-soci
Add **Open Source Society University** to your [Facebook](https://www.facebook.com/ossuniversity) profile!
> **ps**: A forum is an ideal way to interact with other students as we do not lose important discussions, which usually occur in communication via chat apps. **Please use our forum for important discussions**.
> **ps**: A forum is an ideal way to interact with other students as we do not lose important discussions, which usually occur in communication via chat apps. **Please use our subreddit/group for important discussions**.
## Next Goals
- [Adding our university page at Linkedin](https://help.linkedin.com/app/answers/detail/a_id/40128/~/adding-a-new-university-page), so that way we will be able to add **OSS University** in our Linkedin profile.
- [Add our University page at Linkedin](https://help.linkedin.com/app/answers/detail/a_id/40128/~/adding-a-new-university-page), so in that way we will be able to add **OSS University** in our Linkedin profile.
## References
@ -339,3 +436,4 @@ Add **Open Source Society University** to your [Facebook](https://www.facebook.c
- [Coursera](https://www.coursera.org/)
- [edX](https://www.edx.org)
- [MIT Open Courseware](http://ocw.mit.edu/courses/#electrical-engineering-and-computer-science)
- [Obtaining a Thorough CS Background Online](http://spin.atomicobject.com/2015/05/15/obtaining-thorough-cs-background-online/)

310
projects.md Normal file
View File

@ -0,0 +1,310 @@
# Projects
Projects created by OSSU's students for each course of our **Computer Science**
curriculum.
### Introduction to Computer Science
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
|||
### Introduction to Computer Science and Programming Using Python
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
|||
### Introduction to Computational Thinking and Data Science
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
|||
### From Nand to Tetris
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Effective Thinking Through Mathematics
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Systematic Program Design- Part 1: The Core Method
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Systematic Program Design- Part 2: Arbitrary Sized Data
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Systematic Program Design- Part 3: Abstraction, Search and Graphs
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Mathematics for Computer Science
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Algorithms, Part I
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Algorithms, Part II
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Analysis of Algorithms
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Functional Programming Principles in Scala
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Principles of Reactive Programming
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Object Oriented Programming in Java
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Software Testing
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Software Debugging
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Calculus One
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Calculus Two: Sequences and Series
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Multivariable Calculus
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Web Application Architectures
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Software Architecture & Design
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Automata
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Engineering Software as a Service (SaaS), Part 1
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Engineering Software as a Service (Saas), Part 2
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Software Processes and Agile Practices
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Startup Engineering
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Introduction to Probability - The Science of Uncertainty
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### The Hardware/Software Interface
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Computer Architecture
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Operating System Engineering
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Operating Systems and System Programming
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Introduction to Computer Networking
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Computer Networks
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Databases
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Introduction to Cloud Computing
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Coding the Matrix: Linear Algebra through Computer Science Applications
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Cryptography I
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Cryptography II
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Applied Cryptography
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Introduction to Cyber Security
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Compilers
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Heterogeneous Parallel Programming
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### UX Design for Mobile Developers
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Computer Graphics
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Artificial Intelligence
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Machine Learning
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Natural Language Processing
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Introduction to Big Data
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### Pattern Discovery in Data Mining
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |
### The Internet of Things
Project Title | Description | Authors | Repository
:-- | :-- | :--: | :--
| | |