From 63e55fc5990338762d2b5398a4823a09a53e36d7 Mon Sep 17 00:00:00 2001 From: Arpit Solanki Date: Wed, 12 Oct 2016 13:17:20 +0530 Subject: [PATCH 001/131] Update free-books.md --- extras/free-books.md | 1 + 1 file changed, 1 insertion(+) diff --git a/extras/free-books.md b/extras/free-books.md index bdcaf6e..ab172c3 100644 --- a/extras/free-books.md +++ b/extras/free-books.md @@ -112,6 +112,7 @@ Name | Author(s) Name | Author(s) :-- | :--: [Deep Learning](http://www.deeplearningbook.org/) | Ian Goodfellow, Yoshua Bengio and Aaron Courville +[Bayesian Reasoning and Machine Learning](http://web4.cs.ucl.ac.uk/staff/D.Barber/pmwiki/pmwiki.php?n=Brml.HomePage) | David Barber ### Natural Language Processing From ff10682a63bac0e3114b2cab5d3d97c1e9a22e8d Mon Sep 17 00:00:00 2001 From: Laura Coursen Date: Sun, 16 Oct 2016 14:57:55 -0500 Subject: [PATCH 002/131] Add missing "you" --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e6b62a6..fdaed97 100644 --- a/README.md +++ b/README.md @@ -329,7 +329,7 @@ In order to show for everyone that you **successfully** finished a course, you s > "What does it mean?" -After finish a course, you should think about a **real world 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. +After you finish a course, you should think about a **real world 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. The projects of all students will be listed in [this](PROJECTS.md) file. **Submit your project's information in that file after you conclude it**. From e214a034eb57ac701235171eed4bdc455ce6ad25 Mon Sep 17 00:00:00 2001 From: Juan Rivillas Date: Tue, 18 Oct 2016 06:23:15 -0200 Subject: [PATCH 003/131] Improved some english phrases --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index fdaed97..622a162 100644 --- a/README.md +++ b/README.md @@ -287,7 +287,7 @@ The following platforms currently offer specializations: This guide was developed to be consumed in a linear approach. What does this mean? That you should complete one course at a time. -The courses are **already** in the order you should complete them. Just start in the [Introduction to Computer Science](#introduction-to-computer-science) section and after finishing the first course, start the next one. +The courses are **already** in the order you should complete them. Just start with the [Introduction to Computer Science](#introduction-to-computer-science) section and after finishing the first course, start the next one. **OBS:** If the course is not open, do it with the archived resources or wait until next class is open. @@ -300,14 +300,14 @@ Now that you have a copy of our official board, you just need to pass the cards We also have **labels** to help you have more control through the process. The meaning of each of these labels is: -- `Main Curriculum`: cards with that label represent courses that are listed in our curriculum. +- `Main Curriculum`: cards with that label represent courses that are listed in our curriculum. - `Extra Courses`: cards with that label represent courses that was added by the student. - `Doing`: cards with that label represent courses the student is current doing. - `Done`: cards with that label represent courses finished by the student. Those cards should also have the link for at least one project/article built with the knowledge acquired in such course. - `Section`: cards with that label represent the section that we have in our curriculum. Those cards with the `Section` label are only to help the organization of the Done column. You should put the *Course's cards* below its respective *Section's card*. - `Extra Sections`: cards with that label represent sections that was added by the student. -The intention of this board is to provide for our students a way to track their progress, and also the ability to show their progress through a public page for friends, family, employers, etc. You can change the status of your board to be **public** or **private**. +The intention of this board is to provide our students a way to track their progress, and also the ability to show their progress through a public page for friends, family, employers, etc. You can change the status of your board to be **public** or **private**. ### Should I take all courses? @@ -315,7 +315,7 @@ The intention of this board is to provide for our students a way to track their ### 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**! +It may take longer to complete all of the lessons compared to a regular CS course, but I can **guarantee** you that your **reward** will be proportional to **your motivation/dedication**! 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. @@ -325,7 +325,7 @@ You must focus on your **habit**, and **forget** about goals. Try to invest 1 ~ Here in **OSS University**, you do **not** need to take exams, because we are focused on **real projects**! -In order to show for everyone that you **successfully** finished a course, you should create a **real project**. +In order to show everyone that you **successfully** finished a course, you should create a **real project**. > "What does it mean?" From 335df3f7c4d43a0e1a19085043472b61ee30c380 Mon Sep 17 00:00:00 2001 From: Juan Rivillas Date: Tue, 18 Oct 2016 07:53:32 -0200 Subject: [PATCH 004/131] Refactored english sentence --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 622a162..736cf76 100644 --- a/README.md +++ b/README.md @@ -315,7 +315,7 @@ The intention of this board is to provide our students a way to track their prog ### Duration of the project -It may take longer to complete all of the lessons compared to a regular CS course, but I can **guarantee** you that your **reward** will be proportional to **your motivation/dedication**! +It may take longer to complete all courses compared to a regular CS graduation, but I can **guarantee** you that your reward will be proportional to your extra **effort**! 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. From 55f60812a14f0f918664e66bd7faf556608b5f37 Mon Sep 17 00:00:00 2001 From: Juan Rivillas Date: Tue, 18 Oct 2016 07:55:50 -0200 Subject: [PATCH 005/131] Changed english sentences as it was before --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 736cf76..96b675a 100644 --- a/README.md +++ b/README.md @@ -287,7 +287,7 @@ The following platforms currently offer specializations: This guide was developed to be consumed in a linear approach. What does this mean? That you should complete one course at a time. -The courses are **already** in the order you should complete them. Just start with the [Introduction to Computer Science](#introduction-to-computer-science) section and after finishing the first course, start the next one. +The courses are **already** in the order you should complete them. Just start in the [Introduction to Computer Science](#introduction-to-computer-science) section and after finishing the first course, start the next one. **OBS:** If the course is not open, do it with the archived resources or wait until next class is open. From a8135b9e3f271a6893979676574ec398e7ebfae4 Mon Sep 17 00:00:00 2001 From: Juan Rivillas Date: Tue, 18 Oct 2016 07:58:12 -0200 Subject: [PATCH 006/131] Added bold style to 'reward' --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 96b675a..7b7ae29 100644 --- a/README.md +++ b/README.md @@ -315,7 +315,7 @@ The intention of this board is to provide our students a way to track their prog ### Duration of the project -It may take longer to complete all courses compared to a regular CS graduation, but I can **guarantee** you that your reward will be proportional to your extra **effort**! +It may take longer to complete all courses compared to a regular CS graduation, but I can **guarantee** you that your **reward** will be proportional to your extra **effort**! 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. From 8911486373b4fd5fc967f81339aed10c69dd3338 Mon Sep 17 00:00:00 2001 From: Tim Berry Date: Fri, 21 Oct 2016 11:05:10 +0100 Subject: [PATCH 007/131] updated commitment/duration for UT.9.10x --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7b7ae29..b34adf4 100644 --- a/README.md +++ b/README.md @@ -91,7 +91,7 @@ Courses | Duration | Effort 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 +[Effective Thinking Through Mathematics](https://www.edx.org/course/effective-thinking-through-mathematics-utaustinx-ut-9-01x) | 4 weeks | 2-5 hours/week ### Program Design From 8a1dfdd7b9f99f220a2ff7828465111cb2ef7282 Mon Sep 17 00:00:00 2001 From: Reda Bouchaala Date: Sun, 13 Nov 2016 12:34:35 +0100 Subject: [PATCH 008/131] ADD: Advanced Operating Systems from U.C.B. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index b34adf4..3bef207 100644 --- a/README.md +++ b/README.md @@ -170,6 +170,7 @@ Courses | Duration | Effort Courses | Duration | Effort :-- | :--: | :--: [Operating Systems and System Programming](https://www.youtube.com/view_play_list?p=-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c)| 10 weeks | 2-3 hours/week +[Advanced Operating Systems: Structures And Implementation](https://www.youtube.com/watch?v=ToySNfwFOyc&list=PL-XXv-cvA_iB_5Q8G8kW5idSwNmXypmQE)| 10 weeks | 2-3 hours/week ### Computer Networks From 17d2968cc2659811b0531d437c0a46c92a2899aa Mon Sep 17 00:00:00 2001 From: Reda Bouchaala Date: Sun, 13 Nov 2016 12:40:00 +0100 Subject: [PATCH 009/131] Fix: fix link to playlist --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3bef207..c96b5c5 100644 --- a/README.md +++ b/README.md @@ -170,7 +170,7 @@ Courses | Duration | Effort Courses | Duration | Effort :-- | :--: | :--: [Operating Systems and System Programming](https://www.youtube.com/view_play_list?p=-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c)| 10 weeks | 2-3 hours/week -[Advanced Operating Systems: Structures And Implementation](https://www.youtube.com/watch?v=ToySNfwFOyc&list=PL-XXv-cvA_iB_5Q8G8kW5idSwNmXypmQE)| 10 weeks | 2-3 hours/week +[Advanced Operating Systems: Structures And Implementation](https://www.youtube.com/playlist?list=PL-XXv-cvA_iB_5Q8G8kW5idSwNmXypmQE)| 10 weeks | 2-3 hours/week ### Computer Networks From 5d7c12a27295cd2c5ce1c3549060ea0b66be2ead Mon Sep 17 00:00:00 2001 From: Reda Bouchaala Date: Mon, 14 Nov 2016 11:20:02 +0100 Subject: [PATCH 010/131] Added link to extras/free-courses.md --- extras/free-courses.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/extras/free-courses.md b/extras/free-courses.md index ec8fe5c..82e9014 100644 --- a/extras/free-courses.md +++ b/extras/free-courses.md @@ -66,7 +66,7 @@ Courses | Duration | Effort Courses | Duration | Effort :-- | :--: | :--: -[Analysis of Algorithms (Skiena)](http://www3.cs.stonybrook.edu/~skiena/373/) | 15 weeks | 6-8 hours/week +[Analysis of Algorithms (Skiena)](http://www3.cs.stonybrook.edu/~skiena/373/) | 15 weeks | 6-8 hours/week [Analysis of Algorithms (Sedgewick)](https://www.coursera.org/course/aofa)| 6 weeks | 6-8 hours/week [Programming Challenges (Skiena)](http://www3.cs.stonybrook.edu/~skiena/392/) | 14 weeks | 6-8 hours/week [Mathematical Logic and Algorithms Theory](https://iversity.org/en/courses/mathematical-logic-and-algorithms-theory) | 7 weeks | 3-4 hours/week @@ -136,6 +136,7 @@ Courses | Duration | Effort [CompTIA Linux+](https://www.cybrary.it/course/comptia-linux-plus/)| - | 5.25 hours [Introduction to Operating Systems](https://www.udacity.com/course/introduction-to-operating-systems--ud923)| 8 weeks | 5-8 hours/week [Advanced Operating Systems](https://www.udacity.com/course/advanced-operating-systems--ud189)| 5 weeks | 5-8 hours/week +[Advanced Operating Systems: Structures And Implementation](https://www.youtube.com/playlist?list=PL-XXv-cvA_iB_5Q8G8kW5idSwNmXypmQE)| 10 weeks | 2-3 hours/week ### Computer Networks @@ -145,7 +146,7 @@ Courses | Duration | Effort [CompTIA Network+](https://www.cybrary.it/course/comptia-network-plus/) | - | 32 hours [Cisco CCNA](https://www.cybrary.it/course/cisco-ccna/) | - | 15.5 hours [Networking for Web Developers](https://www.udacity.com/course/networking-for-web-developers--ud256) | - | 12 hours -[Computer Networking](https://www.udacity.com/course/computer-networking--ud436) | 12 weeks | 5-8 hours/week +[Computer Networking](https://www.udacity.com/course/computer-networking--ud436) | 12 weeks | 5-8 hours/week ### Databases From 670511c4720e7e3877019d7cb53066ad9bc5a32b Mon Sep 17 00:00:00 2001 From: Reda Bouchaala Date: Tue, 15 Nov 2016 20:50:18 +0100 Subject: [PATCH 011/131] Removed line from README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index c96b5c5..b34adf4 100644 --- a/README.md +++ b/README.md @@ -170,7 +170,6 @@ Courses | Duration | Effort Courses | Duration | Effort :-- | :--: | :--: [Operating Systems and System Programming](https://www.youtube.com/view_play_list?p=-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c)| 10 weeks | 2-3 hours/week -[Advanced Operating Systems: Structures And Implementation](https://www.youtube.com/playlist?list=PL-XXv-cvA_iB_5Q8G8kW5idSwNmXypmQE)| 10 weeks | 2-3 hours/week ### Computer Networks From c04c9b0526aa3dabaa776c4c2843364968234760 Mon Sep 17 00:00:00 2001 From: arbitrary-dev Date: Wed, 18 Jan 2017 23:53:36 +0600 Subject: [PATCH 012/131] upd algorithms --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b34adf4..3b8bbfc 100644 --- a/README.md +++ b/README.md @@ -112,8 +112,8 @@ Courses | Duration | Effort Courses | Duration | Effort :-- | :--: | :--: -[Algorithms, Part I](https://www.coursera.org/course/algs4partI)| 6 weeks | 6-12 hours/week -[Algorithms, Part II](https://www.coursera.org/course/algs4partII)| 6 weeks | 6-12 hours/week +[Algorithms, Part I](https://www.coursera.org/learn/algorithms-part1)| 6 weeks | 6-12 hours/week +[Algorithms, Part II](https://www.coursera.org/learn/algorithms-part2)| 6 weeks | 6-12 hours/week ### Programming Paradigms From 0dd19815f170bb5df8468e61f9ec0b1a9ac8f239 Mon Sep 17 00:00:00 2001 From: binamkayastha Date: Thu, 26 Jan 2017 00:14:53 -0500 Subject: [PATCH 013/131] Update README.md with smile Changed '=)' to :smile: to keep it consistent with line 379. :smile: --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3b8bbfc..c8fe704 100644 --- a/README.md +++ b/README.md @@ -417,7 +417,7 @@ If you want to suggest a new resource, send a pull request adding such resource The **extras** section is a place where all of us will be able to submit interesting additional articles, books, courses and specializations, keeping our curriculum *as immutable and concise as possible*. -**Let's do it together! =)** +**Let's do it together! :smile:** ## Community From 499d39e59ef07c41404753eea6ed427adbdc9331 Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Sat, 18 Feb 2017 22:05:51 -0500 Subject: [PATCH 014/131] Change 'free' to 'little to no cost' --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c8fe704..53b7d1a 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@

Open Source Society University

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

@@ -27,7 +27,7 @@ ## 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, at **little to no cost**, with courses from the **best universities** in the World. In our curriculum, we give preference to MOOC (Massive Open Online Course) style courses because these courses were created with our style of learning in mind. From 969af912ba05865218560fa10b6aa879711eaed6 Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Sat, 18 Feb 2017 22:10:30 -0500 Subject: [PATCH 015/131] Fixed minor capitalization issues --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 53b7d1a..3d9fcf3 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ ## About -This is a **solid path** for those of you who want to complete a **Computer Science** course on your own time, at **little to no cost**, 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, at **little to no cost**, with courses from the **best universities** in the world. In our curriculum, we give preference to MOOC (Massive Open Online Course) style courses because these courses were created with our style of learning in mind. @@ -431,7 +431,7 @@ 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 subreddit/group 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**. ## Team @@ -448,4 +448,4 @@ Add **Open Source Society University** to your [Facebook](https://www.facebook.c - [Future Learn](https://www.futurelearn.com/) - [Stanford University](https://lagunita.stanford.edu/) - [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/) +- [Obtaining a Thorough CS Background Online](http://spin.atomicobject.com/2015/05/15/obtaining-thorough-cs-background-online/) \ No newline at end of file From 4dbad18fa8f7c04476f9d192b79981ce896efaee Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Sat, 18 Feb 2017 22:56:00 -0500 Subject: [PATCH 016/131] Overhaul of course structure --- README.md | 298 ++++++++++++++---------------------------------------- 1 file changed, 77 insertions(+), 221 deletions(-) diff --git a/README.md b/README.md index 3d9fcf3..151edfc 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@

-## Contents +# Contents - [About](#about) - [Motivation & Preparation](#motivation--preparation) @@ -25,13 +25,13 @@ - [Team](#team) - [References](#references) -## About +# About This is a **solid path** for those of you who want to complete a **Computer Science** course on your own time, at **little to no cost**, with courses from the **best universities** in the world. In our curriculum, we give preference to MOOC (Massive Open Online Course) style courses because these courses were created with our style of learning in mind. -## Motivation & Preparation +# Motivation & Preparation Here are two interesting links that can make **all** the difference in your journey. @@ -45,253 +45,105 @@ The second link is a MOOC that will teach you learning techniques used by expert **Are you ready to get started?** -## Curriculum +# Curriculum -- [Introduction to Computer Science](#introduction-to-computer-science) -- [Math (Mathematical Thinking)](#math-mathematical-thinking) -- [Program Design](#program-design) -- [Math (Calculus & Discrete Math)](#math-calculus-and-discrete-math) -- [Algorithms](#algorithms) -- [Programming Paradigms](#programming-paradigms) -- [Software Testing](#software-testing) -- [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) +- [Core CS](#core-cs) + - [Core programming](#core-programming) + - [Core math](#core-math) + - [Core systems](#core-systems) + - [Core theory](#core-theory) + - [Core applications](#core-applications) + - [Advanced programming](#advanced-programming) +- [Electives](#electives) - [Specializations](#specializations) --- -### Introduction to Computer Science +## Core CS +### Core programming Courses | Duration | Effort :-- | :--: | :--: [Introduction to Computer Science - CS50](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x#!)| 12 weeks | 10-20 hours/week +[How to Code: Systematic Program Design (XSeries)](https://www.edx.org/xseries/how-code-systematic-program-design) | 15 weeks | 5 hours/week +[Object Oriented Programming in Java](https://www.coursera.org/learn/object-oriented-java) | 6 weeks | 4-6 hours/week +[Programming Languages, Part A](https://www.coursera.org/learn/programming-languages) | 4 weeks | 8-16 hours/week +[Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 8-16 hours/week +[Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 8-16 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) | 4 weeks | 2-5 hours/week - -### Program Design - -Courses | Duration | Effort -:-- | :--: | :--: -[How to Code: Systematic Program Design - Part 1](https://www.edx.org/course/how-code-systematic-program-design-part-ubcx-spd1x)| 5 weeks | 8-12 hours/week -[How to Code: Systematic Program Design - Part 2](https://www.edx.org/course/how-code-systematic-program-design-part-ubcx-spd2x)| 5 weeks | 8-12 hours/week -[How to Code: Systematic Program Design - Part 3](https://www.edx.org/course/how-code-systematic-program-design-part-ubcx-spd3x)| 5 weeks | 8-12 hours/week - -### Math (Calculus and Discrete Math) - +### Core math Courses | Duration | Effort :-- | :--: | :--: [Calculus One](https://www.coursera.org/learn/calculus1)| 16 weeks | 8-10 hours/week -[Mathematics for Computer Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-spring-2015/index.htm)| 12 weeks | 5 hours/week - -### Algorithms +[Calculus Two: Sequences and Series](https://www.coursera.org/learn/advanced-calculus)| 7 weeks | 9-10 hours/week +[Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-2) | 18 weeks | 12 hours/week +[Discrete Mathematics](https://www.coursera.org/learn/discrete-mathematics) | 11 weeks | 3-5 hours/week +[Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-frontiers-utaustinx-ut-5-04x#!)| 15 weeks | 8 hours/week +### Core systems Courses | Duration | Effort :-- | :--: | :--: -[Algorithms, Part I](https://www.coursera.org/learn/algorithms-part1)| 6 weeks | 6-12 hours/week -[Algorithms, Part II](https://www.coursera.org/learn/algorithms-part2)| 6 weeks | 6-12 hours/week - -### Programming Paradigms +[Build a Modern Computer from First Principles: From Nand to Tetris](https://www.coursera.org/learn/build-a-computer) | 6 weeks | 7-13 hours/week +[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week +[Databases](https://lagunita.stanford.edu/courses/DB/2014/SelfPaced/about)| 12 weeks | 8-12 hours/week +[Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| - | 4–12 hours/week +### Core theory Courses | Duration | Effort :-- | :--: | :--: -[Functional Programming Principles in Scala](https://www.coursera.org/course/progfun)| 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 +[Divide and Conquer, Sorting and Searching, and Randomized Algorithms](https://www.coursera.org/learn/algorithms-divide-conquer) | 4 weeks | 4-8 hours/week +[Graph Search, Shortest Paths, and Data Structures](https://www.coursera.org/learn/algorithms-graphs-data-structures) | 4 weeks | 4-8 hours/week +[Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming](https://www.coursera.org/learn/algorithms-greedy) | 4 weeks | 4-8 hours/week +[Shortest Paths Revisited, NP-Complete Problems and What To Do About Them](https://www.coursera.org/learn/algorithms-npcomplete) | 4 weeks | 4-8 hours/week +[Automata Theory](https://lagunita.stanford.edu/courses/course-v1:ComputerScience+Automata+Fall2016/about) | 8 weeks | 10 hours/week -### Software Testing +### Core applications +Courses | Duration | Effort +:-- | :--: | :--: +[Machine Learning](https://www.coursera.org/learn/machine-learning)| 11 weeks | 4-6 hours/week +[Computer Graphics](https://www.edx.org/course/computer-graphics-uc-san-diegox-cse167x)| 6 weeks | 12 hours/week +[Cryptography I](https://www.coursera.org/course/crypto)| 6 weeks | 5-7 hours/week +### Advanced programming 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 (Calculus) - -Courses | Duration | Effort -:-- | :--: | :--: -[Calculus Two: Sequences and Series](https://www.coursera.org/learn/advanced-calculus)| 7 weeks | 9-10 hours/week - -### Software Architecture - -Courses | Duration | Effort -:-- | :--: | :--: +[Introduction to Parallel Programming](https://www.udacity.com/course/intro-to-parallel-programming--cs344) | 12 weeks | - [Software Architecture & Design](https://www.udacity.com/course/software-architecture-design--ud821)| 8 weeks | 6 hours/week -### Theory +## Electives Courses | Duration | Effort :-- | :--: | :--: -[Intro to Theoretical Computer Science](https://www.udacity.com/course/intro-to-theoretical-computer-science--cs313)| 9 weeks | 6 hours/week - -### Software Engineering - -Courses | Duration | Effort -:-- | :--: | :--: -[Software Processes and Agile Practices](https://www.coursera.org/learn/software-processes-and-agile-practices)| 4 weeks | 6-8 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 -:-- | :--: | :--: -[Computer Architecture](https://www.coursera.org/course/comparch)| - | 5-8 hours/week - -### Operating Systems - -Courses | Duration | Effort -:-- | :--: | :--: -[Operating Systems and System Programming](https://www.youtube.com/view_play_list?p=-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c)| 10 weeks | 2-3 hours/week - -### Computer Networks - -Courses | Duration | Effort -:-- | :--: | :--: -[Computer Networks](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| - | 4–12 hours/week - -### Databases - -Courses | Duration | Effort -:-- | :--: | :--: -[Databases](https://lagunita.stanford.edu/courses/DB/2014/SelfPaced/about)| 12 weeks | 8-12 hours/week - -### Cloud Computing - -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 -:-- | :--: | :--: -[Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-frontiers-utaustinx-ut-5-04x#!)| 15 weeks | 8 hours/week - -### Cryptography - -Courses | Duration | Effort -:-- | :--: | :--: -[Cryptography I](https://www.coursera.org/course/crypto)| 6 weeks | 5-7 hours/week [Cryptography II](https://www.coursera.org/course/crypto2)| 6 weeks | 6-8 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://lagunita.stanford.edu/courses/Engineering/Compilers/Fall2014/about)| 9 weeks | 6-8 hours/week - -### Parallel Computing - -Courses | Duration | Effort -:-- | :--: | :--: -[Parallel Computer Architecture and Programming](http://15418.courses.cs.cmu.edu/spring2016/home)| 20 weeks | - - -### UX Design - -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 -:-- | :--: | :--: -[Artificial Intelligence](https://www.edx.org/course/artificial-intelligence-uc-berkeleyx-cs188-1x#!)| 12 weeks | 15 hours/week - -### Machine Learning - -Courses | Duration | Effort -:-- | :--: | :--: -[Machine Learning](https://www.coursera.org/learn/machine-learning)| 11 weeks | 4-6 hours/week - -### Natural Language Processing - -Courses | Duration | Effort -:-- | :--: | :--: [Introduction to Natural Language Processing](https://www.coursera.org/learn/natural-language-processing)| 12 weeks | - -### Big Data - -Courses | Duration | Effort -:-- | :--: | :--: -[Introduction to Big Data](https://www.coursera.org/learn/big-data-introduction)| 3 weeks | 5-6 hours/week - -### Data Mining - -Courses | Duration | Effort -:-- | :--: | :--: -[Pattern Discovery in Data Mining](https://www.coursera.org/course/patterndiscovery) | 4 weeks | 4-6 hours/week - -### Internet of Things - -Courses | Duration | Effort -:-- | :--: | :--: -[The Internet of Things](https://www.futurelearn.com/courses/internet-of-things)| 4 weeks | 2 hours/week - -### Specializations +## Specializations After finishing the courses above, start your specializations on the topics that you have more interest. The following platforms currently offer specializations: -#### edX: [xSeries](https://www.edx.org/xseries) -#### Coursera: [Specializations](https://www.coursera.org/specializations) -#### Udacity: [Nanodegree](https://www.udacity.com/nanodegree) -#### FutureLearn: [Collections](https://www.futurelearn.com/courses/collections) +### edX: [xSeries](https://www.edx.org/xseries) +### Coursera: [Specializations](https://www.coursera.org/specializations) +### Udacity: [Nanodegree](https://www.udacity.com/nanodegree) +### FutureLearn: [Collections](https://www.futurelearn.com/courses/collections) ![keep learning](http://i.imgur.com/REQK0VU.jpg) -## How to use this guide +# How to use this guide -### Order of the classes +## 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. +This guide was developed to be flexible. Ideally, it can be consumed in a linear approach, i.e. you complete one course at a time, but in reality different people have different preferences with regard to how many courses they wish to take at once, and different courses are available at different times and have wildly different time requirements. -The courses are **already** in the order you should complete them. Just start in the [Introduction to Computer Science](#introduction-to-computer-science) section and after finishing the first course, start the next one. +Therefore, many students will take the courses in a non-linear order, based on availability and how much time they have to devote to each class. -**OBS:** If the course is not open, do it with the archived resources or wait until next class is open. +Any course that is part of 'Core CS' section should be available either regularly, in self-paced format, or in archived form. Some of the electives are only available once in a while. -### How to track and show your progress +## How to track and show your progress 1. Create an account in [Trello](https://trello.com/). 1. Copy [this](https://trello.com/b/9DPXYv5f) board to your personal account. See how to copy a board [here](http://blog.trello.com/you-can-copy-boards-now-finally/). @@ -309,19 +161,23 @@ We also have **labels** to help you have more control through the process. The m The intention of this board is to provide our students a way to track their progress, and also the ability to show their progress through a public page for friends, family, employers, etc. You can change the status of your board to be **public** or **private**. -### Should I take all courses? +## Should I take all courses? -**Yes!** The intention is to conclude **all** the courses listed here! +If you are serious about getting an online education comparable to a bachelor's degree in Computer Science, you should absolutely take **all** of the courses under the 'Core CS' section. -### Duration of the project +These courses are equivalent to about 3/4 of a full bachelor's degree in CS. So if you want to really complete your studies, then you should select one of the specializations to finish out your program, such as one in Artificial Intelligence or Big Data. -It may take longer to complete all courses compared to a regular CS graduation, but I can **guarantee** you that your **reward** will be proportional to your extra **effort**! +## Duration of the project + +If you are able to devote 18-20 hours per week to this curriculum, taking 1-3 clases at a time, you could hypothetically finish the Core CS section in under 2 years. A specialization would then take you a few more months. + +It will probably take longer if you go slower, but regardless, your **reward** will be proportional to your **effort**. 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). -### Project Based +## Project Based Here in **OSS University**, you do **not** need to take exams, because we are focused on **real projects**! @@ -340,7 +196,7 @@ Put the OSSU-CS badge in the README of your repository! [![Open Source Society U **You can create this project alone or with other students!** -#### Project Suggestions +### Project Suggestions - [Projects](https://github.com/karan/Projects): A list of practical projects that anyone can solve in any programming language. - [app-specs](https://github.com/ericdouglas/app-specs): A curated list of applications specifications and implementations to practice new technologies, improve your portfolio and sharpen your skills. @@ -349,7 +205,7 @@ Put the OSSU-CS badge in the README of your repository! [![Open Source Society U And you should also... -### Be creative! +## Be creative! This is a **crucial** part of your journey through all those courses. @@ -362,27 +218,27 @@ 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. -### Cooperative work +## 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? +## 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. +My friend, here is the best part of liberty! You can use **any** language that you want to complete the 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 +## 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 +## Stay tuned [Watch](https://help.github.com/articles/watching-repositories/) this repository for futures improvements and general information. -## Prerequisite +# Prerequisite The **only things** that you need to know are how to use **Git** and **GitHub**. Here are some resources to learn about them: @@ -395,7 +251,7 @@ The **only things** that you need to know are how to use **Git** and **GitHub**. - [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) -## Change Log +# Change Log **Curriculum Version**: `6.0` @@ -407,7 +263,7 @@ Our students can **trust** in this curriculum because it has been **carefully pl 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/Developer. -## How to collaborate +# 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. @@ -419,7 +275,7 @@ The **extras** section is a place where all of us will be able to submit interes **Let's do it together! :smile:** -## Community +# Community Subscribe to [/r/opensourcesociety](https://www.reddit.com/r/opensourcesociety/)! @@ -433,13 +289,13 @@ Add **Open Source Society University** to your [Facebook](https://www.facebook.c > **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**. -## Team +# Team * **Curriculum Founder**: [Eric Douglas](https://github.com/ericdouglas) * **Curriculum Maintainer**: [Eric Douglas](https://github.com/ericdouglas) * **Contributors**: [contributors](https://github.com/open-source-society/computer-science/graphs/contributors) -## References +# References - [Google - Guide for Technical Development](https://www.google.com/about/careers/students/guide-to-technical-development.html) - [Coursera](https://www.coursera.org/) From b0bf5e3a8bb7705af51c334563de51783cfd018f Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Sat, 18 Feb 2017 23:11:53 -0500 Subject: [PATCH 017/131] Clean-ups and overhaul the guide's tone --- README.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 151edfc..ce1d067 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ In our curriculum, we give preference to MOOC (Massive Open Online Course) style # Motivation & Preparation -Here are two interesting links that can make **all** the difference in your journey. +Here are two interesting links that can make all the difference in your journey. The first one is a motivational video that shows a guy that went through the "MIT Challenge", which consists of learning the entire **4-year** MIT curriculum for Computer Science in **1 year**. @@ -177,15 +177,17 @@ 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). -## Project Based +## Project-based -Here in **OSS University**, you do **not** need to take exams, because we are focused on **real projects**! +**OSS University** is **project-focused**. You are encouraged to do the assignments and exams for each course, but what really matters is whether you can *use* your knowledge to solve a real world problem. -In order to show everyone that you **successfully** finished a course, you should create a **real project**. +In order to show everyone that you successfully finished a course, you should create a **real project**. > "What does it mean?" -After you finish a course, you should think about a **real world 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. +After you finish a course, you should think about a problem that you can solve using the acquired knowledge in the course. It doesn't have to be a big project, but rather it should show the world that you are capable of creating something useful with the concepts that you learned. + +It won't make sense to do a project for *every* course, as some are purely theoretical (e.g. calculus). But anytime you gain practical skills (e.g., a new programming language), you should use it right away to **validate** and **consolidate** your knowledge. The projects of all students will be listed in [this](PROJECTS.md) file. **Submit your project's information in that file after you conclude it**. @@ -209,7 +211,7 @@ And you should also... 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**! +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**! @@ -224,9 +226,9 @@ Here are some tips about how you can do that: ## 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 +My friend, here is the best part of liberty! You can use **any** language that you want to complete the project. -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. +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 @@ -255,13 +257,11 @@ The **only things** that you need to know are how to use **Git** and **GitHub**. **Curriculum Version**: `6.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. +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/Developer. +Our students can trust in this curriculum because it has been **carefully planned** and covers the major **core topics** that a conventional Computer Science program covers. # How to collaborate From fb425afb1dce3a90118b146ce57328f5b7e6c8fb Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Sat, 18 Feb 2017 23:21:29 -0500 Subject: [PATCH 018/131] Add Bradfield reference --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ce1d067..f1c45a8 100644 --- a/README.md +++ b/README.md @@ -301,7 +301,7 @@ Add **Open Source Society University** to your [Facebook](https://www.facebook.c - [Coursera](https://www.coursera.org/) - [edX](https://www.edx.org) - [Udacity](https://www.udacity.com/) -- [Future Learn](https://www.futurelearn.com/) - [Stanford University](https://lagunita.stanford.edu/) - [MIT Open Courseware](http://ocw.mit.edu/courses/#electrical-engineering-and-computer-science) +- [A DIY Computer Science Education](https://bradfieldcs.com/diy/) - [Obtaining a Thorough CS Background Online](http://spin.atomicobject.com/2015/05/15/obtaining-thorough-cs-background-online/) \ No newline at end of file From 107bdd8d16d8409eeede8016352a8c64e7fdfe48 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 18 Feb 2017 23:48:05 -0500 Subject: [PATCH 019/131] Added course and optional textbooks --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index f1c45a8..c7d9483 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,7 @@ Courses | Duration | Effort ### Core math Courses | Duration | Effort :-- | :--: | :--: +[Introduction to Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 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 [Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-2) | 18 weeks | 12 hours/week @@ -88,6 +89,10 @@ Courses | Duration | Effort [Databases](https://lagunita.stanford.edu/courses/DB/2014/SelfPaced/about)| 12 weeks | 8-12 hours/week [Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| - | 4–12 hours/week +The 'From Nand to Tetris' course, in part I, will have you create an entire computer architecture from scratch, but are missing key elements from computer architecture such as pipelining and memory hierarchy. A supplemental textbook is recommended for those interested in the subject: [Computer Organization and Design](https://smile.amazon.com/Computer-Organization-Design-Fifth-Architecture/dp/0124077269). + +Part II of the same course has you build the very lowest levels of an operating system on top of the computer architecture you built, however it does not go very deep into operating systems. For those interested in this subject, this free supplemental textbook is strongly recommended: [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/). + ### Core theory Courses | Duration | Effort :-- | :--: | :--: From 1487c598754cc9c35df6e6e2f786a3d582c8fe52 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 19 Feb 2017 00:00:20 -0500 Subject: [PATCH 020/131] Added prerequisites sections --- README.md | 90 +++++++++++++++++++++++++++---------------------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/README.md b/README.md index c7d9483..a77b372 100644 --- a/README.md +++ b/README.md @@ -62,68 +62,68 @@ The second link is a MOOC that will teach you learning techniques used by expert ## Core CS ### Core programming -Courses | Duration | Effort -:-- | :--: | :--: -[Introduction to Computer Science - CS50](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x#!)| 12 weeks | 10-20 hours/week -[How to Code: Systematic Program Design (XSeries)](https://www.edx.org/xseries/how-code-systematic-program-design) | 15 weeks | 5 hours/week -[Object Oriented Programming in Java](https://www.coursera.org/learn/object-oriented-java) | 6 weeks | 4-6 hours/week -[Programming Languages, Part A](https://www.coursera.org/learn/programming-languages) | 4 weeks | 8-16 hours/week -[Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 8-16 hours/week -[Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 8-16 hours/week +Courses | Duration | Effort | Prerequisites +:-- | :--: | :--: | :--: +[Introduction to Computer Science - CS50](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x#!)| 12 weeks | 10-20 hours/week | none +[How to Code: Systematic Program Design (XSeries)](https://www.edx.org/xseries/how-code-systematic-program-design) | 15 weeks | 5 hours/week | none +[Object Oriented Programming in Java](https://www.coursera.org/learn/object-oriented-java) | 6 weeks | 4-6 hours/week | some programming +[Programming Languages, Part A](https://www.coursera.org/learn/programming-languages) | 4 weeks | 8-16 hours/week | recommended: Java, C +[Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 8-16 hours/week | Programming Languages, Part A +[Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 8-16 hours/week | Programming Languages, Part B ### Core math -Courses | Duration | Effort -:-- | :--: | :--: -[Introduction to Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 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 -[Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-2) | 18 weeks | 12 hours/week -[Discrete Mathematics](https://www.coursera.org/learn/discrete-mathematics) | 11 weeks | 3-5 hours/week -[Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-frontiers-utaustinx-ut-5-04x#!)| 15 weeks | 8 hours/week +Courses | Duration | Effort | Prerequisites +:-- | :--: | :--: | :--: +[Introduction to Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 hours/week | high school math +[Calculus One](https://www.coursera.org/learn/calculus1)| 16 weeks | 8-10 hours/week | pre-calculus +[Calculus Two: Sequences and Series](https://www.coursera.org/learn/advanced-calculus)| 7 weeks | 9-10 hours/week | Calculus One +[Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-2) | 18 weeks | 12 hours/week | calculus +[Discrete Mathematics](https://www.coursera.org/learn/discrete-mathematics) | 11 weeks | 3-5 hours/week | high school math +[Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-frontiers-utaustinx-ut-5-04x#!)| 15 weeks | 8 hours/week | high school math ### Core systems -Courses | Duration | Effort -:-- | :--: | :--: -[Build a Modern Computer from First Principles: From Nand to Tetris](https://www.coursera.org/learn/build-a-computer) | 6 weeks | 7-13 hours/week -[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week -[Databases](https://lagunita.stanford.edu/courses/DB/2014/SelfPaced/about)| 12 weeks | 8-12 hours/week -[Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| - | 4–12 hours/week +Courses | Duration | Effort | Prerequisites +:-- | :--: | :--: | :--: +[Build a Modern Computer from First Principles: From Nand to Tetris](https://www.coursera.org/learn/build-a-computer) | 6 weeks | 7-13 hours/week | none +[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | Part I +[Databases](https://lagunita.stanford.edu/courses/DB/2014/SelfPaced/about)| 12 weeks | 8-12 hours/week | some programming, basic CS +[Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| - | 4–12 hours/week | probability, basic CS The 'From Nand to Tetris' course, in part I, will have you create an entire computer architecture from scratch, but are missing key elements from computer architecture such as pipelining and memory hierarchy. A supplemental textbook is recommended for those interested in the subject: [Computer Organization and Design](https://smile.amazon.com/Computer-Organization-Design-Fifth-Architecture/dp/0124077269). Part II of the same course has you build the very lowest levels of an operating system on top of the computer architecture you built, however it does not go very deep into operating systems. For those interested in this subject, this free supplemental textbook is strongly recommended: [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/). ### Core theory -Courses | Duration | Effort -:-- | :--: | :--: -[Divide and Conquer, Sorting and Searching, and Randomized Algorithms](https://www.coursera.org/learn/algorithms-divide-conquer) | 4 weeks | 4-8 hours/week -[Graph Search, Shortest Paths, and Data Structures](https://www.coursera.org/learn/algorithms-graphs-data-structures) | 4 weeks | 4-8 hours/week -[Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming](https://www.coursera.org/learn/algorithms-greedy) | 4 weeks | 4-8 hours/week -[Shortest Paths Revisited, NP-Complete Problems and What To Do About Them](https://www.coursera.org/learn/algorithms-npcomplete) | 4 weeks | 4-8 hours/week -[Automata Theory](https://lagunita.stanford.edu/courses/course-v1:ComputerScience+Automata+Fall2016/about) | 8 weeks | 10 hours/week +Courses | Duration | Effort | Prerequisites +:-- | :--: | :--: | :--: +[Divide and Conquer, Sorting and Searching, and Randomized Algorithms](https://www.coursera.org/learn/algorithms-divide-conquer) | 4 weeks | 4-8 hours/week | one programming language; proofs; probability +[Graph Search, Shortest Paths, and Data Structures](https://www.coursera.org/learn/algorithms-graphs-data-structures) | 4 weeks | 4-8 hours/week | previous algorithms course +[Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming](https://www.coursera.org/learn/algorithms-greedy) | 4 weeks | 4-8 hours/week | previous algorithms course +[Shortest Paths Revisited, NP-Complete Problems and What To Do About Them](https://www.coursera.org/learn/algorithms-npcomplete) | 4 weeks | 4-8 hours/week | previous algorithms course +[Automata Theory](https://lagunita.stanford.edu/courses/course-v1:ComputerScience+Automata+Fall2016/about) | 8 weeks | 10 hours/week | discrete mathematics ### Core applications -Courses | Duration | Effort -:-- | :--: | :--: -[Machine Learning](https://www.coursera.org/learn/machine-learning)| 11 weeks | 4-6 hours/week -[Computer Graphics](https://www.edx.org/course/computer-graphics-uc-san-diegox-cse167x)| 6 weeks | 12 hours/week -[Cryptography I](https://www.coursera.org/course/crypto)| 6 weeks | 5-7 hours/week +Courses | Duration | Effort | Prerequisites +:-- | :--: | :--: | :--: +[Machine Learning](https://www.coursera.org/learn/machine-learning)| 11 weeks | 4-6 hours/week | linear algebra +[Computer Graphics](https://www.edx.org/course/computer-graphics-uc-san-diegox-cse167x)| 6 weeks | 12 hours/week | C++ or Java, linear algebra +[Cryptography I](https://www.coursera.org/course/crypto)| 6 weeks | 5-7 hours/week | linear algebra; probability ### Advanced programming -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 -[Introduction to Parallel Programming](https://www.udacity.com/course/intro-to-parallel-programming--cs344) | 12 weeks | - -[Software Architecture & Design](https://www.udacity.com/course/software-architecture-design--ud821)| 8 weeks | 6 hours/week +Courses | Duration | Effort | Prerequisites +:-- | :--: | :--: | :--: +[Software Testing](https://www.udacity.com/course/software-testing--cs258)| 4 weeks | 6 hours/week | some programming +[Software Debugging](https://www.udacity.com/course/software-debugging--cs259)| 8 weeks | 6 hours/week | Python, object-oriented programming +[Introduction to Parallel Programming](https://www.udacity.com/course/intro-to-parallel-programming--cs344) | 12 weeks | - | C, algorithms +[Software Architecture & Design](https://www.udacity.com/course/software-architecture-design--ud821)| 8 weeks | 6 hours/week | Java programming ## Electives -Courses | Duration | Effort -:-- | :--: | :--: -[Cryptography II](https://www.coursera.org/course/crypto2)| 6 weeks | 6-8 hours/week -[Compilers](https://lagunita.stanford.edu/courses/Engineering/Compilers/Fall2014/about)| 9 weeks | 6-8 hours/week -[Introduction to Natural Language Processing](https://www.coursera.org/learn/natural-language-processing)| 12 weeks | - +Courses | Duration | Effort | Prerequisites +:-- | :--: | :--: | :--: +[Cryptography II](https://www.coursera.org/course/crypto2)| 6 weeks | 6-8 hours/week | Cryptography I +[Compilers](https://lagunita.stanford.edu/courses/Engineering/Compilers/Fall2014/about)| 9 weeks | 6-8 hours/week | none +[Introduction to Natural Language Processing](https://www.coursera.org/learn/natural-language-processing)| 12 weeks | - | Python programming ## Specializations From db6c0936d8e80ce1262ef3fecaecf9739452230f Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 19 Feb 2017 00:03:00 -0500 Subject: [PATCH 021/131] Update and clean-up prerequisite section --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a77b372..bc5ae42 100644 --- a/README.md +++ b/README.md @@ -247,11 +247,14 @@ You must share **only** files that you are **allowed** to! **Do NOT disrespect t # Prerequisite -The **only things** that you need to know are how to use **Git** and **GitHub**. Here are some resources to learn about them: +This curriculum assumes the student has already taken high school math, including algebra, geometry, and pre-calculus. Some high school students will have taken calculus, but this is usually only about 3/4 of a college calculus class, so the calculus courses listed above are still recommended. -**Note**: Just pick one of the courses below to learn the basics. You will learn a lot more once you get started! +Apart from that, the only things that you need to know are how to use **Git** and **GitHub**. Here are some resources to learn about them: + +**Note**: Just pick one of the resources below to learn the basics. You will learn a lot more once you get started! - [Try Git](https://try.github.io/levels/1/challenges/1) +- [Ry's Git Tutorial](http://rypress.com/tutorials/git/index) - [Git - the simple guide](http://rogerdudler.github.io/git-guide/) - [GitHub Training & Guides](https://www.youtube.com/playlist?list=PLg7s6cbtAD15G8lNyoaYDuKZSKyJrgwB-) - [GitHub Hello World](https://guides.github.com/activities/hello-world/) From f0d1f920dded7282bcd4199cf01812cbfd45837f Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 19 Feb 2017 00:08:05 -0500 Subject: [PATCH 022/131] Add note about Java --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index bc5ae42..4b3e123 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,8 @@ Courses | Duration | Effort | Prerequisites [Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 8-16 hours/week | Programming Languages, Part A [Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 8-16 hours/week | Programming Languages, Part B +The Object-Oriented Programming in Java class is intended for students who have already taken a basic Java course, but it can still be completed by those who have only studied basic programming before in a different, Java-like language (e.g., C). The learning curve will be steep, however, so for those who find it too difficult, looking over the material in this course is recommended: [Introduction to Programming in Java](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-092-introduction-to-programming-in-java-january-iap-2010/index.htm). + ### Core math Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: @@ -249,7 +251,7 @@ You must share **only** files that you are **allowed** to! **Do NOT disrespect t This curriculum assumes the student has already taken high school math, including algebra, geometry, and pre-calculus. Some high school students will have taken calculus, but this is usually only about 3/4 of a college calculus class, so the calculus courses listed above are still recommended. -Apart from that, the only things that you need to know are how to use **Git** and **GitHub**. Here are some resources to learn about them: +Apart from those, the only things that you need to know are how to use **Git** and **GitHub**. Here are some resources to learn about them: **Note**: Just pick one of the resources below to learn the basics. You will learn a lot more once you get started! From 235a52a776dceba06faa8cfefff370bd3bd52ef1 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 19 Feb 2017 00:09:18 -0500 Subject: [PATCH 023/131] Clean-up --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4b3e123..49f60ec 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ Courses | Duration | Effort | Prerequisites [Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 8-16 hours/week | Programming Languages, Part A [Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 8-16 hours/week | Programming Languages, Part B -The Object-Oriented Programming in Java class is intended for students who have already taken a basic Java course, but it can still be completed by those who have only studied basic programming before in a different, Java-like language (e.g., C). The learning curve will be steep, however, so for those who find it too difficult, looking over the material in this course is recommended: [Introduction to Programming in Java](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-092-introduction-to-programming-in-java-january-iap-2010/index.htm). +Note: The Object-Oriented Programming in Java class is intended for students who have already taken a basic Java course, but it can still be completed by those who have only studied basic programming before in a different, Java-like language (e.g., C). The learning curve will be steep, however, so for those who find it too difficult, looking over the material in this course is recommended: [Introduction to Programming in Java](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-092-introduction-to-programming-in-java-january-iap-2010/index.htm). ### Core math Courses | Duration | Effort | Prerequisites @@ -91,9 +91,9 @@ Courses | Duration | Effort | Prerequisites [Databases](https://lagunita.stanford.edu/courses/DB/2014/SelfPaced/about)| 12 weeks | 8-12 hours/week | some programming, basic CS [Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| - | 4–12 hours/week | probability, basic CS -The 'From Nand to Tetris' course, in part I, will have you create an entire computer architecture from scratch, but are missing key elements from computer architecture such as pipelining and memory hierarchy. A supplemental textbook is recommended for those interested in the subject: [Computer Organization and Design](https://smile.amazon.com/Computer-Organization-Design-Fifth-Architecture/dp/0124077269). +Note 1: The 'From Nand to Tetris' course, in part I, will have you create an entire computer architecture from scratch, but are missing key elements from computer architecture such as pipelining and memory hierarchy. A supplemental textbook is recommended for those interested in the subject: [Computer Organization and Design](https://smile.amazon.com/Computer-Organization-Design-Fifth-Architecture/dp/0124077269). -Part II of the same course has you build the very lowest levels of an operating system on top of the computer architecture you built, however it does not go very deep into operating systems. For those interested in this subject, this free supplemental textbook is strongly recommended: [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/). +Note 2: Part II of the same course has you build the very lowest levels of an operating system on top of the computer architecture you built, however it does not go very deep into operating systems. For those interested in this subject, this free supplemental textbook is strongly recommended: [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/). ### Core theory Courses | Duration | Effort | Prerequisites From 7093c35ae8287cfe5d393b2c35a59bac187b9bd3 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 19 Feb 2017 00:41:09 -0500 Subject: [PATCH 024/131] Add topic descriptions --- README.md | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 49f60ec..7dc01fb 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,8 @@ The second link is a MOOC that will teach you learning techniques used by expert ## Core CS ### Core programming +**Topics covered**: imperative programming; procedural programming; C; basic data structures and algorithms; Python; SQL; HTML, CSS, JavaScript; basic testing; functional program composition; object-oriented program design; static typing; dynamic typing; common design patterns; ML-family languages (via Standard ML); Lisp-family languages (via Racket); Ruby; and more. + Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Introduction to Computer Science - CS50](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x#!)| 12 weeks | 10-20 hours/week | none @@ -74,6 +76,9 @@ Courses | Duration | Effort | Prerequisites Note: The Object-Oriented Programming in Java class is intended for students who have already taken a basic Java course, but it can still be completed by those who have only studied basic programming before in a different, Java-like language (e.g., C). The learning curve will be steep, however, so for those who find it too difficult, looking over the material in this course is recommended: [Introduction to Programming in Java](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-092-introduction-to-programming-in-java-january-iap-2010/index.htm). ### Core math + +**Topics covered**: mathematical proofs; number theory; real analysis; differential calculus; integral calculus; sequences and series; probability theory; basic statistics; O-notation; graph theory; linear transformations; matrices; vectors; and more. + Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Introduction to Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 hours/week | high school math @@ -84,27 +89,36 @@ Courses | Duration | Effort | Prerequisites [Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-frontiers-utaustinx-ut-5-04x#!)| 15 weeks | 8 hours/week | high school math ### Core systems + +**Topics covered**: boolean algebra; gate logic; memory; machine language; computer architecture; assembly; machine language; virtual machines; high-level languages; compilers; operating systems; relational databases; transaction processing; data modeling; network protocols; and more. + Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Build a Modern Computer from First Principles: From Nand to Tetris](https://www.coursera.org/learn/build-a-computer) | 6 weeks | 7-13 hours/week | none [Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | Part I [Databases](https://lagunita.stanford.edu/courses/DB/2014/SelfPaced/about)| 12 weeks | 8-12 hours/week | some programming, basic CS -[Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| - | 4–12 hours/week | probability, basic CS +[Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| - | 4–12 hours/week | algebra, probability, basic CS Note 1: The 'From Nand to Tetris' course, in part I, will have you create an entire computer architecture from scratch, but are missing key elements from computer architecture such as pipelining and memory hierarchy. A supplemental textbook is recommended for those interested in the subject: [Computer Organization and Design](https://smile.amazon.com/Computer-Organization-Design-Fifth-Architecture/dp/0124077269). Note 2: Part II of the same course has you build the very lowest levels of an operating system on top of the computer architecture you built, however it does not go very deep into operating systems. For those interested in this subject, this free supplemental textbook is strongly recommended: [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/). ### Core theory + +**Topics covered**: divide and conquer; sorting and searching; randomized algorithms; graph search; shortest paths; data structures; greedy algorithms; minimum spanning trees; dynamic programming; NP-completeness; formal languages; Turing machines; computability; and more. + Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: -[Divide and Conquer, Sorting and Searching, and Randomized Algorithms](https://www.coursera.org/learn/algorithms-divide-conquer) | 4 weeks | 4-8 hours/week | one programming language; proofs; probability -[Graph Search, Shortest Paths, and Data Structures](https://www.coursera.org/learn/algorithms-graphs-data-structures) | 4 weeks | 4-8 hours/week | previous algorithms course -[Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming](https://www.coursera.org/learn/algorithms-greedy) | 4 weeks | 4-8 hours/week | previous algorithms course -[Shortest Paths Revisited, NP-Complete Problems and What To Do About Them](https://www.coursera.org/learn/algorithms-npcomplete) | 4 weeks | 4-8 hours/week | previous algorithms course +[Algorithms (1/4)](https://www.coursera.org/learn/algorithms-divide-conquer) | 4 weeks | 4-8 hours/week | one programming language; proofs; probability +[Algorithms (2/4)](https://www.coursera.org/learn/algorithms-graphs-data-structures) | 4 weeks | 4-8 hours/week | previous algorithms course +[Algorithms (3/4)](https://www.coursera.org/learn/algorithms-greedy) | 4 weeks | 4-8 hours/week | previous algorithms course +[Algorithms (4/4)](https://www.coursera.org/learn/algorithms-npcomplete) | 4 weeks | 4-8 hours/week | previous algorithms course [Automata Theory](https://lagunita.stanford.edu/courses/course-v1:ComputerScience+Automata+Fall2016/about) | 8 weeks | 10 hours/week | discrete mathematics ### Core applications + +**Topics covered**: neural networks; supervised learning; unsupervised learning; OpenGL; raytracing; block ciphers; authentication; public key encryption; and more. + Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Machine Learning](https://www.coursera.org/learn/machine-learning)| 11 weeks | 4-6 hours/week | linear algebra @@ -112,6 +126,9 @@ Courses | Duration | Effort | Prerequisites [Cryptography I](https://www.coursera.org/course/crypto)| 6 weeks | 5-7 hours/week | linear algebra; probability ### Advanced programming + +**Topics covered**: code coverage; random testing; debugging theory and practice; GPU programming; CUDA; parallel computing; object-oriented analysis and design; UML; large-scale software architecture and design; and more. + Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Software Testing](https://www.udacity.com/course/software-testing--cs258)| 4 weeks | 6 hours/week | some programming @@ -121,6 +138,8 @@ Courses | Duration | Effort | Prerequisites ## Electives +Some of these courses are offered less frequently, but are encouraged whenever they are available. Compilers is recommended to any student who took a strong interest in the Programming Languages courses. + Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Cryptography II](https://www.coursera.org/course/crypto2)| 6 weeks | 6-8 hours/week | Cryptography I From c2740239bb5073296567dd9895e05cf089cfa1ec Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 19 Feb 2017 16:02:20 -0500 Subject: [PATCH 025/131] Add recommended specializations --- README.md | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7dc01fb..9aa931e 100644 --- a/README.md +++ b/README.md @@ -138,7 +138,7 @@ Courses | Duration | Effort | Prerequisites ## Electives -Some of these courses are offered less frequently, but are encouraged whenever they are available. Compilers is recommended to any student who took a strong interest in the Programming Languages courses. +Some of these courses are offered less frequently, but you are encouraged to take them whenever they are available if you're interested. Compilers is recommended to any student who took a strong interest in the Programming Languages courses. Natural Language Processing is recommended to anyone who thinks they want to specialize in machine learning, artificial intelligence, etc. Cryptography is recommended to anyone who wants to learn more about zero knowledge systems and other advanced topics in cryptography. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: @@ -148,9 +148,25 @@ Courses | Duration | Effort | Prerequisites ## Specializations -After finishing the courses above, start your specializations on the topics that you have more interest. +After finishing the curriculum above, you will have completed close to a full bachelor's degree in Computer Science. +You can stop here, but if you really want to make yourself valuable, the next step to completing your studies is to develop skills and knowledge in a specific domain. -The following platforms currently offer specializations: +Choose one or more of the following specializations: +- [Artificial Intelligence Engineer Nanodegree](https://www.udacity.com/ai) by IBM, Amazon, and Didi +- [Data Mining Specialization](https://www.coursera.org/specializations/data-mining) by the University of Illinois at Urbana-Champaign +- [Big Data Specialization](https://www.coursera.org/specializations/big-data) by the University of California at San Diego +- [Data Analyst Nanodegree](https://www.udacity.com/course/data-analyst-nanodegree--nd002) by Facebook and mongoDB +- [Applied Data Science with Python Specialization](https://www.coursera.org/specializations/data-science-python) by the University of Michigan +- [Data Science Specialization](https://www.coursera.org/specializations/jhu-data-science) by Johns Hopkins University +- [Mastering Software Development in R Specialization](https://www.coursera.org/specializations/r) by Johns Hopkins University +- [Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree--nd009) by kaggle +- [Cybersecurity MicroMasters](https://www.edx.org/micromasters/ritx-cybersecurity) by the Rochester Institute of Technology +- [Cloud Computing Specialization](https://www.coursera.org/specializations/cloud-computing) by the University of Illinois at Urbana-Champaign +- [Internet of Things Specialization](https://www.coursera.org/specializations/internet-of-things) by the University of California at San Diego +- [Full Stack Web Development Specialization](https://www.coursera.org/specializations/full-stack) by the Hong Kong University of Science and Technology +- [Android Developer Nanodegree](https://www.udacity.com/course/android-developer-nanodegree-by-google--nd801) by Google + +These aren't the only specializations you can choose. Check the following websites for more options: ### edX: [xSeries](https://www.edx.org/xseries) ### Coursera: [Specializations](https://www.coursera.org/specializations) From a19cdaace2259c2228f7037e3a221c82541bfcdb Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 19 Feb 2017 16:08:49 -0500 Subject: [PATCH 026/131] Rename specializations to Pro CS --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9aa931e..d746b59 100644 --- a/README.md +++ b/README.md @@ -146,7 +146,7 @@ Courses | Duration | Effort | Prerequisites [Compilers](https://lagunita.stanford.edu/courses/Engineering/Compilers/Fall2014/about)| 9 weeks | 6-8 hours/week | none [Introduction to Natural Language Processing](https://www.coursera.org/learn/natural-language-processing)| 12 weeks | - | Python programming -## Specializations +## Pro CS After finishing the curriculum above, you will have completed close to a full bachelor's degree in Computer Science. You can stop here, but if you really want to make yourself valuable, the next step to completing your studies is to develop skills and knowledge in a specific domain. From a68f107475427f6a05e51b9b127eff0e5765b0d2 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 19 Feb 2017 16:25:42 -0500 Subject: [PATCH 027/131] Reformat to one sentence per line --- README.md | 115 +++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 84 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index d746b59..fb8be59 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,8 @@ The first one is a motivational video that shows a guy that went through the "MI - [MIT Challenge](https://www.scotthyoung.com/blog/myprojects/mit-challenge-2/) -The second link is a MOOC that will teach you learning techniques used by experts in art, music, literature, math, science, sports, and many other disciplines. These are **fundamental abilities** to succeed in our journey. +The second link is a MOOC that will teach you learning techniques used by experts in art, music, literature, math, science, sports, and many other disciplines. +These are **fundamental abilities** to succeed in our journey. - [Learning How to Learn](https://www.coursera.org/learn/learning-how-to-learn) @@ -62,22 +63,33 @@ The second link is a MOOC that will teach you learning techniques used by expert ## Core CS ### Core programming -**Topics covered**: imperative programming; procedural programming; C; basic data structures and algorithms; Python; SQL; HTML, CSS, JavaScript; basic testing; functional program composition; object-oriented program design; static typing; dynamic typing; common design patterns; ML-family languages (via Standard ML); Lisp-family languages (via Racket); Ruby; and more. +**Topics covered**: imperative programming; procedural programming; C; +basic data structures and algorithms; Python; SQL; HTML, CSS, JavaScript; +basic testing; functional program composition; object-oriented program design; +static typing; dynamic typing; common design patterns; +ML-family languages (via Standard ML); Lisp-family languages (via Racket); Ruby; +and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: -[Introduction to Computer Science - CS50](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x#!)| 12 weeks | 10-20 hours/week | none +[Introduction to Computer Science - CS50](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x#!) | 12 weeks | 10-20 hours/week | none [How to Code: Systematic Program Design (XSeries)](https://www.edx.org/xseries/how-code-systematic-program-design) | 15 weeks | 5 hours/week | none [Object Oriented Programming in Java](https://www.coursera.org/learn/object-oriented-java) | 6 weeks | 4-6 hours/week | some programming [Programming Languages, Part A](https://www.coursera.org/learn/programming-languages) | 4 weeks | 8-16 hours/week | recommended: Java, C [Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 8-16 hours/week | Programming Languages, Part A [Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 8-16 hours/week | Programming Languages, Part B -Note: The Object-Oriented Programming in Java class is intended for students who have already taken a basic Java course, but it can still be completed by those who have only studied basic programming before in a different, Java-like language (e.g., C). The learning curve will be steep, however, so for those who find it too difficult, looking over the material in this course is recommended: [Introduction to Programming in Java](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-092-introduction-to-programming-in-java-january-iap-2010/index.htm). +Note: The Object-Oriented Programming in Java class is intended for students who have already taken a basic Java course, but it can still be completed by those +who have only studied basic programming before in a different, Java-like language (e.g., C). The learning curve will be steep, however, so for those who +find it too difficult, looking over the material in this course is recommended: +[Introduction to Programming in Java](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-092-introduction-to-programming-in-java-january-iap-2010/index.htm). ### Core math -**Topics covered**: mathematical proofs; number theory; real analysis; differential calculus; integral calculus; sequences and series; probability theory; basic statistics; O-notation; graph theory; linear transformations; matrices; vectors; and more. +**Topics covered**: mathematical proofs; number theory; real analysis; +differential calculus; integral calculus; sequences and series; +probability theory; basic statistics; O-notation; graph theory; +linear transformations; matrices; vectors; and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: @@ -90,7 +102,10 @@ Courses | Duration | Effort | Prerequisites ### Core systems -**Topics covered**: boolean algebra; gate logic; memory; machine language; computer architecture; assembly; machine language; virtual machines; high-level languages; compilers; operating systems; relational databases; transaction processing; data modeling; network protocols; and more. +**Topics covered**: boolean algebra; gate logic; memory; machine language; +computer architecture; assembly; machine language; virtual machines; +high-level languages; compilers; operating systems; relational databases; +transaction processing; data modeling; network protocols; and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: @@ -99,13 +114,21 @@ Courses | Duration | Effort | Prerequisites [Databases](https://lagunita.stanford.edu/courses/DB/2014/SelfPaced/about)| 12 weeks | 8-12 hours/week | some programming, basic CS [Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| - | 4–12 hours/week | algebra, probability, basic CS -Note 1: The 'From Nand to Tetris' course, in part I, will have you create an entire computer architecture from scratch, but are missing key elements from computer architecture such as pipelining and memory hierarchy. A supplemental textbook is recommended for those interested in the subject: [Computer Organization and Design](https://smile.amazon.com/Computer-Organization-Design-Fifth-Architecture/dp/0124077269). +Note 1: The 'From Nand to Tetris' course, in part I, will have you create an entire computer architecture from scratch, but are missing key elements from computer architecture such as pipelining and memory hierarchy. +A supplemental textbook is recommended for those interested in the subject: +[Computer Organization and Design](https://smile.amazon.com/Computer-Organization-Design-Fifth-Architecture/dp/0124077269). -Note 2: Part II of the same course has you build the very lowest levels of an operating system on top of the computer architecture you built, however it does not go very deep into operating systems. For those interested in this subject, this free supplemental textbook is strongly recommended: [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/). +Note 2: Part II of the same course has you build the very lowest levels of an operating system on top of the computer architecture you built, however it does +not go very deep into operating systems. +For those interested in this subject, this free supplemental textbook is strongly recommended: +[Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/). ### Core theory -**Topics covered**: divide and conquer; sorting and searching; randomized algorithms; graph search; shortest paths; data structures; greedy algorithms; minimum spanning trees; dynamic programming; NP-completeness; formal languages; Turing machines; computability; and more. +**Topics covered**: divide and conquer; sorting and searching; +randomized algorithms; graph search; shortest paths; data structures; +greedy algorithms; minimum spanning trees; dynamic programming; NP-completeness; +formal languages; Turing machines; computability; and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: @@ -117,7 +140,9 @@ Courses | Duration | Effort | Prerequisites ### Core applications -**Topics covered**: neural networks; supervised learning; unsupervised learning; OpenGL; raytracing; block ciphers; authentication; public key encryption; and more. +**Topics covered**: neural networks; supervised learning; unsupervised learning; +OpenGL; raytracing; block ciphers; authentication; public key encryption; +and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: @@ -127,7 +152,10 @@ Courses | Duration | Effort | Prerequisites ### Advanced programming -**Topics covered**: code coverage; random testing; debugging theory and practice; GPU programming; CUDA; parallel computing; object-oriented analysis and design; UML; large-scale software architecture and design; and more. +**Topics covered**: code coverage; random testing; +debugging theory and practice; GPU programming; CUDA; parallel computing; +object-oriented analysis and design; UML; +large-scale software architecture and design; and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: @@ -138,7 +166,10 @@ Courses | Duration | Effort | Prerequisites ## Electives -Some of these courses are offered less frequently, but you are encouraged to take them whenever they are available if you're interested. Compilers is recommended to any student who took a strong interest in the Programming Languages courses. Natural Language Processing is recommended to anyone who thinks they want to specialize in machine learning, artificial intelligence, etc. Cryptography is recommended to anyone who wants to learn more about zero knowledge systems and other advanced topics in cryptography. +Some of these courses are offered less frequently, but you are encouraged to take them whenever they are available if you're interested. +Compilers is recommended to any student who took a strong interest in the Programming Languages courses. +Natural Language Processing is recommended to anyone who thinks they want to specialize in machine learning, artificial intelligence, etc. +Cryptography is recommended to anyone who wants to learn more about zero knowledge systems and other advanced topics in cryptography. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: @@ -179,11 +210,14 @@ These aren't the only specializations you can choose. Check the following websit ## Order of the classes -This guide was developed to be flexible. Ideally, it can be consumed in a linear approach, i.e. you complete one course at a time, but in reality different people have different preferences with regard to how many courses they wish to take at once, and different courses are available at different times and have wildly different time requirements. +This guide was developed to be flexible. +Ideally, it can be consumed in a linear approach, i.e. you complete one course at a time, but in reality different people have different preferences with regard to how many courses they wish to take at once. +Plus, different courses are available at different times and have wildly different time requirements. Therefore, many students will take the courses in a non-linear order, based on availability and how much time they have to devote to each class. -Any course that is part of 'Core CS' section should be available either regularly, in self-paced format, or in archived form. Some of the electives are only available once in a while. +Any course that is part of 'Core CS' section should be available either regularly, in self-paced format, or in archived form. +Some of the electives are only available once in a while. ## How to track and show your progress @@ -192,48 +226,62 @@ Any course that is part of 'Core CS' section should be available either regularl Now that you have a copy of our official board, you just need to pass the cards to the `Doing` column or `Done` column as you progress in your study. -We also have **labels** to help you have more control through the process. The meaning of each of these labels is: +We also have **labels** to help you have more control through the process. +The meaning of each of these labels is: - `Main Curriculum`: cards with that label represent courses that are listed in our curriculum. - `Extra Courses`: cards with that label represent courses that was added by the student. - `Doing`: cards with that label represent courses the student is current doing. -- `Done`: cards with that label represent courses finished by the student. Those cards should also have the link for at least one project/article built with the knowledge acquired in such course. -- `Section`: cards with that label represent the section that we have in our curriculum. Those cards with the `Section` label are only to help the organization of the Done column. You should put the *Course's cards* below its respective *Section's card*. +- `Done`: cards with that label represent courses finished by the student. +Those cards should also have the link for at least one project/article built with the knowledge acquired in such course. +- `Section`: cards with that label represent the section that we have in our curriculum. +Those cards with the `Section` label are only to help the organization of the Done column. +You should put the *Course's cards* below its respective *Section's card*. - `Extra Sections`: cards with that label represent sections that was added by the student. -The intention of this board is to provide our students a way to track their progress, and also the ability to show their progress through a public page for friends, family, employers, etc. You can change the status of your board to be **public** or **private**. +The intention of this board is to provide our students a way to track their progress, and also the ability to show their progress through a public page for friends, family, employers, etc. +You can change the status of your board to be **public** or **private**. ## Should I take all courses? If you are serious about getting an online education comparable to a bachelor's degree in Computer Science, you should absolutely take **all** of the courses under the 'Core CS' section. -These courses are equivalent to about 3/4 of a full bachelor's degree in CS. So if you want to really complete your studies, then you should select one of the specializations to finish out your program, such as one in Artificial Intelligence or Big Data. +These courses are equivalent to about 3/4 of a full bachelor's degree in CS. +So if you want to really complete your studies, then you should select one of the specializations to finish out your program, such as one in Artificial Intelligence or Big Data. ## Duration of the project -If you are able to devote 18-20 hours per week to this curriculum, taking 1-3 clases at a time, you could hypothetically finish the Core CS section in under 2 years. A specialization would then take you a few more months. +If you are able to devote 18-20 hours per week to this curriculum, taking 1-3 clases at a time, you could hypothetically finish the Core CS section in under 2 years. +A specialization would then take you a few more months. It will probably take longer if you go slower, but regardless, your **reward** will be proportional to your **effort**. -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. +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). ## Project-based -**OSS University** is **project-focused**. You are encouraged to do the assignments and exams for each course, but what really matters is whether you can *use* your knowledge to solve a real world problem. +**OSS University** is **project-focused**. +You are encouraged to do the assignments and exams for each course, but what really matters is whether you can *use* your knowledge to solve a real world problem. In order to show everyone that you successfully finished a course, you should create a **real project**. > "What does it mean?" -After you finish a course, you should think about a problem that you can solve using the acquired knowledge in the course. It doesn't have to be a big project, but rather it should show the world that you are capable of creating something useful with the concepts that you learned. +After you finish a course, you should think about a problem that you can solve using the acquired knowledge in the course. +It doesn't have to be a big project, but rather it should show the world that you are capable of creating something useful with the concepts that you learned. -It won't make sense to do a project for *every* course, as some are purely theoretical (e.g. calculus). But anytime you gain practical skills (e.g., a new programming language), you should use it right away to **validate** and **consolidate** your knowledge. +It won't make sense to do a project for *every* course, as some have no immediate practical application. +But anytime you gain practical skills (e.g., a new programming language), you should use it right away to **validate** and **consolidate** your knowledge. -The projects of all students will be listed in [this](PROJECTS.md) file. **Submit your project's information in that file after you conclude it**. +The projects of all students will be listed in [this](PROJECTS.md) file. +**Submit your project's information in that file after you conclude it**. -Put the OSSU-CS badge in the README of your repository! [![Open Source Society University - Computer Science](https://img.shields.io/badge/OSSU-computer--science-blue.svg)](https://github.com/open-source-society/computer-science) +Put the OSSU-CS badge in the README of your repository! +[![Open Source Society University - Computer Science](https://img.shields.io/badge/OSSU-computer--science-blue.svg)](https://github.com/open-source-society/computer-science) - Markdown: `[![Open Source Society University - Computer Science](https://img.shields.io/badge/OSSU-computer--science-blue.svg)](https://github.com/open-source-society/computer-science)` - HTML: `Open Source Society University - Computer Science` @@ -264,17 +312,20 @@ Here are some tips about how you can do that: ## Cooperative work -**We love cooperative work**! Use our [channels](#community) to communicate with other fellows to combine and create new projects! +**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 project. +My friend, here is the best part of liberty! +You can use **any** language that you want to complete the project. 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. +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: @@ -284,7 +335,8 @@ You must share **only** files that you are **allowed** to! **Do NOT disrespect t # Prerequisite -This curriculum assumes the student has already taken high school math, including algebra, geometry, and pre-calculus. Some high school students will have taken calculus, but this is usually only about 3/4 of a college calculus class, so the calculus courses listed above are still recommended. +This curriculum assumes the student has already taken high school math, including algebra, geometry, and pre-calculus. +Some high school students will have taken calculus, but this is usually only about 3/4 of a college calculus class, so the calculus courses listed above are still recommended. Apart from those, the only things that you need to know are how to use **Git** and **GitHub**. Here are some resources to learn about them: @@ -332,7 +384,8 @@ 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 subreddit/group 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**. # Team From 7374503247ebb5520162893ae37e1f9538c1fedc Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 19 Feb 2017 16:29:08 -0500 Subject: [PATCH 028/131] Fix specializations link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fb8be59..00516b3 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ These are **fundamental abilities** to succeed in our journey. - [Core applications](#core-applications) - [Advanced programming](#advanced-programming) - [Electives](#electives) -- [Specializations](#specializations) +- [Pro CS](#pro-cs) --- From 36fa55042c2781904c291c8dbc5eb0563f670fd6 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 19 Feb 2017 16:43:56 -0500 Subject: [PATCH 029/131] Fix reformatting --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 00516b3..7269c96 100644 --- a/README.md +++ b/README.md @@ -222,7 +222,8 @@ Some of the electives are only available once in a while. ## How to track and show your progress 1. Create an account in [Trello](https://trello.com/). -1. Copy [this](https://trello.com/b/9DPXYv5f) board to your personal account. See how to copy a board [here](http://blog.trello.com/you-can-copy-boards-now-finally/). +1. Copy [this](https://trello.com/b/9DPXYv5f) board to your personal account. +See how to copy a board [here](http://blog.trello.com/you-can-copy-boards-now-finally/). Now that you have a copy of our official board, you just need to pass the cards to the `Doing` column or `Done` column as you progress in your study. From 80a6bb40eb4ef1600d78880b6d251e64c152bfa9 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 19 Feb 2017 16:55:16 -0500 Subject: [PATCH 030/131] Move project sections to final project section --- README.md | 103 +++++++++++++++++++++++------------------------------- 1 file changed, 43 insertions(+), 60 deletions(-) diff --git a/README.md b/README.md index 7269c96..8f3c8b2 100644 --- a/README.md +++ b/README.md @@ -57,6 +57,7 @@ These are **fundamental abilities** to succeed in our journey. - [Advanced programming](#advanced-programming) - [Electives](#electives) - [Pro CS](#pro-cs) +- [Final project](#final-project) --- @@ -204,6 +205,46 @@ These aren't the only specializations you can choose. Check the following websit ### Udacity: [Nanodegree](https://www.udacity.com/nanodegree) ### FutureLearn: [Collections](https://www.futurelearn.com/courses/collections) + +## Final project + +**OSS University** is **project-focused**. +You are encouraged to do the assignments and exams for each course, but what really matters is whether you can *use* your knowledge to solve a real world problem. + +> "What does it mean?" + +After you finish the curriculum, 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, the project will **validate** and **consolidate** your knowledge. + +The final projects of all students will be listed in [this](PROJECTS.md) file. +**Submit your project's information in that file after you conclude it**. + +Put the OSSU-CS badge in the README of your repository! +[![Open Source Society University - Computer Science](https://img.shields.io/badge/OSSU-computer--science-blue.svg)](https://github.com/open-source-society/computer-science) + +- Markdown: `[![Open Source Society University - Computer Science](https://img.shields.io/badge/OSSU-computer--science-blue.svg)](https://github.com/open-source-society/computer-science)` +- HTML: `Open Source Society University - Computer Science` + +### Cooperative work + +You can create this project alone or with other students! +**We love cooperative work**! +Use our [channels](#community) to communicate with other fellows to combine and create new projects! + +### Project Suggestions + +- [Projects](https://github.com/karan/Projects): A list of practical projects that anyone can solve in any programming language. +- [app-specs](https://github.com/ericdouglas/app-specs): A curated list of applications specifications and implementations to practice new technologies, improve your portfolio and sharpen your skills. +- [FreeCodeCamp](http://www.freecodecamp.com/): Course that teaches you fullstack JavaScript development through a bunch of projects. +- [JavaScript Projects](https://github.com/javascript-society/javascript-projects): List of projects related with the [JavaScript Path](https://github.com/javascript-society/javascript-path). + +### 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. + ![keep learning](http://i.imgur.com/REQK0VU.jpg) # How to use this guide @@ -265,64 +306,6 @@ If you do this, **inevitably** you'll finish this curriculum. ## Project-based -**OSS University** is **project-focused**. -You are encouraged to do the assignments and exams for each course, but what really matters is whether you can *use* your knowledge to solve a real world problem. - -In order to show everyone that you successfully finished a course, you should create a **real project**. - -> "What does it mean?" - -After you finish a course, you should think about a problem that you can solve using the acquired knowledge in the course. -It doesn't have to be a big project, but rather it should show the world that you are capable of creating something useful with the concepts that you learned. - -It won't make sense to do a project for *every* course, as some have no immediate practical application. -But anytime you gain practical skills (e.g., a new programming language), you should use it right away to **validate** and **consolidate** your knowledge. - -The projects of all students will be listed in [this](PROJECTS.md) file. -**Submit your project's information in that file after you conclude it**. - -Put the OSSU-CS badge in the README of your repository! -[![Open Source Society University - Computer Science](https://img.shields.io/badge/OSSU-computer--science-blue.svg)](https://github.com/open-source-society/computer-science) - -- Markdown: `[![Open Source Society University - Computer Science](https://img.shields.io/badge/OSSU-computer--science-blue.svg)](https://github.com/open-source-society/computer-science)` -- HTML: `Open Source Society University - Computer Science` - -**You can create this project alone or with other students!** - -### Project Suggestions - -- [Projects](https://github.com/karan/Projects): A list of practical projects that anyone can solve in any programming language. -- [app-specs](https://github.com/ericdouglas/app-specs): A curated list of applications specifications and implementations to practice new technologies, improve your portfolio and sharpen your skills. -- [FreeCodeCamp](http://www.freecodecamp.com/): Course that teaches you fullstack JavaScript development through a bunch of projects. -- [JavaScript Projects](https://github.com/javascript-society/javascript-projects): List of projects related with the [JavaScript Path](https://github.com/javascript-society/javascript-path). - -And you should also... - -## 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. - -## 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 project. - -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! @@ -334,7 +317,7 @@ You must share **only** files that you are **allowed** to! [Watch](https://help.github.com/articles/watching-repositories/) this repository for futures improvements and general information. -# Prerequisite +# Prerequisites This curriculum assumes the student has already taken high school math, including algebra, geometry, and pre-calculus. Some high school students will have taken calculus, but this is usually only about 3/4 of a college calculus class, so the calculus courses listed above are still recommended. @@ -351,7 +334,7 @@ Apart from those, the only things that you need to know are how to use **Git** a - [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) -# Change Log +# Changelog **Curriculum Version**: `6.0` From 4b9e727005cb3ef151c1436df0edaf1ab6078aeb Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 19 Feb 2017 16:59:22 -0500 Subject: [PATCH 031/131] Re-arrange content policy --- README.md | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 8f3c8b2..5f8fc8e 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,8 @@ These are **fundamental abilities** to succeed in our journey. - [Pro CS](#pro-cs) - [Final project](#final-project) +See also: [Prerequisites](#prerequisites) + --- ## Core CS @@ -284,6 +286,11 @@ You should put the *Course's cards* below its respective *Section's card*. The intention of this board is to provide our students a way to track their progress, and also the ability to show their progress through a public page for friends, family, employers, etc. You can change the status of your board to be **public** or **private**. +### Content Policy + +If you plan on showing off some of your coursework publicly, 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! + ## Should I take all courses? If you are serious about getting an online education comparable to a bachelor's degree in Computer Science, you should absolutely take **all** of the courses under the 'Core CS' section. @@ -304,15 +311,6 @@ 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). -## Project-based - -## 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 [Watch](https://help.github.com/articles/watching-repositories/) this repository for futures improvements and general information. From dabb597aaef2b229205a099f5df4ba146e65ed57 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 19 Feb 2017 17:01:49 -0500 Subject: [PATCH 032/131] Mention final project in intro --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5f8fc8e..408632a 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ This is a **solid path** for those of you who want to complete a **Computer Science** course on your own time, at **little to no cost**, with courses from the **best universities** in the world. In our curriculum, we give preference to MOOC (Massive Open Online Course) style courses because these courses were created with our style of learning in mind. +The curriculum then concludes with a **final project** to show off your skills to your friends and future employers. # Motivation & Preparation From 2e32cc34ccdf11d31c148c79435a3d0599629011 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 19 Feb 2017 17:08:37 -0500 Subject: [PATCH 033/131] Fix table of contents --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 408632a..70a4eea 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,8 @@ - [Motivation & Preparation](#motivation--preparation) - [Curriculum](#curriculum) - [How to use this guide](#how-to-use-this-guide) -- [Prerequisite](#prerequisite) +- [Prerequisites](#prerequisites) +- [Changelog](#changelog) - [How to collaborate](#how-to-collaborate) - [Community](#community) - [Team](#team) From 5238d67a04eb5b3d39626b6e000aacfe4fe7321b Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 19 Feb 2017 17:59:11 -0500 Subject: [PATCH 034/131] Add Princeton ALgorithms to electives --- README.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 70a4eea..70159f7 100644 --- a/README.md +++ b/README.md @@ -172,15 +172,20 @@ Courses | Duration | Effort | Prerequisites ## Electives Some of these courses are offered less frequently, but you are encouraged to take them whenever they are available if you're interested. -Compilers is recommended to any student who took a strong interest in the Programming Languages courses. -Natural Language Processing is recommended to anyone who thinks they want to specialize in machine learning, artificial intelligence, etc. -Cryptography is recommended to anyone who wants to learn more about zero knowledge systems and other advanced topics in cryptography. +- Compilers is recommended to any student who took a strong interest in the Programming Languages courses. +- Natural Language Processing is recommended to anyone who thinks they want to specialize in machine learning, artificial intelligence, etc. +- Cryptography is recommended to anyone who wants to learn more about zero knowledge systems and other advanced topics in cryptography. +- The Princeton Algorithms courses are highly recommended as a more practical, implementation-focused complement to the Stanford Algorithms courses recommended as part of Core CS. +However, Part II is rarely available, so they are electives at this time. +Note that the assignments are in Java, but don't require extensive Java experience Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Cryptography II](https://www.coursera.org/course/crypto2)| 6 weeks | 6-8 hours/week | Cryptography I [Compilers](https://lagunita.stanford.edu/courses/Engineering/Compilers/Fall2014/about)| 9 weeks | 6-8 hours/week | none [Introduction to Natural Language Processing](https://www.coursera.org/learn/natural-language-processing)| 12 weeks | - | Python programming +[Algorithms, Part I](https://www.coursera.org/learn/algorithms-part1) | 6 weeks | 6-12 hours/week | some programming +[Algorithms, Part II](https://www.coursera.org/learn/algorithms-part2) | 6 weeks | 6-12 hours/week | Algorithms, Part I ## Pro CS From 07abfeac1e6884b530375e577fcd34d0605dd9b6 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Mon, 20 Feb 2017 18:04:41 -0500 Subject: [PATCH 035/131] Fix grammar --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 70159f7..99a2382 100644 --- a/README.md +++ b/README.md @@ -119,12 +119,11 @@ Courses | Duration | Effort | Prerequisites [Databases](https://lagunita.stanford.edu/courses/DB/2014/SelfPaced/about)| 12 weeks | 8-12 hours/week | some programming, basic CS [Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| - | 4–12 hours/week | algebra, probability, basic CS -Note 1: The 'From Nand to Tetris' course, in part I, will have you create an entire computer architecture from scratch, but are missing key elements from computer architecture such as pipelining and memory hierarchy. +**Note 1**: The 'From Nand to Tetris' course, in part I, will have you create an entire computer architecture from scratch, but is missing key elements from computer architecture such as pipelining and memory hierarchy. A supplemental textbook is recommended for those interested in the subject: [Computer Organization and Design](https://smile.amazon.com/Computer-Organization-Design-Fifth-Architecture/dp/0124077269). -Note 2: Part II of the same course has you build the very lowest levels of an operating system on top of the computer architecture you built, however it does -not go very deep into operating systems. +**Note 2**: Part II of the same course has you build the very lowest levels of an operating system on top of the computer architecture you built, however it does not go very deep into operating systems. For those interested in this subject, this free supplemental textbook is strongly recommended: [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/). From d58f7d07a25669676c57f748ecad3eb7fa8b8be4 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Mon, 20 Feb 2017 18:06:26 -0500 Subject: [PATCH 036/131] Add note about systems programming --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 99a2382..e78ab96 100644 --- a/README.md +++ b/README.md @@ -120,13 +120,15 @@ Courses | Duration | Effort | Prerequisites [Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| - | 4–12 hours/week | algebra, probability, basic CS **Note 1**: The 'From Nand to Tetris' course, in part I, will have you create an entire computer architecture from scratch, but is missing key elements from computer architecture such as pipelining and memory hierarchy. -A supplemental textbook is recommended for those interested in the subject: +A supplemental textbook is recommended for those who wish to go deeper into the hardware: [Computer Organization and Design](https://smile.amazon.com/Computer-Organization-Design-Fifth-Architecture/dp/0124077269). **Note 2**: Part II of the same course has you build the very lowest levels of an operating system on top of the computer architecture you built, however it does not go very deep into operating systems. For those interested in this subject, this free supplemental textbook is strongly recommended: [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/). +Both of the above textbooks should be considered a requirement for anyone who intends to become a *[systems programmer](https://en.wikipedia.org/wiki/System_programming)*. + ### Core theory **Topics covered**: divide and conquer; sorting and searching; From f310df5185e7bb9873e7f5735e45ffcfd88c3793 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Mon, 20 Feb 2017 19:37:39 -0500 Subject: [PATCH 037/131] Add section explaining cost --- README.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/README.md b/README.md index e78ab96..47a73b6 100644 --- a/README.md +++ b/README.md @@ -270,6 +270,28 @@ Therefore, many students will take the courses in a non-linear order, based on a Any course that is part of 'Core CS' section should be available either regularly, in self-paced format, or in archived form. Some of the electives are only available once in a while. +## Cost of the classes + +No promises are made about the cost of any of the courses. + +The web is utterly filled with free educational material if you are willing to spend the time looking for it; +this curriculum has specifically been designed to prioritize *quality* over low cost. +Nevertheless, the reality is that the professors who have made these courses and the platforms who host them are extraordinarily generous. +The content of virtually every course on Coursera and edX is available at no charge, but if you want graded assignments and quizzes, you may have to pay, depending on the course; +yet, these sums of money are nothing compared to the cost of attending their prestigious instutitions. +Coursera is the platform upon which you are most likely to encounter paywalled features, but they offer [financial aid](https://learner.coursera.help/hc/en-us/articles/209819033-Apply-for-Financial-Aid) to those eligible. + +Some course materials are also available separate from these platforms, such as on YouTube. +Below is a list of courses from the curriculum which have dedicated websites with freely available materials separate from the platforms: +- [Introduction to Computer Science - CS50](https://cs50.harvard.edu/) +- [Linear Algebra: Foundations to Frontiers](http://ulaff.net/) +- [From Nand to Tetris: Building a Modern Computer from First Principles](http://www.nand2tetris.org/) +- [How to Design Programs](http://www.ccs.neu.edu/home/matthias/HtDP2e/) (Note: This is the **book** upon which *How to Code: Systematic Program Design* is based, but the course is not taught by the book's author; they are completely separate) + +Just remember that purchasing a course might save you some time and give you some extra motivation, but you cannot buy your way to success in this field. +It's encouraged more as a way to thank the professor for their work. +The most diligent students will be the most successful, regardless of how much or how little they spend. + ## How to track and show your progress 1. Create an account in [Trello](https://trello.com/). From 46f2fd3f0abcebb30adbe3c3ad8eb815bf151d6c Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Mon, 20 Feb 2017 19:39:18 -0500 Subject: [PATCH 038/131] Fix wrong word --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 47a73b6..04d49dd 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ # About -This is a **solid path** for those of you who want to complete a **Computer Science** course on your own time, at **little to no cost**, 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** curriculum on your own time, at **little to no cost**, with courses from the **best universities** in the world. In our curriculum, we give preference to MOOC (Massive Open Online Course) style courses because these courses were created with our style of learning in mind. The curriculum then concludes with a **final project** to show off your skills to your friends and future employers. From 401cd88981800ca4417c780737b29650b99fface Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Mon, 20 Feb 2017 20:50:37 -0500 Subject: [PATCH 039/131] Added Calculus One website link --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 04d49dd..3892a44 100644 --- a/README.md +++ b/README.md @@ -287,6 +287,7 @@ Below is a list of courses from the curriculum which have dedicated websites wit - [Linear Algebra: Foundations to Frontiers](http://ulaff.net/) - [From Nand to Tetris: Building a Modern Computer from First Principles](http://www.nand2tetris.org/) - [How to Design Programs](http://www.ccs.neu.edu/home/matthias/HtDP2e/) (Note: This is the **book** upon which *How to Code: Systematic Program Design* is based, but the course is not taught by the book's author; they are completely separate) +- [Mooculus: Calculus One](https://mooculus.osu.edu/) Just remember that purchasing a course might save you some time and give you some extra motivation, but you cannot buy your way to success in this field. It's encouraged more as a way to thank the professor for their work. From d690613c84b54649bad1147634b9cae3074d57b7 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Tue, 21 Feb 2017 16:53:51 -0500 Subject: [PATCH 040/131] Separate lines for each topic and long hyperlink --- README.md | 120 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 91 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 3892a44..63c8222 100644 --- a/README.md +++ b/README.md @@ -68,11 +68,22 @@ See also: [Prerequisites](#prerequisites) ## Core CS ### Core programming -**Topics covered**: imperative programming; procedural programming; C; -basic data structures and algorithms; Python; SQL; HTML, CSS, JavaScript; -basic testing; functional program composition; object-oriented program design; -static typing; dynamic typing; common design patterns; -ML-family languages (via Standard ML); Lisp-family languages (via Racket); Ruby; +**Topics covered**: imperative programming; +procedural programming; +C; +basic data structures and algorithms; +Python; +SQL; +HTML, CSS, JavaScript; +basic testing; +functional program composition; +object-oriented program design; +static typing; +dynamic typing; +common design patterns; +ML-family languages (via Standard ML); +Lisp-family languages (via Racket); +Ruby; and more. Courses | Duration | Effort | Prerequisites @@ -84,17 +95,27 @@ Courses | Duration | Effort | Prerequisites [Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 8-16 hours/week | Programming Languages, Part A [Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 8-16 hours/week | Programming Languages, Part B -Note: The Object-Oriented Programming in Java class is intended for students who have already taken a basic Java course, but it can still be completed by those -who have only studied basic programming before in a different, Java-like language (e.g., C). The learning curve will be steep, however, so for those who -find it too difficult, looking over the material in this course is recommended: +Note: The Object-Oriented Programming in Java class is intended for students who have already taken a basic Java course, but it can still be completed by those who have only studied basic programming before in a different, Java-like language (e.g., C). +The learning curve will be steep, however, so for those who find it too difficult, looking over the material in this course is recommended: [Introduction to Programming in Java](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-092-introduction-to-programming-in-java-january-iap-2010/index.htm). ### Core math -**Topics covered**: mathematical proofs; number theory; real analysis; -differential calculus; integral calculus; sequences and series; -probability theory; basic statistics; O-notation; graph theory; -linear transformations; matrices; vectors; and more. +**Topics covered**: +mathematical proofs; +number theory; +real analysis; +differential calculus; +integral calculus; +sequences and series; +probability theory; +basic statistics; +O-notation; +graph theory; +linear transformations; +matrices; +vectors; +and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: @@ -107,10 +128,23 @@ Courses | Duration | Effort | Prerequisites ### Core systems -**Topics covered**: boolean algebra; gate logic; memory; machine language; -computer architecture; assembly; machine language; virtual machines; -high-level languages; compilers; operating systems; relational databases; -transaction processing; data modeling; network protocols; and more. +**Topics covered**: +boolean algebra; +gate logic; +memory; +machine language; +computer architecture; +assembly; +machine language; +virtual machines; +high-level languages; +compilers; +operating systems; +relational databases; +transaction processing; +data modeling; +network protocols; +and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: @@ -131,10 +165,21 @@ Both of the above textbooks should be considered a requirement for anyone who in ### Core theory -**Topics covered**: divide and conquer; sorting and searching; -randomized algorithms; graph search; shortest paths; data structures; -greedy algorithms; minimum spanning trees; dynamic programming; NP-completeness; -formal languages; Turing machines; computability; and more. +**Topics covered**: +divide and conquer; +sorting and searching; +randomized algorithms; +graph search; +shortest paths; +data structures; +greedy algorithms; +minimum spanning trees; +dynamic programming; +NP-completeness; +formal languages; +Turing machines; +computability; +and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: @@ -146,8 +191,15 @@ Courses | Duration | Effort | Prerequisites ### Core applications -**Topics covered**: neural networks; supervised learning; unsupervised learning; -OpenGL; raytracing; block ciphers; authentication; public key encryption; +**Topics covered**: +neural networks; +supervised learning; +unsupervised learning; +OpenGL; +raytracing; +block ciphers; +authentication; +public key encryption; and more. Courses | Duration | Effort | Prerequisites @@ -158,10 +210,17 @@ Courses | Duration | Effort | Prerequisites ### Advanced programming -**Topics covered**: code coverage; random testing; -debugging theory and practice; GPU programming; CUDA; parallel computing; -object-oriented analysis and design; UML; -large-scale software architecture and design; and more. +**Topics covered**: +code coverage; +random testing; +debugging theory and practice; +GPU programming; +CUDA; +parallel computing; +object-oriented analysis and design; +UML; +large-scale software architecture and design; +and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: @@ -178,7 +237,7 @@ Some of these courses are offered less frequently, but you are encouraged to tak - Cryptography is recommended to anyone who wants to learn more about zero knowledge systems and other advanced topics in cryptography. - The Princeton Algorithms courses are highly recommended as a more practical, implementation-focused complement to the Stanford Algorithms courses recommended as part of Core CS. However, Part II is rarely available, so they are electives at this time. -Note that the assignments are in Java, but don't require extensive Java experience +Note that the assignments are in Java, but don't require extensive Java experience. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: @@ -279,14 +338,17 @@ this curriculum has specifically been designed to prioritize *quality* over low Nevertheless, the reality is that the professors who have made these courses and the platforms who host them are extraordinarily generous. The content of virtually every course on Coursera and edX is available at no charge, but if you want graded assignments and quizzes, you may have to pay, depending on the course; yet, these sums of money are nothing compared to the cost of attending their prestigious instutitions. -Coursera is the platform upon which you are most likely to encounter paywalled features, but they offer [financial aid](https://learner.coursera.help/hc/en-us/articles/209819033-Apply-for-Financial-Aid) to those eligible. +Coursera is the platform upon which you are most likely to encounter paywalled features, but they offer +[financial aid](https://learner.coursera.help/hc/en-us/articles/209819033-Apply-for-Financial-Aid) +to those eligible. Some course materials are also available separate from these platforms, such as on YouTube. Below is a list of courses from the curriculum which have dedicated websites with freely available materials separate from the platforms: - [Introduction to Computer Science - CS50](https://cs50.harvard.edu/) - [Linear Algebra: Foundations to Frontiers](http://ulaff.net/) - [From Nand to Tetris: Building a Modern Computer from First Principles](http://www.nand2tetris.org/) -- [How to Design Programs](http://www.ccs.neu.edu/home/matthias/HtDP2e/) (Note: This is the **book** upon which *How to Code: Systematic Program Design* is based, but the course is not taught by the book's author; they are completely separate) +- [How to Design Programs](http://www.ccs.neu.edu/home/matthias/HtDP2e/) +(Note: This is the **book** upon which *How to Code: Systematic Program Design* is based, but the course is not taught by the book's author; they are completely separate) - [Mooculus: Calculus One](https://mooculus.osu.edu/) Just remember that purchasing a course might save you some time and give you some extra motivation, but you cannot buy your way to success in this field. From 21a3397a2a311591d2fa291f2729d44c2841bf91 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 15:25:53 -0500 Subject: [PATCH 041/131] Reinstate MIT discrete math course --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 63c8222..e8f0434 100644 --- a/README.md +++ b/README.md @@ -122,8 +122,8 @@ Courses | Duration | Effort | Prerequisites [Introduction to Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 hours/week | high school math [Calculus One](https://www.coursera.org/learn/calculus1)| 16 weeks | 8-10 hours/week | pre-calculus [Calculus Two: Sequences and Series](https://www.coursera.org/learn/advanced-calculus)| 7 weeks | 9-10 hours/week | Calculus One +[Mathematics for Computer Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-spring-2015/index.htm) | 13 weeks | 5 hours/week | Calculus Two [Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-2) | 18 weeks | 12 hours/week | calculus -[Discrete Mathematics](https://www.coursera.org/learn/discrete-mathematics) | 11 weeks | 3-5 hours/week | high school math [Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-frontiers-utaustinx-ut-5-04x#!)| 15 weeks | 8 hours/week | high school math ### Core systems From 71a60d4568672069a061c6518d8d59d9a7bbedea Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 15:50:01 -0500 Subject: [PATCH 042/131] Move up less advanced math --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e8f0434..2087dfc 100644 --- a/README.md +++ b/README.md @@ -120,11 +120,11 @@ and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Introduction to Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 hours/week | high school math +[Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-frontiers-utaustinx-ut-5-04x#!)| 15 weeks | 8 hours/week | high school math [Calculus One](https://www.coursera.org/learn/calculus1)| 16 weeks | 8-10 hours/week | pre-calculus [Calculus Two: Sequences and Series](https://www.coursera.org/learn/advanced-calculus)| 7 weeks | 9-10 hours/week | Calculus One [Mathematics for Computer Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-spring-2015/index.htm) | 13 weeks | 5 hours/week | Calculus Two [Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-2) | 18 weeks | 12 hours/week | calculus -[Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-frontiers-utaustinx-ut-5-04x#!)| 15 weeks | 8 hours/week | high school math ### Core systems From d2d9ea2d0fdc202347ede12a054e2cf3a1d7a42e Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 16:24:27 -0500 Subject: [PATCH 043/131] Make Intro CS section with just CS50 in it --- README.md | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 2087dfc..8029c1e 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,7 @@ These are **fundamental abilities** to succeed in our journey. # Curriculum +- [Intro CS](#intro-cs) - [Core CS](#core-cs) - [Core programming](#core-programming) - [Core math](#core-math) @@ -65,16 +66,28 @@ See also: [Prerequisites](#prerequisites) --- -## Core CS +## Intro CS -### Core programming -**Topics covered**: imperative programming; +Use this course to figure out if Computer Science is right for you. +Only proceed in the curriculum if it really excites you. + +**Topics covered**: +imperative programming; procedural programming; C; basic data structures and algorithms; -Python; +basic Python; SQL; -HTML, CSS, JavaScript; +basic HTML, CSS, JavaScript; + +Courses | Duration | Effort | Prerequisites +:-- | :--: | :--: | :--: +[Introduction to Computer Science - CS50](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x#!) | 12 weeks | 10-20 hours/week | none + +## Core CS + +### Core programming +**Topics covered**: basic testing; functional program composition; object-oriented program design; @@ -88,7 +101,6 @@ and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: -[Introduction to Computer Science - CS50](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x#!) | 12 weeks | 10-20 hours/week | none [How to Code: Systematic Program Design (XSeries)](https://www.edx.org/xseries/how-code-systematic-program-design) | 15 weeks | 5 hours/week | none [Object Oriented Programming in Java](https://www.coursera.org/learn/object-oriented-java) | 6 weeks | 4-6 hours/week | some programming [Programming Languages, Part A](https://www.coursera.org/learn/programming-languages) | 4 weeks | 8-16 hours/week | recommended: Java, C From 07c47d400647d4f3369b78c0e46891bf8c6a502e Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 16:26:04 -0500 Subject: [PATCH 044/131] Fix note formatting --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8029c1e..db66779 100644 --- a/README.md +++ b/README.md @@ -107,7 +107,7 @@ Courses | Duration | Effort | Prerequisites [Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 8-16 hours/week | Programming Languages, Part A [Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 8-16 hours/week | Programming Languages, Part B -Note: The Object-Oriented Programming in Java class is intended for students who have already taken a basic Java course, but it can still be completed by those who have only studied basic programming before in a different, Java-like language (e.g., C). +**Note**: The Object-Oriented Programming in Java class is intended for students who have already taken a basic Java course, but it can still be completed by those who have only studied basic programming before in a different, Java-like language (e.g., C). The learning curve will be steep, however, so for those who find it too difficult, looking over the material in this course is recommended: [Introduction to Programming in Java](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-092-introduction-to-programming-in-java-january-iap-2010/index.htm). From 72d8be14b921deb787e3ef5133acb0e4cf434e2a Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 16:28:34 -0500 Subject: [PATCH 045/131] Create Advanced CS sections --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index db66779..9c8c577 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,12 @@ These are **fundamental abilities** to succeed in our journey. - [Core systems](#core-systems) - [Core theory](#core-theory) - [Core applications](#core-applications) +- [Advanced CS](#advanced-cs) - [Advanced programming](#advanced-programming) + - [Advanced math](#advanced-math) + - [Advanced systems](#advanced-systems) + - [Advanced theory](#advanced-theory) + - [Advanced applications](#advanced-applications) - [Electives](#electives) - [Pro CS](#pro-cs) - [Final project](#final-project) @@ -220,6 +225,8 @@ Courses | Duration | Effort | Prerequisites [Computer Graphics](https://www.edx.org/course/computer-graphics-uc-san-diegox-cse167x)| 6 weeks | 12 hours/week | C++ or Java, linear algebra [Cryptography I](https://www.coursera.org/course/crypto)| 6 weeks | 5-7 hours/week | linear algebra; probability +## Advanced CS + ### Advanced programming **Topics covered**: @@ -241,6 +248,14 @@ Courses | Duration | Effort | Prerequisites [Introduction to Parallel Programming](https://www.udacity.com/course/intro-to-parallel-programming--cs344) | 12 weeks | - | C, algorithms [Software Architecture & Design](https://www.udacity.com/course/software-architecture-design--ud821)| 8 weeks | 6 hours/week | Java programming +### Advanced math + +### Advanced systems + +### Advanced theory + +### Advanced applications + ## Electives Some of these courses are offered less frequently, but you are encouraged to take them whenever they are available if you're interested. From b638370f0b7ce3bea1606c96ef5d5b2ec339c26f Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 16:47:46 -0500 Subject: [PATCH 046/131] Move around courses reflecting new structure --- README.md | 75 ++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 49 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 9c8c577..b95e567 100644 --- a/README.md +++ b/README.md @@ -136,7 +136,6 @@ and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: -[Introduction to Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 hours/week | high school math [Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-frontiers-utaustinx-ut-5-04x#!)| 15 weeks | 8 hours/week | high school math [Calculus One](https://www.coursera.org/learn/calculus1)| 16 weeks | 8-10 hours/week | pre-calculus [Calculus Two: Sequences and Series](https://www.coursera.org/learn/advanced-calculus)| 7 weeks | 9-10 hours/week | Calculus One @@ -157,9 +156,6 @@ virtual machines; high-level languages; compilers; operating systems; -relational databases; -transaction processing; -data modeling; network protocols; and more. @@ -167,7 +163,6 @@ Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Build a Modern Computer from First Principles: From Nand to Tetris](https://www.coursera.org/learn/build-a-computer) | 6 weeks | 7-13 hours/week | none [Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | Part I -[Databases](https://lagunita.stanford.edu/courses/DB/2014/SelfPaced/about)| 12 weeks | 8-12 hours/week | some programming, basic CS [Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| - | 4–12 hours/week | algebra, probability, basic CS **Note 1**: The 'From Nand to Tetris' course, in part I, will have you create an entire computer architecture from scratch, but is missing key elements from computer architecture such as pipelining and memory hierarchy. @@ -182,6 +177,12 @@ Both of the above textbooks should be considered a requirement for anyone who in ### Core theory +The Princeton Algorithms courses are highly recommended as a more practical, implementation-focused complement to the more theory-focused Stanford Algorithms courses. +Ideally, students would do both sets of courses since they complement each other nicely. +However, Part II of Princeton Algorithms is rarely available, so Stanford Algorithms is the recommended choice if you cannot do both. +Another difference is that Stanford Algorithms assignments can use any programming language; +Princeton Algorithms assignments use Java but don't require extensive Java experience. + **Topics covered**: divide and conquer; sorting and searching; @@ -193,22 +194,30 @@ greedy algorithms; minimum spanning trees; dynamic programming; NP-completeness; -formal languages; -Turing machines; -computability; and more. +#### Stanford Algorithms + Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Algorithms (1/4)](https://www.coursera.org/learn/algorithms-divide-conquer) | 4 weeks | 4-8 hours/week | one programming language; proofs; probability [Algorithms (2/4)](https://www.coursera.org/learn/algorithms-graphs-data-structures) | 4 weeks | 4-8 hours/week | previous algorithms course [Algorithms (3/4)](https://www.coursera.org/learn/algorithms-greedy) | 4 weeks | 4-8 hours/week | previous algorithms course [Algorithms (4/4)](https://www.coursera.org/learn/algorithms-npcomplete) | 4 weeks | 4-8 hours/week | previous algorithms course -[Automata Theory](https://lagunita.stanford.edu/courses/course-v1:ComputerScience+Automata+Fall2016/about) | 8 weeks | 10 hours/week | discrete mathematics + +#### Princeton Algorithms + +Courses | Duration | Effort | Prerequisites +:-- | :--: | :--: | :--: +[Algorithms, Part I](https://www.coursera.org/learn/algorithms-part1) | 6 weeks | 6-12 hours/week | some programming +[Algorithms, Part II](https://www.coursera.org/learn/algorithms-part2) | 6 weeks | 6-12 hours/week | Algorithms, Part I ### Core applications **Topics covered**: +relational databases; +transaction processing; +data modeling; neural networks; supervised learning; unsupervised learning; @@ -221,12 +230,17 @@ and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: +[Databases](https://lagunita.stanford.edu/courses/DB/2014/SelfPaced/about)| 12 weeks | 8-12 hours/week | some programming, basic CS [Machine Learning](https://www.coursera.org/learn/machine-learning)| 11 weeks | 4-6 hours/week | linear algebra [Computer Graphics](https://www.edx.org/course/computer-graphics-uc-san-diegox-cse167x)| 6 weeks | 12 hours/week | C++ or Java, linear algebra [Cryptography I](https://www.coursera.org/course/crypto)| 6 weeks | 5-7 hours/week | linear algebra; probability ## Advanced CS +Unfortunately, advanced topics in computer science generally have less coverage in online courses. +(This is because seldom few make it past beginner-level courses, there is low demand.) +Therefore, some of these courses may not be available regularly. + ### Advanced programming **Topics covered**: @@ -250,29 +264,38 @@ Courses | Duration | Effort | Prerequisites ### Advanced math +Courses | Duration | Effort | Prerequisites +:-- | :--: | :--: | :--: +[Introduction to Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 hours/week | high school math + ### Advanced systems -### Advanced theory - -### Advanced applications - -## Electives - -Some of these courses are offered less frequently, but you are encouraged to take them whenever they are available if you're interested. -- Compilers is recommended to any student who took a strong interest in the Programming Languages courses. -- Natural Language Processing is recommended to anyone who thinks they want to specialize in machine learning, artificial intelligence, etc. -- Cryptography is recommended to anyone who wants to learn more about zero knowledge systems and other advanced topics in cryptography. -- The Princeton Algorithms courses are highly recommended as a more practical, implementation-focused complement to the Stanford Algorithms courses recommended as part of Core CS. -However, Part II is rarely available, so they are electives at this time. -Note that the assignments are in Java, but don't require extensive Java experience. - Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: -[Cryptography II](https://www.coursera.org/course/crypto2)| 6 weeks | 6-8 hours/week | Cryptography I + +### Advanced theory + +**Topics covered**: +formal languages; +Turing machines; +computability; +and more. + +Courses | Duration | Effort | Prerequisites +:-- | :--: | :--: | :--: +[Automata Theory](https://lagunita.stanford.edu/courses/course-v1:ComputerScience+Automata+Fall2016/about) | 8 weeks | 10 hours/week | discrete mathematics + +### Advanced applications + +Compilers is recommended to any student who took a strong interest in the Programming Languages courses. +Natural Language Processing is recommended to anyone who thinks they want to specialize in machine learning, artificial intelligence, etc. +Cryptography is recommended to anyone who wants to learn more about zero knowledge systems and other advanced topics in cryptography. + +Courses | Duration | Effort | Prerequisites +:-- | :--: | :--: | :--: [Compilers](https://lagunita.stanford.edu/courses/Engineering/Compilers/Fall2014/about)| 9 weeks | 6-8 hours/week | none [Introduction to Natural Language Processing](https://www.coursera.org/learn/natural-language-processing)| 12 weeks | - | Python programming -[Algorithms, Part I](https://www.coursera.org/learn/algorithms-part1) | 6 weeks | 6-12 hours/week | some programming -[Algorithms, Part II](https://www.coursera.org/learn/algorithms-part2) | 6 weeks | 6-12 hours/week | Algorithms, Part I +[Cryptography II](https://www.coursera.org/course/crypto2)| 6 weeks | 6-8 hours/week | Cryptography I ## Pro CS From 271f3880ae9a5e7ec287313c910afc394821ea22 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 16:48:49 -0500 Subject: [PATCH 047/131] Fix curriculum TOC --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index b95e567..d3461e8 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,6 @@ These are **fundamental abilities** to succeed in our journey. - [Advanced systems](#advanced-systems) - [Advanced theory](#advanced-theory) - [Advanced applications](#advanced-applications) -- [Electives](#electives) - [Pro CS](#pro-cs) - [Final project](#final-project) From 59d32f7b8c70248d03b7f6f8c107796b43e037a5 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 16:57:09 -0500 Subject: [PATCH 048/131] Added Advanced math course and topics --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d3461e8..73c43e9 100644 --- a/README.md +++ b/README.md @@ -120,7 +120,6 @@ The learning curve will be steep, however, so for those who find it too difficul **Topics covered**: mathematical proofs; number theory; -real analysis; differential calculus; integral calculus; sequences and series; @@ -263,9 +262,16 @@ Courses | Duration | Effort | Prerequisites ### Advanced math +**Topics covered**: +mathematical proofs; +real analysis; +goal-oriented programming; +and more. + Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Introduction to Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 hours/week | high school math +[LAFF: Programming for Correctness](https://www.edx.org/course/laff-programming-correctness-utaustinx-ut-p4c-14-01x) | 7 weeks | 6 hours/week | linear algebra ### Advanced systems From 5ffb4657cede88756576e738e86aa6eb17f93ea4 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 17:00:04 -0500 Subject: [PATCH 049/131] Reinstate Effective Thinking class under Intro CS --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 73c43e9..2d3cc79 100644 --- a/README.md +++ b/README.md @@ -72,10 +72,11 @@ See also: [Prerequisites](#prerequisites) ## Intro CS -Use this course to figure out if Computer Science is right for you. -Only proceed in the curriculum if it really excites you. +Use these courses to figure out if Computer Science is right for you. +Only proceed in the curriculum if they really excite you. **Topics covered**: +cardinality; imperative programming; procedural programming; C; @@ -83,9 +84,11 @@ basic data structures and algorithms; basic Python; SQL; basic HTML, CSS, JavaScript; +and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: +[Effective Thinking Through Mathematics](https://www.edx.org/course/effective-thinking-through-mathematics-utaustinx-ut-9-01x-0) | 4 weeks | 2 hours/week | none [Introduction to Computer Science - CS50](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x#!) | 12 weeks | 10-20 hours/week | none ## Core CS From 1d748111782bc5a7bc39b5bafea90dc348bfcf26 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 17:06:41 -0500 Subject: [PATCH 050/131] Move Learning How to Learn into Intro --- README.md | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 2d3cc79..276876d 100644 --- a/README.md +++ b/README.md @@ -35,17 +35,11 @@ The curriculum then concludes with a **final project** to show off your skills t # Motivation & Preparation -Here are two interesting links that can make all the difference in your journey. - -The first one is a motivational video that shows a guy that went through the "MIT Challenge", which consists of learning the entire **4-year** MIT curriculum for Computer Science in **1 year**. +Here is an interesting link that can make all the difference in your journey. +It's a motivational video that shows a guy that went through the "MIT Challenge", which consists of learning the entire 4-year MIT curriculum for Computer Science in *1 year*. - [MIT Challenge](https://www.scotthyoung.com/blog/myprojects/mit-challenge-2/) -The second link is a MOOC that will teach you learning techniques used by experts in art, music, literature, math, science, sports, and many other disciplines. -These are **fundamental abilities** to succeed in our journey. - -- [Learning How to Learn](https://www.coursera.org/learn/learning-how-to-learn) - **Are you ready to get started?** # Curriculum @@ -72,11 +66,11 @@ See also: [Prerequisites](#prerequisites) ## Intro CS -Use these courses to figure out if Computer Science is right for you. -Only proceed in the curriculum if they really excite you. +Use the first course, CS50, to determine if Computer Science is right for you. +Only proceed in the curriculum if it really excites you. +If it does, use the second and third courses to gain the fundamental skills you need to excel at teaching yourself Computer Science. **Topics covered**: -cardinality; imperative programming; procedural programming; C; @@ -84,12 +78,15 @@ basic data structures and algorithms; basic Python; SQL; basic HTML, CSS, JavaScript; +learning skills; +cardinality; and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: -[Effective Thinking Through Mathematics](https://www.edx.org/course/effective-thinking-through-mathematics-utaustinx-ut-9-01x-0) | 4 weeks | 2 hours/week | none [Introduction to Computer Science - CS50](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x#!) | 12 weeks | 10-20 hours/week | none +[Learning How to Learn](https://www.coursera.org/learn/learning-how-to-learn) | 4 weeks | 2 hours/week | none +[Effective Thinking Through Mathematics](https://www.edx.org/course/effective-thinking-through-mathematics-utaustinx-ut-9-01x-0) | 4 weeks | 2 hours/week | none ## Core CS From 95c0294fab3c5a53d722cfac8e7a5fbb559fdaa7 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 17:45:19 -0500 Subject: [PATCH 051/131] Add advanced systems courses --- README.md | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 276876d..4df9cff 100644 --- a/README.md +++ b/README.md @@ -163,16 +163,10 @@ Courses | Duration | Effort | Prerequisites [Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | Part I [Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| - | 4–12 hours/week | algebra, probability, basic CS -**Note 1**: The 'From Nand to Tetris' course, in part I, will have you create an entire computer architecture from scratch, but is missing key elements from computer architecture such as pipelining and memory hierarchy. -A supplemental textbook is recommended for those who wish to go deeper into the hardware: -[Computer Organization and Design](https://smile.amazon.com/Computer-Organization-Design-Fifth-Architecture/dp/0124077269). - -**Note 2**: Part II of the same course has you build the very lowest levels of an operating system on top of the computer architecture you built, however it does not go very deep into operating systems. +**Note**: Part II of the same course has you build the very lowest levels of an operating system on top of the computer architecture you built, however it does not go very deep into operating systems. For those interested in this subject, this free supplemental textbook is strongly recommended: [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/). -Both of the above textbooks should be considered a requirement for anyone who intends to become a *[systems programmer](https://en.wikipedia.org/wiki/System_programming)*. - ### Core theory The Princeton Algorithms courses are highly recommended as a more practical, implementation-focused complement to the more theory-focused Stanford Algorithms courses. @@ -277,6 +271,23 @@ Courses | Duration | Effort | Prerequisites Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: +[Electricity and Magnetism, Part 1](https://www.edx.org/course/electricity-magnetism-part-1-ricex-phys102-1x-0) | 7 weeks | 8-10 hours/week | calculus, basic mechanics +[Electricity and Magnetism, Part 2](https://www.edx.org/course/electricity-magnetism-part-2-ricex-phys102-2x-0) | 7 weeks | 8-10 hours/week | Part 1 +[Computation Structures 1: Digital Circuits](https://www.edx.org/course/computation-structures-part-1-digital-mitx-6-004-1x-0) | 10 weeks | 6 hours/week | electricity, magnetism +[Computation Structures 2: Computer Architecture](https://www.edx.org/course/computation-structures-2-computer-mitx-6-004-2x) | 10 weeks | 6 hours/week | previous course +[Computation Structures 3: Computer Organization](https://www.edx.org/course/computation-structures-3-computer-mitx-6-004-3x-0) | 10 weeks | 6 hours/week | previous course +[ops-class.org - Hack the Kernel](https://www.ops-class.org/) | 15 weeks | 6 hours/week | algorithms + +**Note 1**: +The computer engineering courses assume prior knowledge of basic physics, mechanics in particular. +The relevant material will be reviewed in the Rice University 'Electricity and Magnetism' course, but not systematically. +If you are struggling, you can find a physics MOOC or utilize the materials from Khan Academy: +[Khan Academy - Physics](https://www.khanacademy.org/science/physics) + +**Note 2**: +ops-class.org is very, very hands-on. +A more passive alternative is here: +[Operating Systems](https://www.youtube.com/view_play_list?p=-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) ### Advanced theory From 8442e6561357eda866e8e2aeaf4eba53e23bb46e Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 17:51:57 -0500 Subject: [PATCH 052/131] Add link to Comp Arch course as alternative --- README.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4df9cff..a2eff05 100644 --- a/README.md +++ b/README.md @@ -279,14 +279,19 @@ Courses | Duration | Effort | Prerequisites [ops-class.org - Hack the Kernel](https://www.ops-class.org/) | 15 weeks | 6 hours/week | algorithms **Note 1**: -The computer engineering courses assume prior knowledge of basic physics, mechanics in particular. +The Computation Structures courses assume prior knowledge of basic physics, mechanics in particular. The relevant material will be reviewed in the Rice University 'Electricity and Magnetism' course, but not systematically. -If you are struggling, you can find a physics MOOC or utilize the materials from Khan Academy: +If you are struggling with the Rice courses, you can find a physics MOOC or utilize the materials from Khan Academy: [Khan Academy - Physics](https://www.khanacademy.org/science/physics) **Note 2**: +The Computation Structures courses are very, very long, and very hands-on. +A less hands-on alternative is here (note that the rerequisite physics knowledge is still the same): +[Computer Architecture](https://www.coursera.org/learn/comparch) + +**Note 3**: ops-class.org is very, very hands-on. -A more passive alternative is here: +A completely passive alternative, totally lacking assignments or exams, is here: [Operating Systems](https://www.youtube.com/view_play_list?p=-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) ### Advanced theory From a76ea7e1b71885f1e3213d79971bc7595b1cf321 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 18:33:20 -0500 Subject: [PATCH 053/131] Move most specializations to Advanced applications --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index a2eff05..2975648 100644 --- a/README.md +++ b/README.md @@ -317,25 +317,25 @@ Courses | Duration | Effort | Prerequisites [Compilers](https://lagunita.stanford.edu/courses/Engineering/Compilers/Fall2014/about)| 9 weeks | 6-8 hours/week | none [Introduction to Natural Language Processing](https://www.coursera.org/learn/natural-language-processing)| 12 weeks | - | Python programming [Cryptography II](https://www.coursera.org/course/crypto2)| 6 weeks | 6-8 hours/week | Cryptography I - +[Robotics (Specialization)](https://www.coursera.org/specializations/robotics) | 26 weeks | 2-5 hours/week | linear algebra, calculus, programming, probability +[Data Mining (Specialization)](https://www.coursera.org/specializations/data-mining) | 30 weeks | 2-5 hours/week | machine learning +[Big Data (Specialization)](https://www.coursera.org/specializations/big-data) | 30 weeks | 3-5 hours/week | none +[Internet of Things (Specialization)](https://www.coursera.org/specializations/internet-of-things) | 30 weeks | 1-5 hours/week | strong programming +[Cloud Computing (Specialization)](https://www.coursera.org/specializations/cloud-computing) | 30 weeks | 2-6 hours/week | C++ programming +[Full Stack Web Development (Specialization)](https://www.coursera.org/specializations/full-stack) | 27 weeeks | 2-6 hours/week | programming, databases +[Data Science (Specialization)](https://www.coursera.org/specializations/jhu-data-science) | 43 weeks | 1-6 hours/week | none + ## Pro CS After finishing the curriculum above, you will have completed close to a full bachelor's degree in Computer Science. You can stop here, but if you really want to make yourself valuable, the next step to completing your studies is to develop skills and knowledge in a specific domain. Choose one or more of the following specializations: -- [Artificial Intelligence Engineer Nanodegree](https://www.udacity.com/ai) by IBM, Amazon, and Didi -- [Data Mining Specialization](https://www.coursera.org/specializations/data-mining) by the University of Illinois at Urbana-Champaign -- [Big Data Specialization](https://www.coursera.org/specializations/big-data) by the University of California at San Diego -- [Data Analyst Nanodegree](https://www.udacity.com/course/data-analyst-nanodegree--nd002) by Facebook and mongoDB -- [Applied Data Science with Python Specialization](https://www.coursera.org/specializations/data-science-python) by the University of Michigan -- [Data Science Specialization](https://www.coursera.org/specializations/jhu-data-science) by Johns Hopkins University - [Mastering Software Development in R Specialization](https://www.coursera.org/specializations/r) by Johns Hopkins University +- [Artificial Intelligence Engineer Nanodegree](https://www.udacity.com/ai) by IBM, Amazon, and Didi +- [Data Analyst Nanodegree](https://www.udacity.com/course/data-analyst-nanodegree--nd002) by Facebook and mongoDB - [Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree--nd009) by kaggle - [Cybersecurity MicroMasters](https://www.edx.org/micromasters/ritx-cybersecurity) by the Rochester Institute of Technology -- [Cloud Computing Specialization](https://www.coursera.org/specializations/cloud-computing) by the University of Illinois at Urbana-Champaign -- [Internet of Things Specialization](https://www.coursera.org/specializations/internet-of-things) by the University of California at San Diego -- [Full Stack Web Development Specialization](https://www.coursera.org/specializations/full-stack) by the Hong Kong University of Science and Technology - [Android Developer Nanodegree](https://www.udacity.com/course/android-developer-nanodegree-by-google--nd801) by Google These aren't the only specializations you can choose. Check the following websites for more options: From b9281a73d8548bb7e1e833f944e190527da88ea9 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 18:37:14 -0500 Subject: [PATCH 054/131] Move non-specialization Advanced applications courses to be Optional under Core applications --- README.md | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 2975648..1b630e3 100644 --- a/README.md +++ b/README.md @@ -227,6 +227,19 @@ Courses | Duration | Effort | Prerequisites [Computer Graphics](https://www.edx.org/course/computer-graphics-uc-san-diegox-cse167x)| 6 weeks | 12 hours/week | C++ or Java, linear algebra [Cryptography I](https://www.coursera.org/course/crypto)| 6 weeks | 5-7 hours/week | linear algebra; probability +#### Optional + +Compilers is recommended to any student who took a strong interest in the Programming Languages courses. +Natural Language Processing is recommended to anyone who thinks they want to specialize in machine learning, artificial intelligence, etc. +Cryptography II is recommended to anyone who wants to learn more about zero knowledge systems and other advanced topics in cryptography. +Unfortunately, the latter two courses are rarely available. + +Courses | Duration | Effort | Prerequisites +:-- | :--: | :--: | :--: +[Compilers](https://lagunita.stanford.edu/courses/Engineering/Compilers/Fall2014/about)| 9 weeks | 6-8 hours/week | none +[Introduction to Natural Language Processing](https://www.coursera.org/learn/natural-language-processing)| 12 weeks | - | Python programming +[Cryptography II](https://www.coursera.org/course/crypto2)| 6 weeks | 6-8 hours/week | Cryptography I + ## Advanced CS Unfortunately, advanced topics in computer science generally have less coverage in online courses. @@ -308,15 +321,8 @@ Courses | Duration | Effort | Prerequisites ### Advanced applications -Compilers is recommended to any student who took a strong interest in the Programming Languages courses. -Natural Language Processing is recommended to anyone who thinks they want to specialize in machine learning, artificial intelligence, etc. -Cryptography is recommended to anyone who wants to learn more about zero knowledge systems and other advanced topics in cryptography. - Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: -[Compilers](https://lagunita.stanford.edu/courses/Engineering/Compilers/Fall2014/about)| 9 weeks | 6-8 hours/week | none -[Introduction to Natural Language Processing](https://www.coursera.org/learn/natural-language-processing)| 12 weeks | - | Python programming -[Cryptography II](https://www.coursera.org/course/crypto2)| 6 weeks | 6-8 hours/week | Cryptography I [Robotics (Specialization)](https://www.coursera.org/specializations/robotics) | 26 weeks | 2-5 hours/week | linear algebra, calculus, programming, probability [Data Mining (Specialization)](https://www.coursera.org/specializations/data-mining) | 30 weeks | 2-5 hours/week | machine learning [Big Data (Specialization)](https://www.coursera.org/specializations/big-data) | 30 weeks | 3-5 hours/week | none From 9385d454a3cf82717287deb6be2e601d2000b5be Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 18:50:34 -0500 Subject: [PATCH 055/131] Add requirements for Advanced CS --- README.md | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1b630e3..775415d 100644 --- a/README.md +++ b/README.md @@ -246,6 +246,11 @@ Unfortunately, advanced topics in computer science generally have less coverage (This is because seldom few make it past beginner-level courses, there is low demand.) Therefore, some of these courses may not be available regularly. +After completing every **single course** in Core CS, students should choose a subset of courses from Advanced CS based on interest. +The Advanced CS study should then end with one of the Specializations under [Advanced applications](#advanced-applications). +A Specialization's Capstone, if taken, may act as the [Final project](#final-project), if permitted by the Honor Code of the course. +If not, or if a student chooses not to take the Capstone, then a separate Final project will need to be done to complete this curriculum. + ### Advanced programming **Topics covered**: @@ -321,6 +326,11 @@ Courses | Duration | Effort | Prerequisites ### Advanced applications +All Coursera Specializations end with a Capstone project. +Depending on the course, you may be able to utilize the Capstone as your Final Project for this Computer Science curriculum. +Note that doing a Specialization with the Capstone at the end always costs money. +So if you don't wish to spend money or use the Capstone as your Final, it may be possible to take the courses in the Specialization for free by manually searching for them, but not all allow this. + Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Robotics (Specialization)](https://www.coursera.org/specializations/robotics) | 26 weeks | 2-5 hours/week | linear algebra, calculus, programming, probability @@ -333,13 +343,13 @@ Courses | Duration | Effort | Prerequisites ## Pro CS -After finishing the curriculum above, you will have completed close to a full bachelor's degree in Computer Science. +After completing the requirements of the curriculum above, you will have completed close to a full bachelor's degree in Computer Science. You can stop here, but if you really want to make yourself valuable, the next step to completing your studies is to develop skills and knowledge in a specific domain. +Many of these courses are graduate-level. Choose one or more of the following specializations: - [Mastering Software Development in R Specialization](https://www.coursera.org/specializations/r) by Johns Hopkins University - [Artificial Intelligence Engineer Nanodegree](https://www.udacity.com/ai) by IBM, Amazon, and Didi -- [Data Analyst Nanodegree](https://www.udacity.com/course/data-analyst-nanodegree--nd002) by Facebook and mongoDB - [Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree--nd009) by kaggle - [Cybersecurity MicroMasters](https://www.edx.org/micromasters/ritx-cybersecurity) by the Rochester Institute of Technology - [Android Developer Nanodegree](https://www.udacity.com/course/android-developer-nanodegree-by-google--nd801) by Google @@ -351,7 +361,6 @@ These aren't the only specializations you can choose. Check the following websit ### Udacity: [Nanodegree](https://www.udacity.com/nanodegree) ### FutureLearn: [Collections](https://www.futurelearn.com/courses/collections) - ## Final project **OSS University** is **project-focused**. From 11a50cf2df1f2a711dc341d5ad8eeffd39a26752 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 18:57:18 -0500 Subject: [PATCH 056/131] Remove Advanced math, add Game Theory --- README.md | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 775415d..a07f65c 100644 --- a/README.md +++ b/README.md @@ -257,6 +257,7 @@ If not, or if a student chooses not to take the Capstone, then a separate Final code coverage; random testing; debugging theory and practice; +goal-oriented programming; GPU programming; CUDA; parallel computing; @@ -269,22 +270,10 @@ Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Software Testing](https://www.udacity.com/course/software-testing--cs258)| 4 weeks | 6 hours/week | some programming [Software Debugging](https://www.udacity.com/course/software-debugging--cs259)| 8 weeks | 6 hours/week | Python, object-oriented programming +[LAFF: Programming for Correctness](https://www.edx.org/course/laff-programming-correctness-utaustinx-ut-p4c-14-01x) | 7 weeks | 6 hours/week | linear algebra [Introduction to Parallel Programming](https://www.udacity.com/course/intro-to-parallel-programming--cs344) | 12 weeks | - | C, algorithms [Software Architecture & Design](https://www.udacity.com/course/software-architecture-design--ud821)| 8 weeks | 6 hours/week | Java programming -### Advanced math - -**Topics covered**: -mathematical proofs; -real analysis; -goal-oriented programming; -and more. - -Courses | Duration | Effort | Prerequisites -:-- | :--: | :--: | :--: -[Introduction to Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 hours/week | high school math -[LAFF: Programming for Correctness](https://www.edx.org/course/laff-programming-correctness-utaustinx-ut-p4c-14-01x) | 7 weeks | 6 hours/week | linear algebra - ### Advanced systems Courses | Duration | Effort | Prerequisites @@ -315,14 +304,18 @@ A completely passive alternative, totally lacking assignments or exams, is here: ### Advanced theory **Topics covered**: +real analysis; formal languages; Turing machines; computability; +game trees; and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: +[Introduction to Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 hours/week | high school math [Automata Theory](https://lagunita.stanford.edu/courses/course-v1:ComputerScience+Automata+Fall2016/about) | 8 weeks | 10 hours/week | discrete mathematics +[Game Theory](https://www.coursera.org/learn/game-theory-1) | 8 weeks | x hours/week | mathematical thinking, probability, calculus ### Advanced applications From e7dbe593a0a69de93a7d17e4a35b55bde307af9e Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 19:20:23 -0500 Subject: [PATCH 057/131] Add more Advanced theory courses --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a07f65c..82728bb 100644 --- a/README.md +++ b/README.md @@ -308,6 +308,11 @@ real analysis; formal languages; Turing machines; computability; +computational geometry theory; +propositional logic; +relational logic; +Herbrand logic; +concept lattices; game trees; and more. @@ -315,11 +320,14 @@ Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Introduction to Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 hours/week | high school math [Automata Theory](https://lagunita.stanford.edu/courses/course-v1:ComputerScience+Automata+Fall2016/about) | 8 weeks | 10 hours/week | discrete mathematics +[Computational Geometry](https://www.edx.org/course/computational-geometry-tsinghuax-70240183x) | 16 weeks | 8 hours/week | algorithms, C++ +[Introduction to Logic](https://www.coursera.org/learn/logic-introduction) | 10 weeks | 4-8 hours/week | set theory +[Introduction to Formal Concept Analysis](https://www.coursera.org/learn/formal-concept-analysis) | 6 weeks | 4-6 hours/week | logic, probability [Game Theory](https://www.coursera.org/learn/game-theory-1) | 8 weeks | x hours/week | mathematical thinking, probability, calculus ### Advanced applications -All Coursera Specializations end with a Capstone project. +These Coursera Specializations all end with a Capstone project. Depending on the course, you may be able to utilize the Capstone as your Final Project for this Computer Science curriculum. Note that doing a Specialization with the Capstone at the end always costs money. So if you don't wish to spend money or use the Capstone as your Final, it may be possible to take the courses in the Specialization for free by manually searching for them, but not all allow this. From e749553ef970d352e3c105ed627d7f39def1648d Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 19:23:25 -0500 Subject: [PATCH 058/131] Explain Advanced CS --- README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 82728bb..bfd15d7 100644 --- a/README.md +++ b/README.md @@ -242,11 +242,10 @@ Courses | Duration | Effort | Prerequisites ## Advanced CS -Unfortunately, advanced topics in computer science generally have less coverage in online courses. -(This is because seldom few make it past beginner-level courses, there is low demand.) -Therefore, some of these courses may not be available regularly. +After completing **every single course** in Core CS, students should choose a subset of courses from Advanced CS based on interest. +Not every course from a subcategory needs to be taken. +But students should take *every* course that is relevant to the field they intend to go into. -After completing every **single course** in Core CS, students should choose a subset of courses from Advanced CS based on interest. The Advanced CS study should then end with one of the Specializations under [Advanced applications](#advanced-applications). A Specialization's Capstone, if taken, may act as the [Final project](#final-project), if permitted by the Honor Code of the course. If not, or if a student chooses not to take the Capstone, then a separate Final project will need to be done to complete this curriculum. From 1b99c1ace367d674036043781ebb2ae2126e2ccb Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 19:27:45 -0500 Subject: [PATCH 059/131] Update 'Order of the classes' to reflect latest changes --- README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index bfd15d7..df9f522 100644 --- a/README.md +++ b/README.md @@ -407,13 +407,12 @@ The important thing is to **internalize** the core concepts and to be able to us ## Order of the classes This guide was developed to be flexible. -Ideally, it can be consumed in a linear approach, i.e. you complete one course at a time, but in reality different people have different preferences with regard to how many courses they wish to take at once. +Ideally, Core CS can be consumed in a linear approach, i.e. you complete one course at a time, but in reality different people have different preferences with regard to how many courses they wish to take at once. Plus, different courses are available at different times and have wildly different time requirements. Therefore, many students will take the courses in a non-linear order, based on availability and how much time they have to devote to each class. - -Any course that is part of 'Core CS' section should be available either regularly, in self-paced format, or in archived form. -Some of the electives are only available once in a while. +However, with very few exceptions, everything in Core CS should be completed before you begin Advanced CS. +Pay attention to prerequisites. ## Cost of the classes From b648c4bf420fa0bdec45728fcb808b3a54a911de Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 19:46:40 -0500 Subject: [PATCH 060/131] Switch Final project with Pro CS, update wording --- README.md | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index df9f522..21705fc 100644 --- a/README.md +++ b/README.md @@ -57,8 +57,8 @@ It's a motivational video that shows a guy that went through the "MIT Challenge" - [Advanced systems](#advanced-systems) - [Advanced theory](#advanced-theory) - [Advanced applications](#advanced-applications) -- [Pro CS](#pro-cs) - [Final project](#final-project) +- [Pro CS](#pro-cs) See also: [Prerequisites](#prerequisites) @@ -340,6 +340,28 @@ Courses | Duration | Effort | Prerequisites [Cloud Computing (Specialization)](https://www.coursera.org/specializations/cloud-computing) | 30 weeks | 2-6 hours/week | C++ programming [Full Stack Web Development (Specialization)](https://www.coursera.org/specializations/full-stack) | 27 weeeks | 2-6 hours/week | programming, databases [Data Science (Specialization)](https://www.coursera.org/specializations/jhu-data-science) | 43 weeks | 1-6 hours/week | none + +## Final project + +**OSS University** is **project-focused**. +You are encouraged to do the assignments and exams for each course, but what really matters is whether you can *use* your knowledge to solve a real world problem. + +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, the project will **validate** and **consolidate** your knowledge. + +Another option is using the Capstone project from taking one of the Specializations in [Advanced applications](#advanced-applications); +whether or not this makes sense depends on the course, the project, and whether or not the course's Honor Code permits you to display your work publicly. +In some cases, it may not be permitted; +do **not** violate your course's Honor Code! + +The final projects of all students will be listed in [this](PROJECTS.md) file. +**Submit your project's information in that file after you conclude it**. + +Put the OSSU-CS badge in the README of your repository! +[![Open Source Society University - Computer Science](https://img.shields.io/badge/OSSU-computer--science-blue.svg)](https://github.com/open-source-society/computer-science) + +- Markdown: `[![Open Source Society University - Computer Science](https://img.shields.io/badge/OSSU-computer--science-blue.svg)](https://github.com/open-source-society/computer-science)` +- HTML: `Open Source Society University - Computer Science` ## Pro CS @@ -361,25 +383,6 @@ These aren't the only specializations you can choose. Check the following websit ### Udacity: [Nanodegree](https://www.udacity.com/nanodegree) ### FutureLearn: [Collections](https://www.futurelearn.com/courses/collections) -## Final project - -**OSS University** is **project-focused**. -You are encouraged to do the assignments and exams for each course, but what really matters is whether you can *use* your knowledge to solve a real world problem. - -> "What does it mean?" - -After you finish the curriculum, 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, the project will **validate** and **consolidate** your knowledge. - -The final projects of all students will be listed in [this](PROJECTS.md) file. -**Submit your project's information in that file after you conclude it**. - -Put the OSSU-CS badge in the README of your repository! -[![Open Source Society University - Computer Science](https://img.shields.io/badge/OSSU-computer--science-blue.svg)](https://github.com/open-source-society/computer-science) - -- Markdown: `[![Open Source Society University - Computer Science](https://img.shields.io/badge/OSSU-computer--science-blue.svg)](https://github.com/open-source-society/computer-science)` -- HTML: `Open Source Society University - Computer Science` - ### Cooperative work You can create this project alone or with other students! From 5565842c684c524decfed961cf00bd992f948d8b Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 19:47:44 -0500 Subject: [PATCH 061/131] Remove FutureLearn --- README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 21705fc..e11b470 100644 --- a/README.md +++ b/README.md @@ -378,10 +378,9 @@ Choose one or more of the following specializations: These aren't the only specializations you can choose. Check the following websites for more options: -### edX: [xSeries](https://www.edx.org/xseries) -### Coursera: [Specializations](https://www.coursera.org/specializations) -### Udacity: [Nanodegree](https://www.udacity.com/nanodegree) -### FutureLearn: [Collections](https://www.futurelearn.com/courses/collections) +- edX: [xSeries](https://www.edx.org/xseries) +- Coursera: [Specializations](https://www.coursera.org/specializations) +- Udacity: [Nanodegree](https://www.udacity.com/nanodegree) ### Cooperative work From fe6bafc15c130413ffeefe47af1adba10e445e78 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 19:50:30 -0500 Subject: [PATCH 062/131] Minor wording updates --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index e11b470..07a727f 100644 --- a/README.md +++ b/README.md @@ -365,7 +365,7 @@ Put the OSSU-CS badge in the README of your repository! ## Pro CS -After completing the requirements of the curriculum above, you will have completed close to a full bachelor's degree in Computer Science. +After completing the requirements of the curriculum above, you will have completed a full bachelor's degree in Computer Science, or quite close to one. You can stop here, but if you really want to make yourself valuable, the next step to completing your studies is to develop skills and knowledge in a specific domain. Many of these courses are graduate-level. @@ -377,7 +377,6 @@ Choose one or more of the following specializations: - [Android Developer Nanodegree](https://www.udacity.com/course/android-developer-nanodegree-by-google--nd801) by Google These aren't the only specializations you can choose. Check the following websites for more options: - - edX: [xSeries](https://www.edx.org/xseries) - Coursera: [Specializations](https://www.coursera.org/specializations) - Udacity: [Nanodegree](https://www.udacity.com/nanodegree) From 57b853d7b985ef015326be0a8dddf38a36fe5f61 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 20:11:23 -0500 Subject: [PATCH 063/131] Add readings --- README.md | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 07a727f..83d65de 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,8 @@ This is a **solid path** for those of you who want to complete a **Computer Science** curriculum on your own time, at **little to no cost**, with courses from the **best universities** in the world. -In our curriculum, we give preference to MOOC (Massive Open Online Course) style courses because these courses were created with our style of learning in mind. +In our curriculum, we give preference to MOOC (Massive Open Online Course) style courses because these courses were created with our style of learning in mind; +but we include readings where appropriate. The curriculum then concludes with a **final project** to show off your skills to your friends and future employers. # Motivation & Preparation @@ -115,6 +116,13 @@ Courses | Duration | Effort | Prerequisites The learning curve will be steep, however, so for those who find it too difficult, looking over the material in this course is recommended: [Introduction to Programming in Java](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-092-introduction-to-programming-in-java-january-iap-2010/index.htm). +#### Readings +- **Required** to learn about monads, laziness, purity: [Learn You a Haskell for a Great Good!](http://learnyouahaskell.com/) +- **Required**, to learn about logic programming, backtracking, unification, any resource on Prolog covering these topics, such as: + - [Prolog Programming for Artificial Intelligence](https://www.amazon.com/Programming-Artificial-Intelligence-International-Computer/dp/0321417461) + - [Learn Prolog Now](http://www.learnprolognow.org/) + - [Art of Prolog](https://mitpress.mit.edu/books/art-prolog) + ### Core math **Topics covered**: @@ -163,9 +171,9 @@ Courses | Duration | Effort | Prerequisites [Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | Part I [Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| - | 4–12 hours/week | algebra, probability, basic CS -**Note**: Part II of the same course has you build the very lowest levels of an operating system on top of the computer architecture you built, however it does not go very deep into operating systems. -For those interested in this subject, this free supplemental textbook is strongly recommended: -[Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/). +#### Readings +- Optional: [Computer Networking: A Top-Down Approach](https://www.amazon.com/gp/product/0133594149?pldnSite=1) +- Recommended: [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/) ### Core theory @@ -227,7 +235,12 @@ Courses | Duration | Effort | Prerequisites [Computer Graphics](https://www.edx.org/course/computer-graphics-uc-san-diegox-cse167x)| 6 weeks | 12 hours/week | C++ or Java, linear algebra [Cryptography I](https://www.coursera.org/course/crypto)| 6 weeks | 5-7 hours/week | linear algebra; probability -#### Optional +#### Readings +- Optional: [Transaction Processing: Concepts and Techniques](https://www.amazon.com/Transaction-Processing-Concepts-Techniques-Management/dp/1558601902) +- Optional: [Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World](https://www.amazon.com/Data-Reality-Perspective-Perceiving-Information/dp/1935504215) +- Optional: [Architecture of a Database System](http://db.cs.berkeley.edu/papers/fntdb07-architecture.pdf) + +#### Optional courses Compilers is recommended to any student who took a strong interest in the Programming Languages courses. Natural Language Processing is recommended to anyone who thinks they want to specialize in machine learning, artificial intelligence, etc. @@ -273,6 +286,15 @@ Courses | Duration | Effort | Prerequisites [Introduction to Parallel Programming](https://www.udacity.com/course/intro-to-parallel-programming--cs344) | 12 weeks | - | C, algorithms [Software Architecture & Design](https://www.udacity.com/course/software-architecture-design--ud821)| 8 weeks | 6 hours/week | Java programming +#### Readings +- Recommended: [Design Patterns](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612/ref=sr_1_1?s=books&ie=UTF8&qid=1488071249&sr=1-1&keywords=Design+Patterns) +- Recommended: [Clean Code](https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882) +- Recommended: [Refactoring](https://www.refactoring.com/) +- Recommended: [Code Complete](https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670) +- Recommended: [The Architecture of Open Source Applications](http://aosabook.org/en/index.html) +- Recommended: [The Pragmatic Programmer](https://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X) +- Recommended: [The Mythical Man-Month](https://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/ref=sr_1_1?s=books&ie=UTF8&qid=1488071430&sr=1-1&keywords=Mythical+Man-Month) + ### Advanced systems Courses | Duration | Effort | Prerequisites @@ -300,6 +322,9 @@ ops-class.org is very, very hands-on. A completely passive alternative, totally lacking assignments or exams, is here: [Operating Systems](https://www.youtube.com/view_play_list?p=-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) +#### Readings +- Optional: [Modern Operating Systems](https://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/013359162X) + ### Advanced theory **Topics covered**: From d912e61ac712cce31a604f459ac5ea8b31f16be5 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 21:57:36 -0500 Subject: [PATCH 064/131] Update prereqs for Automata --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 83d65de..c4d9c04 100644 --- a/README.md +++ b/README.md @@ -343,9 +343,9 @@ and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Introduction to Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 hours/week | high school math -[Automata Theory](https://lagunita.stanford.edu/courses/course-v1:ComputerScience+Automata+Fall2016/about) | 8 weeks | 10 hours/week | discrete mathematics -[Computational Geometry](https://www.edx.org/course/computational-geometry-tsinghuax-70240183x) | 16 weeks | 8 hours/week | algorithms, C++ [Introduction to Logic](https://www.coursera.org/learn/logic-introduction) | 10 weeks | 4-8 hours/week | set theory +[Automata Theory](https://lagunita.stanford.edu/courses/course-v1:ComputerScience+Automata+Fall2016/about) | 8 weeks | 10 hours/week | discrete mathematics, logic, algorithms +[Computational Geometry](https://www.edx.org/course/computational-geometry-tsinghuax-70240183x) | 16 weeks | 8 hours/week | algorithms, C++ [Introduction to Formal Concept Analysis](https://www.coursera.org/learn/formal-concept-analysis) | 6 weeks | 4-6 hours/week | logic, probability [Game Theory](https://www.coursera.org/learn/game-theory-1) | 8 weeks | x hours/week | mathematical thinking, probability, calculus From 04974fe9cdebe7efdbffb5b9e452df9b1cd5aa7c Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sat, 25 Feb 2017 22:16:02 -0500 Subject: [PATCH 065/131] No need for note about OOP Java course --- README.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/README.md b/README.md index c4d9c04..029c442 100644 --- a/README.md +++ b/README.md @@ -107,15 +107,11 @@ and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [How to Code: Systematic Program Design (XSeries)](https://www.edx.org/xseries/how-code-systematic-program-design) | 15 weeks | 5 hours/week | none -[Object Oriented Programming in Java](https://www.coursera.org/learn/object-oriented-java) | 6 weeks | 4-6 hours/week | some programming +[Object Oriented Programming in Java](https://www.coursera.org/learn/object-oriented-java) | 6 weeks | 4-6 hours/week | basic programming in C or Java [Programming Languages, Part A](https://www.coursera.org/learn/programming-languages) | 4 weeks | 8-16 hours/week | recommended: Java, C [Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 8-16 hours/week | Programming Languages, Part A [Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 8-16 hours/week | Programming Languages, Part B -**Note**: The Object-Oriented Programming in Java class is intended for students who have already taken a basic Java course, but it can still be completed by those who have only studied basic programming before in a different, Java-like language (e.g., C). -The learning curve will be steep, however, so for those who find it too difficult, looking over the material in this course is recommended: -[Introduction to Programming in Java](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-092-introduction-to-programming-in-java-january-iap-2010/index.htm). - #### Readings - **Required** to learn about monads, laziness, purity: [Learn You a Haskell for a Great Good!](http://learnyouahaskell.com/) - **Required**, to learn about logic programming, backtracking, unification, any resource on Prolog covering these topics, such as: From d7e52c43f0eab3a24c1907506d841e866d9d0d70 Mon Sep 17 00:00:00 2001 From: hanjiexi Date: Mon, 27 Feb 2017 09:42:23 -0500 Subject: [PATCH 066/131] Fix order of sections --- README.md | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 029c442..75708c0 100644 --- a/README.md +++ b/README.md @@ -383,24 +383,6 @@ 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/open-source-society/computer-science)` - HTML: `Open Source Society University - Computer Science` - -## Pro CS - -After completing the requirements of the curriculum above, you will have completed a full bachelor's degree in Computer Science, or quite close to one. -You can stop here, but if you really want to make yourself valuable, the next step to completing your studies is to develop skills and knowledge in a specific domain. -Many of these courses are graduate-level. - -Choose one or more of the following specializations: -- [Mastering Software Development in R Specialization](https://www.coursera.org/specializations/r) by Johns Hopkins University -- [Artificial Intelligence Engineer Nanodegree](https://www.udacity.com/ai) by IBM, Amazon, and Didi -- [Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree--nd009) by kaggle -- [Cybersecurity MicroMasters](https://www.edx.org/micromasters/ritx-cybersecurity) by the Rochester Institute of Technology -- [Android Developer Nanodegree](https://www.udacity.com/course/android-developer-nanodegree-by-google--nd801) by Google - -These aren't the only specializations you can choose. Check the following websites for more options: -- edX: [xSeries](https://www.edx.org/xseries) -- Coursera: [Specializations](https://www.coursera.org/specializations) -- Udacity: [Nanodegree](https://www.udacity.com/nanodegree) ### Cooperative work @@ -421,6 +403,24 @@ 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. + +## Pro CS + +After completing the requirements of the curriculum above, you will have completed a full bachelor's degree in Computer Science, or quite close to one. +You can stop here, but if you really want to make yourself valuable, the next step to completing your studies is to develop skills and knowledge in a specific domain. +Many of these courses are graduate-level. + +Choose one or more of the following specializations: +- [Mastering Software Development in R Specialization](https://www.coursera.org/specializations/r) by Johns Hopkins University +- [Artificial Intelligence Engineer Nanodegree](https://www.udacity.com/ai) by IBM, Amazon, and Didi +- [Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree--nd009) by kaggle +- [Cybersecurity MicroMasters](https://www.edx.org/micromasters/ritx-cybersecurity) by the Rochester Institute of Technology +- [Android Developer Nanodegree](https://www.udacity.com/course/android-developer-nanodegree-by-google--nd801) by Google + +These aren't the only specializations you can choose. Check the following websites for more options: +- edX: [xSeries](https://www.edx.org/xseries) +- Coursera: [Specializations](https://www.coursera.org/specializations) +- Udacity: [Nanodegree](https://www.udacity.com/nanodegree) ![keep learning](http://i.imgur.com/REQK0VU.jpg) @@ -584,4 +584,4 @@ Add **Open Source Society University** to your [Facebook](https://www.facebook.c - [Stanford University](https://lagunita.stanford.edu/) - [MIT Open Courseware](http://ocw.mit.edu/courses/#electrical-engineering-and-computer-science) - [A DIY Computer Science Education](https://bradfieldcs.com/diy/) -- [Obtaining a Thorough CS Background Online](http://spin.atomicobject.com/2015/05/15/obtaining-thorough-cs-background-online/) \ No newline at end of file +- [Obtaining a Thorough CS Background Online](http://spin.atomicobject.com/2015/05/15/obtaining-thorough-cs-background-online/) From 7b86b994cbd70ab0d00404e20bbb9ea16954c6ec Mon Sep 17 00:00:00 2001 From: hanjiexi Date: Mon, 27 Feb 2017 09:45:38 -0500 Subject: [PATCH 067/131] Remove excessive bolding --- README.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 75708c0..de5f72f 100644 --- a/README.md +++ b/README.md @@ -28,11 +28,11 @@ # About -This is a **solid path** for those of you who want to complete a **Computer Science** curriculum on your own time, at **little to no cost**, 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** curriculum on your own time, at little to no cost, with courses from the best universities in the world. In our curriculum, we give preference to MOOC (Massive Open Online Course) style courses because these courses were created with our style of learning in mind; but we include readings where appropriate. -The curriculum then concludes with a **final project** to show off your skills to your friends and future employers. +The curriculum then concludes with a final project to show off your skills to your friends and future employers. # Motivation & Preparation @@ -364,11 +364,11 @@ Courses | Duration | Effort | Prerequisites ## Final project -**OSS University** is **project-focused**. +OSS University is **project-focused**. You are encouraged to do the assignments and exams for each course, but what really matters is whether you can *use* your knowledge to solve a real world problem. 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, the project will **validate** and **consolidate** your knowledge. +Not only does real project work look great on a resume, the project will *validate* and *consolidate* your knowledge. Another option is using the Capstone project from taking one of the Specializations in [Advanced applications](#advanced-applications); whether or not this makes sense depends on the course, the project, and whether or not the course's Honor Code permits you to display your work publicly. @@ -484,7 +484,7 @@ You should put the *Course's cards* below its respective *Section's card*. - `Extra Sections`: cards with that label represent sections that was added by the student. The intention of this board is to provide our students a way to track their progress, and also the ability to show their progress through a public page for friends, family, employers, etc. -You can change the status of your board to be **public** or **private**. +You can change the status of your board to be *public* or *private*. ### Content Policy @@ -503,11 +503,11 @@ So if you want to really complete your studies, then you should select one of th If you are able to devote 18-20 hours per week to this curriculum, taking 1-3 clases at a time, you could hypothetically finish the Core CS section in under 2 years. A specialization would then take you a few more months. -It will probably take longer if you go slower, but regardless, your **reward** will be proportional to your **effort**. +It will probably take longer if you go slower, but regardless, your reward will be proportional to your effort. -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. +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). @@ -538,9 +538,9 @@ Apart from those, the only things that you need to know are how to use **Git** a 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). +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 the major **core topics** that a conventional Computer Science program covers. +Our students can trust in this curriculum because it has been carefully planned and covers the major core topics that a conventional Computer Science program covers. # How to collaborate From 6e68013faa19d7b99a844dd95ebad58a2c007485 Mon Sep 17 00:00:00 2001 From: hanjiexi Date: Mon, 27 Feb 2017 09:48:44 -0500 Subject: [PATCH 068/131] Make OS:TEP required reading --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index de5f72f..dfe0326 100644 --- a/README.md +++ b/README.md @@ -168,8 +168,8 @@ Courses | Duration | Effort | Prerequisites [Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| - | 4–12 hours/week | algebra, probability, basic CS #### Readings +- **Required** since Nand2Tetris does not go deep enough into operating systems: [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/) - Optional: [Computer Networking: A Top-Down Approach](https://www.amazon.com/gp/product/0133594149?pldnSite=1) -- Recommended: [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/) ### Core theory From 0857169727bfdd0ec1438e92207ecde5f7b2f865 Mon Sep 17 00:00:00 2001 From: hanjiexi Date: Mon, 27 Feb 2017 10:24:09 -0500 Subject: [PATCH 069/131] Add clarification about algorithms courses --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index dfe0326..7102d15 100644 --- a/README.md +++ b/README.md @@ -173,6 +173,7 @@ Courses | Duration | Effort | Prerequisites ### Core theory +Algorithms and data structures is the most important subject you will learn in Core CS, and there are two major course sequences for learning it. The Princeton Algorithms courses are highly recommended as a more practical, implementation-focused complement to the more theory-focused Stanford Algorithms courses. Ideally, students would do both sets of courses since they complement each other nicely. However, Part II of Princeton Algorithms is rarely available, so Stanford Algorithms is the recommended choice if you cannot do both. From 41e8ee11738f8d2d48af9c6a2799b9b8ebf42f12 Mon Sep 17 00:00:00 2001 From: hanjiexi Date: Mon, 27 Feb 2017 10:28:13 -0500 Subject: [PATCH 070/131] Move some readings from Advanced to Pro --- README.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 7102d15..70b7595 100644 --- a/README.md +++ b/README.md @@ -285,12 +285,8 @@ Courses | Duration | Effort | Prerequisites #### Readings - Recommended: [Design Patterns](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612/ref=sr_1_1?s=books&ie=UTF8&qid=1488071249&sr=1-1&keywords=Design+Patterns) -- Recommended: [Clean Code](https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882) - Recommended: [Refactoring](https://www.refactoring.com/) -- Recommended: [Code Complete](https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670) - Recommended: [The Architecture of Open Source Applications](http://aosabook.org/en/index.html) -- Recommended: [The Pragmatic Programmer](https://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X) -- Recommended: [The Mythical Man-Month](https://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/ref=sr_1_1?s=books&ie=UTF8&qid=1488071430&sr=1-1&keywords=Mythical+Man-Month) ### Advanced systems @@ -407,22 +403,28 @@ The important thing is to **internalize** the core concepts and to be able to us ## Pro CS -After completing the requirements of the curriculum above, you will have completed a full bachelor's degree in Computer Science, or quite close to one. +After completing the requirements of the curriculum above, you will have completed the equivalent of a full bachelor's degree in Computer Science, or quite close to one. You can stop here, but if you really want to make yourself valuable, the next step to completing your studies is to develop skills and knowledge in a specific domain. Many of these courses are graduate-level. -Choose one or more of the following specializations: +Choose one or more of the following **specializations**: - [Mastering Software Development in R Specialization](https://www.coursera.org/specializations/r) by Johns Hopkins University - [Artificial Intelligence Engineer Nanodegree](https://www.udacity.com/ai) by IBM, Amazon, and Didi - [Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree--nd009) by kaggle - [Cybersecurity MicroMasters](https://www.edx.org/micromasters/ritx-cybersecurity) by the Rochester Institute of Technology - [Android Developer Nanodegree](https://www.udacity.com/course/android-developer-nanodegree-by-google--nd801) by Google -These aren't the only specializations you can choose. Check the following websites for more options: +These aren't the only specializations you can choose. Check the following websites for **more options**: - edX: [xSeries](https://www.edx.org/xseries) - Coursera: [Specializations](https://www.coursera.org/specializations) - Udacity: [Nanodegree](https://www.udacity.com/nanodegree) +After spending some time in the industry, you should also sharpen your coding and software management skills with the following **readings**: +- Recommended: [Clean Code](https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882) +- Recommended: [Code Complete](https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670) +- Recommended: [The Pragmatic Programmer](https://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X) +- Recommended: [The Mythical Man-Month](https://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/ref=sr_1_1?s=books&ie=UTF8&qid=1488071430&sr=1-1&keywords=Mythical+Man-Month) + ![keep learning](http://i.imgur.com/REQK0VU.jpg) # How to use this guide From 90fca40084b0b1a86f36239ff92f166fdcf4cc47 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Tue, 28 Feb 2017 17:55:50 -0500 Subject: [PATCH 071/131] Remove Software Testing --- README.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/README.md b/README.md index 70b7595..d0a4388 100644 --- a/README.md +++ b/README.md @@ -263,8 +263,6 @@ If not, or if a student chooses not to take the Capstone, then a separate Final ### Advanced programming **Topics covered**: -code coverage; -random testing; debugging theory and practice; goal-oriented programming; GPU programming; @@ -277,7 +275,6 @@ and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: -[Software Testing](https://www.udacity.com/course/software-testing--cs258)| 4 weeks | 6 hours/week | some programming [Software Debugging](https://www.udacity.com/course/software-debugging--cs259)| 8 weeks | 6 hours/week | Python, object-oriented programming [LAFF: Programming for Correctness](https://www.edx.org/course/laff-programming-correctness-utaustinx-ut-p4c-14-01x) | 7 weeks | 6 hours/week | linear algebra [Introduction to Parallel Programming](https://www.udacity.com/course/intro-to-parallel-programming--cs344) | 12 weeks | - | C, algorithms From 9552eb9d4717334d76eb968e20a726b20f532e49 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Tue, 28 Feb 2017 18:04:47 -0500 Subject: [PATCH 072/131] New UBC course sequence --- README.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index d0a4388..7e957ae 100644 --- a/README.md +++ b/README.md @@ -93,12 +93,15 @@ Courses | Duration | Effort | Prerequisites ### Core programming **Topics covered**: -basic testing; -functional program composition; -object-oriented program design; +functional programming; +design for testing; +program requirements; +common design patterns; +unit testing; +object-oriented design; +Java; static typing; dynamic typing; -common design patterns; ML-family languages (via Standard ML); Lisp-family languages (via Racket); Ruby; @@ -106,8 +109,10 @@ and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: -[How to Code: Systematic Program Design (XSeries)](https://www.edx.org/xseries/how-code-systematic-program-design) | 15 weeks | 5 hours/week | none -[Object Oriented Programming in Java](https://www.coursera.org/learn/object-oriented-java) | 6 weeks | 4-6 hours/week | basic programming in C or Java +[How to Code - Simple Data](https://www.edx.org/course/how-code-simple-data-ubcx-htc1x) | 7 weeks | 8-10 hours/week | none +[How to Code - Complex Data](https://www.edx.org/course/how-code-complex-data-ubcx-htc2x) | 6 weeks | 8-10 hours/week | How to Code: Simple Data +[Software Construction - Data Abstraction](https://www.edx.org/course/software-construction-data-abstraction-ubcx-softconst1x) | 6 weeks | 8-10 hours/week | How to Code - Complex Data +[Software Construction - Object-Oriented Design](https://www.edx.org/course/software-construction-object-oriented-ubcx-softconst2x) | 6 weeks | 8-10 hours/week | Software Construction - Data Abstraction [Programming Languages, Part A](https://www.coursera.org/learn/programming-languages) | 4 weeks | 8-16 hours/week | recommended: Java, C [Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 8-16 hours/week | Programming Languages, Part A [Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 8-16 hours/week | Programming Languages, Part B From 04bdd0f9de45548aca74e2f76386c40bf8ff77db Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Tue, 28 Feb 2017 18:12:54 -0500 Subject: [PATCH 073/131] Final UBC courses as Core applications --- README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7e957ae..ef13afc 100644 --- a/README.md +++ b/README.md @@ -217,6 +217,10 @@ Courses | Duration | Effort | Prerequisites ### Core applications **Topics covered**: +Agile methodology; +REST; +software specifications; +refactoring; relational databases; transaction processing; data modeling; @@ -233,6 +237,7 @@ and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Databases](https://lagunita.stanford.edu/courses/DB/2014/SelfPaced/about)| 12 weeks | 8-12 hours/week | some programming, basic CS +[Software Engineering: Introduction](https://www.edx.org/course/software-engineering-introduction-ubcx-softeng1x) | 6 weeks | 8-10 hours/week | Software Construction - Object-Oriented Design [Machine Learning](https://www.coursera.org/learn/machine-learning)| 11 weeks | 4-6 hours/week | linear algebra [Computer Graphics](https://www.edx.org/course/computer-graphics-uc-san-diegox-cse167x)| 6 weeks | 12 hours/week | C++ or Java, linear algebra [Cryptography I](https://www.coursera.org/course/crypto)| 6 weeks | 5-7 hours/week | linear algebra; probability @@ -244,13 +249,19 @@ Courses | Duration | Effort | Prerequisites #### Optional courses +The Software Development Capstone Project is **strongly recommended** as a way to consolidate your knowledge gained throughout the Core CS curriculum; +it involves working on a team. +If you intend to stop at Core CS and go no further in your studies, you should consider this course to be required; +be aware that it does cost money to get the most out of it. + Compilers is recommended to any student who took a strong interest in the Programming Languages courses. Natural Language Processing is recommended to anyone who thinks they want to specialize in machine learning, artificial intelligence, etc. Cryptography II is recommended to anyone who wants to learn more about zero knowledge systems and other advanced topics in cryptography. -Unfortunately, the latter two courses are rarely available. +Unfortunately, the latter two courses are rarely available, which is why they are optional. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: +[Software Development Capstone Project](https://www.edx.org/course/software-development-capstone-project-ubcx-softengprjx) | 6-7 weeks | 8-10 hours/week | Software Engineering: Introduction [Compilers](https://lagunita.stanford.edu/courses/Engineering/Compilers/Fall2014/about)| 9 weeks | 6-8 hours/week | none [Introduction to Natural Language Processing](https://www.coursera.org/learn/natural-language-processing)| 12 weeks | - | Python programming [Cryptography II](https://www.coursera.org/course/crypto2)| 6 weeks | 6-8 hours/week | Cryptography I From b25a34d4b32553b95e9c5fe622ce62f6429ab349 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Tue, 28 Feb 2017 19:11:33 -0500 Subject: [PATCH 074/131] Move ProgLang to start of Core prog --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index ef13afc..04a94aa 100644 --- a/README.md +++ b/README.md @@ -109,13 +109,11 @@ and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: +Programming Languages ([A](https://www.coursera.org/learn/programming-languages), [B](https://www.coursera.org/learn/programming-languages-part-b), [C](https://www.coursera.org/learn/programming-languages-part-c)) | 10 weeks | 8-16 hours/week | introductory programming [How to Code - Simple Data](https://www.edx.org/course/how-code-simple-data-ubcx-htc1x) | 7 weeks | 8-10 hours/week | none [How to Code - Complex Data](https://www.edx.org/course/how-code-complex-data-ubcx-htc2x) | 6 weeks | 8-10 hours/week | How to Code: Simple Data [Software Construction - Data Abstraction](https://www.edx.org/course/software-construction-data-abstraction-ubcx-softconst1x) | 6 weeks | 8-10 hours/week | How to Code - Complex Data [Software Construction - Object-Oriented Design](https://www.edx.org/course/software-construction-object-oriented-ubcx-softconst2x) | 6 weeks | 8-10 hours/week | Software Construction - Data Abstraction -[Programming Languages, Part A](https://www.coursera.org/learn/programming-languages) | 4 weeks | 8-16 hours/week | recommended: Java, C -[Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 8-16 hours/week | Programming Languages, Part A -[Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 8-16 hours/week | Programming Languages, Part B #### Readings - **Required** to learn about monads, laziness, purity: [Learn You a Haskell for a Great Good!](http://learnyouahaskell.com/) From d1eb4dbd0a565d7b96b617685c31ed192b69a525 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Tue, 28 Feb 2017 19:14:42 -0500 Subject: [PATCH 075/131] Update math prereqs and topics --- README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 04a94aa..8676034 100644 --- a/README.md +++ b/README.md @@ -125,24 +125,25 @@ Programming Languages ([A](https://www.coursera.org/learn/programming-languages) ### Core math **Topics covered**: +linear transformations; +matrices; +vectors; mathematical proofs; number theory; differential calculus; integral calculus; sequences and series; -probability theory; +discrete mathematics; basic statistics; O-notation; graph theory; -linear transformations; -matrices; -vectors; +probability theory; and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: -[Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-frontiers-utaustinx-ut-5-04x#!)| 15 weeks | 8 hours/week | high school math -[Calculus One](https://www.coursera.org/learn/calculus1)| 16 weeks | 8-10 hours/week | pre-calculus +[Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-frontiers-utaustinx-ut-5-04x#!)| 15 weeks | 8 hours/week | high school math (pre-calculus) +[Calculus One](https://www.coursera.org/learn/calculus1)| 16 weeks | 8-10 hours/week | high school math (pre-calculus) [Calculus Two: Sequences and Series](https://www.coursera.org/learn/advanced-calculus)| 7 weeks | 9-10 hours/week | Calculus One [Mathematics for Computer Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-spring-2015/index.htm) | 13 weeks | 5 hours/week | Calculus Two [Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-2) | 18 weeks | 12 hours/week | calculus From 13f6c47d3a2c9b62cdc6fd0645734cd4093e5fa5 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Tue, 28 Feb 2017 19:16:51 -0500 Subject: [PATCH 076/131] Change optional readings to supplemental --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 8676034..06fe8ae 100644 --- a/README.md +++ b/README.md @@ -173,7 +173,7 @@ Courses | Duration | Effort | Prerequisites #### Readings - **Required** since Nand2Tetris does not go deep enough into operating systems: [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/) -- Optional: [Computer Networking: A Top-Down Approach](https://www.amazon.com/gp/product/0133594149?pldnSite=1) +- Supplemental: [Computer Networking: A Top-Down Approach](https://www.amazon.com/gp/product/0133594149?pldnSite=1) ### Core theory @@ -242,9 +242,9 @@ Courses | Duration | Effort | Prerequisites [Cryptography I](https://www.coursera.org/course/crypto)| 6 weeks | 5-7 hours/week | linear algebra; probability #### Readings -- Optional: [Transaction Processing: Concepts and Techniques](https://www.amazon.com/Transaction-Processing-Concepts-Techniques-Management/dp/1558601902) -- Optional: [Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World](https://www.amazon.com/Data-Reality-Perspective-Perceiving-Information/dp/1935504215) -- Optional: [Architecture of a Database System](http://db.cs.berkeley.edu/papers/fntdb07-architecture.pdf) +- Supplemental: [Transaction Processing: Concepts and Techniques](https://www.amazon.com/Transaction-Processing-Concepts-Techniques-Management/dp/1558601902) +- Supplemental: [Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World](https://www.amazon.com/Data-Reality-Perspective-Perceiving-Information/dp/1935504215) +- Supplemental: [Architecture of a Database System](http://db.cs.berkeley.edu/papers/fntdb07-architecture.pdf) #### Optional courses @@ -328,7 +328,7 @@ A completely passive alternative, totally lacking assignments or exams, is here: [Operating Systems](https://www.youtube.com/view_play_list?p=-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) #### Readings -- Optional: [Modern Operating Systems](https://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/013359162X) +- Supplemental: [Modern Operating Systems](https://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/013359162X) ### Advanced theory From ebdff942dbc689a73273f4397679c53a4a99014b Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Tue, 28 Feb 2017 19:25:42 -0500 Subject: [PATCH 077/131] Clean up Core applications --- README.md | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 06fe8ae..23d7ed3 100644 --- a/README.md +++ b/README.md @@ -236,10 +236,14 @@ and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Databases](https://lagunita.stanford.edu/courses/DB/2014/SelfPaced/about)| 12 weeks | 8-12 hours/week | some programming, basic CS -[Software Engineering: Introduction](https://www.edx.org/course/software-engineering-introduction-ubcx-softeng1x) | 6 weeks | 8-10 hours/week | Software Construction - Object-Oriented Design [Machine Learning](https://www.coursera.org/learn/machine-learning)| 11 weeks | 4-6 hours/week | linear algebra [Computer Graphics](https://www.edx.org/course/computer-graphics-uc-san-diegox-cse167x)| 6 weeks | 12 hours/week | C++ or Java, linear algebra -[Cryptography I](https://www.coursera.org/course/crypto)| 6 weeks | 5-7 hours/week | linear algebra; probability +[Cryptography I](https://www.coursera.org/course/crypto)| 6 weeks | 5-7 hours/week | linear algebra, probability +[Software Engineering: Introduction](https://www.edx.org/course/software-engineering-introduction-ubcx-softeng1x) | 6 weeks | 8-10 hours/week | Software Construction - Object-Oriented Design +[Software Development Capstone Project](https://www.edx.org/course/software-development-capstone-project-ubcx-softengprjx)**\*** | 6-7 weeks | 8-10 hours/week | Software Engineering: Introduction + +\* **Required** if you intend not to go past Core CS; +**strongly recommended** even for those who will continue on to Advanced CS. #### Readings - Supplemental: [Transaction Processing: Concepts and Techniques](https://www.amazon.com/Transaction-Processing-Concepts-Techniques-Management/dp/1558601902) @@ -248,20 +252,12 @@ Courses | Duration | Effort | Prerequisites #### Optional courses -The Software Development Capstone Project is **strongly recommended** as a way to consolidate your knowledge gained throughout the Core CS curriculum; -it involves working on a team. -If you intend to stop at Core CS and go no further in your studies, you should consider this course to be required; -be aware that it does cost money to get the most out of it. - -Compilers is recommended to any student who took a strong interest in the Programming Languages courses. Natural Language Processing is recommended to anyone who thinks they want to specialize in machine learning, artificial intelligence, etc. Cryptography II is recommended to anyone who wants to learn more about zero knowledge systems and other advanced topics in cryptography. Unfortunately, the latter two courses are rarely available, which is why they are optional. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: -[Software Development Capstone Project](https://www.edx.org/course/software-development-capstone-project-ubcx-softengprjx) | 6-7 weeks | 8-10 hours/week | Software Engineering: Introduction -[Compilers](https://lagunita.stanford.edu/courses/Engineering/Compilers/Fall2014/about)| 9 weeks | 6-8 hours/week | none [Introduction to Natural Language Processing](https://www.coursera.org/learn/natural-language-processing)| 12 weeks | - | Python programming [Cryptography II](https://www.coursera.org/course/crypto2)| 6 weeks | 6-8 hours/week | Cryptography I @@ -290,6 +286,7 @@ and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: +[Compilers](https://lagunita.stanford.edu/courses/Engineering/Compilers/Fall2014/about)| 9 weeks | 6-8 hours/week | none [Software Debugging](https://www.udacity.com/course/software-debugging--cs259)| 8 weeks | 6 hours/week | Python, object-oriented programming [LAFF: Programming for Correctness](https://www.edx.org/course/laff-programming-correctness-utaustinx-ut-p4c-14-01x) | 7 weeks | 6 hours/week | linear algebra [Introduction to Parallel Programming](https://www.udacity.com/course/intro-to-parallel-programming--cs344) | 12 weeks | - | C, algorithms From 7c708a581c738b9ef26992ca934408001305208a Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Tue, 28 Feb 2017 19:27:27 -0500 Subject: [PATCH 078/131] Remove courses that never run --- README.md | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/README.md b/README.md index 23d7ed3..144d97c 100644 --- a/README.md +++ b/README.md @@ -250,17 +250,6 @@ Courses | Duration | Effort | Prerequisites - Supplemental: [Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World](https://www.amazon.com/Data-Reality-Perspective-Perceiving-Information/dp/1935504215) - Supplemental: [Architecture of a Database System](http://db.cs.berkeley.edu/papers/fntdb07-architecture.pdf) -#### Optional courses - -Natural Language Processing is recommended to anyone who thinks they want to specialize in machine learning, artificial intelligence, etc. -Cryptography II is recommended to anyone who wants to learn more about zero knowledge systems and other advanced topics in cryptography. -Unfortunately, the latter two courses are rarely available, which is why they are optional. - -Courses | Duration | Effort | Prerequisites -:-- | :--: | :--: | :--: -[Introduction to Natural Language Processing](https://www.coursera.org/learn/natural-language-processing)| 12 weeks | - | Python programming -[Cryptography II](https://www.coursera.org/course/crypto2)| 6 weeks | 6-8 hours/week | Cryptography I - ## Advanced CS After completing **every single course** in Core CS, students should choose a subset of courses from Advanced CS based on interest. From 2ec7242bc02778e35cd401cb5297aade456336c8 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Tue, 28 Feb 2017 19:50:00 -0500 Subject: [PATCH 079/131] Clean up Advanced CS --- README.md | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 144d97c..9f7d21f 100644 --- a/README.md +++ b/README.md @@ -252,7 +252,7 @@ Courses | Duration | Effort | Prerequisites ## Advanced CS -After completing **every single course** in Core CS, students should choose a subset of courses from Advanced CS based on interest. +After completing **every single required course** in Core CS, students should choose a subset of courses from Advanced CS based on interest. Not every course from a subcategory needs to be taken. But students should take *every* course that is relevant to the field they intend to go into. @@ -279,43 +279,43 @@ Courses | Duration | Effort | Prerequisites [Software Debugging](https://www.udacity.com/course/software-debugging--cs259)| 8 weeks | 6 hours/week | Python, object-oriented programming [LAFF: Programming for Correctness](https://www.edx.org/course/laff-programming-correctness-utaustinx-ut-p4c-14-01x) | 7 weeks | 6 hours/week | linear algebra [Introduction to Parallel Programming](https://www.udacity.com/course/intro-to-parallel-programming--cs344) | 12 weeks | - | C, algorithms -[Software Architecture & Design](https://www.udacity.com/course/software-architecture-design--ud821)| 8 weeks | 6 hours/week | Java programming - -#### Readings -- Recommended: [Design Patterns](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612/ref=sr_1_1?s=books&ie=UTF8&qid=1488071249&sr=1-1&keywords=Design+Patterns) -- Recommended: [Refactoring](https://www.refactoring.com/) -- Recommended: [The Architecture of Open Source Applications](http://aosabook.org/en/index.html) +[Software Architecture & Design](https://www.udacity.com/course/software-architecture-design--ud821)| 8 weeks | 6 hours/week | software engineering in Java ### 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; + Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: -[Electricity and Magnetism, Part 1](https://www.edx.org/course/electricity-magnetism-part-1-ricex-phys102-1x-0) | 7 weeks | 8-10 hours/week | calculus, basic mechanics +[Electricity and Magnetism, Part 1](https://www.edx.org/course/electricity-magnetism-part-1-ricex-phys102-1x-0)1 | 7 weeks | 8-10 hours/week | calculus, basic mechanics [Electricity and Magnetism, Part 2](https://www.edx.org/course/electricity-magnetism-part-2-ricex-phys102-2x-0) | 7 weeks | 8-10 hours/week | Part 1 -[Computation Structures 1: Digital Circuits](https://www.edx.org/course/computation-structures-part-1-digital-mitx-6-004-1x-0) | 10 weeks | 6 hours/week | electricity, magnetism +[Computation Structures 1: Digital Circuits](https://www.edx.org/course/computation-structures-part-1-digital-mitx-6-004-1x-0)2 | 10 weeks | 6 hours/week | electricity, magnetism [Computation Structures 2: Computer Architecture](https://www.edx.org/course/computation-structures-2-computer-mitx-6-004-2x) | 10 weeks | 6 hours/week | previous course [Computation Structures 3: Computer Organization](https://www.edx.org/course/computation-structures-3-computer-mitx-6-004-3x-0) | 10 weeks | 6 hours/week | previous course [ops-class.org - Hack the Kernel](https://www.ops-class.org/) | 15 weeks | 6 hours/week | algorithms -**Note 1**: -The Computation Structures courses assume prior knowledge of basic physics, mechanics in particular. -The relevant material will be reviewed in the Rice University 'Electricity and Magnetism' course, but not systematically. -If you are struggling with the Rice courses, you can find a physics MOOC or utilize the materials from Khan Academy: +**1 Note**: +These courses assume knowledge of basic physics; +if you are struggling, you can find a physics MOOC or utilize the materials from Khan Academy: [Khan Academy - Physics](https://www.khanacademy.org/science/physics) -**Note 2**: -The Computation Structures courses are very, very long, and very hands-on. -A less hands-on alternative is here (note that the rerequisite physics knowledge is still the same): +**2 Note**: +A shorter, less intense (but still very advanced) alternative to Computation Structures is here: [Computer Architecture](https://www.coursera.org/learn/comparch) -**Note 3**: -ops-class.org is very, very hands-on. -A completely passive alternative, totally lacking assignments or exams, is here: -[Operating Systems](https://www.youtube.com/view_play_list?p=-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - -#### Readings -- Supplemental: [Modern Operating Systems](https://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/013359162X) - ### Advanced theory **Topics covered**: From fa2006ad688f55e17983952a8929c4a2bc29a8f8 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Tue, 28 Feb 2017 19:54:48 -0500 Subject: [PATCH 080/131] Remove empty paid-courses.md --- extras/paid-courses.md | 96 ------------------------------------------ 1 file changed, 96 deletions(-) delete mode 100644 extras/paid-courses.md diff --git a/extras/paid-courses.md b/extras/paid-courses.md deleted file mode 100644 index 89e08bf..0000000 --- a/extras/paid-courses.md +++ /dev/null @@ -1,96 +0,0 @@ -# Computer Science - Extra Resources - -## Paid Courses - -- [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 (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) - ---- - -### Introduction to Computer Science - -### Math (Mathematical Thinking) - -### Program Design - -### Math (Discrete Math) - -### Algorithms - -### Programming Paradigms - -### Software Testing - -### Math (Calculus) - -### Software Architecture - -### Theory - -### Software Engineering - -### Math (Probability) - -### Computer Architecture - -### Operating Systems - -### Computer Networks - -### Databases - -### Cloud Computing - -### Math (Linear Algebra) - -### Cryptography - -### Security - -### Compilers - -### Parallel Computing - -### UX Design - -### Computer Graphics - -### Artificial Intelligence - -### Machine Learning - -### Natural Language Processing - -### Big Data - -### Data Mining - -### Internet of Things From a5549b8089e6ea1e8df38195ae134792ccbc82f4 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Tue, 28 Feb 2017 20:20:15 -0500 Subject: [PATCH 081/131] Update readings --- README.md | 19 ++-- extras/articles.md | 96 ------------------- extras/{free-courses.md => courses.md} | 0 extras/free-books.md | 123 ------------------------- extras/paid-books.md | 7 -- extras/readings.md | 36 ++++++++ 6 files changed, 44 insertions(+), 237 deletions(-) delete mode 100644 extras/articles.md rename extras/{free-courses.md => courses.md} (100%) delete mode 100644 extras/free-books.md create mode 100644 extras/readings.md diff --git a/README.md b/README.md index 9f7d21f..56f8d96 100644 --- a/README.md +++ b/README.md @@ -173,7 +173,6 @@ Courses | Duration | Effort | Prerequisites #### Readings - **Required** since Nand2Tetris does not go deep enough into operating systems: [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/) -- Supplemental: [Computer Networking: A Top-Down Approach](https://www.amazon.com/gp/product/0133594149?pldnSite=1) ### Core theory @@ -245,11 +244,6 @@ Courses | Duration | Effort | Prerequisites \* **Required** if you intend not to go past Core CS; **strongly recommended** even for those who will continue on to Advanced CS. -#### Readings -- Supplemental: [Transaction Processing: Concepts and Techniques](https://www.amazon.com/Transaction-Processing-Concepts-Techniques-Management/dp/1558601902) -- Supplemental: [Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World](https://www.amazon.com/Data-Reality-Perspective-Perceiving-Information/dp/1935504215) -- Supplemental: [Architecture of a Database System](http://db.cs.berkeley.edu/papers/fntdb07-architecture.pdf) - ## Advanced CS After completing **every single required course** in Core CS, students should choose a subset of courses from Advanced CS based on interest. @@ -417,11 +411,14 @@ These aren't the only specializations you can choose. Check the following websit - Coursera: [Specializations](https://www.coursera.org/specializations) - Udacity: [Nanodegree](https://www.udacity.com/nanodegree) -After spending some time in the industry, you should also sharpen your coding and software management skills with the following **readings**: -- Recommended: [Clean Code](https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882) -- Recommended: [Code Complete](https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670) -- Recommended: [The Pragmatic Programmer](https://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X) -- Recommended: [The Mythical Man-Month](https://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/ref=sr_1_1?s=books&ie=UTF8&qid=1488071430&sr=1-1&keywords=Mythical+Man-Month) +### Where to go next? + +- Look for a job as a developer! +- Check out the [readings](extras/readings.md) for classic books you can read that will sharpen your skills and expand your knowledge. +- Join a local developer meetup (e.g. via [Meetups.com](https://www.meetups.com/)). +- Pay attention to emerging technologies in the world of software development, such as: + - [Elixir](http://elixir-lang.org/), a new functional programming language for the web based on the battle-tested BEAM VM! + - [Rust](https://www.rust-lang.org/), a systems language which uses borrowing and lifetimes to achieve memory safety without a garbage collector! ![keep learning](http://i.imgur.com/REQK0VU.jpg) diff --git a/extras/articles.md b/extras/articles.md deleted file mode 100644 index d3fa87c..0000000 --- a/extras/articles.md +++ /dev/null @@ -1,96 +0,0 @@ -# Computer Science - Extra Resources - -## Articles - -- [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 (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) - ---- - -### Introduction to Computer Science - -### Math (Mathematical Thinking) - -### Program Design - -### Math (Discrete Math) - -### Algorithms - -### Programming Paradigms - -### Software Testing - -### Math (Calculus) - -### Software Architecture - -### Theory - -### Software Engineering - -### Math (Probability) - -### Computer Architecture - -### Operating Systems - -### Computer Networks - -### Databases - -### Cloud Computing - -### Math (Linear Algebra) - -### Cryptography - -### Security - -### Compilers - -### Parallel Computing - -### UX Design - -### Computer Graphics - -### Artificial Intelligence - -### Machine Learning - -### Natural Language Processing - -### Big Data - -### Data Mining - -### Internet of Things diff --git a/extras/free-courses.md b/extras/courses.md similarity index 100% rename from extras/free-courses.md rename to extras/courses.md diff --git a/extras/free-books.md b/extras/free-books.md deleted file mode 100644 index ab172c3..0000000 --- a/extras/free-books.md +++ /dev/null @@ -1,123 +0,0 @@ -# Computer Science - Extra Resources - -## Free Books - -- [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 (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) - ---- - -### Introduction to Computer Science - -Name | Author(s) -:-- | :--: -[Structure and Interpretation of Computer Programs](https://mitpress.mit.edu/sicp/full-text/book/book.html) | Hal Abelson, Jerry Sussman, Julie Sussman -[Introduction to Computing: Explorations in Language, Logic, and Machines](http://www.computingbook.org/) | David Evans - -### Math (Mathematical Thinking) - -### Program Design - -### Math (Discrete Math) - -Name | Author(s) -:-- | :--: -[Applied Discrete Structures](http://faculty.uml.edu/klevasseur/ads2/) | Alan Doerr, Ken Levasseur - -### Algorithms - -### Programming Paradigms - -### Software Testing - -### Math (Calculus) - -Name | Author(s) -:-- | :--: -[Calculus Made Easy](http://www.gutenberg.org/ebooks/33283) | Silvanus P. Thompson - -### Software Architecture - -### Theory - -### Software Engineering - -### Math (Probability) - -Name | Author(s) -:-- | :--: -[Grinstead and Snell’s Introduction to Probability](https://math.dartmouth.edu/~prob/prob/prob.pdf) |Charles M. Grinstead, J. Laurie Snell - -### Computer Architecture - -### Operating Systems - -### Computer Networks - -### Databases - -### Cloud Computing - -### Math (Linear Algebra) - -### Cryptography - -### Security - -### Compilers - -Name | Author(s) -:-- | :--: -[Compiler Construction](http://www.ethoberon.ethz.ch/WirthPubl/CBEAll.pdf) | Niklaus Wirth - - -### Parallel Computing - -### UX Design - -### Computer Graphics - -### Artificial Intelligence - -### Machine Learning - -Name | Author(s) -:-- | :--: -[Deep Learning](http://www.deeplearningbook.org/) | Ian Goodfellow, Yoshua Bengio and Aaron Courville -[Bayesian Reasoning and Machine Learning](http://web4.cs.ucl.ac.uk/staff/D.Barber/pmwiki/pmwiki.php?n=Brml.HomePage) | David Barber - -### Natural Language Processing - -### Big Data - -### Data Mining - -### Internet of Things diff --git a/extras/paid-books.md b/extras/paid-books.md index cdee875..7cebe4f 100644 --- a/extras/paid-books.md +++ b/extras/paid-books.md @@ -39,7 +39,6 @@ Name | Author | ISBN :-- | :--: | :--: -[Introduction to Computation and Programming Using Python](https://www.amazon.com/Introduction-Computation-Programming-Using-Python/dp/0262525003/) | John V. Guttag | 978-0262525008 ### Math (Mathematical Thinking) @@ -49,13 +48,11 @@ Name | Author | ISBN Name | Author | ISBN :-- | :--: | :--: -[Discrete Mathematics with Applications(4th Edition)](http://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp/dp/0495391328/) | Susanna S. Epp | 9780495391326 ### Algorithms Name | Author | ISBN :-- | :--: | :--: -[Introduction to Algorithms(3rd Edition)](http://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844/) | Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein | 9780262033848 ### Programming Paradigms @@ -77,14 +74,11 @@ Name | Author | ISBN Name | Author | ISBN :-- | :--: | :--: -[Modern Operating Systems(4th Edition)](http://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/013359162X/) | Andrew S. Tanenbaum, Herbert Bos | 9780133591620 ### Computer Networks Name | Author | ISBN :-- | :--: | :--: -[Computer Networking: A Top-Down Approach (6th Edition)](http://www.chegg.com/textbooks/computer-networking-6th-edition-9780132856201-0132856204) | James F Kurose, Keith W Ross | 9780132856201 -[Computer Networks (5th Edition)](http://www.amazon.com/Computer-Networks-5th-Andrew-Tanenbaum/dp/0132126958/) | Andrew S. Tanenbaum, David J. Wetherall| 9780132126953 ### Databases @@ -100,7 +94,6 @@ Name | Author | ISBN Name | Author | ISBN :-- | :--: | :--: -[Compilers: Principles, Techniques, and Tools (2nd Edition)](http://www.amazon.com/Compilers-Principles-Techniques-Tools-2nd/dp/0321486811/) | Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman | 9780321486813 ### Parallel Computing diff --git a/extras/readings.md b/extras/readings.md new file mode 100644 index 0000000..087b87d --- /dev/null +++ b/extras/readings.md @@ -0,0 +1,36 @@ +# Computer Science - Great Readings + +This document consists of great books or articles on computer science. +Some are here because there is a course covering the same material; +some are just great books that you should read at some point in your career. + +Once you have made it through most of the curriculum, knowing whether a book is worth your time will become easier. +Or, if you are struggling in one of the courses, perhaps reading a book on the subject will help. + +Name | Author(s) +:-- | :--: +[Introduction to Computation and Programming Using Python](https://www.amazon.com/Introduction-Computation-Programming-Using-Python/dp/0262525003/) | John V. Guttag +[Discrete Mathematics with Applications (4th Edition)](http://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp/dp/0495391328/) | Susanna S. Epp +[Transaction Processing: Concepts and Techniques](https://www.amazon.com/Transaction-Processing-Concepts-Techniques-Management/dp/1558601902) +[Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World](https://www.amazon.com/Data-Reality-Perspective-Perceiving-Information/dp/1935504215) +[Architecture of a Database System](http://db.cs.berkeley.edu/papers/fntdb07-architecture.pdf) +[Introduction to Algorithms (3rd Edition)](http://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844/) | Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein +[Modern Operating Systems (4th Edition)](http://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/013359162X/) | Andrew S. Tanenbaum, Herbert Bos +[Computer Networking: A Top-Down Approach (6th Edition)](http://www.chegg.com/textbooks/computer-networking-6th-edition-9780132856201-0132856204) | James F Kurose, Keith W Ross +[Design Patterns: Elements of Reusable Object-Oriented Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) | Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides +[Refactoring](https://www.refactoring.com/) | Martin Fowler +[The Architecture of Open Source Applications](http://aosabook.org/en/) | Michael DiBernardo (editor) +[Compilers: Principles, Techniques, and Tools (2nd Edition)](http://www.amazon.com/Compilers-Principles-Techniques-Tools-2nd/dp/0321486811/) | Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman +[Computer Networks (5th Edition)](http://www.amazon.com/Computer-Networks-5th-Andrew-Tanenbaum/dp/0132126958/) | Andrew S. Tanenbaum, David J. Wetherall +[Clean Code](https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882) +[Code Complete](https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670) +[The Pragmatic Programmer](https://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X) +[The Mythical Man-Month](https://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/ref=sr_1_1?s=books&ie=UTF8&qid=1488071430&sr=1-1&keywords=Mythical+Man-Month) +[Structure and Interpretation of Computer Programs](https://mitpress.mit.edu/sicp/full-text/book/book.html) | Hal Abelson, Jerry Sussman, Julie Sussman +[Introduction to Computing: Explorations in Language, Logic, and Machines](http://www.computingbook.org/) | David Evans +[Applied Discrete Structures](http://faculty.uml.edu/klevasseur/ads2/) | Alan Doerr, Ken Levasseur +[Calculus Made Easy](http://www.gutenberg.org/ebooks/33283) | Silvanus P. Thompson +[Grinstead and Snell’s Introduction to Probability](https://math.dartmouth.edu/~prob/prob/prob.pdf) |Charles M. Grinstead, J. Laurie Snell +[Compiler Construction](http://www.ethoberon.ethz.ch/WirthPubl/CBEAll.pdf) | Niklaus Wirth +[Deep Learning](http://www.deeplearningbook.org/) | Ian Goodfellow, Yoshua Bengio and Aaron Courville +[Bayesian Reasoning and Machine Learning](http://web4.cs.ucl.ac.uk/staff/D.Barber/pmwiki/pmwiki.php?n=Brml.HomePage) | David Barber \ No newline at end of file From 03b90676b56bf61e8e6ad7a220294930d465a498 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Tue, 28 Feb 2017 20:28:17 -0500 Subject: [PATCH 082/131] Clean up alternative courses --- extras/courses.md | 210 ++++++------------------------------------- extras/paid-books.md | 114 ----------------------- 2 files changed, 26 insertions(+), 298 deletions(-) delete mode 100644 extras/paid-books.md diff --git a/extras/courses.md b/extras/courses.md index 82e9014..5f88b7f 100644 --- a/extras/courses.md +++ b/extras/courses.md @@ -1,46 +1,14 @@ # Computer Science - Extra Resources -## Free Courses +This is a list of high-quality courses that, for one reason or another, didn't make it into the curriculum. +The most common reasons are that the course isn't available often enough, +or that there was an alternative that fit better into the curriculum. -- [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 (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) - ---- - -### Introduction to Computer Science +## Programming Courses | Duration | Effort :-- | :--: | :--: [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 -[From Nand to Tetris (Part 1) ](https://www.coursera.org/learn/build-a-computer) | 6 weeks | 5-10 hours/week [Introduction to Computer Science (Udacity)](https://www.udacity.com/course/intro-to-computer-science--cs101)| 7 weeks | 10-20 hours/week [An Introduction to Interactive Programming in Python (Part 1)](https://www.coursera.org/learn/interactive-python-1)| 5 weeks | - [An Introduction to Interactive Programming in Python (Part 2)](https://www.coursera.org/learn/interactive-python-2)| - | - @@ -49,20 +17,34 @@ Courses | Duration | Effort [Introduction to Programming with Java Part 2: Writing Good Code](https://prod-edx-mktg-edit.edx.org/course/introduction-programming-java-part-2-uc3mx-it-1-2x)| 5 weeks | 5-7 hours/week [CS For All: Introduction to Computer Science and Python Programming](https://www.edx.org/course/cs-all-introduction-computer-science-harveymuddx-cs005x-0)| 14 weeks | 5-7 hours/week [Programming Basics](https://www.edx.org/course/programming-basics-iitbombayx-cs101-1x)| 9 weeks | 8 hours/week -[Introduction to Logic](https://www.coursera.org/course/intrologic)| 8 weeks | 4-10 hours/week [Introduction to Programming with MATLAB](https://www.coursera.org/learn/matlab)| - | - +[Principles of Reactive Programming](https://www.coursera.org/course/reactive)| 7 weeks | 5-7 hours/week +[Object-Oriented Programming](https://www.edx.org/course/object-oriented-programming-iitbombayx-cs101-2x)| 4 weeks | 8 hours/week +[Introduction to Functional Programming](https://www.edx.org/course/introduction-functional-programming-delftx-fp101x-0)| 7 weeks | 4-6 hours/week -### Math (Mathematical Thinking) +## Math Courses | Duration | Effort :-- | :--: | :--: -[Introduction to Mathematical Thinking](https://www.coursera.org/course/maththink)| 10 weeks | 8-10 hours/week +[Pre-Calculus](https://www.coursera.org/course/precalculus)| 10 weeks | 10-12 hours/week +[Multivariable Calculus](https://www.coursera.org/course/m2o2c2)| 6 weeks | 5-7 hours/week +[Introduction to Probability and Data](https://www.coursera.org/learn/probability-intro)| - | - -### Program Design +## Systems -### Math (Discrete Math) +[Operating System Engineering](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2012/)| - | - +[Introduction to Linux](https://www.edx.org/course/introduction-linux-linuxfoundationx-lfs101x-0)| 8 weeks | 5-8 hours/week +[CompTIA Linux+](https://www.cybrary.it/course/comptia-linux-plus/)| - | 5.25 hours +[Introduction to Operating Systems](https://www.udacity.com/course/introduction-to-operating-systems--ud923)| 8 weeks | 5-8 hours/week +[Advanced Operating Systems](https://www.udacity.com/course/advanced-operating-systems--ud189)| 5 weeks | 5-8 hours/week +[Advanced Operating Systems: Structures And Implementation](https://www.youtube.com/playlist?list=PL-XXv-cvA_iB_5Q8G8kW5idSwNmXypmQE)| 10 weeks | 2-3 hours/week +[Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about) | - | 5-10 hours/week +[CompTIA Network+](https://www.cybrary.it/course/comptia-network-plus/) | - | 32 hours +[Cisco CCNA](https://www.cybrary.it/course/cisco-ccna/) | - | 15.5 hours +[Networking for Web Developers](https://www.udacity.com/course/networking-for-web-developers--ud256) | - | 12 hours +[Computer Networking](https://www.udacity.com/course/computer-networking--ud436) | 12 weeks | 5-8 hours/week -### Algorithms +## Theory Courses | Duration | Effort :-- | :--: | :--: @@ -82,164 +64,24 @@ Courses | Duration | Effort [Algorithms: Design and Analysis, Part 1](https://www.coursera.org/course/algo) | 6 weeks | 5-7 hours/week [Algorithms: Design and Analysis, Part 2](https://www.coursera.org/course/algo2) | 6 weeks | 6-10 hours/week -### Programming Paradigms - -Courses | Duration | Effort -:-- | :--: | :--: -[Principles of Reactive Programming](https://www.coursera.org/course/reactive)| 7 weeks | 5-7 hours/week -[Object-Oriented Programming](https://www.edx.org/course/object-oriented-programming-iitbombayx-cs101-2x)| 4 weeks | 8 hours/week -[Introduction to Functional Programming](https://www.edx.org/course/introduction-functional-programming-delftx-fp101x-0)| 7 weeks | 4-6 hours/week -### Software Testing - -### Math (Calculus) - -Courses | Duration | Effort -:-- | :--: | :--: -[Pre-Calculus](https://www.coursera.org/course/precalculus)| 10 weeks | 10-12 hours/week -[Multivariable Calculus](https://www.coursera.org/course/m2o2c2)| 6 weeks | 5-7 hours/week - -### Software Architecture +## Applications Courses | Duration | Effort :-- | :--: | :--: [Web Application Architectures](https://www.coursera.org/course/webapplications)| 6 weeks | 6-9 hours/week - -### Theory - -### Software Engineering - -Courses | Duration | Effort -:-- | :--: | :--: [Agile Development Using Ruby on Rails - Basics](https://www.edx.org/course/agile-development-using-ruby-rails-uc-berkeleyx-cs169-1x)| 9 weeks | 12 hours/week [Agile Development Using Ruby on Rails - Advanced](https://www.edx.org/course/agile-development-using-ruby-rails-uc-berkeleyx-cs169-2x)| 8 weeks | 12 hours/week [Startup Engineering](https://www.coursera.org/course/startup) | 12 weeks | 2-20 hours/week - -### Math (Probability) - -Courses | Duration | Effort -:-- | :--: | :--: -[Introduction to Probability and Data](https://www.coursera.org/learn/probability-intro)| - | - - -### Computer Architecture - -Courses | Duration | Effort -:-- | :--: | :--: -[Certified Information Systems Auditor](https://www.cybrary.it/course/cisa/#)| - | 8.5 hours -[The Hardware/Software Interface](https://www.coursera.org/course/hwswinterface)| 8 weeks | 10-15 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/)| - | - -[Introduction to Linux](https://www.edx.org/course/introduction-linux-linuxfoundationx-lfs101x-0)| 8 weeks | 5-8 hours/week -[CompTIA Linux+](https://www.cybrary.it/course/comptia-linux-plus/)| - | 5.25 hours -[Introduction to Operating Systems](https://www.udacity.com/course/introduction-to-operating-systems--ud923)| 8 weeks | 5-8 hours/week -[Advanced Operating Systems](https://www.udacity.com/course/advanced-operating-systems--ud189)| 5 weeks | 5-8 hours/week -[Advanced Operating Systems: Structures And Implementation](https://www.youtube.com/playlist?list=PL-XXv-cvA_iB_5Q8G8kW5idSwNmXypmQE)| 10 weeks | 2-3 hours/week - -### Computer Networks - -Courses | Duration | Effort -:-- | :--: | :--: -[Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about) | - | 5-10 hours/week -[CompTIA Network+](https://www.cybrary.it/course/comptia-network-plus/) | - | 32 hours -[Cisco CCNA](https://www.cybrary.it/course/cisco-ccna/) | - | 15.5 hours -[Networking for Web Developers](https://www.udacity.com/course/networking-for-web-developers--ud256) | - | 12 hours -[Computer Networking](https://www.udacity.com/course/computer-networking--ud436) | 12 weeks | 5-8 hours/week - -### Databases - -Courses | Duration | Effort -:-- | :--: | :--: [Using Databases with Python](https://www.coursera.org/learn/python-databases) | 5 weeks | 2-3 hours/week [Database Systems](https://scs.hosted.panopto.com/Panopto/Pages/Sessions/List.aspx#folderID=%22ed2ee867-9610-4bad-94af-5d12c2ea47cd%22) | - | 27 hours [Database Management Essentials](https://www.coursera.org/learn/database-management) | 7 weeks | 4-6 hours/week - -### Cloud Computing - -Courses | Duration | Effort -:-- | :--: | :--: -[CompTIA Cloud+](https://www.cybrary.it/course/comptia-cloud-plus/) | - | 2.5 hours -[Cloud Computing Concepts](https://www.coursera.org/course/cloudcomputing) | 5 weeks | 4-8 hours/week -[Cloud Computing Concepts: Part 2](https://www.coursera.org/course/cloudcomputing2) | 5 weeks | 4-8 hours/week -[Cloud Computing Applications](https://www.coursera.org/course/cloudapplications) | 5 weeks | 10-15 hours/week - -### Math (Linear Algebra) - -Courses | Duration | Effort -:-- | :--: | :--: -[Linear Algebra - Foundations to Frontiers (LAFF)](https://www.edx.org/course/linear-algebra-foundations-frontiers-utaustinx-ut-5-03x)| 15 weeks | 8 hours/week - -### Cryptography - -Courses | Duration | Effort -:-- | :--: | :--: -[Applied Cryptography](https://www.udacity.com/course/applied-cryptography--cs387)| 8 weeks | 6 hours/week -[Cryptography](https://www.coursera.org/learn/cryptography/)| 7 weeks | 4-7 hours/week -[Cryptography](https://www.cybrary.it/course/cryptography/)| - | 2.9 hours - -### Security - -Courses | Duration | Effort -:-- | :--: | :--: -[Usable Security](https://www.coursera.org/learn/usable-security/)| 7 weeks | 5-8 hours/week -[Software Security](https://www.coursera.org/learn/software-security/)| 6 weeks | 3-5 hours/week -[Cybersecurity and Its Ten Domains](https://www.coursera.org/learn/cyber-security-domain/)| 7 weeks | 4-7 hours/week -[Designing and Executing Information Security Strategies](https://www.coursera.org/course/infosec)| 10 weeks | 4-6 hours/week -[CompTIA Security+](https://www.cybrary.it/course/comptia-security-plus/)| - | 9.5 hours -[Cyberwar, Surveillance and Security](https://www.edx.org/course/cyberwar-surveillance-security-adelaidex-cyber101x-0)| 6 weeks | 2-3 hours/week -[Computer and Hacking Forensics](https://www.cybrary.it/course/computer-hacking-forensics-analyst/)| - | 7.1 hours -[Secure Coding](https://www.cybrary.it/course/secure-coding/)| - | 9.5 hours - -### Compilers - -### Parallel Computing - -### UX Design - -### Computer Graphics - -### Artificial Intelligence - -Courses | Duration | Effort -:-- | :--: | :--: -[Discrete Optimization](https://www.coursera.org/course/optimization)| 9 weeks | 10-20 hours/week [Intro to Artificial Intelligence](https://www.udacity.com/course/intro-to-artificial-intelligence--cs271)| 16 weeks | 6-10 hours/week - -### Machine Learning - -Courses | Duration | Effort -:-- | :--: | :--: [Intro to Machine Learning](https://www.udacity.com/course/intro-to-machine-learning--ud120)| 10 weeks | 6-10 hours/week [Machine Learning for Data Science and Analytics](https://www.edx.org/course/machine-learning-data-science-analytics-columbiax-ds102x-0)| 5 weeks | 7-10 hours/week - -### Natural Language Processing - -### Big Data - -Courses | Duration | Effort -:-- | :--: | :--: [Big Data for Smart Cities](https://www.edx.org/course/big-data-smart-cities-ieeex-introdatax)| 4 weeks | 3-5 hours/week [Processing Big Data with Azure HDInsight](https://www.edx.org/course/processing-big-data-azure-hdinsight-microsoft-dat202-1x-0)| 5 weeks | 3-4 hours/week [Big Data Science with the BD2K-LINCS Data Coordination and Integration Center](https://www.coursera.org/course/bd2klincs)| 7 weeks | 4-5 hours/week - -### Data Mining - -Courses | Duration | Effort -:-- | :--: | :--: [Mining Massive Datasets](https://www.coursera.org/course/mmds)| 7 weeks | 8-10 hours/week [Text Retrieval and Search Engines](https://www.coursera.org/learn/text-retrieval)| - | - [Text Mining and Analytics](https://www.coursera.org/learn/text-mining)| - | - -[Cluster Analysis in Data Mining](https://www.coursera.org/learn/cluster-analysis)| - | - - -### Internet of Things - -Courses | Duration | Effort -:-- | :--: | :--: -[Introduction to the Internet of Things and Embedded Systems](https://www.coursera.org/learn/iot/?source=phoenixCdp2016AbTest)| 4 weeks | 1-3 hours/week -[Internet of Things: How did we get here?](https://www.coursera.org/learn/internet-of-things-history/)| 2 weeks | 2-3 hours/week -[Internet of Things: Setting Up Your DragonBoard™ Development Platform](https://www.coursera.org/learn/internet-of-things-dragonboard/)| 10 weeks | 2-3 hours/week -[Internet of Things: Sensing and Actuation From Devices](https://www.coursera.org/learn/internet-of-things-sensing-actuation)| 6 weeks | 3-5 hours/week -[Internet of Things: Communication Technologies](https://www.coursera.org/learn/internet-of-things-communication)| 4 weeks | 1 hours/week -[Internet of Things: MultimediaTechnologies](https://www.coursera.org/learn/internet-of-things-multimedia)| 3 weeks | 1-2 hours/week +[Cluster Analysis in Data Mining](https://www.coursera.org/learn/cluster-analysis)| - | - \ No newline at end of file diff --git a/extras/paid-books.md b/extras/paid-books.md deleted file mode 100644 index 7cebe4f..0000000 --- a/extras/paid-books.md +++ /dev/null @@ -1,114 +0,0 @@ -# Computer Science - Extra Resources - -## Paid Books - -- [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 (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) - ---- - -### Introduction to Computer Science - -Name | Author | ISBN -:-- | :--: | :--: - -### Math (Mathematical Thinking) - -### Program Design - -### Math (Discrete Math) - -Name | Author | ISBN -:-- | :--: | :--: - -### Algorithms - -Name | Author | ISBN -:-- | :--: | :--: - -### Programming Paradigms - -### Software Testing - -### Math (Calculus) - -### Software Architecture - -### Theory - -### Software Engineering - -### Math (Probability) - -### Computer Architecture - -### Operating Systems - -Name | Author | ISBN -:-- | :--: | :--: - -### Computer Networks - -Name | Author | ISBN -:-- | :--: | :--: - -### Databases - -### Cloud Computing - -### Math (Linear Algebra) - -### Cryptography - -### Security - -### Compilers - -Name | Author | ISBN -:-- | :--: | :--: - -### Parallel Computing - -### UX Design - -### Computer Graphics - -### Artificial Intelligence - -### Machine Learning - -### Natural Language Processing - -### Big Data - -### Data Mining - -### Internet of Things From 10f2a4b31ea6c5f5e3709b679e8d73967ad4c229 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Tue, 28 Feb 2017 20:35:34 -0500 Subject: [PATCH 083/131] Fix formatting in extras --- extras/courses.md | 6 ++++-- extras/readings.md | 14 +++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/extras/courses.md b/extras/courses.md index 5f88b7f..1ce6ad7 100644 --- a/extras/courses.md +++ b/extras/courses.md @@ -1,4 +1,4 @@ -# Computer Science - Extra Resources +# Computer Science - Great Courses This is a list of high-quality courses that, for one reason or another, didn't make it into the curriculum. The most common reasons are that the course isn't available often enough, @@ -32,7 +32,9 @@ Courses | Duration | Effort ## Systems -[Operating System Engineering](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2012/)| - | - +Courses | Duration | Effort +:-- | :--: | :--: +[Operating System Engineering](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2012/) | - | - [Introduction to Linux](https://www.edx.org/course/introduction-linux-linuxfoundationx-lfs101x-0)| 8 weeks | 5-8 hours/week [CompTIA Linux+](https://www.cybrary.it/course/comptia-linux-plus/)| - | 5.25 hours [Introduction to Operating Systems](https://www.udacity.com/course/introduction-to-operating-systems--ud923)| 8 weeks | 5-8 hours/week diff --git a/extras/readings.md b/extras/readings.md index 087b87d..3e26a95 100644 --- a/extras/readings.md +++ b/extras/readings.md @@ -11,9 +11,9 @@ Name | Author(s) :-- | :--: [Introduction to Computation and Programming Using Python](https://www.amazon.com/Introduction-Computation-Programming-Using-Python/dp/0262525003/) | John V. Guttag [Discrete Mathematics with Applications (4th Edition)](http://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp/dp/0495391328/) | Susanna S. Epp -[Transaction Processing: Concepts and Techniques](https://www.amazon.com/Transaction-Processing-Concepts-Techniques-Management/dp/1558601902) -[Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World](https://www.amazon.com/Data-Reality-Perspective-Perceiving-Information/dp/1935504215) -[Architecture of a Database System](http://db.cs.berkeley.edu/papers/fntdb07-architecture.pdf) +[Transaction Processing: Concepts and Techniques](https://www.amazon.com/Transaction-Processing-Concepts-Techniques-Management/dp/1558601902) | Jim Gray, Andreas Reuter +[Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World](https://www.amazon.com/Data-Reality-Perspective-Perceiving-Information/dp/1935504215) | William Kent +[Architecture of a Database System](http://db.cs.berkeley.edu/papers/fntdb07-architecture.pdf) | Joseph M. Hellerstein, Michael Stonebraker, James Hamilton [Introduction to Algorithms (3rd Edition)](http://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844/) | Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein [Modern Operating Systems (4th Edition)](http://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/013359162X/) | Andrew S. Tanenbaum, Herbert Bos [Computer Networking: A Top-Down Approach (6th Edition)](http://www.chegg.com/textbooks/computer-networking-6th-edition-9780132856201-0132856204) | James F Kurose, Keith W Ross @@ -22,10 +22,10 @@ Name | Author(s) [The Architecture of Open Source Applications](http://aosabook.org/en/) | Michael DiBernardo (editor) [Compilers: Principles, Techniques, and Tools (2nd Edition)](http://www.amazon.com/Compilers-Principles-Techniques-Tools-2nd/dp/0321486811/) | Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman [Computer Networks (5th Edition)](http://www.amazon.com/Computer-Networks-5th-Andrew-Tanenbaum/dp/0132126958/) | Andrew S. Tanenbaum, David J. Wetherall -[Clean Code](https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882) -[Code Complete](https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670) -[The Pragmatic Programmer](https://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X) -[The Mythical Man-Month](https://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/ref=sr_1_1?s=books&ie=UTF8&qid=1488071430&sr=1-1&keywords=Mythical+Man-Month) +[Clean Code](https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882) | Robert Martin +[Code Complete](https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670) | Steve McConnell +[The Pragmatic Programmer](https://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X) | Andrew Hunt, David Thomas +[The Mythical Man-Month](https://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/) | Fred Brooks, Jr. [Structure and Interpretation of Computer Programs](https://mitpress.mit.edu/sicp/full-text/book/book.html) | Hal Abelson, Jerry Sussman, Julie Sussman [Introduction to Computing: Explorations in Language, Logic, and Machines](http://www.computingbook.org/) | David Evans [Applied Discrete Structures](http://faculty.uml.edu/klevasseur/ads2/) | Alan Doerr, Ken Levasseur From 960ddd4c3da802d12193d74b64fa395eab561ad1 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Tue, 28 Feb 2017 20:39:48 -0500 Subject: [PATCH 084/131] Move Princeton algo to extras --- README.md | 16 ---------------- extras/courses.md | 2 ++ 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 56f8d96..42d95d1 100644 --- a/README.md +++ b/README.md @@ -176,13 +176,6 @@ Courses | Duration | Effort | Prerequisites ### Core theory -Algorithms and data structures is the most important subject you will learn in Core CS, and there are two major course sequences for learning it. -The Princeton Algorithms courses are highly recommended as a more practical, implementation-focused complement to the more theory-focused Stanford Algorithms courses. -Ideally, students would do both sets of courses since they complement each other nicely. -However, Part II of Princeton Algorithms is rarely available, so Stanford Algorithms is the recommended choice if you cannot do both. -Another difference is that Stanford Algorithms assignments can use any programming language; -Princeton Algorithms assignments use Java but don't require extensive Java experience. - **Topics covered**: divide and conquer; sorting and searching; @@ -196,8 +189,6 @@ dynamic programming; NP-completeness; and more. -#### Stanford Algorithms - Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Algorithms (1/4)](https://www.coursera.org/learn/algorithms-divide-conquer) | 4 weeks | 4-8 hours/week | one programming language; proofs; probability @@ -205,13 +196,6 @@ Courses | Duration | Effort | Prerequisites [Algorithms (3/4)](https://www.coursera.org/learn/algorithms-greedy) | 4 weeks | 4-8 hours/week | previous algorithms course [Algorithms (4/4)](https://www.coursera.org/learn/algorithms-npcomplete) | 4 weeks | 4-8 hours/week | previous algorithms course -#### Princeton Algorithms - -Courses | Duration | Effort | Prerequisites -:-- | :--: | :--: | :--: -[Algorithms, Part I](https://www.coursera.org/learn/algorithms-part1) | 6 weeks | 6-12 hours/week | some programming -[Algorithms, Part II](https://www.coursera.org/learn/algorithms-part2) | 6 weeks | 6-12 hours/week | Algorithms, Part I - ### Core applications **Topics covered**: diff --git a/extras/courses.md b/extras/courses.md index 1ce6ad7..d2b7134 100644 --- a/extras/courses.md +++ b/extras/courses.md @@ -50,6 +50,8 @@ Courses | Duration | Effort Courses | Duration | Effort :-- | :--: | :--: +[Algorithms, Part I](https://www.coursera.org/learn/algorithms-part1) | 6 weeks | 6-12 hours/week | some programming +[Algorithms, Part II](https://www.coursera.org/learn/algorithms-part2) | 6 weeks | 6-12 hours/week | Algorithms, Part I [Analysis of Algorithms (Skiena)](http://www3.cs.stonybrook.edu/~skiena/373/) | 15 weeks | 6-8 hours/week [Analysis of Algorithms (Sedgewick)](https://www.coursera.org/course/aofa)| 6 weeks | 6-8 hours/week [Programming Challenges (Skiena)](http://www3.cs.stonybrook.edu/~skiena/392/) | 14 weeks | 6-8 hours/week From 73bd51fa8aac35a5fb83ed1fca52775a3d565a67 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Tue, 28 Feb 2017 21:05:31 -0500 Subject: [PATCH 085/131] Fix rendering error --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 42d95d1..aecca63 100644 --- a/README.md +++ b/README.md @@ -223,9 +223,9 @@ Courses | Duration | Effort | Prerequisites [Computer Graphics](https://www.edx.org/course/computer-graphics-uc-san-diegox-cse167x)| 6 weeks | 12 hours/week | C++ or Java, linear algebra [Cryptography I](https://www.coursera.org/course/crypto)| 6 weeks | 5-7 hours/week | linear algebra, probability [Software Engineering: Introduction](https://www.edx.org/course/software-engineering-introduction-ubcx-softeng1x) | 6 weeks | 8-10 hours/week | Software Construction - Object-Oriented Design -[Software Development Capstone Project](https://www.edx.org/course/software-development-capstone-project-ubcx-softengprjx)**\*** | 6-7 weeks | 8-10 hours/week | Software Engineering: Introduction +[Software Development Capstone Project](https://www.edx.org/course/software-development-capstone-project-ubcx-softengprjx)**1** | 6-7 weeks | 8-10 hours/week | Software Engineering: Introduction -\* **Required** if you intend not to go past Core CS; +**1 Required** if you intend not to go past Core CS; **strongly recommended** even for those who will continue on to Advanced CS. ## Advanced CS From 8a3bf2c1d65425b7e9de2b6fe4595af07796f614 Mon Sep 17 00:00:00 2001 From: hanjiexi Date: Wed, 1 Mar 2017 11:36:02 -0500 Subject: [PATCH 086/131] Add multivariable calculus --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index aecca63..d6436e5 100644 --- a/README.md +++ b/README.md @@ -137,6 +137,8 @@ discrete mathematics; basic statistics; O-notation; graph theory; +vector calculus; +multivariable calculus; probability theory; and more. @@ -146,7 +148,8 @@ Courses | Duration | Effort | Prerequisites [Calculus One](https://www.coursera.org/learn/calculus1)| 16 weeks | 8-10 hours/week | high school math (pre-calculus) [Calculus Two: Sequences and Series](https://www.coursera.org/learn/advanced-calculus)| 7 weeks | 9-10 hours/week | Calculus One [Mathematics for Computer Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-spring-2015/index.htm) | 13 weeks | 5 hours/week | Calculus Two -[Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-2) | 18 weeks | 12 hours/week | calculus +[Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/index.htm) | 13 weeks | 12 hours/week +[Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-2) | 18 weeks | 12 hours/week | calculus (single- and multi-variable) ### Core systems From f0963985049d48057437a6042ef401ee660c33d0 Mon Sep 17 00:00:00 2001 From: hanjiexi Date: Wed, 1 Mar 2017 11:36:50 -0500 Subject: [PATCH 087/131] Fix missing prereqs for MV calculus --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d6436e5..8336402 100644 --- a/README.md +++ b/README.md @@ -148,7 +148,7 @@ Courses | Duration | Effort | Prerequisites [Calculus One](https://www.coursera.org/learn/calculus1)| 16 weeks | 8-10 hours/week | high school math (pre-calculus) [Calculus Two: Sequences and Series](https://www.coursera.org/learn/advanced-calculus)| 7 weeks | 9-10 hours/week | Calculus One [Mathematics for Computer Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-spring-2015/index.htm) | 13 weeks | 5 hours/week | Calculus Two -[Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/index.htm) | 13 weeks | 12 hours/week +[Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/index.htm) | 13 weeks | 12 hours/week | single-variable calculus (Calculus Two) [Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-2) | 18 weeks | 12 hours/week | calculus (single- and multi-variable) ### Core systems From 276fbbf0e05157141a731a8215dd426ec80b6aea Mon Sep 17 00:00:00 2001 From: hanjiexi Date: Wed, 1 Mar 2017 11:42:50 -0500 Subject: [PATCH 088/131] Standardize prereqs formatting --- README.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 8336402..58cc7e7 100644 --- a/README.md +++ b/README.md @@ -144,12 +144,12 @@ and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: -[Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-frontiers-utaustinx-ut-5-04x#!)| 15 weeks | 8 hours/week | high school math (pre-calculus) -[Calculus One](https://www.coursera.org/learn/calculus1)| 16 weeks | 8-10 hours/week | high school math (pre-calculus) +[Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-frontiers-utaustinx-ut-5-04x#!)| 15 weeks | 8 hours/week | pre-calculus +[Calculus One](https://www.coursera.org/learn/calculus1)| 16 weeks | 8-10 hours/week | pre-calculus [Calculus Two: Sequences and Series](https://www.coursera.org/learn/advanced-calculus)| 7 weeks | 9-10 hours/week | Calculus One -[Mathematics for Computer Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-spring-2015/index.htm) | 13 weeks | 5 hours/week | Calculus Two +[Mathematics for Computer Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-spring-2015/index.htm) | 13 weeks | 5 hours/week | single variable calculus (Calculus Two) [Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/index.htm) | 13 weeks | 12 hours/week | single-variable calculus (Calculus Two) -[Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-2) | 18 weeks | 12 hours/week | calculus (single- and multi-variable) +[Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-2) | 18 weeks | 12 hours/week | single- and multi-variable calculus ### Core systems @@ -171,7 +171,7 @@ and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Build a Modern Computer from First Principles: From Nand to Tetris](https://www.coursera.org/learn/build-a-computer) | 6 weeks | 7-13 hours/week | none -[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | Part I +[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | From Nand to Tetris Part I [Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| - | 4–12 hours/week | algebra, probability, basic CS #### Readings @@ -194,10 +194,10 @@ and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: -[Algorithms (1/4)](https://www.coursera.org/learn/algorithms-divide-conquer) | 4 weeks | 4-8 hours/week | one programming language; proofs; probability -[Algorithms (2/4)](https://www.coursera.org/learn/algorithms-graphs-data-structures) | 4 weeks | 4-8 hours/week | previous algorithms course -[Algorithms (3/4)](https://www.coursera.org/learn/algorithms-greedy) | 4 weeks | 4-8 hours/week | previous algorithms course -[Algorithms (4/4)](https://www.coursera.org/learn/algorithms-npcomplete) | 4 weeks | 4-8 hours/week | previous algorithms course +[Algorithms (1/4)](https://www.coursera.org/learn/algorithms-divide-conquer) | 4 weeks | 4-8 hours/week | one programming language, proofs, probability +[Algorithms (2/4)](https://www.coursera.org/learn/algorithms-graphs-data-structures) | 4 weeks | 4-8 hours/week | Algorithms (1/4) +[Algorithms (3/4)](https://www.coursera.org/learn/algorithms-greedy) | 4 weeks | 4-8 hours/week | Algorithms (2/4) +[Algorithms (4/4)](https://www.coursera.org/learn/algorithms-npcomplete) | 4 weeks | 4-8 hours/week | Algorithms (3/4) ### Core applications @@ -282,10 +282,10 @@ system call interface; Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Electricity and Magnetism, Part 1](https://www.edx.org/course/electricity-magnetism-part-1-ricex-phys102-1x-0)1 | 7 weeks | 8-10 hours/week | calculus, basic mechanics -[Electricity and Magnetism, Part 2](https://www.edx.org/course/electricity-magnetism-part-2-ricex-phys102-2x-0) | 7 weeks | 8-10 hours/week | Part 1 +[Electricity and Magnetism, Part 2](https://www.edx.org/course/electricity-magnetism-part-2-ricex-phys102-2x-0) | 7 weeks | 8-10 hours/week | Electricity and Magnetism, Part 1 [Computation Structures 1: Digital Circuits](https://www.edx.org/course/computation-structures-part-1-digital-mitx-6-004-1x-0)2 | 10 weeks | 6 hours/week | electricity, magnetism -[Computation Structures 2: Computer Architecture](https://www.edx.org/course/computation-structures-2-computer-mitx-6-004-2x) | 10 weeks | 6 hours/week | previous course -[Computation Structures 3: Computer Organization](https://www.edx.org/course/computation-structures-3-computer-mitx-6-004-3x-0) | 10 weeks | 6 hours/week | previous course +[Computation Structures 2: Computer Architecture](https://www.edx.org/course/computation-structures-2-computer-mitx-6-004-2x) | 10 weeks | 6 hours/week | Computation Structures 1 +[Computation Structures 3: Computer Organization](https://www.edx.org/course/computation-structures-3-computer-mitx-6-004-3x-0) | 10 weeks | 6 hours/week | Computation Structures 2 [ops-class.org - Hack the Kernel](https://www.ops-class.org/) | 15 weeks | 6 hours/week | algorithms **1 Note**: @@ -314,7 +314,7 @@ and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: -[Introduction to Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 hours/week | high school math +[Introduction to Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 hours/week | pre-calculus [Introduction to Logic](https://www.coursera.org/learn/logic-introduction) | 10 weeks | 4-8 hours/week | set theory [Automata Theory](https://lagunita.stanford.edu/courses/course-v1:ComputerScience+Automata+Fall2016/about) | 8 weeks | 10 hours/week | discrete mathematics, logic, algorithms [Computational Geometry](https://www.edx.org/course/computational-geometry-tsinghuax-70240183x) | 16 weeks | 8 hours/week | algorithms, C++ From 89f041f21289b5a2fe7655c45314a13747cfc3e0 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Wed, 1 Mar 2017 17:52:39 -0500 Subject: [PATCH 089/131] Move probability intro to advanced --- README.md | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 58cc7e7..50bfabd 100644 --- a/README.md +++ b/README.md @@ -138,8 +138,7 @@ basic statistics; O-notation; graph theory; vector calculus; -multivariable calculus; -probability theory; +discrete probability; and more. Courses | Duration | Effort | Prerequisites @@ -148,8 +147,6 @@ Courses | Duration | Effort | Prerequisites [Calculus One](https://www.coursera.org/learn/calculus1)| 16 weeks | 8-10 hours/week | pre-calculus [Calculus Two: Sequences and Series](https://www.coursera.org/learn/advanced-calculus)| 7 weeks | 9-10 hours/week | Calculus One [Mathematics for Computer Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-spring-2015/index.htm) | 13 weeks | 5 hours/week | single variable calculus (Calculus Two) -[Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/index.htm) | 13 weeks | 12 hours/week | single-variable calculus (Calculus Two) -[Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-2) | 18 weeks | 12 hours/week | single- and multi-variable calculus ### Core systems @@ -262,6 +259,18 @@ Courses | Duration | Effort | Prerequisites [Introduction to Parallel Programming](https://www.udacity.com/course/intro-to-parallel-programming--cs344) | 12 weeks | - | C, algorithms [Software Architecture & Design](https://www.udacity.com/course/software-architecture-design--ud821)| 8 weeks | 6 hours/week | software engineering in Java +### Advanced math + +**Topics covered**: +real analysis; +multivariable integrals; +multivariable differentials; +probability theory; + +[Introduction to Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 hours/week | pre-calculus +[Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/index.htm) | 13 weeks | 12 hours/week | single-variable calculus (Calculus Two) +[Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-2) | 18 weeks | 12 hours/week | single- and multi-variable calculus + ### Advanced systems **Topics covered**: @@ -300,7 +309,6 @@ A shorter, less intense (but still very advanced) alternative to Computation Str ### Advanced theory **Topics covered**: -real analysis; formal languages; Turing machines; computability; @@ -314,7 +322,6 @@ and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: -[Introduction to Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 hours/week | pre-calculus [Introduction to Logic](https://www.coursera.org/learn/logic-introduction) | 10 weeks | 4-8 hours/week | set theory [Automata Theory](https://lagunita.stanford.edu/courses/course-v1:ComputerScience+Automata+Fall2016/about) | 8 weeks | 10 hours/week | discrete mathematics, logic, algorithms [Computational Geometry](https://www.edx.org/course/computational-geometry-tsinghuax-70240183x) | 16 weeks | 8 hours/week | algorithms, C++ From ab0b042227bb365fb8c01c1ee27fec2b5f0600bd Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Wed, 1 Mar 2017 17:56:25 -0500 Subject: [PATCH 090/131] Fix errors --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 50bfabd..e9e97eb 100644 --- a/README.md +++ b/README.md @@ -230,7 +230,7 @@ Courses | Duration | Effort | Prerequisites ## Advanced CS -After completing **every single required course** in Core CS, students should choose a subset of courses from Advanced CS based on interest. +After completing **every required course** in Core CS, students should choose a subset of courses from Advanced CS based on interest. Not every course from a subcategory needs to be taken. But students should take *every* course that is relevant to the field they intend to go into. @@ -266,7 +266,10 @@ real analysis; multivariable integrals; multivariable differentials; probability theory; +and more. +Courses | Duration | Effort | Prerequisites +:-- | :--: | :--: | :--: [Introduction to Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 hours/week | pre-calculus [Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/index.htm) | 13 weeks | 12 hours/week | single-variable calculus (Calculus Two) [Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-2) | 18 weeks | 12 hours/week | single- and multi-variable calculus @@ -287,6 +290,7 @@ parallel processing; virtual memory; synchronization primitives; system call interface; +and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: From eb7931ea0c45617cf5f8b42802345026a17ffdac Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 5 Mar 2017 09:53:16 -0500 Subject: [PATCH 091/131] Clean up programming alternatives --- extras/courses.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/extras/courses.md b/extras/courses.md index d2b7134..273ea3b 100644 --- a/extras/courses.md +++ b/extras/courses.md @@ -9,17 +9,13 @@ or that there was an alternative that fit better into the curriculum. Courses | Duration | Effort :-- | :--: | :--: [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 [Introduction to Computer Science (Udacity)](https://www.udacity.com/course/intro-to-computer-science--cs101)| 7 weeks | 10-20 hours/week [An Introduction to Interactive Programming in Python (Part 1)](https://www.coursera.org/learn/interactive-python-1)| 5 weeks | - [An Introduction to Interactive Programming in Python (Part 2)](https://www.coursera.org/learn/interactive-python-2)| - | - -[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 -[Introduction to Programming with Java Part 1: Starting to Code with Java](https://prod-edx-mktg-edit.edx.org/course/introduction-programming-java-part-1-uc3mx-it-1-1x-0)| 5 weeks | 5-7 hours/week -[Introduction to Programming with Java Part 2: Writing Good Code](https://prod-edx-mktg-edit.edx.org/course/introduction-programming-java-part-2-uc3mx-it-1-2x)| 5 weeks | 5-7 hours/week -[CS For All: Introduction to Computer Science and Python Programming](https://www.edx.org/course/cs-all-introduction-computer-science-harveymuddx-cs005x-0)| 14 weeks | 5-7 hours/week [Programming Basics](https://www.edx.org/course/programming-basics-iitbombayx-cs101-1x)| 9 weeks | 8 hours/week -[Introduction to Programming with MATLAB](https://www.coursera.org/learn/matlab)| - | - -[Principles of Reactive Programming](https://www.coursera.org/course/reactive)| 7 weeks | 5-7 hours/week [Object-Oriented Programming](https://www.edx.org/course/object-oriented-programming-iitbombayx-cs101-2x)| 4 weeks | 8 hours/week +[Introduction to Programming with MATLAB](https://www.coursera.org/learn/matlab)| - | - [Introduction to Functional Programming](https://www.edx.org/course/introduction-functional-programming-delftx-fp101x-0)| 7 weeks | 4-6 hours/week ## Math From 5339b91d7725137cd77f02e5be6cd629d10e9906 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 5 Mar 2017 09:57:38 -0500 Subject: [PATCH 092/131] Clean up math+systems alternatives --- extras/courses.md | 9 --------- 1 file changed, 9 deletions(-) diff --git a/extras/courses.md b/extras/courses.md index 273ea3b..1d0f356 100644 --- a/extras/courses.md +++ b/extras/courses.md @@ -22,8 +22,6 @@ Courses | Duration | Effort Courses | Duration | Effort :-- | :--: | :--: -[Pre-Calculus](https://www.coursera.org/course/precalculus)| 10 weeks | 10-12 hours/week -[Multivariable Calculus](https://www.coursera.org/course/m2o2c2)| 6 weeks | 5-7 hours/week [Introduction to Probability and Data](https://www.coursera.org/learn/probability-intro)| - | - ## Systems @@ -31,15 +29,8 @@ Courses | Duration | Effort Courses | Duration | Effort :-- | :--: | :--: [Operating System Engineering](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2012/) | - | - -[Introduction to Linux](https://www.edx.org/course/introduction-linux-linuxfoundationx-lfs101x-0)| 8 weeks | 5-8 hours/week -[CompTIA Linux+](https://www.cybrary.it/course/comptia-linux-plus/)| - | 5.25 hours [Introduction to Operating Systems](https://www.udacity.com/course/introduction-to-operating-systems--ud923)| 8 weeks | 5-8 hours/week [Advanced Operating Systems](https://www.udacity.com/course/advanced-operating-systems--ud189)| 5 weeks | 5-8 hours/week -[Advanced Operating Systems: Structures And Implementation](https://www.youtube.com/playlist?list=PL-XXv-cvA_iB_5Q8G8kW5idSwNmXypmQE)| 10 weeks | 2-3 hours/week -[Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about) | - | 5-10 hours/week -[CompTIA Network+](https://www.cybrary.it/course/comptia-network-plus/) | - | 32 hours -[Cisco CCNA](https://www.cybrary.it/course/cisco-ccna/) | - | 15.5 hours -[Networking for Web Developers](https://www.udacity.com/course/networking-for-web-developers--ud256) | - | 12 hours [Computer Networking](https://www.udacity.com/course/computer-networking--ud436) | 12 weeks | 5-8 hours/week ## Theory From 224cd6ca67120c6ef9f18f45e55708d2adf46e7f Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 5 Mar 2017 10:08:30 -0500 Subject: [PATCH 093/131] Clean up theory alternatives --- extras/courses.md | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/extras/courses.md b/extras/courses.md index 1d0f356..b661c5e 100644 --- a/extras/courses.md +++ b/extras/courses.md @@ -39,21 +39,15 @@ Courses | Duration | Effort :-- | :--: | :--: [Algorithms, Part I](https://www.coursera.org/learn/algorithms-part1) | 6 weeks | 6-12 hours/week | some programming [Algorithms, Part II](https://www.coursera.org/learn/algorithms-part2) | 6 weeks | 6-12 hours/week | Algorithms, Part I +[Analysis of Algorithms (Sedgewick)](https://www.coursera.org/learn/analysis-of-algorithms) | 6 weeks | 6-8 hours/week [Analysis of Algorithms (Skiena)](http://www3.cs.stonybrook.edu/~skiena/373/) | 15 weeks | 6-8 hours/week -[Analysis of Algorithms (Sedgewick)](https://www.coursera.org/course/aofa)| 6 weeks | 6-8 hours/week [Programming Challenges (Skiena)](http://www3.cs.stonybrook.edu/~skiena/392/) | 14 weeks | 6-8 hours/week -[Mathematical Logic and Algorithms Theory](https://iversity.org/en/courses/mathematical-logic-and-algorithms-theory) | 7 weeks | 3-4 hours/week -[Algorithmic Toolbox](https://www.coursera.org/learn/algorithmic-toolbox/) | 5 weeks | 4-8 hours/week -[Algorithms on Graphs and Trees](https://www.coursera.org/learn/algorithms-on-graphs-and-trees/) | - | - -[Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/) | - | - -[Advanced Algorithms and Complexity](https://www.coursera.org/learn/advanced-algorithms-and-complexity/) | - | - +[Data Structures and Algorithms (Specialization)](https://www.coursera.org/specializations/data-structures-algorithms) | 25 weeks | 3-10 hours/week [Algorithmic Thinking (Part 1)](https://www.coursera.org/learn/algorithmic-thinking-1/) | - | - [Algorithmic Thinking (Part 2)](https://www.coursera.org/learn/algorithmic-thinking-2/) | - | - [Statistical Mechanics: Algorithms and Computations](https://www.coursera.org/learn/statistical-mechanics/) | - | - [Approximation Algorithms Part I](https://www.coursera.org/learn/approximation-algorithms-part-1/) | - | - [Approximation Algorithms Part II](https://www.coursera.org/learn/approximation-algorithms-part-2/) | - | - -[Algorithms: Design and Analysis, Part 1](https://www.coursera.org/course/algo) | 6 weeks | 5-7 hours/week -[Algorithms: Design and Analysis, Part 2](https://www.coursera.org/course/algo2) | 6 weeks | 6-10 hours/week ## Applications From b50dfb1d297f2ef59f7f2d81cbdaef97f9bf7b33 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 5 Mar 2017 10:13:01 -0500 Subject: [PATCH 094/131] Clean up app alternatives --- extras/courses.md | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/extras/courses.md b/extras/courses.md index b661c5e..ec985a0 100644 --- a/extras/courses.md +++ b/extras/courses.md @@ -53,20 +53,11 @@ Courses | Duration | Effort Courses | Duration | Effort :-- | :--: | :--: -[Web Application Architectures](https://www.coursera.org/course/webapplications)| 6 weeks | 6-9 hours/week -[Agile Development Using Ruby on Rails - Basics](https://www.edx.org/course/agile-development-using-ruby-rails-uc-berkeleyx-cs169-1x)| 9 weeks | 12 hours/week -[Agile Development Using Ruby on Rails - Advanced](https://www.edx.org/course/agile-development-using-ruby-rails-uc-berkeleyx-cs169-2x)| 8 weeks | 12 hours/week -[Startup Engineering](https://www.coursera.org/course/startup) | 12 weeks | 2-20 hours/week [Using Databases with Python](https://www.coursera.org/learn/python-databases) | 5 weeks | 2-3 hours/week [Database Systems](https://scs.hosted.panopto.com/Panopto/Pages/Sessions/List.aspx#folderID=%22ed2ee867-9610-4bad-94af-5d12c2ea47cd%22) | - | 27 hours [Database Management Essentials](https://www.coursera.org/learn/database-management) | 7 weeks | 4-6 hours/week [Intro to Artificial Intelligence](https://www.udacity.com/course/intro-to-artificial-intelligence--cs271)| 16 weeks | 6-10 hours/week [Intro to Machine Learning](https://www.udacity.com/course/intro-to-machine-learning--ud120)| 10 weeks | 6-10 hours/week [Machine Learning for Data Science and Analytics](https://www.edx.org/course/machine-learning-data-science-analytics-columbiax-ds102x-0)| 5 weeks | 7-10 hours/week -[Big Data for Smart Cities](https://www.edx.org/course/big-data-smart-cities-ieeex-introdatax)| 4 weeks | 3-5 hours/week [Processing Big Data with Azure HDInsight](https://www.edx.org/course/processing-big-data-azure-hdinsight-microsoft-dat202-1x-0)| 5 weeks | 3-4 hours/week -[Big Data Science with the BD2K-LINCS Data Coordination and Integration Center](https://www.coursera.org/course/bd2klincs)| 7 weeks | 4-5 hours/week -[Mining Massive Datasets](https://www.coursera.org/course/mmds)| 7 weeks | 8-10 hours/week -[Text Retrieval and Search Engines](https://www.coursera.org/learn/text-retrieval)| - | - -[Text Mining and Analytics](https://www.coursera.org/learn/text-mining)| - | - -[Cluster Analysis in Data Mining](https://www.coursera.org/learn/cluster-analysis)| - | - \ No newline at end of file +[Big Data Science with the BD2K-LINCS Data Coordination and Integration Center](https://www.coursera.org/course/bd2klincs)| 7 weeks | 4-5 hours/week \ No newline at end of file From da673b30028e0d2cb9c83c9838dafdff3137b8d4 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 5 Mar 2017 10:17:45 -0500 Subject: [PATCH 095/131] Move ProgLang back to end of Core prog --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e9e97eb..f7ab61a 100644 --- a/README.md +++ b/README.md @@ -109,11 +109,11 @@ and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: -Programming Languages ([A](https://www.coursera.org/learn/programming-languages), [B](https://www.coursera.org/learn/programming-languages-part-b), [C](https://www.coursera.org/learn/programming-languages-part-c)) | 10 weeks | 8-16 hours/week | introductory programming [How to Code - Simple Data](https://www.edx.org/course/how-code-simple-data-ubcx-htc1x) | 7 weeks | 8-10 hours/week | none [How to Code - Complex Data](https://www.edx.org/course/how-code-complex-data-ubcx-htc2x) | 6 weeks | 8-10 hours/week | How to Code: Simple Data [Software Construction - Data Abstraction](https://www.edx.org/course/software-construction-data-abstraction-ubcx-softconst1x) | 6 weeks | 8-10 hours/week | How to Code - Complex Data [Software Construction - Object-Oriented Design](https://www.edx.org/course/software-construction-object-oriented-ubcx-softconst2x) | 6 weeks | 8-10 hours/week | Software Construction - Data Abstraction +Programming Languages ([A](https://www.coursera.org/learn/programming-languages), [B](https://www.coursera.org/learn/programming-languages-part-b), [C](https://www.coursera.org/learn/programming-languages-part-c)) | 10 weeks | 8-16 hours/week | recommended: C and Java #### Readings - **Required** to learn about monads, laziness, purity: [Learn You a Haskell for a Great Good!](http://learnyouahaskell.com/) From 8c25271fd91362b4fa47016f03da922fe42f46c6 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 5 Mar 2017 10:22:32 -0500 Subject: [PATCH 096/131] Clarify Intro CS requirements --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f7ab61a..9c61173 100644 --- a/README.md +++ b/README.md @@ -69,18 +69,18 @@ See also: [Prerequisites](#prerequisites) Use the first course, CS50, to determine if Computer Science is right for you. Only proceed in the curriculum if it really excites you. -If it does, use the second and third courses to gain the fundamental skills you need to excel at teaching yourself Computer Science. +Feel free to use the second and third **optional** courses to gain the fundamental skills you need to excel at teaching yourself Computer Science; +they are very lightweight courses so it's suggested take them concurrently with another course. **Topics covered**: imperative programming; procedural programming; C; +manual memory management; basic data structures and algorithms; basic Python; SQL; basic HTML, CSS, JavaScript; -learning skills; -cardinality; and more. Courses | Duration | Effort | Prerequisites From db0fd29ff306b98fe919041518a9bccc01310693 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 5 Mar 2017 10:36:56 -0500 Subject: [PATCH 097/131] Move contributor guide to separate file --- CONTRIBUTING.md | 9 +++++++++ README.md | 14 +------------- 2 files changed, 10 insertions(+), 13 deletions(-) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..f7c6ba9 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,9 @@ +# 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. + +You can also [fork this project](https://help.github.com/articles/fork-a-repo/) and send a [pull request](https://help.github.com/articles/using-pull-requests/) to fix any mistakes that you have found. + +If you want to suggest a new resource, send a pull request adding such resource to the [extras](https://github.com/open-source-society/computer-science/tree/master/extras) section. + +The **extras** section is a place where all of us will be able to submit interesting additional articles, books, courses and specializations, keeping our curriculum *as immutable and concise as possible*. \ No newline at end of file diff --git a/README.md b/README.md index 9c61173..e4c0463 100644 --- a/README.md +++ b/README.md @@ -538,18 +538,6 @@ Now we have a stable version of the curriculum, which won't change anymore, only Our students can trust in this curriculum because it has been carefully planned and covers the major core topics that a conventional Computer Science program covers. -# 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. - -You can also [fork this project](https://help.github.com/articles/fork-a-repo/) and send a [pull request](https://help.github.com/articles/using-pull-requests/) to fix any mistakes that you have found. - -If you want to suggest a new resource, send a pull request adding such resource to the [extras](https://github.com/open-source-society/computer-science/tree/master/extras) section. - -The **extras** section is a place where all of us will be able to submit interesting additional articles, books, courses and specializations, keeping our curriculum *as immutable and concise as possible*. - -**Let's do it together! :smile:** - # Community Subscribe to [/r/opensourcesociety](https://www.reddit.com/r/opensourcesociety/)! @@ -580,4 +568,4 @@ Add **Open Source Society University** to your [Facebook](https://www.facebook.c - [Stanford University](https://lagunita.stanford.edu/) - [MIT Open Courseware](http://ocw.mit.edu/courses/#electrical-engineering-and-computer-science) - [A DIY Computer Science Education](https://bradfieldcs.com/diy/) -- [Obtaining a Thorough CS Background Online](http://spin.atomicobject.com/2015/05/15/obtaining-thorough-cs-background-online/) +- [Obtaining a Thorough CS Background Online](http://spin.atomicobject.com/2015/05/15/obtaining-thorough-cs-background-online/) \ No newline at end of file From 01238c766ee86287a9afe7bfb4b182dd4632aff2 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 5 Mar 2017 14:40:03 -0500 Subject: [PATCH 098/131] Change to shorter image --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e4c0463..80241fd 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![Open Source Society University (OSSU)](http://i.imgur.com/GjEbgIJ.png) +![Open Source Society University (OSSU)](http://i.imgur.com/Cxv8DM4.png)

Open Source Society University

From ed0519cf884cc17c2cf2b36b91d313a963098a5b Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 5 Mar 2017 16:42:45 -0500 Subject: [PATCH 099/131] Condense readme --- CHANGELOG.md | 8 +- LICENSE | 2 +- README.md | 221 ++++++++++++++++++--------------------------- REQUIREMENTS.md | 3 + extras/readings.md | 1 + 5 files changed, 101 insertions(+), 134 deletions(-) create mode 100644 REQUIREMENTS.md diff --git a/CHANGELOG.md b/CHANGELOG.md index d7d9dbf..ac20047 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,13 @@ # Change Log All notable changes to this project will be documented in this file. -This project adheres to [Semantic Versioning](http://semver.org/). +This project adheres *in spirit* to [Semantic Versioning](http://semver.org/): +- "MAJOR" updates correspond to changing the topics studied +- "MINOR" updates correspond to fulfilling a topical requirement using a different class +- "PATCH" updates correspond to purely aesthetic and non-essential additions/removals + +## [7.0] 2017-03-05 +TODO ## [6.0] 2016-10-09 ### Updated diff --git a/LICENSE b/LICENSE index 05434d2..2b7761f 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2015 Open Source Society +Copyright (c) 2017 Open Source Society Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 80241fd..6b7e0c2 100644 --- a/README.md +++ b/README.md @@ -15,36 +15,71 @@ # Contents -- [About](#about) -- [Motivation & Preparation](#motivation--preparation) +- [Summary](#summary) - [Curriculum](#curriculum) -- [How to use this guide](#how-to-use-this-guide) -- [Prerequisites](#prerequisites) -- [Changelog](#changelog) -- [How to collaborate](#how-to-collaborate) + - [Prerequisites](#prerequisites) + - [Intro CS](#intro-cs) + - [Core CS](#core-cs) + - [Advanced CS](#advanced-cs) + - [Final project](#final-project) + - [Pro CS](#pro-cs) - [Community](#community) -- [Team](#team) + - [How to show your progress](#how-to-show-your-progress) + - [Team](#team) - [References](#references) -# About +# Summary -This is a solid path for those of you who want to complete a **Computer Science** curriculum on your own time, at little to no cost, with courses from the best universities in the world. +The OSSU curriculum is a **complete education in computer science** using online materials. +It's not merely for career training or professional development. +It's for those who want a proper, *well-rounded* grounding in concepts fundamental to all computing disciplines, +and for those who have the discipline, will, and (most importantly!) good habits to obtain this education largely on their own, +but with support from a worldwide community of fellow learners. -In our curriculum, we give preference to MOOC (Massive Open Online Course) style courses because these courses were created with our style of learning in mind; -but we include readings where appropriate. -The curriculum then concludes with a final project to show off your skills to your friends and future employers. +It is designed according to the degree requirements of undergraduate computer science majors, minus general education (non-CS) requirements, +as it is assumed most of the people following this curriculum are already educated outside the field of CS. +The courses themselves are among the very best in the world, often coming from Harvard, Princeton, MIT, etc., +but specifically chosen to meet the following criteria. -# Motivation & Preparation +**Courses must**: +- Be open for enrollment +- Run regularly (ideally in self-paced format, otherwise running at least once a month or so) +- Fulfill the [academic requirements](REQUIREMENTS.md) of OSSU +- Fit neatly into the progression of the curriculum with respect to topics and difficulty level +- Be of generally high quality in teaching materials and pedagogical principles -Here is an interesting link that can make all the difference in your journey. -It's a motivational video that shows a guy that went through the "MIT Challenge", which consists of learning the entire 4-year MIT curriculum for Computer Science in *1 year*. +When no course meets the above criteria, the coursework is supplemented with a book. +When there are courses or books that don't fit into the curriculum but are otherwise of high quality, +they belong in [extras/courses](extras/courses.md) or [extras/readings](extras/readings.md). -- [MIT Challenge](https://www.scotthyoung.com/blog/myprojects/mit-challenge-2/) +**Organization**. The curriculum is designed as follows: +- *Intro CS*: for students to try out CS and see if it's right for them +- *Core CS*: corresponds roughly to the first three years of a computer science curriculum, taking classes that all majors would be required to take +- *Advanced CS*: corresponds roughly to the final year of a computer science curriculum, taking electives according to the student's interests +- *Final Project*: a project for students to validate, consolidate, and display their knowledge, to be evaluated by their peers worldwide +- *Pro CS*: graduate-level specializations students can elect to take after completing the above curriculum if they want to maximize their chances of getting a good job -**Are you ready to get started?** +**Duration**. It is possible to finish Core CS within about 2 years if you plan carefully and devote roughly 18-22 hours/week to your studies. +Courses in Core CS should be taken linearly if possible, but since a perfectly linear progression is rarely possible, +each class's prerequisites is specified so that you can design a logical but non-linear progression +based on the class schedules and your own life plans. + +**Cost**. All or nearly all course material prior to Pro CS is available for free, +however some courses may charge money for assignments/tests/projects to be graded. +Note that Coursera offers [financial aid](https://learner.coursera.help/hc/en-us/articles/209819033-Apply-for-Financial-Aid). +Decide how much or how little to spend based on your own time and budget; +just remember that you can't purchase success! + +**Content policy**: If you plan on showing off some of your coursework publicly, you must share only files that you are allowed to. +*Do NOT disrespect the code of conduct* that you signed in the beginning of each course! + +**How to contribute**: please see [CONTRIBUTING](CONTRIBUTING.md). # Curriculum +**Curriculum version**: `7.0` (see [CHANGELOG](CHANGELOG.md)) + +- [Prerequisites](#prerequisites) - [Intro CS](#intro-cs) - [Core CS](#core-cs) - [Core programming](#core-programming) @@ -61,10 +96,16 @@ It's a motivational video that shows a guy that went through the "MIT Challenge" - [Final project](#final-project) - [Pro CS](#pro-cs) -See also: [Prerequisites](#prerequisites) - --- +## Prerequisites + +- [Core CS](#core-cs) assumes the student has already taken high school math and physics, including algebra, geometry, and pre-calculus. +Some high school graduates will have already taken AP Calculus, but this is usually only about 3/4 of a college calculus class, so the calculus courses in the curriculum are still recommended. +- [Advanced CS](#advanced-cs) assumes the student has already taken the entirety of Core CS +and is knowledgeable enough now to decide which electives to take. +- Note that [Advanced systems](#advanced-systems) assumes the student has taken a basic physics course (e.g. AP Physics in high school). + ## Intro CS Use the first course, CS50, to determine if Computer Science is right for you. @@ -85,12 +126,14 @@ and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: -[Introduction to Computer Science - CS50](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x#!) | 12 weeks | 10-20 hours/week | none +[Introduction to Computer Science - CS50](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x#!) ([alt](https://cs50.harvard.edu/)) | 12 weeks | 10-20 hours/week | none [Learning How to Learn](https://www.coursera.org/learn/learning-how-to-learn) | 4 weeks | 2 hours/week | none [Effective Thinking Through Mathematics](https://www.edx.org/course/effective-thinking-through-mathematics-utaustinx-ut-9-01x-0) | 4 weeks | 2 hours/week | none ## Core CS +All coursework under Core CS is **required**, unless otherwise indicated. + ### Core programming **Topics covered**: functional programming; @@ -143,8 +186,8 @@ and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: -[Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-frontiers-utaustinx-ut-5-04x#!)| 15 weeks | 8 hours/week | pre-calculus -[Calculus One](https://www.coursera.org/learn/calculus1)| 16 weeks | 8-10 hours/week | pre-calculus +[Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-frontiers-utaustinx-ut-5-04x#!) ([alt](http://ulaff.net/)) | 15 weeks | 8 hours/week | pre-calculus +[Calculus One](https://www.coursera.org/learn/calculus1) ([alt](https://mooculus.osu.edu/)) | 16 weeks | 8-10 hours/week | pre-calculus [Calculus Two: Sequences and Series](https://www.coursera.org/learn/advanced-calculus)| 7 weeks | 9-10 hours/week | Calculus One [Mathematics for Computer Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-spring-2015/index.htm) | 13 weeks | 5 hours/week | single variable calculus (Calculus Two) @@ -167,7 +210,7 @@ and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: -[Build a Modern Computer from First Principles: From Nand to Tetris](https://www.coursera.org/learn/build-a-computer) | 6 weeks | 7-13 hours/week | none +[Build a Modern Computer from First Principles: From Nand to Tetris](https://www.coursera.org/learn/build-a-computer) ([alt](http://www.nand2tetris.org/)) | 6 weeks | 7-13 hours/week | none [Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | From Nand to Tetris Part I [Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| - | 4–12 hours/week | algebra, probability, basic CS @@ -371,6 +414,17 @@ 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/open-source-society/computer-science)` - HTML: `Open Source Society University - Computer Science` +### Evaluation + +Upon completing your final project, use our [community](#community) channels to announce it. +Your peers and mentors from OSSU will then informally evaluate your project. +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 — and taking it in stride. + +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! @@ -390,7 +444,7 @@ 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. - + ## Pro CS After completing the requirements of the curriculum above, you will have completed the equivalent of a full bachelor's degree in Computer Science, or quite close to one. @@ -420,45 +474,18 @@ These aren't the only specializations you can choose. Check the following websit ![keep learning](http://i.imgur.com/REQK0VU.jpg) -# How to use this guide +# Community -## Order of the classes +- 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/issues). +- We also have a chat room! [![Join the chat at https://gitter.im/open-source-society/computer-science](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/open-source-society/computer-science?utm_campaign=pr-badge&utm_content=badge&utm_medium=badge&utm_source=badge) +- Add **Open Source Society University** to your [Facebook](https://www.facebook.com/ossuniversity) profile! -This guide was developed to be flexible. -Ideally, Core CS can be consumed in a linear approach, i.e. you complete one course at a time, but in reality different people have different preferences with regard to how many courses they wish to take at once. -Plus, different courses are available at different times and have wildly different time requirements. +> **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**. -Therefore, many students will take the courses in a non-linear order, based on availability and how much time they have to devote to each class. -However, with very few exceptions, everything in Core CS should be completed before you begin Advanced CS. -Pay attention to prerequisites. - -## Cost of the classes - -No promises are made about the cost of any of the courses. - -The web is utterly filled with free educational material if you are willing to spend the time looking for it; -this curriculum has specifically been designed to prioritize *quality* over low cost. -Nevertheless, the reality is that the professors who have made these courses and the platforms who host them are extraordinarily generous. -The content of virtually every course on Coursera and edX is available at no charge, but if you want graded assignments and quizzes, you may have to pay, depending on the course; -yet, these sums of money are nothing compared to the cost of attending their prestigious instutitions. -Coursera is the platform upon which you are most likely to encounter paywalled features, but they offer -[financial aid](https://learner.coursera.help/hc/en-us/articles/209819033-Apply-for-Financial-Aid) -to those eligible. - -Some course materials are also available separate from these platforms, such as on YouTube. -Below is a list of courses from the curriculum which have dedicated websites with freely available materials separate from the platforms: -- [Introduction to Computer Science - CS50](https://cs50.harvard.edu/) -- [Linear Algebra: Foundations to Frontiers](http://ulaff.net/) -- [From Nand to Tetris: Building a Modern Computer from First Principles](http://www.nand2tetris.org/) -- [How to Design Programs](http://www.ccs.neu.edu/home/matthias/HtDP2e/) -(Note: This is the **book** upon which *How to Code: Systematic Program Design* is based, but the course is not taught by the book's author; they are completely separate) -- [Mooculus: Calculus One](https://mooculus.osu.edu/) - -Just remember that purchasing a course might save you some time and give you some extra motivation, but you cannot buy your way to success in this field. -It's encouraged more as a way to thank the professor for their work. -The most diligent students will be the most successful, regardless of how much or how little they spend. - -## How to track and show your progress +## How to show your progress 1. Create an account in [Trello](https://trello.com/). 1. Copy [this](https://trello.com/b/9DPXYv5f) board to your personal account. @@ -482,78 +509,7 @@ You should put the *Course's cards* below its respective *Section's card*. The intention of this board is to provide our students a way to track their progress, and also the ability to show their progress through a public page for friends, family, employers, etc. You can change the status of your board to be *public* or *private*. -### Content Policy - -If you plan on showing off some of your coursework publicly, 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! - -## Should I take all courses? - -If you are serious about getting an online education comparable to a bachelor's degree in Computer Science, you should absolutely take **all** of the courses under the 'Core CS' section. - -These courses are equivalent to about 3/4 of a full bachelor's degree in CS. -So if you want to really complete your studies, then you should select one of the specializations to finish out your program, such as one in Artificial Intelligence or Big Data. - -## Duration of the project - -If you are able to devote 18-20 hours per week to this curriculum, taking 1-3 clases at a time, you could hypothetically finish the Core CS section in under 2 years. -A specialization would then take you a few more months. - -It will probably take longer if you go slower, but regardless, your reward will be proportional to your effort. - -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). - -## Stay tuned - -[Watch](https://help.github.com/articles/watching-repositories/) this repository for futures improvements and general information. - -# Prerequisites - -This curriculum assumes the student has already taken high school math, including algebra, geometry, and pre-calculus. -Some high school students will have taken calculus, but this is usually only about 3/4 of a college calculus class, so the calculus courses listed above are still recommended. - -Apart from those, the only things that you need to know are how to use **Git** and **GitHub**. Here are some resources to learn about them: - -**Note**: Just pick one of the resources below to learn the basics. You will learn a lot more once you get started! - -- [Try Git](https://try.github.io/levels/1/challenges/1) -- [Ry's Git Tutorial](http://rypress.com/tutorials/git/index) -- [Git - the simple guide](http://rogerdudler.github.io/git-guide/) -- [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) - -# Changelog - -**Curriculum Version**: `6.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 the major core topics that a conventional Computer Science program covers. - -# 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/issues). - -We also have a chat room! [![Join the chat at https://gitter.im/open-source-society/computer-science](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/open-source-society/computer-science?utm_campaign=pr-badge&utm_content=badge&utm_medium=badge&utm_source=badge) - -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 subreddit/group for important discussions**. - -# Team +## Team * **Curriculum Founder**: [Eric Douglas](https://github.com/ericdouglas) * **Curriculum Maintainer**: [Eric Douglas](https://github.com/ericdouglas) @@ -566,6 +522,7 @@ Add **Open Source Society University** to your [Facebook](https://www.facebook.c - [edX](https://www.edx.org) - [Udacity](https://www.udacity.com/) - [Stanford University](https://lagunita.stanford.edu/) +- [Carnegie Mellon University: Computer Science Major Requirements](https://www.csd.cs.cmu.edu/academics/undergraduate/requirements) - [MIT Open Courseware](http://ocw.mit.edu/courses/#electrical-engineering-and-computer-science) - [A DIY Computer Science Education](https://bradfieldcs.com/diy/) - [Obtaining a Thorough CS Background Online](http://spin.atomicobject.com/2015/05/15/obtaining-thorough-cs-background-online/) \ No newline at end of file diff --git a/REQUIREMENTS.md b/REQUIREMENTS.md new file mode 100644 index 0000000..bc4ae08 --- /dev/null +++ b/REQUIREMENTS.md @@ -0,0 +1,3 @@ +# OSSU Academic Requirements + +TODO \ No newline at end of file diff --git a/extras/readings.md b/extras/readings.md index 3e26a95..d29a074 100644 --- a/extras/readings.md +++ b/extras/readings.md @@ -11,6 +11,7 @@ Name | Author(s) :-- | :--: [Introduction to Computation and Programming Using Python](https://www.amazon.com/Introduction-Computation-Programming-Using-Python/dp/0262525003/) | John V. Guttag [Discrete Mathematics with Applications (4th Edition)](http://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp/dp/0495391328/) | Susanna S. Epp +[How to Design Programs](http://www.ccs.neu.edu/home/matthias/HtDP2e/) | Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi [Transaction Processing: Concepts and Techniques](https://www.amazon.com/Transaction-Processing-Concepts-Techniques-Management/dp/1558601902) | Jim Gray, Andreas Reuter [Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World](https://www.amazon.com/Data-Reality-Perspective-Perceiving-Information/dp/1935504215) | William Kent [Architecture of a Database System](http://db.cs.berkeley.edu/papers/fntdb07-architecture.pdf) | Joseph M. Hellerstein, Michael Stonebraker, James Hamilton From 278546a1e142c024c707cdd86ed4ed76f5355a04 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 5 Mar 2017 16:44:08 -0500 Subject: [PATCH 100/131] Fix formatting inconsistencies --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6b7e0c2..d5f7b84 100644 --- a/README.md +++ b/README.md @@ -70,10 +70,10 @@ Note that Coursera offers [financial aid](https://learner.coursera.help/hc/en-us Decide how much or how little to spend based on your own time and budget; just remember that you can't purchase success! -**Content policy**: If you plan on showing off some of your coursework publicly, you must share only files that you are allowed to. +**Content policy**. If you plan on showing off some of your coursework publicly, you must share only files that you are allowed to. *Do NOT disrespect the code of conduct* that you signed in the beginning of each course! -**How to contribute**: please see [CONTRIBUTING](CONTRIBUTING.md). +**How to contribute**. Please see [CONTRIBUTING](CONTRIBUTING.md). # Curriculum From 2432d8581657dac00dec15f8c7bdbd03e3183728 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 5 Mar 2017 16:53:51 -0500 Subject: [PATCH 101/131] Remove project suggestions --- README.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/README.md b/README.md index d5f7b84..34611f6 100644 --- a/README.md +++ b/README.md @@ -431,13 +431,6 @@ You can create this project alone or with other students! **We love cooperative work**! Use our [channels](#community) to communicate with other fellows to combine and create new projects! -### Project Suggestions - -- [Projects](https://github.com/karan/Projects): A list of practical projects that anyone can solve in any programming language. -- [app-specs](https://github.com/ericdouglas/app-specs): A curated list of applications specifications and implementations to practice new technologies, improve your portfolio and sharpen your skills. -- [FreeCodeCamp](http://www.freecodecamp.com/): Course that teaches you fullstack JavaScript development through a bunch of projects. -- [JavaScript Projects](https://github.com/javascript-society/javascript-projects): List of projects related with the [JavaScript Path](https://github.com/javascript-society/javascript-path). - ### Which programming languages should I use? My friend, here is the best part of liberty! From 407d68c78ed874ffdc81acbd31686a5e61603d2c Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 5 Mar 2017 16:58:37 -0500 Subject: [PATCH 102/131] Links to CodeTriage and FirstTimersOnly --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 34611f6..c065e73 100644 --- a/README.md +++ b/README.md @@ -399,6 +399,10 @@ You are encouraged to do the assignments and exams for each course, but what rea 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, the project will *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](https://www.codetriage.com/) +or +[First Timers Only](http://www.firsttimersonly.com/). Another option is using the Capstone project from taking one of the Specializations in [Advanced applications](#advanced-applications); whether or not this makes sense depends on the course, the project, and whether or not the course's Honor Code permits you to display your work publicly. From bd9809d83c76daa8fc77902015316e5ccf358f6b Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Sun, 5 Mar 2017 17:02:08 -0500 Subject: [PATCH 103/131] Clarify project submission process --- README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c065e73..a929a4a 100644 --- a/README.md +++ b/README.md @@ -409,9 +409,6 @@ whether or not this makes sense depends on the course, the project, and whether In some cases, it may not be permitted; do **not** violate your course's Honor Code! -The final projects of all students will be listed in [this](PROJECTS.md) file. -**Submit your project's information in that file after you conclude it**. - Put the OSSU-CS badge in the README of your repository! [![Open Source Society University - Computer Science](https://img.shields.io/badge/OSSU-computer--science-blue.svg)](https://github.com/open-source-society/computer-science) @@ -420,7 +417,9 @@ Put the OSSU-CS badge in the README of your repository! ### Evaluation -Upon completing your final project, use our [community](#community) channels to announce it. +Upon completing your final project, submit your project's information to [PROJECTS](PROJECTS.md) +via a pull request and use our [community](#community) channels to announce it to your fellow students. + Your peers and mentors from OSSU will then informally evaluate your project. 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, From 13c1c8cfd287acf44e1a7b1efeccb0af4648c947 Mon Sep 17 00:00:00 2001 From: Joshua Hanson Date: Tue, 7 Mar 2017 18:00:53 -0500 Subject: [PATCH 104/131] Wording update --- CONTRIBUTING.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f7c6ba9..4f945c9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,9 +1,7 @@ -# How to collaborate +# Contributor guidelines 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. You can also [fork this project](https://help.github.com/articles/fork-a-repo/) and send a [pull request](https://help.github.com/articles/using-pull-requests/) to fix any mistakes that you have found. -If you want to suggest a new resource, send a pull request adding such resource to the [extras](https://github.com/open-source-society/computer-science/tree/master/extras) section. - -The **extras** section is a place where all of us will be able to submit interesting additional articles, books, courses and specializations, keeping our curriculum *as immutable and concise as possible*. \ No newline at end of file +If you want to suggest a new resource, send a pull request adding such resource to the [extras](https://github.com/open-source-society/computer-science/tree/master/extras) section. \ No newline at end of file From 8ea2329707593b912e263490113eb164efbfac89 Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Thu, 9 Mar 2017 19:58:25 -0500 Subject: [PATCH 105/131] Alt readings: Fix networking link --- extras/readings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/readings.md b/extras/readings.md index d29a074..3d387b1 100644 --- a/extras/readings.md +++ b/extras/readings.md @@ -17,7 +17,7 @@ Name | Author(s) [Architecture of a Database System](http://db.cs.berkeley.edu/papers/fntdb07-architecture.pdf) | Joseph M. Hellerstein, Michael Stonebraker, James Hamilton [Introduction to Algorithms (3rd Edition)](http://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844/) | Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein [Modern Operating Systems (4th Edition)](http://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/013359162X/) | Andrew S. Tanenbaum, Herbert Bos -[Computer Networking: A Top-Down Approach (6th Edition)](http://www.chegg.com/textbooks/computer-networking-6th-edition-9780132856201-0132856204) | James F Kurose, Keith W Ross +[Computer Networking: A Top-Down Approach (6th Edition)](https://www.amazon.com/Computer-Networking-A-Top-Down-Approach/dp/1292153598/) | James F Kurose, Keith W Ross [Design Patterns: Elements of Reusable Object-Oriented Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) | Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides [Refactoring](https://www.refactoring.com/) | Martin Fowler [The Architecture of Open Source Applications](http://aosabook.org/en/) | Michael DiBernardo (editor) From 2332baac0edbb7189c23cd7dfa23b13f5beeade5 Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Thu, 9 Mar 2017 20:06:22 -0500 Subject: [PATCH 106/131] Alt readings: Re-organize --- extras/readings.md | 54 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 16 deletions(-) diff --git a/extras/readings.md b/extras/readings.md index 3d387b1..9dffac0 100644 --- a/extras/readings.md +++ b/extras/readings.md @@ -7,31 +7,53 @@ some are just great books that you should read at some point in your career. Once you have made it through most of the curriculum, knowing whether a book is worth your time will become easier. Or, if you are struggling in one of the courses, perhaps reading a book on the subject will help. +## Programming + Name | Author(s) :-- | :--: [Introduction to Computation and Programming Using Python](https://www.amazon.com/Introduction-Computation-Programming-Using-Python/dp/0262525003/) | John V. Guttag -[Discrete Mathematics with Applications (4th Edition)](http://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp/dp/0495391328/) | Susanna S. Epp [How to Design Programs](http://www.ccs.neu.edu/home/matthias/HtDP2e/) | Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi -[Transaction Processing: Concepts and Techniques](https://www.amazon.com/Transaction-Processing-Concepts-Techniques-Management/dp/1558601902) | Jim Gray, Andreas Reuter -[Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World](https://www.amazon.com/Data-Reality-Perspective-Perceiving-Information/dp/1935504215) | William Kent -[Architecture of a Database System](http://db.cs.berkeley.edu/papers/fntdb07-architecture.pdf) | Joseph M. Hellerstein, Michael Stonebraker, James Hamilton -[Introduction to Algorithms (3rd Edition)](http://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844/) | Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein -[Modern Operating Systems (4th Edition)](http://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/013359162X/) | Andrew S. Tanenbaum, Herbert Bos -[Computer Networking: A Top-Down Approach (6th Edition)](https://www.amazon.com/Computer-Networking-A-Top-Down-Approach/dp/1292153598/) | James F Kurose, Keith W Ross +[Structure and Interpretation of Computer Programs](https://mitpress.mit.edu/sicp/full-text/book/book.html) | Hal Abelson, Jerry Sussman, Julie Sussman [Design Patterns: Elements of Reusable Object-Oriented Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) | Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides [Refactoring](https://www.refactoring.com/) | Martin Fowler -[The Architecture of Open Source Applications](http://aosabook.org/en/) | Michael DiBernardo (editor) -[Compilers: Principles, Techniques, and Tools (2nd Edition)](http://www.amazon.com/Compilers-Principles-Techniques-Tools-2nd/dp/0321486811/) | Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman -[Computer Networks (5th Edition)](http://www.amazon.com/Computer-Networks-5th-Andrew-Tanenbaum/dp/0132126958/) | Andrew S. Tanenbaum, David J. Wetherall [Clean Code](https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882) | Robert Martin [Code Complete](https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670) | Steve McConnell [The Pragmatic Programmer](https://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X) | Andrew Hunt, David Thomas -[The Mythical Man-Month](https://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/) | Fred Brooks, Jr. -[Structure and Interpretation of Computer Programs](https://mitpress.mit.edu/sicp/full-text/book/book.html) | Hal Abelson, Jerry Sussman, Julie Sussman -[Introduction to Computing: Explorations in Language, Logic, and Machines](http://www.computingbook.org/) | David Evans -[Applied Discrete Structures](http://faculty.uml.edu/klevasseur/ads2/) | Alan Doerr, Ken Levasseur + +## Math + +Name | Author(s) +:-- | :--: [Calculus Made Easy](http://www.gutenberg.org/ebooks/33283) | Silvanus P. Thompson +[Discrete Mathematics with Applications (4th Edition)](http://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp/dp/0495391328/) | Susanna S. Epp +[Applied Discrete Structures](http://faculty.uml.edu/klevasseur/ads2/) | Alan Doerr, Ken Levasseur [Grinstead and Snell’s Introduction to Probability](https://math.dartmouth.edu/~prob/prob/prob.pdf) |Charles M. Grinstead, J. Laurie Snell -[Compiler Construction](http://www.ethoberon.ethz.ch/WirthPubl/CBEAll.pdf) | Niklaus Wirth + +## Systems + +Name | Author(s) +:-- | :--: +[Modern Operating Systems (4th Edition)](http://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/013359162X/) | Andrew S. Tanenbaum, Herbert Bos +[Computer Networks (5th Edition)](http://www.amazon.com/Computer-Networks-5th-Andrew-Tanenbaum/dp/0132126958/) | Andrew S. Tanenbaum, David J. Wetherall +[Computer Networking: A Top-Down Approach (6th Edition)](https://www.amazon.com/Computer-Networking-A-Top-Down-Approach/dp/1292153598/) | James F Kurose, Keith W Ross + +## Theory + +Name | Author(s) +:-- | :--: +[Introduction to Computing: Explorations in Language, Logic, and Machines](http://www.computingbook.org/) | David Evans +[Introduction to Algorithms (3rd Edition)](http://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844/) | Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein + +## Applications + +Name | Author(s) +:-- | :--: +[Transaction Processing: Concepts and Techniques](https://www.amazon.com/Transaction-Processing-Concepts-Techniques-Management/dp/1558601902) | Jim Gray, Andreas Reuter +[Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World](https://www.amazon.com/Data-Reality-Perspective-Perceiving-Information/dp/1935504215) | William Kent +[Architecture of a Database System](http://db.cs.berkeley.edu/papers/fntdb07-architecture.pdf) | Joseph M. Hellerstein, Michael Stonebraker, James Hamilton +[The Architecture of Open Source Applications](http://aosabook.org/en/) | Michael DiBernardo (editor) [Deep Learning](http://www.deeplearningbook.org/) | Ian Goodfellow, Yoshua Bengio and Aaron Courville -[Bayesian Reasoning and Machine Learning](http://web4.cs.ucl.ac.uk/staff/D.Barber/pmwiki/pmwiki.php?n=Brml.HomePage) | David Barber \ No newline at end of file +[Bayesian Reasoning and Machine Learning](http://web4.cs.ucl.ac.uk/staff/D.Barber/pmwiki/pmwiki.php?n=Brml.HomePage) | David Barber +[Compilers: Principles, Techniques, and Tools (2nd Edition)](http://www.amazon.com/Compilers-Principles-Techniques-Tools-2nd/dp/0321486811/) | Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman +[Compiler Construction](http://www.ethoberon.ethz.ch/WirthPubl/CBEAll.pdf) | Niklaus Wirth +[The Mythical Man-Month](https://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/) | Fred Brooks, Jr. \ No newline at end of file From 535d89d338afa2e40f4f3c5f0d505f6d98a0fc38 Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Thu, 9 Mar 2017 20:49:52 -0500 Subject: [PATCH 107/131] Update CONTRIBUTING --- CONTRIBUTING.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4f945c9..622b53e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,7 +1,12 @@ # Contributor guidelines -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. - -You can also [fork this project](https://help.github.com/articles/fork-a-repo/) and send a [pull request](https://help.github.com/articles/using-pull-requests/) to fix any mistakes that you have found. - -If you want to suggest a new resource, send a pull request adding such resource to the [extras](https://github.com/open-source-society/computer-science/tree/master/extras) section. \ No newline at end of file +This project primarily uses GitHub for collaboration, however not all discussions are appropriate for GitHub. +Please follow these guidelines: +1. If you need help with the *academic* content of a course or are having general technical difficulties, please do not use GitHub for this. +The best place to ask these types of questions is on the [subreddit](https://www.reddit.com/r/opensourcesociety/). +2. If you have general problems with the program not specific to any course, such as preferring textbook-style learning over MOOCs, +the subreddit is recommended as there people may be able to give you suggested alternatives. +3. If you have *specific* and *substantive* criticisms of the curriculum, i.e. problems related to the progression/content of courses it would be appropriate to [open an issue](https://help.github.com/articles/creating-an-issue/) and give us your suggestions. +4. If you have *non-substantive* updates to make to the curriculum, such as a course's URL having been moved, spelling/syntax errors, etc., please send a [pull request](https://help.github.com/articles/using-pull-requests/) to fix any mistakes that you have found. +5. If you want to customize the curriculum for yourself, do of course [fork this project](https://help.github.com/articles/fork-a-repo/). +6. If you want to suggest a new resource, send a pull request adding such resource to the [extras](https://github.com/open-source-society/computer-science/tree/master/extras) section. \ No newline at end of file From 70890e0983bad0cc51b0d9a2cc85cc1771dffbcc Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Thu, 9 Mar 2017 21:27:52 -0500 Subject: [PATCH 108/131] REQUIREMENTS: Initial content --- REQUIREMENTS.md | 61 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/REQUIREMENTS.md b/REQUIREMENTS.md index bc4ae08..9e10112 100644 --- a/REQUIREMENTS.md +++ b/REQUIREMENTS.md @@ -1,3 +1,62 @@ # OSSU Academic Requirements -TODO \ No newline at end of file +This document contains the subjects the student must master to pass through this curriculum. +The subject requirements are based on topics, rather than specific courses, because sometimes a certain course isn't available at the right time or doesn't fit the student's learning style. + +## Subjects + +### Programming + +#### Paradigms +- Imperative programming +- Procedural programming +- Object-oriented programming +- Functional programming +- Logic programming + +#### Languages +- C and/or C-derived languages +- SQL +- XML/HTML +- JavaScript and/or related language +- An ML-family language +- A Lisp-family langauge +- Python and/or Ruby + +### Math + +- Logic and proofs +- Discrete structures +- Graph theory +- Discrete probability +- Linear algebra + +### Systems + +- Memory +- Caching +- Virtualization +- Concurrency +- Compilers +- Assembly +- Networking + +### Theory + +- Data structures +- Sorting +- Searching +- Divide and conquer +- Algorithms on graphs +- Greedy algorithms +- Trees +- P and NP + +### Applications + +- Software product management +- REST +- Databases +- Computer graphics +- Cybersecurity +- Machine learning \ No newline at end of file From a8b6e30bef5c010149e4a3e4f727103d049249d2 Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Thu, 9 Mar 2017 21:42:27 -0500 Subject: [PATCH 109/131] Update project requirements --- README.md | 5 +---- REQUIREMENTS.md | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index a929a4a..6884941 100644 --- a/README.md +++ b/README.md @@ -266,10 +266,7 @@ Courses | Duration | Effort | Prerequisites [Computer Graphics](https://www.edx.org/course/computer-graphics-uc-san-diegox-cse167x)| 6 weeks | 12 hours/week | C++ or Java, linear algebra [Cryptography I](https://www.coursera.org/course/crypto)| 6 weeks | 5-7 hours/week | linear algebra, probability [Software Engineering: Introduction](https://www.edx.org/course/software-engineering-introduction-ubcx-softeng1x) | 6 weeks | 8-10 hours/week | Software Construction - Object-Oriented Design -[Software Development Capstone Project](https://www.edx.org/course/software-development-capstone-project-ubcx-softengprjx)**1** | 6-7 weeks | 8-10 hours/week | Software Engineering: Introduction - -**1 Required** if you intend not to go past Core CS; -**strongly recommended** even for those who will continue on to Advanced CS. +[Software Development Capstone Project](https://www.edx.org/course/software-development-capstone-project-ubcx-softengprjx) | 6-7 weeks | 8-10 hours/week | Software Engineering: Introduction ## Advanced CS diff --git a/REQUIREMENTS.md b/REQUIREMENTS.md index 9e10112..c2d54a7 100644 --- a/REQUIREMENTS.md +++ b/REQUIREMENTS.md @@ -1,6 +1,6 @@ # OSSU Academic Requirements -This document contains the subjects the student must master to pass through this curriculum. +This document contains the subjects and projects the student must master to pass through this curriculum. The subject requirements are based on topics, rather than specific courses, because sometimes a certain course isn't available at the right time or doesn't fit the student's learning style. ## Subjects @@ -59,4 +59,16 @@ The subject requirements are based on topics, rather than specific courses, beca - Databases - Computer graphics - Cybersecurity -- Machine learning \ No newline at end of file +- Machine learning + +## Projects + +Students are required to complete a project at the end of [Core CS](README.md#core-cs) and at the end of [Advanced CS](README.md#advanced-cs). + +For Core CS, students have two options: +- They can use the Capstone course at the end of [Core applications](#core-applications) as their Core CS Project, in which case they are not required to share their project code. +- They can skip that Capstone project and make their own project, in which case they *are* required to share the project code. + +For the Advanced CS Project (also known as the Final Project), students again have two options: +- They can take one of the Specializations under [Advanced applications](#advanced-applications), all of which include Capstone Projects. Students *must* share their project code unless the course's honor code forbids it. +- They can create their own Final Project, and must share the project code to be evaluated by the community. \ No newline at end of file From 592b0ea77136b6cc05c26bde8f369dc6a1408dfb Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Thu, 9 Mar 2017 22:13:01 -0500 Subject: [PATCH 110/131] Update changelog for 7.0 --- CHANGELOG.md | 64 +++++++++++++++++++++++++++++++++++++++++++++---- REQUIREMENTS.md | 2 +- 2 files changed, 60 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac20047..599690f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,12 +2,66 @@ All notable changes to this project will be documented in this file. This project adheres *in spirit* to [Semantic Versioning](http://semver.org/): -- "MAJOR" updates correspond to changing the topics studied -- "MINOR" updates correspond to fulfilling a topical requirement using a different class -- "PATCH" updates correspond to purely aesthetic and non-essential additions/removals +- "MAJOR" updates correspond to changing the topics studied within a subject +- "MINOR" updates correspond to changing courses without changing the topics +- "PATCH" updates correspond to aesthetic and non-essential additions/removals or changing order of classes for better progression -## [7.0] 2017-03-05 -TODO +## [7.0] 2017-03-09 +Complete overhaul of program structure + +### Updated +- Clarified contributor guidelines and moved them to separated file +- Switched from many subjects to just four subjects with many topics +- Consolidated free-books.md and paid-books.md into readings.md +- Consolidated free-courses.md and paid-courses.md into courses.md +- Replace old "How to Code" with new "How to Code" (Software Development MicroMasters) +- Replace Princeton Algorithms (moved to [alternative courses](#extras/courses.md)) with Stanford Algorithms + +### Added +- Indicate prerequisites for all courses +- Requirements: subject/topic requirements and project requirements +- Required readings on Haskell, Prolog, Operating Systems +- Courses: Dan Grossman's Programming Languages +- Courses: From Nand to Tetris +- Elective course: Intro to Parallel Programming +- Elective course: LAFF: Programming for Correctness +- Elective course: Introduction to Mathematical Thinking +- Elective courses: Electricity and Magnetism +- Elective courses: MIT's Computation Structures +- Elective course: Multivariable Calculus +- Elective course: ops-class.org +- Elective course: Automata Theory +- Elective course: Introduction to Logic +- Elective course: Computational Geometry +- Elective course: Formal Concept Analysis +- Elective course: Game Theory +- Elective specializations: + - Robotics + - Data Minig + - Big Data + - Internet of Things + - Cloud Computing + - Full Stack Web Development + - Data Science +- Pro specializations: + - Mastering Software Development in R + - Artificial Intelligence Engineer + - Machine Learning Engineer + - Cybersecurity + - Android Developer + +### Removed +- Removed many dead links and obsolete courses +- Removed per-course project requirement +- Course: Object-Oriented Programming in Java +- Course: Funtional Programming in Scala +- Course: Computer Architecture (but left as a footnote) +- Course: Intro to Theoretical Computer Science +- Course: Software Processes and Agile Practices +- Course: Operating Systems & System Programming +- Course: Introduction to Cyber Security +- Course: Parallel Computer Architecture and Programming +- Course: UX Design for Mobile Developers ## [6.0] 2016-10-09 ### Updated diff --git a/REQUIREMENTS.md b/REQUIREMENTS.md index c2d54a7..7e03e9a 100644 --- a/REQUIREMENTS.md +++ b/REQUIREMENTS.md @@ -1,6 +1,6 @@ # OSSU Academic Requirements -This document contains the subjects and projects the student must master to pass through this curriculum. +This document contains the subjects (e.g. programming), topics (e.g. imperative programming), and projects the student must master to pass through this curriculum. The subject requirements are based on topics, rather than specific courses, because sometimes a certain course isn't available at the right time or doesn't fit the student's learning style. ## Subjects From e80d088bf7c1acefe09a4714caa1e08b4d651702 Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Sat, 11 Mar 2017 19:02:09 -0500 Subject: [PATCH 111/131] Calc One: Add link to errata --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6884941..6da28c7 100644 --- a/README.md +++ b/README.md @@ -187,10 +187,16 @@ and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-frontiers-utaustinx-ut-5-04x#!) ([alt](http://ulaff.net/)) | 15 weeks | 8 hours/week | pre-calculus -[Calculus One](https://www.coursera.org/learn/calculus1) ([alt](https://mooculus.osu.edu/)) | 16 weeks | 8-10 hours/week | pre-calculus +[Calculus One](https://www.coursera.org/learn/calculus1)*1* ([alt](https://mooculus.osu.edu/)) | 16 weeks | 8-10 hours/week | pre-calculus [Calculus Two: Sequences and Series](https://www.coursera.org/learn/advanced-calculus)| 7 weeks | 9-10 hours/week | Calculus One [Mathematics for Computer Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-spring-2015/index.htm) | 13 weeks | 5 hours/week | single variable calculus (Calculus Two) +**1 Note**: When you are enrolled, please see this +[list of errors](https://www.coursera.org/learn/calculus1/discussions/forums/WcY9_8ayEeSWEiIAC0wC5g/threads/CgOJwV-jEeWncxKXIFxpFQ/replies/kH6u_2FPEeWukw4fFhIvKw) +and +[these recommendations](https://www.coursera.org/learn/calculus1/discussions/all/threads/W5P9mFY8EeWbVQrsfyQbuw/replies/XyyJflZDEeWBRg5dvElQww/comments/l-bON17nEeW9lgqcHapJBw) +for how to progress through the course. + ### Core systems **Topics covered**: From 5c22406f5334542a43703318540ee814b05f4b98 Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Mon, 13 Mar 2017 17:45:25 -0400 Subject: [PATCH 112/131] Update Bradfield DIY CS link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6884941..e2eb8cb 100644 --- a/README.md +++ b/README.md @@ -517,5 +517,5 @@ You can change the status of your board to be *public* or *private*. - [Stanford University](https://lagunita.stanford.edu/) - [Carnegie Mellon University: Computer Science Major Requirements](https://www.csd.cs.cmu.edu/academics/undergraduate/requirements) - [MIT Open Courseware](http://ocw.mit.edu/courses/#electrical-engineering-and-computer-science) -- [A DIY Computer Science Education](https://bradfieldcs.com/diy/) +- [Teach Yourself Computer Science](https://teachyourselfcs.com/) - [Obtaining a Thorough CS Background Online](http://spin.atomicobject.com/2015/05/15/obtaining-thorough-cs-background-online/) \ No newline at end of file From c2ab7cf5b0acaa025ba773c033c4fa63a0c15e45 Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Mon, 13 Mar 2017 17:53:17 -0400 Subject: [PATCH 113/131] extras/courses: add Berkeley's SICP --- extras/courses.md | 1 + 1 file changed, 1 insertion(+) diff --git a/extras/courses.md b/extras/courses.md index ec985a0..a180f27 100644 --- a/extras/courses.md +++ b/extras/courses.md @@ -17,6 +17,7 @@ Courses | Duration | Effort [Object-Oriented Programming](https://www.edx.org/course/object-oriented-programming-iitbombayx-cs101-2x)| 4 weeks | 8 hours/week [Introduction to Programming with MATLAB](https://www.coursera.org/learn/matlab)| - | - [Introduction to Functional Programming](https://www.edx.org/course/introduction-functional-programming-delftx-fp101x-0)| 7 weeks | 4-6 hours/week +[The Structure and Interpretation of Computer Programs](http://cs61a.org/) | - | - ## Math From f59f86a99dfdfe312d7d7bc1efc767c83ccdd8d1 Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Mon, 13 Mar 2017 17:58:50 -0400 Subject: [PATCH 114/131] extras/readings: Add Van Roy book --- extras/readings.md | 1 + 1 file changed, 1 insertion(+) diff --git a/extras/readings.md b/extras/readings.md index 9dffac0..0703c6a 100644 --- a/extras/readings.md +++ b/extras/readings.md @@ -14,6 +14,7 @@ Name | Author(s) [Introduction to Computation and Programming Using Python](https://www.amazon.com/Introduction-Computation-Programming-Using-Python/dp/0262525003/) | John V. Guttag [How to Design Programs](http://www.ccs.neu.edu/home/matthias/HtDP2e/) | Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi [Structure and Interpretation of Computer Programs](https://mitpress.mit.edu/sicp/full-text/book/book.html) | Hal Abelson, Jerry Sussman, Julie Sussman +[Concepts, Techniques, and Models of Computer Programming](https://www.amazon.com/gp/product/0262220695) | Peter Van Roy, Seif Haridi [Design Patterns: Elements of Reusable Object-Oriented Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) | Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides [Refactoring](https://www.refactoring.com/) | Martin Fowler [Clean Code](https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882) | Robert Martin From 5e2b2e2d5f6113d892e3016327f76ce0b97efc9a Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Mon, 13 Mar 2017 18:00:37 -0400 Subject: [PATCH 115/131] extras/readings: Add P&H comp arch book --- extras/readings.md | 1 + 1 file changed, 1 insertion(+) diff --git a/extras/readings.md b/extras/readings.md index 0703c6a..483fe00 100644 --- a/extras/readings.md +++ b/extras/readings.md @@ -35,6 +35,7 @@ Name | Author(s) Name | Author(s) :-- | :--: [Modern Operating Systems (4th Edition)](http://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/013359162X/) | Andrew S. Tanenbaum, Herbert Bos +[Computer Organization and Design: The Hardware/Software Interface](https://www.amazon.com/gp/product/0124077269) | David Patternson, John Hennessy [Computer Networks (5th Edition)](http://www.amazon.com/Computer-Networks-5th-Andrew-Tanenbaum/dp/0132126958/) | Andrew S. Tanenbaum, David J. Wetherall [Computer Networking: A Top-Down Approach (6th Edition)](https://www.amazon.com/Computer-Networking-A-Top-Down-Approach/dp/1292153598/) | James F Kurose, Keith W Ross From c0f2007522bc6fe82d0f68b360e436e58b7807eb Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Mon, 13 Mar 2017 18:03:19 -0400 Subject: [PATCH 116/131] extras/readings: Add Skiena algorithms --- extras/readings.md | 1 + 1 file changed, 1 insertion(+) diff --git a/extras/readings.md b/extras/readings.md index 483fe00..1b0f3e1 100644 --- a/extras/readings.md +++ b/extras/readings.md @@ -45,6 +45,7 @@ Name | Author(s) :-- | :--: [Introduction to Computing: Explorations in Language, Logic, and Machines](http://www.computingbook.org/) | David Evans [Introduction to Algorithms (3rd Edition)](http://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844/) | Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein +[The Algorithm Design Manual](https://www.amazon.com/gp/product/1848000693) | Steven Skiena ## Applications From d53fdff52afe876d3683285b56299ad64d31583a Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Mon, 13 Mar 2017 18:09:01 -0400 Subject: [PATCH 117/131] extras: Add Strang's linear algebra --- extras/courses.md | 1 + extras/readings.md | 1 + 2 files changed, 2 insertions(+) diff --git a/extras/courses.md b/extras/courses.md index a180f27..1023bc9 100644 --- a/extras/courses.md +++ b/extras/courses.md @@ -24,6 +24,7 @@ Courses | Duration | Effort Courses | Duration | Effort :-- | :--: | :--: [Introduction to Probability and Data](https://www.coursera.org/learn/probability-intro)| - | - +[Linear Algebra (Strang)](https://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/index.htm) | - | - ## Systems diff --git a/extras/readings.md b/extras/readings.md index 1b0f3e1..f399d71 100644 --- a/extras/readings.md +++ b/extras/readings.md @@ -29,6 +29,7 @@ Name | Author(s) [Discrete Mathematics with Applications (4th Edition)](http://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp/dp/0495391328/) | Susanna S. Epp [Applied Discrete Structures](http://faculty.uml.edu/klevasseur/ads2/) | Alan Doerr, Ken Levasseur [Grinstead and Snell’s Introduction to Probability](https://math.dartmouth.edu/~prob/prob/prob.pdf) |Charles M. Grinstead, J. Laurie Snell +[Introduction to Linear Algebra](https://www.amazon.com/Introduction-Linear-Algebra-Gilbert-Strang/dp/0980232775/) | Gilbert Strang ## Systems From 47b4838e989634e45886f36b0dfe739703a9ccb4 Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Mon, 13 Mar 2017 18:13:43 -0400 Subject: [PATCH 118/131] extras/readings: Add Red Book --- extras/readings.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/extras/readings.md b/extras/readings.md index f399d71..02d8e67 100644 --- a/extras/readings.md +++ b/extras/readings.md @@ -52,9 +52,10 @@ Name | Author(s) Name | Author(s) :-- | :--: +[Architecture of a Database System](http://db.cs.berkeley.edu/papers/fntdb07-architecture.pdf) | Joseph M. Hellerstein, Michael Stonebraker, James Hamilton +[Readings in Database Systems](http://www.redbook.io/) | Peter Bailis, Joseph M. Hellerstein, Michael Stonebraker, editors [Transaction Processing: Concepts and Techniques](https://www.amazon.com/Transaction-Processing-Concepts-Techniques-Management/dp/1558601902) | Jim Gray, Andreas Reuter [Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World](https://www.amazon.com/Data-Reality-Perspective-Perceiving-Information/dp/1935504215) | William Kent -[Architecture of a Database System](http://db.cs.berkeley.edu/papers/fntdb07-architecture.pdf) | Joseph M. Hellerstein, Michael Stonebraker, James Hamilton [The Architecture of Open Source Applications](http://aosabook.org/en/) | Michael DiBernardo (editor) [Deep Learning](http://www.deeplearningbook.org/) | Ian Goodfellow, Yoshua Bengio and Aaron Courville [Bayesian Reasoning and Machine Learning](http://web4.cs.ucl.ac.uk/staff/D.Barber/pmwiki/pmwiki.php?n=Brml.HomePage) | David Barber From 9a9bbc9c5fb3b04ce7f3a44415802859b8867328 Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Mon, 13 Mar 2017 18:15:04 -0400 Subject: [PATCH 119/131] extras/readings: Add DB Management Systems book --- extras/readings.md | 1 + 1 file changed, 1 insertion(+) diff --git a/extras/readings.md b/extras/readings.md index 02d8e67..6c45155 100644 --- a/extras/readings.md +++ b/extras/readings.md @@ -54,6 +54,7 @@ Name | Author(s) :-- | :--: [Architecture of a Database System](http://db.cs.berkeley.edu/papers/fntdb07-architecture.pdf) | Joseph M. Hellerstein, Michael Stonebraker, James Hamilton [Readings in Database Systems](http://www.redbook.io/) | Peter Bailis, Joseph M. Hellerstein, Michael Stonebraker, editors +[Database Management Systems](https://www.amazon.com/gp/product/0072465638) | Raghu Ramakrishnan, Johannes Gehrke [Transaction Processing: Concepts and Techniques](https://www.amazon.com/Transaction-Processing-Concepts-Techniques-Management/dp/1558601902) | Jim Gray, Andreas Reuter [Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World](https://www.amazon.com/Data-Reality-Perspective-Perceiving-Information/dp/1935504215) | William Kent [The Architecture of Open Source Applications](http://aosabook.org/en/) | Michael DiBernardo (editor) From 36a8ce35b6012e794ddab0a18496bf97d799ad27 Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Mon, 13 Mar 2017 18:17:09 -0400 Subject: [PATCH 120/131] extras/readings: Add Tarr's DSL book --- extras/readings.md | 1 + 1 file changed, 1 insertion(+) diff --git a/extras/readings.md b/extras/readings.md index 6c45155..3426cdb 100644 --- a/extras/readings.md +++ b/extras/readings.md @@ -60,6 +60,7 @@ Name | Author(s) [The Architecture of Open Source Applications](http://aosabook.org/en/) | Michael DiBernardo (editor) [Deep Learning](http://www.deeplearningbook.org/) | Ian Goodfellow, Yoshua Bengio and Aaron Courville [Bayesian Reasoning and Machine Learning](http://web4.cs.ucl.ac.uk/staff/D.Barber/pmwiki/pmwiki.php?n=Brml.HomePage) | David Barber +[Language Implementation Patterns](https://www.amazon.com/gp/product/193435645X) | Terence Parr [Compilers: Principles, Techniques, and Tools (2nd Edition)](http://www.amazon.com/Compilers-Principles-Techniques-Tools-2nd/dp/0321486811/) | Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman [Compiler Construction](http://www.ethoberon.ethz.ch/WirthPubl/CBEAll.pdf) | Niklaus Wirth [The Mythical Man-Month](https://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/) | Fred Brooks, Jr. \ No newline at end of file From 69a626e73e86206ddc9228da837244372c57bca7 Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Mon, 13 Mar 2017 18:19:29 -0400 Subject: [PATCH 121/131] extras/readings: Add distributed systems readings --- extras/readings.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/extras/readings.md b/extras/readings.md index 3426cdb..eaec39b 100644 --- a/extras/readings.md +++ b/extras/readings.md @@ -39,6 +39,8 @@ Name | Author(s) [Computer Organization and Design: The Hardware/Software Interface](https://www.amazon.com/gp/product/0124077269) | David Patternson, John Hennessy [Computer Networks (5th Edition)](http://www.amazon.com/Computer-Networks-5th-Andrew-Tanenbaum/dp/0132126958/) | Andrew S. Tanenbaum, David J. Wetherall [Computer Networking: A Top-Down Approach (6th Edition)](https://www.amazon.com/Computer-Networking-A-Top-Down-Approach/dp/1292153598/) | James F Kurose, Keith W Ross +[Distributed Systems: Principles and Paradigms](https://www.amazon.com/Distributed-Systems-Principles-Andrew-Tanenbaum/dp/153028175X) | Andrew Tanenbaum +[Distributed Systems Reading Group](http://dsrg.pdos.csail.mit.edu/papers/) | Various ## Theory From 1245834303d7f722bde40900968073b11d3eb47e Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Mon, 13 Mar 2017 18:25:45 -0400 Subject: [PATCH 122/131] Update to 7.0.1 --- CHANGELOG.md | 18 ++++++++++++++++++ README.md | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 599690f..692b2f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,24 @@ This project adheres *in spirit* to [Semantic Versioning](http://semver.org/): - "MINOR" updates correspond to changing courses without changing the topics - "PATCH" updates correspond to aesthetic and non-essential additions/removals or changing order of classes for better progression +## [7.0.1] 2017-03-11 +### Updated +- Fixed link to Bradfield's DIY computer science page + +### Added +- Note under Calculus One with links to errata and course progression recommendations +- Optional courses under extras: + - Strang's course on linear algebra + - Berkeley's Structure and Interpretation of Computer Programs +- Optional readings under extras: + - Van Roy's advanced programming book + - P&H's computer architecture book + - Skiena's algorithms book + - Strang's linear algebra book + - Database Management Systems book + - Tarr's book on creating your own Domain-specific language + - Readings from various authors on distributed systems + ## [7.0] 2017-03-09 Complete overhaul of program structure diff --git a/README.md b/README.md index e2eb8cb..b1a9ea8 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ just remember that you can't purchase success! # Curriculum -**Curriculum version**: `7.0` (see [CHANGELOG](CHANGELOG.md)) +**Curriculum version**: `7.0.1` (see [CHANGELOG](CHANGELOG.md)) - [Prerequisites](#prerequisites) - [Intro CS](#intro-cs) From 3885a2d3e8714cad0090b46865d08e241cc93617 Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Thu, 30 Mar 2017 17:45:30 -0400 Subject: [PATCH 123/131] Move optional Intro CS courses to extras Since we want every course in Intro CS and Core CS to be required, I have removed the optional courses from Intro CS. But they are still good courses so I made a new section in extras/courses.md to house courses on online learning. I also added a new course under this new section, the sequel to Learning How to Learn. --- README.md | 6 +----- extras/courses.md | 10 +++++++++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 077ae8d..4478444 100644 --- a/README.md +++ b/README.md @@ -109,9 +109,7 @@ and is knowledgeable enough now to decide which electives to take. ## Intro CS Use the first course, CS50, to determine if Computer Science is right for you. -Only proceed in the curriculum if it really excites you. -Feel free to use the second and third **optional** courses to gain the fundamental skills you need to excel at teaching yourself Computer Science; -they are very lightweight courses so it's suggested take them concurrently with another course. +Only proceed in the curriculum if it really excites you! **Topics covered**: imperative programming; @@ -127,8 +125,6 @@ and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Introduction to Computer Science - CS50](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x#!) ([alt](https://cs50.harvard.edu/)) | 12 weeks | 10-20 hours/week | none -[Learning How to Learn](https://www.coursera.org/learn/learning-how-to-learn) | 4 weeks | 2 hours/week | none -[Effective Thinking Through Mathematics](https://www.edx.org/course/effective-thinking-through-mathematics-utaustinx-ut-9-01x-0) | 4 weeks | 2 hours/week | none ## Core CS diff --git a/extras/courses.md b/extras/courses.md index 1023bc9..e1b52a8 100644 --- a/extras/courses.md +++ b/extras/courses.md @@ -23,6 +23,7 @@ Courses | Duration | Effort Courses | Duration | Effort :-- | :--: | :--: +[Effective Thinking Through Mathematics](https://www.edx.org/course/effective-thinking-through-mathematics-utaustinx-ut-9-01x-0) | 4 weeks | 2 hours/week | none [Introduction to Probability and Data](https://www.coursera.org/learn/probability-intro)| - | - [Linear Algebra (Strang)](https://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/index.htm) | - | - @@ -62,4 +63,11 @@ Courses | Duration | Effort [Intro to Machine Learning](https://www.udacity.com/course/intro-to-machine-learning--ud120)| 10 weeks | 6-10 hours/week [Machine Learning for Data Science and Analytics](https://www.edx.org/course/machine-learning-data-science-analytics-columbiax-ds102x-0)| 5 weeks | 7-10 hours/week [Processing Big Data with Azure HDInsight](https://www.edx.org/course/processing-big-data-azure-hdinsight-microsoft-dat202-1x-0)| 5 weeks | 3-4 hours/week -[Big Data Science with the BD2K-LINCS Data Coordination and Integration Center](https://www.coursera.org/course/bd2klincs)| 7 weeks | 4-5 hours/week \ No newline at end of file +[Big Data Science with the BD2K-LINCS Data Coordination and Integration Center](https://www.coursera.org/course/bd2klincs)| 7 weeks | 4-5 hours/week + +# Online Learning - Great Courses + +Courses | Duration | Effort +:-- | :--: | :--: +[Learning How to Learn](https://www.coursera.org/learn/learning-how-to-learn) | 4 weeks | 2 hours/week +[Mindshift](https://www.coursera.org/learn/mindshift) | 4 weeks | 2 hours/week \ No newline at end of file From 034c5419fb1bd1785a30f76f84cfa7f1c1781a94 Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Thu, 30 Mar 2017 17:59:47 -0400 Subject: [PATCH 124/131] Add Scala specialization --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 4478444..8b67b2e 100644 --- a/README.md +++ b/README.md @@ -390,6 +390,7 @@ Courses | Duration | Effort | Prerequisites [Cloud Computing (Specialization)](https://www.coursera.org/specializations/cloud-computing) | 30 weeks | 2-6 hours/week | C++ programming [Full Stack Web Development (Specialization)](https://www.coursera.org/specializations/full-stack) | 27 weeeks | 2-6 hours/week | programming, databases [Data Science (Specialization)](https://www.coursera.org/specializations/jhu-data-science) | 43 weeks | 1-6 hours/week | none +[Functional Programming in Scala (Specialization)](https://www.coursera.org/specializations/scala) | 29 weeks | 4-5 hours/weeks | One year programming experience ## Final project From 12e69f545226c4060d00ce1a334bf9b6e2954a8c Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Thu, 30 Mar 2017 18:06:02 -0400 Subject: [PATCH 125/131] Removed all but one Prolog reading --- README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/README.md b/README.md index 8b67b2e..c00e536 100644 --- a/README.md +++ b/README.md @@ -156,10 +156,7 @@ Programming Languages ([A](https://www.coursera.org/learn/programming-languages) #### Readings - **Required** to learn about monads, laziness, purity: [Learn You a Haskell for a Great Good!](http://learnyouahaskell.com/) -- **Required**, to learn about logic programming, backtracking, unification, any resource on Prolog covering these topics, such as: - - [Prolog Programming for Artificial Intelligence](https://www.amazon.com/Programming-Artificial-Intelligence-International-Computer/dp/0321417461) - - [Learn Prolog Now](http://www.learnprolognow.org/) - - [Art of Prolog](https://mitpress.mit.edu/books/art-prolog) +- **Required**, to learn about logic programming, backtracking, unification: [Learn Prolog Now!](http://www.learnprolognow.org/) ### Core math From e8b6b2540b86b6228d56d1c0a0c5cb685d7d6f09 Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Thu, 30 Mar 2017 18:08:00 -0400 Subject: [PATCH 126/131] Move alt comparch course to extras --- README.md | 6 +----- extras/courses.md | 1 + 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index c00e536..aba048c 100644 --- a/README.md +++ b/README.md @@ -335,7 +335,7 @@ Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Electricity and Magnetism, Part 1](https://www.edx.org/course/electricity-magnetism-part-1-ricex-phys102-1x-0)1 | 7 weeks | 8-10 hours/week | calculus, basic mechanics [Electricity and Magnetism, Part 2](https://www.edx.org/course/electricity-magnetism-part-2-ricex-phys102-2x-0) | 7 weeks | 8-10 hours/week | Electricity and Magnetism, Part 1 -[Computation Structures 1: Digital Circuits](https://www.edx.org/course/computation-structures-part-1-digital-mitx-6-004-1x-0)2 | 10 weeks | 6 hours/week | electricity, magnetism +[Computation Structures 1: Digital Circuits](https://www.edx.org/course/computation-structures-part-1-digital-mitx-6-004-1x-0) | 10 weeks | 6 hours/week | electricity, magnetism [Computation Structures 2: Computer Architecture](https://www.edx.org/course/computation-structures-2-computer-mitx-6-004-2x) | 10 weeks | 6 hours/week | Computation Structures 1 [Computation Structures 3: Computer Organization](https://www.edx.org/course/computation-structures-3-computer-mitx-6-004-3x-0) | 10 weeks | 6 hours/week | Computation Structures 2 [ops-class.org - Hack the Kernel](https://www.ops-class.org/) | 15 weeks | 6 hours/week | algorithms @@ -345,10 +345,6 @@ These courses assume knowledge of basic physics; if you are struggling, you can find a physics MOOC or utilize the materials from Khan Academy: [Khan Academy - Physics](https://www.khanacademy.org/science/physics) -**2 Note**: -A shorter, less intense (but still very advanced) alternative to Computation Structures is here: -[Computer Architecture](https://www.coursera.org/learn/comparch) - ### Advanced theory **Topics covered**: diff --git a/extras/courses.md b/extras/courses.md index e1b52a8..fc0645f 100644 --- a/extras/courses.md +++ b/extras/courses.md @@ -31,6 +31,7 @@ Courses | Duration | Effort Courses | Duration | Effort :-- | :--: | :--: +[Computer Architecture](https://www.coursera.org/learn/comparch) | - | 5-8 hours/week [Operating System Engineering](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2012/) | - | - [Introduction to Operating Systems](https://www.udacity.com/course/introduction-to-operating-systems--ud923)| 8 weeks | 5-8 hours/week [Advanced Operating Systems](https://www.udacity.com/course/advanced-operating-systems--ud189)| 5 weeks | 5-8 hours/week From 6e2354cbf2a2bf9122c567c98cb1d67f028dceb2 Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Thu, 30 Mar 2017 18:17:27 -0400 Subject: [PATCH 127/131] Update to 7.0.2 --- CHANGELOG.md | 11 +++++++++++ README.md | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 692b2f9..694e93d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,17 @@ This project adheres *in spirit* to [Semantic Versioning](http://semver.org/): - "MINOR" updates correspond to changing courses without changing the topics - "PATCH" updates correspond to aesthetic and non-essential additions/removals or changing order of classes for better progression +## [7.0.2] 2017-03-30 +### Updated +- Moved optional online learning courses to extras/courses in a new section +- Moved alternate computer architecture course to extras/courses + +### Added +- Scala specialization under Advanced applications + +### Removed +- Removed all but one choice for required readings to make the curriculum simpler + ## [7.0.1] 2017-03-11 ### Updated - Fixed link to Bradfield's DIY computer science page diff --git a/README.md b/README.md index aba048c..4775a1a 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ just remember that you can't purchase success! # Curriculum -**Curriculum version**: `7.0.1` (see [CHANGELOG](CHANGELOG.md)) +**Curriculum version**: `7.0.2` (see [CHANGELOG](CHANGELOG.md)) - [Prerequisites](#prerequisites) - [Intro CS](#intro-cs) From fd19e0927487248e0f97189c05711005d16d5e89 Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Sat, 1 Apr 2017 15:23:17 -0400 Subject: [PATCH 128/131] Revert reformat of ProgLang courses --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4775a1a..4d93bb4 100644 --- a/README.md +++ b/README.md @@ -152,7 +152,9 @@ Courses | Duration | Effort | Prerequisites [How to Code - Complex Data](https://www.edx.org/course/how-code-complex-data-ubcx-htc2x) | 6 weeks | 8-10 hours/week | How to Code: Simple Data [Software Construction - Data Abstraction](https://www.edx.org/course/software-construction-data-abstraction-ubcx-softconst1x) | 6 weeks | 8-10 hours/week | How to Code - Complex Data [Software Construction - Object-Oriented Design](https://www.edx.org/course/software-construction-object-oriented-ubcx-softconst2x) | 6 weeks | 8-10 hours/week | Software Construction - Data Abstraction -Programming Languages ([A](https://www.coursera.org/learn/programming-languages), [B](https://www.coursera.org/learn/programming-languages-part-b), [C](https://www.coursera.org/learn/programming-languages-part-c)) | 10 weeks | 8-16 hours/week | recommended: C and Java +[Programming Languages, Part A](https://www.coursera.org/learn/programming-languages) | 4 weeks | 8-16 hours/week | recommended: Java, C +[Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 8-16 hours/week | Programming Languages, Part A +[Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 8-16 hours/week | Programming Languages, Part B #### Readings - **Required** to learn about monads, laziness, purity: [Learn You a Haskell for a Great Good!](http://learnyouahaskell.com/) From 2ff72f7c18fa2640d038f0581ad6f57199ba1619 Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Sun, 9 Apr 2017 14:26:46 -0400 Subject: [PATCH 129/131] Added new MIT intro course --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4d93bb4..e662810 100644 --- a/README.md +++ b/README.md @@ -108,8 +108,8 @@ and is knowledgeable enough now to decide which electives to take. ## Intro CS -Use the first course, CS50, to determine if Computer Science is right for you. -Only proceed in the curriculum if it really excites you! +These courses will introduce you to the world of computer science. +Both are required, but feel free to skip straight to the second course when CS50 (the first course) moves away from C. **Topics covered**: imperative programming; @@ -117,7 +117,7 @@ procedural programming; C; manual memory management; basic data structures and algorithms; -basic Python; +Python; SQL; basic HTML, CSS, JavaScript; and more. @@ -125,6 +125,7 @@ and more. Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Introduction to Computer Science - CS50](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x#!) ([alt](https://cs50.harvard.edu/)) | 12 weeks | 10-20 hours/week | none +[Introduction to Computer Science and Programming using Python](https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x-10) | 9 weeks | 15 hours/week | high school algebra ## Core CS From 236acc84e88a206d5c690c6b8acf01260132a4a6 Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Sun, 9 Apr 2017 14:32:07 -0400 Subject: [PATCH 130/131] Added Reliable Distributed Algorithms --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 4d93bb4..7e8d9b7 100644 --- a/README.md +++ b/README.md @@ -353,6 +353,11 @@ if you are struggling, you can find a physics MOOC or utilize the materials from formal languages; Turing machines; computability; +event-driven concurrency; +automata; +distributed shared memory; +consensus algorithms; +state machine replication; computational geometry theory; propositional logic; relational logic; @@ -365,6 +370,8 @@ Courses | Duration | Effort | Prerequisites :-- | :--: | :--: | :--: [Introduction to Logic](https://www.coursera.org/learn/logic-introduction) | 10 weeks | 4-8 hours/week | set theory [Automata Theory](https://lagunita.stanford.edu/courses/course-v1:ComputerScience+Automata+Fall2016/about) | 8 weeks | 10 hours/week | discrete mathematics, logic, algorithms +[Reliable Distributed Systems, Part 1](https://www.edx.org/course/reliable-distributed-algorithms-part-1-kthx-id2203-1x) | 5 weeks | 5 hours/week | Scala, intermediate CS +[Reliable Distributed Systems, Part 2](https://www.edx.org/course/reliable-distributed-algorithms-part-2-kthx-id2203-2x) | 5 weeks | 5 hours/week | Part 1 [Computational Geometry](https://www.edx.org/course/computational-geometry-tsinghuax-70240183x) | 16 weeks | 8 hours/week | algorithms, C++ [Introduction to Formal Concept Analysis](https://www.coursera.org/learn/formal-concept-analysis) | 6 weeks | 4-6 hours/week | logic, probability [Game Theory](https://www.coursera.org/learn/game-theory-1) | 8 weeks | x hours/week | mathematical thinking, probability, calculus From 117516124049a81bbb9c8c27b612f8c1286c5829 Mon Sep 17 00:00:00 2001 From: Josh Hanson Date: Mon, 10 Apr 2017 17:55:24 -0400 Subject: [PATCH 131/131] Update to 7.1.0 --- CHANGELOG.md | 8 ++++++++ README.md | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 694e93d..ea2683d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,14 @@ This project adheres *in spirit* to [Semantic Versioning](http://semver.org/): - "MINOR" updates correspond to changing courses without changing the topics - "PATCH" updates correspond to aesthetic and non-essential additions/removals or changing order of classes for better progression +## [7.1.0] 2017-04-10 +### Updated +- Reverted reformat of programming languages course + +### Added +- Reliable Distributed Algorithms courses +- New Introduction to CS course + ## [7.0.2] 2017-03-30 ### Updated - Moved optional online learning courses to extras/courses in a new section diff --git a/README.md b/README.md index e328a06..a933fb8 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ just remember that you can't purchase success! # Curriculum -**Curriculum version**: `7.0.2` (see [CHANGELOG](CHANGELOG.md)) +**Curriculum version**: `7.1.0` (see [CHANGELOG](CHANGELOG.md)) - [Prerequisites](#prerequisites) - [Intro CS](#intro-cs)