computer-science/README.md

351 lines
15 KiB
Markdown
Raw Normal View History

2015-10-03 23:15:04 +03:00
![open source society university](http://i.imgur.com/h8xjrrj.png)
2015-05-15 01:23:14 +03:00
2015-10-07 17:45:56 +03:00
### Open Source Society University
2015-10-04 05:06:24 +03:00
:mortar_board: **Path to a free self-taught graduation in Computer Science!**
2015-05-14 16:51:21 +03:00
2015-10-04 03:08:40 +03:00
## Contents
- [About](#about)
- [Becoming an OSS student](#becoming-an-oss-student)
2015-10-05 15:12:15 +03:00
- [Curriculum](#curriculum)
2015-10-04 13:19:06 +03:00
- [How to use this guide](#how-to-use-this-guide)
2015-10-04 13:25:47 +03:00
- [Prerequisite](#prerequisite)
2015-10-04 13:32:57 +03:00
- [How to collaborate](#how-to-collaborate)
2015-10-04 15:00:02 +03:00
- [Community](#community)
2015-10-04 03:08:40 +03:00
- [Next Goals](#next-goals)
- [References](#references)
2015-05-14 16:51:21 +03:00
2015-10-04 03:08:40 +03:00
## About
2015-10-03 22:33:25 +03:00
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.
2015-10-04 03:11:12 +03:00
In the future, more categories and/or courses will be added to this list or a more advanced/specialized list.
2015-10-03 22:33:25 +03:00
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.
2015-10-03 22:33:25 +03:00
2015-10-04 03:08:40 +03:00
## Becoming an OSS student
To officially register for this course you must create a profile in our [students profile](https://github.com/open-source-society/computer-science-and-engineering/issues/31) issue.
2015-10-04 03:08:40 +03:00
2015-10-04 04:52:26 +03:00
> **"How can I do this?"**
2015-10-04 03:08:40 +03:00
Comment in [this](https://github.com/open-source-society/computer-science-and-engineering/issues/31) issue (please, do **not** open a new one) using the following template:
2015-10-04 03:08:40 +03:00
```
2015-10-04 05:00:08 +03:00
- **Name**: YOUR NAME
- **GitHub**: [@your_username]()
- **Twitter**: [@your_username]()
- **Linkedin**: [link]()
- **Website**: [yourblog.com]()
2015-10-04 03:08:40 +03:00
2015-10-05 00:02:18 +03:00
## Completed Courses
2015-10-04 03:08:40 +03:00
2015-10-04 03:56:05 +03:00
**Name of the Section**
2015-06-05 13:33:10 +03:00
2015-10-04 04:56:55 +03:00
Course|Files
2015-10-04 03:08:40 +03:00
:--|:--:
2015-10-04 03:56:05 +03:00
Course Name| [link]()
2015-10-04 03:08:40 +03:00
```
**IMPORTANT**: add your profile **only once** and **after** you **finish** each course you can **return** to that issue and **update** your comment.
2015-10-05 00:02:18 +03:00
**ps**: In the *Completed Courses* section, you should link the repository that contains the files that you created in the respective course.
2015-10-04 05:13:18 +03:00
2015-10-04 04:52:26 +03:00
> **"Why should I do this?"**
By making a [public commitment](http://renewablewealth.com/articles/the-power-of-a-public-commitment/), we have a greater chance of **successfully** graduating, a way to get to know our peers better, and an opportunity to share the things that we have done.
That is why we are using this strategy.
2015-10-04 03:08:40 +03:00
---
2015-06-05 13:33:10 +03:00
2015-10-05 15:12:15 +03:00
## Curriculum
2015-05-14 16:51:21 +03:00
2015-10-03 22:33:25 +03:00
- [Introduction](#introduction)
- [Program Design](#program-design)
2015-10-06 03:58:25 +03:00
- [Algorithms](#algorithms)
2015-10-03 22:33:25 +03:00
- [Programming Paradigms](#programming-paradigms)
2015-05-14 18:04:35 +03:00
- [Software Testing](#software-testing)
2015-10-04 00:24:54 +03:00
- [Math](#math)
- [Software Architecture](#software-architecture)
2015-10-03 23:39:52 +03:00
- [Software Engineering](#software-engineering)
2015-05-14 18:04:35 +03:00
- [Operating Systems](#operating-systems)
2015-10-04 04:07:59 +03:00
- [Computer Networks](#computer-networks)
2015-10-04 02:21:12 +03:00
- [Databases](#databases)
2015-10-03 22:33:25 +03:00
- [Cloud Computing](#cloud-computing)
2015-05-14 18:04:35 +03:00
- [Cryptography](#cryptography)
- [Compilers](#compilers)
2015-10-04 02:09:45 +03:00
- [UX Design](#ux-design)
2015-05-14 18:04:35 +03:00
- [Artificial Intelligence](#artificial-intelligence)
- [Machine Learning](#machine-learning)
- [Natural Language Processing](#natural-language-processing)
- [Big Data](#big-data)
2015-05-14 18:04:35 +03:00
- [Data Mining](#data-mining)
2015-10-07 17:48:08 +03:00
- [Internet of Things](#internet-of-things)
2015-10-03 22:33:25 +03:00
2015-10-04 02:03:12 +03:00
---
2015-10-03 22:33:25 +03:00
### Introduction
2015-10-07 17:51:23 +03:00
Courses|
2015-10-07 17:45:56 +03:00
:--|
2015-10-04 06:21:01 +03:00
[Introduction to Computer Science](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x#!)| 9 ~ 15 weeks
[Introduction to Computer Science and Programming Using Python](https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x-5#!)| 9 weeks
[Introduction to Computational Thinking and Data Science](https://www.edx.org/course/introduction-computational-thinking-data-mitx-6-00-2x-2#!)| 10 weeks
2015-10-03 22:33:25 +03:00
### Program Design
2015-10-07 17:51:23 +03:00
Courses|
2015-10-07 17:45:56 +03:00
:--|
2015-10-04 06:21:01 +03:00
[Systematic Program Design- Part 1: The Core Method](https://www.edx.org/course/systematic-program-design-part-1-core-ubcx-spd1x-0)| 5 weeks
[Systematic Program Design- Part 2: Arbitrary Sized Data](https://www.edx.org/course/systematic-program-design-part-2-ubcx-spd2x)| 5 weeks
[Systematic Program Design- Part 3: Abstraction, Search and Graphs](https://www.edx.org/course/systematic-program-design-part-3-ubcx-spd3x)| 5 weeks
2015-10-03 23:19:58 +03:00
2015-10-06 03:58:25 +03:00
### Algorithms
2015-10-07 17:51:23 +03:00
Courses|
2015-10-07 17:45:56 +03:00
:--|
2015-10-06 03:58:25 +03:00
[Algorithms, Part I](https://www.coursera.org/course/algs4partI)| 6 weeks
[Algorithms, Part II](https://www.coursera.org/course/algs4partII)| 6 weeks
[Analysis of Algorithms](https://www.coursera.org/course/aofa)| 6 weeks
2015-10-03 22:33:25 +03:00
### Programming Paradigms
2015-10-07 17:51:23 +03:00
Courses|
2015-10-07 17:45:56 +03:00
:--|
2015-10-04 06:21:01 +03:00
[Introduction to Functional Programming](https://www.edx.org/course/introduction-functional-programming-delftx-fp101x-0#ct-read-review-widget)| 7 weeks
2015-10-06 03:44:56 +03:00
[Object Oriented Programming in Java](https://www.coursera.org/learn/object-oriented-java) | 6 weeks
2015-10-04 06:21:01 +03:00
[Principles of Reactive Programming](https://www.coursera.org/course/reactive)| 7 weeks
[Programming Languages](https://www.coursera.org/course/proglang)| 8-16 hours/week
[Functional Programming Principles in Scala](https://www.coursera.org/course/progfun)| 7 weeks
2015-05-14 17:34:52 +03:00
### Software Testing
2015-10-07 17:51:23 +03:00
Courses|
2015-10-07 17:45:56 +03:00
:--|
2015-10-04 06:21:01 +03:00
[Software Testing](https://www.udacity.com/course/software-testing--cs258)| 4 weeks
[Software Debugging](https://www.udacity.com/course/software-debugging--cs259)| 8 weeks
2015-05-14 17:34:52 +03:00
### Math
2015-10-07 17:51:23 +03:00
Courses|
2015-10-07 17:45:56 +03:00
:--|
2015-10-04 06:21:01 +03:00
[Effective Thinking Through Mathematics](https://www.edx.org/course/effective-thinking-through-mathematics-utaustinx-ut-9-01x)| 9 weeks
[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
[Applications of Linear Algebra Part 2](https://www.edx.org/course/applications-linear-algebra-part-2-davidsonx-d003x-2)| 4 weeks
[Linear and Discrete Optimization](https://www.coursera.org/course/linearopt)| 3-6 hours/week
[Probabilistic Graphical Models](https://www.coursera.org/course/pgm)| 11 weeks
[Game Theory](https://www.coursera.org/course/gametheory)| 9 weeks
2015-05-14 17:34:52 +03:00
2015-10-04 01:35:06 +03:00
### Software Architecture
2015-10-07 17:51:23 +03:00
Courses|
2015-10-07 17:45:56 +03:00
:--|
2015-10-04 06:21:01 +03:00
[Web Application Architectures](https://www.coursera.org/course/webapplications)| 6-9 hours/week
2015-10-04 19:58:08 +03:00
[Software Architecture & Design](https://www.udacity.com/course/software-architecture-design--ud821)| -
2015-10-04 06:21:01 +03:00
[Microservice Architectures TODO]()| -
2015-10-04 01:35:06 +03:00
2015-10-04 01:57:11 +03:00
### Software Engineering
2015-10-07 17:51:23 +03:00
Courses|
2015-10-07 17:45:56 +03:00
:--|
2015-10-04 06:21:01 +03:00
[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
[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
[Software Product Management Specialization](https://www.coursera.org/specializations/product-management)| -
2015-10-04 01:57:11 +03:00
2015-05-14 17:34:52 +03:00
### Operating Systems
2015-10-07 17:51:23 +03:00
Courses|
2015-10-07 17:45:56 +03:00
:--|
2015-10-04 06:21:01 +03:00
[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)| -
2015-05-14 17:34:52 +03:00
2015-10-04 04:07:59 +03:00
### Computer Networks
2015-05-14 17:34:52 +03:00
2015-10-07 17:51:23 +03:00
Courses|
2015-10-07 17:45:56 +03:00
:--|
2015-10-04 15:00:02 +03:00
[Computer Networks](https://www.coursera.org/course/comnetworks)| 412 hours/week
[Software Defined Networking](https://www.coursera.org/course/sdn1)| 7-10 hours/week
2015-05-14 17:34:52 +03:00
### Databases
2015-10-07 17:51:23 +03:00
Courses|
2015-10-07 17:45:56 +03:00
:--|
2015-10-04 06:21:01 +03:00
[Introduction to Databases](https://www.coursera.org/course/db)| -
[Database Design](https://www.udemy.com/database-design/#reviews)| 9 hours
2015-10-05 04:22:30 +03:00
[Database Management Essentials](https://www.coursera.org/learn/database-management)| 8 weeks
2015-10-04 02:21:12 +03:00
### Cloud Computing
2015-05-14 17:44:08 +03:00
2015-10-07 17:51:23 +03:00
Courses|
2015-10-07 17:45:56 +03:00
:--|
2015-10-04 06:21:01 +03:00
[Introduction to Cloud Computing](https://www.edx.org/course/introduction-cloud-computing-ieeex-cloudintro-x-0)| 4 weeks
[Cloud Computing Specialization](https://www.coursera.org/specializations/cloudcomputing)| -
2015-10-04 02:25:15 +03:00
2015-05-14 17:34:52 +03:00
### Cryptography
2015-10-07 17:51:23 +03:00
Courses|
2015-10-07 17:45:56 +03:00
:--|
2015-10-04 06:21:01 +03:00
[Cryptography I](https://www.coursera.org/course/crypto)| 6 weeks
[Cryptography II](https://www.coursera.org/course/crypto2)| 6 weeks
[Applied Cryptography](https://www.udacity.com/course/applied-cryptography--cs387)| 8 weeks
2015-05-14 17:44:08 +03:00
2015-05-14 17:34:52 +03:00
### Compilers
2015-10-07 17:51:23 +03:00
Courses|
2015-10-07 17:45:56 +03:00
:--|
2015-10-04 06:21:01 +03:00
[Compilers](https://www.coursera.org/course/compilers)| 11 weeks
2015-05-14 17:44:08 +03:00
2015-10-04 04:07:59 +03:00
### UX Design
2015-10-07 17:51:23 +03:00
Courses|
2015-10-07 17:45:56 +03:00
:--|
2015-10-04 06:21:01 +03:00
[Interaction Design Specialization](https://www.coursera.org/specializations/interaction-design)| -
[UX Design for Mobile Developers](https://www.udacity.com/course/ux-design-for-mobile-developers--ud849)| 6 weeks
2015-10-04 04:07:59 +03:00
2015-05-14 17:34:52 +03:00
### Artificial Intelligence
2015-10-07 17:51:23 +03:00
Courses|
2015-10-07 17:45:56 +03:00
:--|
2015-10-04 06:21:01 +03:00
[Artificial Intelligence](https://www.edx.org/course/artificial-intelligence-uc-berkeleyx-cs188-1x#!)| 12 weeks
2015-05-14 17:34:52 +03:00
2015-05-14 17:50:16 +03:00
### Machine Learning
2015-05-14 17:34:52 +03:00
2015-10-07 17:51:23 +03:00
Courses|
2015-10-07 17:45:56 +03:00
:--|
2015-10-04 06:21:01 +03:00
[Practical Machine Learning](https://www.coursera.org/course/predmachlearn)| 4 weeks
[Machine Learning](https://www.coursera.org/learn/machine-learning)| 11 weeks
[Neural Networks for Machine Learning](https://www.coursera.org/course/neuralnets)| 8 weeks
2015-05-15 01:01:14 +03:00
2015-05-14 17:44:08 +03:00
### Natural Language Processing
2015-10-07 17:51:23 +03:00
Courses|
2015-10-07 17:45:56 +03:00
:--|
2015-10-04 06:21:01 +03:00
[Natural Language Processing](https://www.coursera.org/course/nlangp)| 10 weeks
[Natural Language Processing](https://www.coursera.org/course/nlp)| 10 weeks
2015-05-15 01:01:14 +03:00
### Big Data
2015-05-14 17:44:08 +03:00
2015-10-07 17:51:23 +03:00
Courses|
2015-10-07 17:45:56 +03:00
:--|
2015-10-04 13:19:06 +03:00
[Big Data Specialization](https://www.coursera.org/specializations/big-data)| -
2015-05-14 17:34:52 +03:00
### Data Mining
2015-05-14 17:34:52 +03:00
2015-10-07 17:51:23 +03:00
Courses|
2015-10-07 17:45:56 +03:00
:--|
2015-10-04 13:19:06 +03:00
[Data Mining specialization](https://www.coursera.org/specializations/datamining)| -
2015-10-07 17:48:08 +03:00
### Internet of Things
2015-10-07 17:51:23 +03:00
Courses|
2015-10-07 17:48:08 +03:00
:--|
2015-10-07 17:52:57 +03:00
[The Internet of Things](https://www.futurelearn.com/courses/internet-of-things)|
2015-10-07 17:48:08 +03:00
2015-10-04 13:19:06 +03:00
## How to use this guide
### Order of the classes
This guide was developed to be consumed in a linear approach. What does this mean? That you should complete one course at a time.
2015-10-04 13:19:06 +03:00
The courses are **already** in the order that you should complete them. Just start in the **Introduction** section and after finishing the first course, start the next one.
2015-10-04 13:19:06 +03:00
**If the course isn't open, do it anyway with the resources from the previous class.**
### Should I take all courses?
**Yes**! The intention is to conclude **all** the courses listed here!
### Duration of the project
It may take longer to complete all of the classes compared to a regular CS course, but I can **guarantee** you that your **reward** will be proportional to **your motivation/dedication**!
2015-10-04 13:19:06 +03:00
2015-10-07 17:45:56 +03:00
You must focus on your **habit**, and **forget** about goals. Try to invest 1 ~ 2 hours **every day** studying this curriculum. If you do this, **inevitably** you'll finish this curriculum.
> See more about "Commit to a process, not a goal" [here](http://jamesclear.com/goals-systems).
### How can I track/show my progress?
2015-10-04 13:19:06 +03:00
To **track** your progress, you should update the profile that you created [here](https://github.com/open-source-society/computer-science/issues/31), adding the courses that you began or ended.
To **show** your progress, you should create a repository on GitHub to put all of the files that you created for each course.
2015-10-04 13:19:06 +03:00
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.
2015-10-04 13:19:06 +03:00
**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.
2015-10-06 12:01:58 +03:00
[Be creative](#be-creative) in order to show your progress! :smile:
2015-10-04 13:19:06 +03:00
### Cooperative work
**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.
2015-10-04 13:19:06 +03:00
### 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.
2015-10-04 13:19:06 +03:00
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.
2015-10-04 13:19:06 +03:00
2015-10-05 12:14:45 +03:00
### Be creative!
This is a **crucial** part of your journey through all those courses.
You **need** to have in mind that what you are able to **create** with the concepts that you learned will be your certificate. **And this is what really matters**!
In order to show that you **really** learned those things, you need to be **creative**!
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).
2015-10-04 13:19:06 +03:00
### Stay tuned
[Watch](https://help.github.com/articles/watching-repositories/) this repository for futures improvements and general information.
2015-10-04 01:57:11 +03:00
2015-10-04 13:25:47 +03:00
## Prerequisite
The **only things** that you need to know are how to use **Git** and **GitHub**. Here are some resources to learn about them:
2015-10-04 13:25:47 +03:00
- [Try Git](https://try.github.io/levels/1/challenges/1)
- [GitHub Training & Guides](https://www.youtube.com/playlist?list=PLg7s6cbtAD15G8lNyoaYDuKZSKyJrgwB-)
- [GitHub Hello World](https://guides.github.com/activities/hello-world/)
- [Git Immersion](http://gitimmersion.com/index.html)
- [How to Use Git and GitHub](https://www.udacity.com/course/how-to-use-git-and-github--ud775)
**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!
2015-10-04 13:25:47 +03:00
2015-10-04 13:32:57 +03:00
## 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.
2015-10-04 13:32:57 +03:00
You can also fork this project and fix any mistakes that you have found.
Let's do it together! =)
2015-10-04 15:00:02 +03:00
## Community
2015-10-04 15:26:44 +03:00
Join us in our [group](https://groups.google.com/forum/#!forum/open-source-society-university)!
2015-10-04 15:00:02 +03:00
2015-10-04 15:26:44 +03:00
You can also interact through [GitHub issues](https://github.com/open-source-society/computer-science-and-engineering/issues).
We also have a chat room! [![Join the chat at https://gitter.im/open-source-society/computer-science-and-engineering](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/open-source-society/computer-science-and-engineering?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
2015-10-07 17:19:45 +03:00
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**.
2015-10-04 15:00:02 +03:00
2015-10-04 03:08:40 +03:00
## Next Goals
2015-10-04 01:57:11 +03:00
- [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.
2015-10-04 03:08:40 +03:00
## References
- [Google - Guide for Technical Development](https://www.google.com/about/careers/students/guide-to-technical-development.html)
- [Coursera](https://www.coursera.org/)
- [edX](https://www.edx.org)
- [MIT Open Courseware](http://ocw.mit.edu/courses/#electrical-engineering-and-computer-science)