diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..ed48468 --- /dev/null +++ b/CHANGELOG.md @@ -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. diff --git a/README.md b/README.md index 019782b..777a167 100644 --- a/README.md +++ b/README.md @@ -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!** +

Open Source Society University

+

+ Path to a free self-taught graduation in Computer Science! +

## 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/) diff --git a/projects.md b/projects.md new file mode 100644 index 0000000..5748b23 --- /dev/null +++ b/projects.md @@ -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 +:-- | :-- | :--: | :-- + | | |