From 499d39e59ef07c41404753eea6ed427adbdc9331 Mon Sep 17 00:00:00 2001
From: Josh Hanson
Date: Sat, 18 Feb 2017 22:05:51 -0500
Subject: [PATCH 001/519] 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 c8fe70497..53b7d1a08 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 002/519] Fixed minor capitalization issues
---
README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 53b7d1a08..3d9fcf36c 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! [ 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 003/519] Overhaul of course structure
---
README.md | 298 ++++++++++++++----------------------------------------
1 file changed, 77 insertions(+), 221 deletions(-)
diff --git a/README.md b/README.md
index 3d9fcf36c..151edfca7 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
-
-- [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)
+# Curriculum
+
+- [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
-
-### 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)
-
-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
-
-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
-
-Courses | Duration | Effort
-:-- | :--: | :--:
-[Functional Programming Principles in Scala](https://www.coursera.org/course/progfun)| 7 weeks | 5-7 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
-### Software Testing
-
-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)
-
+### Core math
Courses | Duration | Effort
:-- | :--: | :--:
+[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
-### Software Architecture
-
-Courses | Duration | Effort
-:-- | :--: | :--:
-[Software Architecture & Design](https://www.udacity.com/course/software-architecture-design--ud821)| 8 weeks | 6 hours/week
-
-### Theory
-
-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
-
+### 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
-### Cloud Computing
-
+### Core theory
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
+[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
+### 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
-[Cryptography II](https://www.coursera.org/course/crypto2)| 6 weeks | 6-8 hours/week
-
-### Security
+### Advanced programming
Courses | Duration | Effort
:-- | :--: | :--:
-[Introduction to Cyber Security](https://www.futurelearn.com/courses/introduction-to-cyber-security) | 8 weeks | 3 hours/week
+[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
-### Compilers
+## 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
-
-### 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)

-## 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?
+
+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.
-**Yes!** The intention is to conclude **all** the courses listed here!
+## Duration of the project
-### 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 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 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! [: 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! [ 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 004/519] 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 151edfca7..ce1d06713 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 005/519] Add Bradfield reference
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index ce1d06713..f1c45a8cb 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 006/519] Added course and optional textbooks
---
README.md | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/README.md b/README.md
index f1c45a8cb..c7d948382 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 007/519] Added prerequisites sections
---
README.md | 90 +++++++++++++++++++++++++++----------------------------
1 file changed, 45 insertions(+), 45 deletions(-)
diff --git a/README.md b/README.md
index c7d948382..a77b372b7 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 008/519] 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 a77b372b7..bc5ae4205 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 009/519] Add note about Java
---
README.md | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index bc5ae4205..4b3e123e8 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 010/519] Clean-up
---
README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 4b3e123e8..49f60ec6c 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 011/519] Add topic descriptions
---
README.md | 29 ++++++++++++++++++++++++-----
1 file changed, 24 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index 49f60ec6c..7dc01fbe0 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 012/519] Add recommended specializations
---
README.md | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 7dc01fbe0..9aa931edd 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.
-
-The following platforms currently offer specializations:
+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
+- [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 013/519] Rename specializations to Pro CS
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 9aa931edd..d746b5951 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 014/519] 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 d746b5951..fb8be59ea 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! [](https://github.com/open-source-society/computer-science)
+Put the OSSU-CS badge in the README of your repository!
+[](https://github.com/open-source-society/computer-science)
- Markdown: `[](https://github.com/open-source-society/computer-science)`
- HTML: `
`
@@ -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! [ 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 015/519] Fix specializations link
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index fb8be59ea..00516b31a 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 016/519] Fix reformatting
---
README.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 00516b31a..7269c96e0 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 017/519] 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 7269c96e0..8f3c8b28c 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!
+[](https://github.com/open-source-society/computer-science)
+
+- Markdown: `[](https://github.com/open-source-society/computer-science)`
+- HTML: `
`
+
+### 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.
+

# 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!
-[](https://github.com/open-source-society/computer-science)
-
-- Markdown: `[](https://github.com/open-source-society/computer-science)`
-- HTML: `
`
-
-**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 018/519] Re-arrange content policy
---
README.md | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/README.md b/README.md
index 8f3c8b28c..5f8fc8ecb 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 019/519] Mention final project in intro
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index 5f8fc8ecb..408632a6f 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 020/519] Fix table of contents
---
README.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 408632a6f..70a4eea45 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 021/519] Add Princeton ALgorithms to electives
---
README.md | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 70a4eea45..70159f780 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 022/519] Fix grammar
---
README.md | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 70159f780..99a23827e 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 023/519] Add note about systems programming
---
README.md | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 99a23827e..e78ab9682 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 024/519] Add section explaining cost
---
README.md | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/README.md b/README.md
index e78ab9682..47a73b629 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 025/519] Fix wrong word
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 47a73b629..04d49ddff 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 026/519] Added Calculus One website link
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index 04d49ddff..3892a4423 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 027/519] 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 3892a4423..63c82222f 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 47c0a0175b3eefbd7ad220086d01629ffe047676 Mon Sep 17 00:00:00 2001
From: SriLMan
Date: Wed, 22 Feb 2017 17:28:38 -0500
Subject: [PATCH 028/519] Added free books and courses
---
extras/free-books.md | 3 +++
extras/free-courses.md | 7 ++++++-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/extras/free-books.md b/extras/free-books.md
index ab172c392..260726b74 100644
--- a/extras/free-books.md
+++ b/extras/free-books.md
@@ -77,8 +77,11 @@ 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
+[The Elements of Computer Systems - From NAND to Tetris](http://www.nand2tetris.org/course.php) |Noam Nisan, Shimon Schocken
### Operating Systems
+:-- | :--:
+[Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/) |Remzi H. Arpaci-Dusseau, Andrea C. Arpaci-Dusseau
### Computer Networks
diff --git a/extras/free-courses.md b/extras/free-courses.md
index 82e90142e..b6cdccab5 100644
--- a/extras/free-courses.md
+++ b/extras/free-courses.md
@@ -125,7 +125,7 @@ Courses | Duration | Effort
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
+[The Hardware/Software Interface](https://courses.cs.washington.edu/courses/cse351/16sp/)| 8 weeks | 10-15 hours/week
### Operating Systems
@@ -194,6 +194,11 @@ Courses | Duration | Effort
### Compilers
+Courses | Duration | Effort
+:-- | :--: | :--:
+[Compilers](https://lagunita.stanford.edu/courses/Engineering/Compilers/Fall2014/about)| 9 weeks | 6-8 hours/week
+[Computer Language Engineering](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-sma-5502-fall-2005/)| 15 weeks | -
+
### Parallel Computing
### UX Design
From 21a3397a2a311591d2fa291f2729d44c2841bf91 Mon Sep 17 00:00:00 2001
From: Joshua Hanson
Date: Sat, 25 Feb 2017 15:25:53 -0500
Subject: [PATCH 029/519] Reinstate MIT discrete math course
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 63c82222f..e8f04347c 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 030/519] Move up less advanced math
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index e8f04347c..2087dfc2d 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 031/519] 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 2087dfc2d..8029c1e6b 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 032/519] Fix note formatting
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 8029c1e6b..db66779b3 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 033/519] Create Advanced CS sections
---
README.md | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/README.md b/README.md
index db66779b3..9c8c577c9 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 034/519] Move around courses reflecting new structure
---
README.md | 65 +++++++++++++++++++++++++++++++++++++------------------
1 file changed, 44 insertions(+), 21 deletions(-)
diff --git a/README.md b/README.md
index 9c8c577c9..b95e5679f 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
+Courses | Duration | Effort | Prerequisites
+:-- | :--: | :--: | :--:
+
### Advanced theory
-### Advanced applications
+**Topics covered**:
+formal languages;
+Turing machines;
+computability;
+and more.
-## Electives
+Courses | Duration | Effort | Prerequisites
+:-- | :--: | :--: | :--:
+[Automata Theory](https://lagunita.stanford.edu/courses/course-v1:ComputerScience+Automata+Fall2016/about) | 8 weeks | 10 hours/week | discrete mathematics
-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.
+### 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
:-- | :--: | :--: | :--:
-[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
+[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 035/519] Fix curriculum TOC
---
README.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/README.md b/README.md
index b95e5679f..d3461e853 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 036/519] 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 d3461e853..73c43e94c 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 037/519] 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 73c43e94c..2d3cc79f7 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 038/519] 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 2d3cc79f7..276876d5b 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 039/519] Add advanced systems courses
---
README.md | 25 ++++++++++++++++++-------
1 file changed, 18 insertions(+), 7 deletions(-)
diff --git a/README.md b/README.md
index 276876d5b..4df9cff2d 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 040/519] 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 4df9cff2d..a2eff05ff 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 041/519] Move most specializations to Advanced applications
---
README.md | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/README.md b/README.md
index a2eff05ff..29756489c 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:
+- [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 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:
From b9281a73d8548bb7e1e833f944e190527da88ea9 Mon Sep 17 00:00:00 2001
From: Joshua Hanson
Date: Sat, 25 Feb 2017 18:37:14 -0500
Subject: [PATCH 042/519] 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 29756489c..1b630e333 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 043/519] Add requirements for Advanced CS
---
README.md | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 1b630e333..775415dba 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 044/519] 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 775415dba..a07f65cb5 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 045/519] Add more Advanced theory courses
---
README.md | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index a07f65cb5..82728bbdb 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 046/519] Explain Advanced CS
---
README.md | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 82728bbdb..bfd15d78f 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 047/519] 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 bfd15d78f..df9f522d6 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 048/519] 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 df9f522d6..21705fc7a 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!
+[](https://github.com/open-source-society/computer-science)
+
+- Markdown: `[](https://github.com/open-source-society/computer-science)`
+- HTML: `
`
## 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!
-[](https://github.com/open-source-society/computer-science)
-
-- Markdown: `[](https://github.com/open-source-society/computer-science)`
-- HTML: `
`
-
### 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 049/519] Remove FutureLearn
---
README.md | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 21705fc7a..e11b4706e 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 050/519] Minor wording updates
---
README.md | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/README.md b/README.md
index e11b4706e..07a727f55 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 051/519] Add readings
---
README.md | 35 ++++++++++++++++++++++++++++++-----
1 file changed, 30 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index 07a727f55..83d65de02 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 052/519] Update prereqs for Automata
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 83d65de02..c4d9c04b5 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 053/519] 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 c4d9c04b5..029c44260 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 054/519] Fix order of sections
---
README.md | 38 +++++++++++++++++++-------------------
1 file changed, 19 insertions(+), 19 deletions(-)
diff --git a/README.md b/README.md
index 029c44260..75708c0c7 100644
--- a/README.md
+++ b/README.md
@@ -383,24 +383,6 @@ Put the OSSU-CS badge in the README of your repository!
- Markdown: `[](https://github.com/open-source-society/computer-science)`
- HTML: `
`
-
-## 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)

@@ -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 055/519] Remove excessive bolding
---
README.md | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/README.md b/README.md
index 75708c0c7..de5f72fd0 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 056/519] Make OS:TEP required reading
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index de5f72fd0..dfe03262d 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 057/519] Add clarification about algorithms courses
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index dfe03262d..7102d1555 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 058/519] 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 7102d1555..70b759535 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)
+

# 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 059/519] Remove Software Testing
---
README.md | 3 ---
1 file changed, 3 deletions(-)
diff --git a/README.md b/README.md
index 70b759535..d0a43884b 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 060/519] New UBC course sequence
---
README.md | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
index d0a43884b..7e957ae9f 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 061/519] 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 7e957ae9f..ef13afc37 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 062/519] 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 ef13afc37..04a94aaf1 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 063/519] Update math prereqs and topics
---
README.md | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
index 04a94aaf1..86760340d 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 064/519] Change optional readings to supplemental
---
README.md | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index 86760340d..06fe8ae9b 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 065/519] Clean up Core applications
---
README.md | 17 +++++++----------
1 file changed, 7 insertions(+), 10 deletions(-)
diff --git a/README.md b/README.md
index 06fe8ae9b..23d7ed368 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 066/519] Remove courses that never run
---
README.md | 11 -----------
1 file changed, 11 deletions(-)
diff --git a/README.md b/README.md
index 23d7ed368..144d97ca6 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 067/519] Clean up Advanced CS
---
README.md | 48 ++++++++++++++++++++++++------------------------
1 file changed, 24 insertions(+), 24 deletions(-)
diff --git a/README.md b/README.md
index 144d97ca6..9f7d21f76 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 068/519] 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 89e08bfcc..000000000
--- 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 069/519] 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 9f7d21f76..56f8d96c8 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!

diff --git a/extras/articles.md b/extras/articles.md
deleted file mode 100644
index d3fa87cb5..000000000
--- 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 ab172c392..000000000
--- 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 cdee8758f..7cebe4f6c 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 000000000..087b87da3
--- /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 070/519] 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 82e90142e..5f88b7f09 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 7cebe4f6c..000000000
--- 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 071/519] 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 5f88b7f09..1ce6ad7ca 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 087b87da3..3e26a9540 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 072/519] 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 56f8d96c8..42d95d1e9 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 1ce6ad7ca..d2b713403 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 073/519] Fix rendering error
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 42d95d1e9..aecca635a 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 074/519] Add multivariable calculus
---
README.md | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index aecca635a..d6436e58a 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 075/519] 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 d6436e58a..8336402f3 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 076/519] Standardize prereqs formatting
---
README.md | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/README.md b/README.md
index 8336402f3..58cc7e7d5 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 077/519] Move probability intro to advanced
---
README.md | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
index 58cc7e7d5..50bfabd21 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 078/519] Fix errors
---
README.md | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 50bfabd21..e9e97eb2b 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 079/519] 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 d2b713403..273ea3b60 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 080/519] 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 273ea3b60..1d0f35635 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 081/519] 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 1d0f35635..b661c5e62 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 082/519] 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 b661c5e62..ec985a084 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 083/519] 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 e9e97eb2b..f7ab61a1e 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 084/519] Clarify Intro CS requirements
---
README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index f7ab61a1e..9c611736b 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 085/519] 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 000000000..f7c6ba931
--- /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 9c611736b..e4c0463e0 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 086/519] Change to shorter image
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index e4c0463e0..80241fd29 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-
+
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 087/519] Condense readme
---
CHANGELOG.md | 8 +-
LICENSE | 2 +-
README.md | 233 ++++++++++++++++++---------------------------
REQUIREMENTS.md | 3 +
extras/readings.md | 1 +
5 files changed, 107 insertions(+), 140 deletions(-)
create mode 100644 REQUIREMENTS.md
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d7d9dbfee..ac20047e0 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 05434d246..2b7761ff0 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 80241fd29..6b7e0c2bd 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
-
-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.
-
-# Motivation & Preparation
-
-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/)
-
-**Are you ready to get started?**
+# Summary
+
+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.
+
+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.
+
+**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
+
+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).
+
+**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
+
+**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: `[](https://github.com/open-source-society/computer-science)`
- HTML: `
`
+### 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

-# How to use this guide
-
-## Order of the classes
-
-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.
-
-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.
+# Community
-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/)
+- 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! [](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!
-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.
+> **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**.
-## 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! [](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 000000000..bc4ae0805
--- /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 3e26a9540..d29a07497 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 088/519] Fix formatting inconsistencies
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 6b7e0c2bd..d5f7b84ed 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 089/519] Remove project suggestions
---
README.md | 7 -------
1 file changed, 7 deletions(-)
diff --git a/README.md b/README.md
index d5f7b84ed..34611f6ec 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 090/519] Links to CodeTriage and FirstTimersOnly
---
README.md | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/README.md b/README.md
index 34611f6ec..c065e73ce 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 091/519] Clarify project submission process
---
README.md | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index c065e73ce..a929a4a15 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!
[](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 092/519] Wording update
---
CONTRIBUTING.md | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index f7c6ba931..4f945c9f1 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 093/519] 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 d29a07497..3d387b103 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 094/519] 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 3d387b103..9dffac074 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 095/519] Update CONTRIBUTING
---
CONTRIBUTING.md | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 4f945c9f1..622b53e99 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 096/519] REQUIREMENTS: Initial content
---
REQUIREMENTS.md | 61 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 60 insertions(+), 1 deletion(-)
diff --git a/REQUIREMENTS.md b/REQUIREMENTS.md
index bc4ae0805..9e101120c 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 097/519] 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 a929a4a15..688494102 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 9e101120c..c2d54a766 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 098/519] 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 ac20047e0..599690fa1 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 c2d54a766..7e03e9a08 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 099/519] 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 688494102..6da28c70e 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 100/519] Update Bradfield DIY CS link
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 688494102..e2eb8cbd5 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 101/519] 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 ec985a084..a180f2741 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 102/519] 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 9dffac074..0703c6aaa 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 103/519] 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 0703c6aaa..483fe00ee 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 104/519] 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 483fe00ee..1b0f3e1b2 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 105/519] 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 a180f2741..1023bc9e1 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 1b0f3e1b2..f399d7153 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 106/519] 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 f399d7153..02d8e67fd 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 107/519] 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 02d8e67fd..6c45155f5 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 108/519] 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 6c45155f5..3426cdbda 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 109/519] 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 3426cdbda..eaec39b69 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 110/519] 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 599690fa1..692b2f9d9 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 e2eb8cbd5..b1a9ea8a2 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 253860e76e6b79de010af118d4ae9e251cd26ff1 Mon Sep 17 00:00:00 2001
From: Eric Douglas
Date: Tue, 28 Mar 2017 07:18:08 -0300
Subject: [PATCH 111/519] Update free-books.md
---
extras/free-books.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/extras/free-books.md b/extras/free-books.md
index 260726b74..09ff63bed 100644
--- a/extras/free-books.md
+++ b/extras/free-books.md
@@ -77,7 +77,6 @@ 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
-[The Elements of Computer Systems - From NAND to Tetris](http://www.nand2tetris.org/course.php) |Noam Nisan, Shimon Schocken
### Operating Systems
:-- | :--:
From 62cb5c42ce5b17fc8e6b2bc1438831d549122b73 Mon Sep 17 00:00:00 2001
From: Eric Douglas
Date: Tue, 28 Mar 2017 07:18:42 -0300
Subject: [PATCH 112/519] 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 09ff63bed..af27cb090 100644
--- a/extras/free-books.md
+++ b/extras/free-books.md
@@ -79,6 +79,7 @@ Name | Author(s)
### Computer Architecture
### Operating Systems
+Name | Author(s)
:-- | :--:
[Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/) |Remzi H. Arpaci-Dusseau, Andrea C. Arpaci-Dusseau
From 3885a2d3e8714cad0090b46865d08e241cc93617 Mon Sep 17 00:00:00 2001
From: Josh Hanson
Date: Thu, 30 Mar 2017 17:45:30 -0400
Subject: [PATCH 113/519] 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 077ae8d2d..44784441d 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 1023bc9e1..e1b52a8e6 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 114/519] Add Scala specialization
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index 44784441d..8b67b2e18 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 115/519] 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 8b67b2e18..c00e536d6 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 116/519] 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 c00e536d6..aba048c95 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 e1b52a8e6..fc0645fc3 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 117/519] 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 692b2f9d9..694e93dad 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 aba048c95..4775a1a57 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 118/519] Revert reformat of ProgLang courses
---
README.md | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 4775a1a57..4d93bb4b6 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 119/519] Added new MIT intro course
---
README.md | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 4d93bb4b6..e6628102b 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 120/519] Added Reliable Distributed Algorithms
---
README.md | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/README.md b/README.md
index 4d93bb4b6..7e8d9b7c6 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 121/519] 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 694e93dad..ea2683d26 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 e328a065b..a933fb81f 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)
From c7b3396c9fd55ce5749b126782ce747d1f0c7aff Mon Sep 17 00:00:00 2001
From: Eric Douglas
Date: Tue, 11 Apr 2017 08:57:07 -0300
Subject: [PATCH 122/519] Update label
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index daa98972e..41336ad09 100644
--- a/README.md
+++ b/README.md
@@ -167,7 +167,7 @@ Courses | Duration | Effort | Prerequisites
`linear transformations`
`matrices`
`vectors`
-mathematical proofs;
+`mathematical proofs`
`number theory`
`differential calculus`
`integral calculus`
From 9656e01c8609e5247054c2f04c917a98911d3ff5 Mon Sep 17 00:00:00 2001
From: Eric Douglas
Date: Sat, 22 Apr 2017 09:57:54 -0300
Subject: [PATCH 123/519] Add reference to Mega project list #397
---
CHANGELOG.md | 3 +++
PROJECTS.md | 2 ++
README.md | 2 +-
3 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5de6dd0e4..615a46318 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,9 @@ 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.2] 2017-04-22
+### Updated
+- Add link to Mega Project List in the introduction of the Projects section
## [7.1.1] 2017-04-11
### Updated
diff --git a/PROJECTS.md b/PROJECTS.md
index 69ef68163..5f134acde 100644
--- a/PROJECTS.md
+++ b/PROJECTS.md
@@ -3,6 +3,8 @@
Projects created by OSSU's students for each course of our [**Computer Science**](https://github.com/open-source-society/computer-science) curriculum.
+For more project ideas, check the [Mega Project List](https://github.com/karan/Projects).
+
- [Introduction to Computer Science](#introduction-to-computer-science)
- [Programming](#programming)
- [Math](#math)
diff --git a/README.md b/README.md
index 41336ad09..b2b67359b 100644
--- a/README.md
+++ b/README.md
@@ -77,7 +77,7 @@ just remember that you can't purchase success!
# Curriculum
-**Curriculum version**: `7.1.1` (see [CHANGELOG](CHANGELOG.md))
+**Curriculum version**: `7.1.2` (see [CHANGELOG](CHANGELOG.md))
- [Prerequisites](#prerequisites)
- [Introduction to Computer Science](#introduction-to-computer-science)
From 6f206699551b22a6ef1ec9dc53619cb17bb07b6d Mon Sep 17 00:00:00 2001
From: Josh Hanson
Date: Sun, 23 Apr 2017 16:12:01 -0400
Subject: [PATCH 124/519] Add Software Testing
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index b2b67359b..d3f0c0002 100644
--- a/README.md
+++ b/README.md
@@ -297,6 +297,7 @@ 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
+[Software Testing](https://www.udacity.com/course/software-testing--cs258) | 4 weeks | 6 hours/week | programming experience
[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 | software engineering in Java
From 17edc61704739573e2f84a738f58356b25585a19 Mon Sep 17 00:00:00 2001
From: Josh Hanson
Date: Sat, 29 Apr 2017 11:53:10 -0400
Subject: [PATCH 125/519] Add link to Stanford Lagunita Algorithms
---
README.md | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index d3f0c0002..fc42b4056 100644
--- a/README.md
+++ b/README.md
@@ -236,11 +236,16 @@ Courses | Duration | Effort | Prerequisites
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 | Algorithms (1/4)
+[Algorithms (1/4)](https://www.coursera.org/learn/algorithms-divide-conquer)1 | 4 weeks | 4-8 hours/week | one programming language, proofs, probability
+[Algorithms (2/4)](https://www.coursera.org/learn/algorithms-graphs-data-structures)1 | 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)
+**1 Note**:
+Parts 1 and 2 of Stanford Algorithms is available as [Algorithms: Design and Analysis](https://lagunita.stanford.edu/courses/course-v1:Engineering+Algorithms1+SelfPaced/about) through Stanford Lagunita.
+Unlike the Coursera version, quizzes and tests are auto-graded for free.
+If you are pursuing an optional certificate from Coursera, you will still need to complete parts 1 and 2 through Coursera.
+
### Core applications
**Topics covered**:
From bb0d93e6af4e14a5dd2af79552d35b5906d9ce66 Mon Sep 17 00:00:00 2001
From: Josh Hanson
Date: Sat, 29 Apr 2017 12:37:58 -0400
Subject: [PATCH 126/519] Added Parametric Equations and Polar Coordinates
This content isn't included in the Core Math Calculus Two course,
but it's necessary to learn it before moving on to Advanced Math
Multivariable Calculus. So the specific section is taken from
MIT's Single-variable Calculus is linked which saves us from needing
to change anything in Core CS.
---
README.md | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index fc42b4056..4312fdb6b 100644
--- a/README.md
+++ b/README.md
@@ -311,6 +311,8 @@ Courses | Duration | Effort | Prerequisites
**Topics covered**:
`real analysis`
+`parametric equations`
+`polar coordinate systems`
`multivariable integrals`
`multivariable differentials`
`probability theory`
@@ -319,8 +321,9 @@ Courses | Duration | Effort | Prerequisites
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
+[Calculus: Parametric Equations and Polar Coordinates](https://ocw.mit.edu/courses/mathematics/18-01sc-single-variable-calculus-fall-2010/unit-4-techniques-of-integration/part-c-parametric-equations-and-polar-coordinates/) | - | - | 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 | Parametric Equations and Polar Coordinates
+[Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-2) | 18 weeks | 12 hours/week | Multivariable Calculus
### Advanced systems
From 40d653c67ee09be8efd042b836444ad5e0711894 Mon Sep 17 00:00:00 2001
From: Josh Hanson
Date: Sat, 29 Apr 2017 12:51:08 -0400
Subject: [PATCH 127/519] Update to 7.2.0
Closes open-source-society/computer-science#398 and
closes open-source-society/computer-science#399
---
CHANGELOG.md | 6 ++++++
README.md | 2 +-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 615a46318..86365bb95 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,12 @@ 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.2.0] 2017-04-28
+### Added
+- Software Testing course
+- Link to Stanford Lagunita's Algorithms: Design and Analysis
+- Added link to the section on parametric equations and polar coordinates from MIT's Single Variable Calculus course in order to properly prepare students for Multivariable Calculus
+
## [7.1.2] 2017-04-22
### Updated
- Add link to Mega Project List in the introduction of the Projects section
diff --git a/README.md b/README.md
index 4312fdb6b..33d893ccc 100644
--- a/README.md
+++ b/README.md
@@ -77,7 +77,7 @@ just remember that you can't purchase success!
# Curriculum
-**Curriculum version**: `7.1.2` (see [CHANGELOG](CHANGELOG.md))
+**Curriculum version**: `7.2.0` (see [CHANGELOG](CHANGELOG.md))
- [Prerequisites](#prerequisites)
- [Introduction to Computer Science](#introduction-to-computer-science)
From 4b2445dccfc9776fd47083ac099567f2ea490ec0 Mon Sep 17 00:00:00 2001
From: Oscar Yih
Date: Tue, 9 May 2017 02:12:55 -0700
Subject: [PATCH 128/519] Fixed spelling error in README.md
The word 'weeks' in the Full Stack Web Development (Specialization) had an extra e.
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 33d893ccc..6ed56d448 100644
--- a/README.md
+++ b/README.md
@@ -400,7 +400,7 @@ Courses | Duration | Effort | Prerequisites
[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
+[Full Stack Web Development (Specialization)](https://www.coursera.org/specializations/full-stack) | 27 weeks | 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
From bdbd0470db981be1358cb13211ab52bd5edc6db6 Mon Sep 17 00:00:00 2001
From: Yuchen Pei
Date: Tue, 9 May 2017 18:32:55 -0400
Subject: [PATCH 129/519] Add UPenn Intro to Haskell to extra courses (#404)
---
extras/courses.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/extras/courses.md b/extras/courses.md
index fc0645fc3..cab7295dc 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -18,6 +18,7 @@ Courses | Duration | Effort
[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/) | - | -
+[Introduction to Haskell](https://www.seas.upenn.edu/~cis194/fall16/) | 14 weeks | 4 hours/week
## Math
@@ -71,4 +72,4 @@ Courses | Duration | Effort
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
+[Mindshift](https://www.coursera.org/learn/mindshift) | 4 weeks | 2 hours/week
From 560f1dc93d32822d6de6f54efdf14e165e035d03 Mon Sep 17 00:00:00 2001
From: Josh Hanson
Date: Sun, 14 May 2017 17:16:32 -0400
Subject: [PATCH 130/519] Update Networking course to include weeks
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 6ed56d448..1efde0f44 100644
--- a/README.md
+++ b/README.md
@@ -214,7 +214,7 @@ Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[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
+[Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| 8 weeks | 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/)
From d437fd320592adffdf5fbd23cd20cdec9cf0145b Mon Sep 17 00:00:00 2001
From: Josh Hanson
Date: Sun, 14 May 2017 17:21:54 -0400
Subject: [PATCH 131/519] Update to 7.2.1
---
CHANGELOG.md | 8 ++++++++
README.md | 2 +-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 86365bb95..fe27075b2 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.2.1] 2017-05-14
+### Updated
+- Networking course should take 8 weeks to complete
+- Fixed spelling error
+
+### Added
+- Introduction to Haskell course to [extras/courses](extras/courses.md)
+
## [7.2.0] 2017-04-28
### Added
- Software Testing course
diff --git a/README.md b/README.md
index 1efde0f44..cd33c1d62 100644
--- a/README.md
+++ b/README.md
@@ -77,7 +77,7 @@ just remember that you can't purchase success!
# Curriculum
-**Curriculum version**: `7.2.0` (see [CHANGELOG](CHANGELOG.md))
+**Curriculum version**: `7.2.1` (see [CHANGELOG](CHANGELOG.md))
- [Prerequisites](#prerequisites)
- [Introduction to Computer Science](#introduction-to-computer-science)
From 92ea0f265464d8b6574a753f32ebb31e1ecd15a7 Mon Sep 17 00:00:00 2001
From: Eric Douglas
Date: Tue, 16 May 2017 12:51:14 -0300
Subject: [PATCH 132/519] Remove duplicate course #406
---
extras/courses.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/extras/courses.md b/extras/courses.md
index cab7295dc..c97d8057a 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -8,7 +8,6 @@ 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 | -
From 165ebf28b968ba2c0fa1f6d344be5dea11b81358 Mon Sep 17 00:00:00 2001
From: Harshit Kumar
Date: Fri, 26 May 2017 06:58:32 +0530
Subject: [PATCH 133/519] Add Think Python to programming readings (#408)
---
extras/readings.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/extras/readings.md b/extras/readings.md
index eaec39b69..0f9f692d4 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -12,6 +12,7 @@ Or, if you are struggling in one of the courses, perhaps reading a book on the s
Name | Author(s)
:-- | :--:
[Introduction to Computation and Programming Using Python](https://www.amazon.com/Introduction-Computation-Programming-Using-Python/dp/0262525003/) | John V. Guttag
+[Think Python 2e](http://greenteapress.com/wp/think-python-2e/) | Allen B. Downey
[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
@@ -65,4 +66,4 @@ Name | Author(s)
[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
+[The Mythical Man-Month](https://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/) | Fred Brooks, Jr.
From d737b25ebbc5e3fc248d0a629f0a0ed27ba624ae Mon Sep 17 00:00:00 2001
From: Aman Roy
Date: Sat, 10 Jun 2017 19:49:21 +0530
Subject: [PATCH 134/519] Added Aman Roy's Intro project (#410)
---
PROJECTS.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/PROJECTS.md b/PROJECTS.md
index 5f134acde..bf6ca15ad 100644
--- a/PROJECTS.md
+++ b/PROJECTS.md
@@ -16,6 +16,7 @@ For more project ideas, check the [Mega Project List](https://github.com/karan/P
Project Title | Description | Author(s) | Repository
:-- | :-- | :--: | :--
Binary Machine | Convert decimal numbers to binary | [Eric Douglas](https://github.com/ericdouglas) | [binary-machine](https://github.com/ericdouglas/binary-machine)
+StalkHub | Stalk Github beautifully | [Aman Roy](https://github.com/aman-roy) | [StalkHub](https://github.com/aman-roy/StalkHub)
## Programming
From d72d063c37031b08ee3abcb788bae590db64c16b Mon Sep 17 00:00:00 2001
From: Eric Douglas
Date: Sun, 2 Jul 2017 08:11:03 -0300
Subject: [PATCH 135/519] Add "Haskell Programming from First Principles"
alternative #411
---
CHANGELOG.md | 4 ++++
README.md | 3 ++-
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index fe27075b2..343d8d509 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,10 @@ 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.2.2] 2017-07-02
+### Added
+- "Haskell Programming from First Principles" book as a paid alternative to learn Haskell
+
## [7.2.1] 2017-05-14
### Updated
- Networking course should take 8 weeks to complete
diff --git a/README.md b/README.md
index cd33c1d62..8c80a3650 100644
--- a/README.md
+++ b/README.md
@@ -77,7 +77,7 @@ just remember that you can't purchase success!
# Curriculum
-**Curriculum version**: `7.2.1` (see [CHANGELOG](CHANGELOG.md))
+**Curriculum version**: `7.2.2` (see [CHANGELOG](CHANGELOG.md))
- [Prerequisites](#prerequisites)
- [Introduction to Computer Science](#introduction-to-computer-science)
@@ -159,6 +159,7 @@ Courses | Duration | Effort | Prerequisites
#### Readings
- **Required** to learn about monads, laziness, purity: [Learn You a Haskell for a Great Good!](http://learnyouahaskell.com/)
+ - **OBS**: probably the best resource to learn Haskell: [Haskell Programming from First Principles](http://haskellbook.com/) `paid`
- **Required**, to learn about logic programming, backtracking, unification: [Learn Prolog Now!](http://www.learnprolognow.org/)
### Core math
From 9809809adf6c3113bd85e0f5a2a57b304c33f9f1 Mon Sep 17 00:00:00 2001
From: Josh Hanson
Date: Sun, 2 Jul 2017 15:04:13 -0400
Subject: [PATCH 136/519] Added main point of emerging technologies
---
README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 8c80a3650..2cc6c63b7 100644
--- a/README.md
+++ b/README.md
@@ -477,9 +477,9 @@ These aren't the only specializations you can choose. Check the following websit
- 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 [meetup.com](https://www.meetup.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 Erlang Virtual Machine!
- - [Rust](https://www.rust-lang.org/), a systems language which uses borrowing and lifetimes to achieve memory safety without a garbage collector!
+- Pay attention to emerging technologies in the world of software development:
+ + Explore the **actor model** through [Elixir](http://elixir-lang.org/), a new functional programming language for the web based on the battle-tested Erlang Virtual Machine!
+ + Explore **borrowing and lifetimes** through [Rust](https://www.rust-lang.org/), a systems language which achieves memory- and thread-safety without a garbage collector!

From 61609c95a9f9671cec4253e8bc5f6110b6de27a7 Mon Sep 17 00:00:00 2001
From: Josh Hanson
Date: Sun, 2 Jul 2017 15:04:46 -0400
Subject: [PATCH 137/519] Added dependent types (Idris) into emerging
technologies
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index 2cc6c63b7..9b4da08c1 100644
--- a/README.md
+++ b/README.md
@@ -480,6 +480,7 @@ These aren't the only specializations you can choose. Check the following websit
- Pay attention to emerging technologies in the world of software development:
+ Explore the **actor model** through [Elixir](http://elixir-lang.org/), a new functional programming language for the web based on the battle-tested Erlang Virtual Machine!
+ Explore **borrowing and lifetimes** through [Rust](https://www.rust-lang.org/), a systems language which achieves memory- and thread-safety without a garbage collector!
+ + Explore **dependent type systems** through [Idris](https://www.idris-lang.org/), a new Haskell-inspired language with unprecedented support for type-driven development

From ae180113a996dd7aeec79f2b43edf135159e69c1 Mon Sep 17 00:00:00 2001
From: Josh Hanson
Date: Sun, 2 Jul 2017 19:21:25 -0400
Subject: [PATCH 138/519] Add initial Frequently Asked Questions
---
FAQ.md | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 101 insertions(+)
create mode 100644 FAQ.md
diff --git a/FAQ.md b/FAQ.md
new file mode 100644
index 000000000..8b55f7396
--- /dev/null
+++ b/FAQ.md
@@ -0,0 +1,101 @@
+# Frequently Asked Questions
+
+This page answers some questions that we frequently receive about the curriculum.
+If you have questions that aren't answered here, try asking through one of our [community channels](README.md#community).
+If it seems important enough or we get asked that question a lot, we will probably add it here.
+
+Alternatively, you could [contribute](#CONTRIBUTING.md) an answer yourself.
+
+## Contents
+
+- [Are Coursera courses free to access?](#are-coursera-courses-free-to-access)
+- [Does every resource in the main curriculum have to be free?](#does-every-resource-in-the-main-curriculum-have-to-be-free)
+- [In what order should I take the courses?](#in-what-order-should-i-take-the-courses)
+- [Is it necessary to purchase the Verified Upgrade for edX courses?](#is-it-necessary-to-purchase-the-verified-upgrade-for-edx-courses)
+- [Why do you recommend skipping the second half of CS50?](#why-do-you-recommend-skipping-the-second-half-of-cs50)
+- [Why doesn't the curriculum cover/ignore topic X?](#why-doesnt-the-curriculum-cover-ignore-topic-x)
+- [Why is the curriculum missing some pre-requisites?](#why-is-the-curriculum-missing-some-pre-requisites)
+
+## Questions
+
+### Are Coursera courses free to access?
+
+Some courses that require payment to access probably do exist on Coursera, but we don't put those on our curriculum.
+All Coursera courses that we put on the curriculum must, at minimum, be **free to audit**.
+For some courses, all course features are available for free;
+for others (especially those that are part of a specialization), you may only be able to access the lecture videos.
+(If you find the policies have changed for any courses on our curriculum, please tell us!)
+
+Unfortunately, for some courses, Coursera's interface is [very aggressive](https://darkpatterns.org/) about convincing you that you have to pay.
+
+You may see something like this on the course page:
+
+
+When attempting to enroll in such a course:
+- Click the blue "Enroll" or "Enroll Now" button.
+- A pop-up will appear.
+- **Do not click** "Start Free Trial", unless you do want to pay.
+- Find the text that says "Audit this course" at the bottom.
+- Click **Audit**.
+
+
+
+### Does every resource in the main curriculum have to be free?
+
+Yes, because we have to draw a line.
+As soon as we require paid resources in the main curriculum, we might as well tell people to pay half a million dollars to attend a university.
+We are an Internet-based community of learners, not a business, so free is the most sensible price and ensures that the only price you need pay is the price of Internet access.
+
+At the same time, we recognize that education is scarce resource and therefore requires payment to instructors to make it sustainable in the long term.
+Therefore, we respect the business model of websites like edX, which make their materials free but with some paid add-ons, like official certificates or extra interaction with course instructors.
+
+So we only require that the *learning materials* of a resource be free to access, not that every possible add-on be free.
+It would be ideal if graded assignments were always free but if we had this requirement, we would have to exclude any resource that doesn't have graded assignments at all.
+Plus, there are other ways to get feedback on your work, and OSSU is a do-it-yourself education.
+
+### In what order should I take the courses?
+
+You have a few different options:
+- You can progress linearly from top to bottom of the page.
+- You can progress linearly through each individual section, but studying different sections in parallel.
+- You can design your own custom progression using the pre-requisites to guide you.
+
+We have designed the curriculum to work for any of the above three styles.
+
+### Is it necessary to purchase the Verified Upgrade for edX courses?
+
+If you just want to watch the videos, it is never necessary for any edX course on our curriculum.
+
+CS50 doesn't use edX's grading system; it grades all assignments for free.
+
+The [Software Development](https://www.edx.org/micromasters/software-development) courses have mostly free quizzes and assignments, but their Final Projects will only be graded by a human if you pay.
+
+### Why do you recommend skipping the second half of CS50?
+
+The strongest and most useful part of CS50 is the part where they teach C.
+We wish to retain this in the curriculum for now because it is one of the few chances the student has to play with manual memory management in a (relatively) low-level language.
+Everything after that gets a bit too easy and shallow, to the point that we believe the student's time will be better spent in MIT's Introduction to Computer Science course.
+
+That being said, feel free to finish CS50 if you like it and want to.
+But don't skip the MIT Intro course.
+
+### Why doesn't the curriculum cover/ignore topic X?
+
+We have several goals that we have to balance:
+- Ensure students learn the timeless principles of computer science in the best possible way, pedagogically speaking.
+- Ensure students are given sufficient knowledge of today's systems to be employable in the near future.
+- Ensure students are exposed to enough cutting-edge knowledge that they won't be left behind when technology changes, which it always does.
+- Keep the curriculum brief enough that it can be completed in a reasonable amount of time.
+
+Therefore, not everything can be included, but we strive to be eclectic so that students are both employable and well-armed for change.
+
+### Why is the curriculum missing some pre-requisites?
+
+The curriculum assumes two things:
+- You are reasonably fluent in English.
+- You have gotten through a standard high school curriculum that included physics and pre-calculus.
+
+Without these assumptions, the curriculum would be out of control with trying to fill in your knowledge gaps.
+But those who for whatever reason didn't get all the way through high school math and physics are in luck: you can find the content you need on [Khan Academy](https://www.khanacademy.org/).
+
+Of course, if you find that the curriculum is missing a pre-requisite for a course that isn't part of a normal high school curriculum, please let us know!
\ No newline at end of file
From 93a3f68e301f60e7c3f07bef2daabce39827cb99 Mon Sep 17 00:00:00 2001
From: Josh Hanson
Date: Sun, 2 Jul 2017 19:32:31 -0400
Subject: [PATCH 139/519] Added initial relevant FAQ links
---
README.md | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 9b4da08c1..d7de044a9 100644
--- a/README.md
+++ b/README.md
@@ -75,6 +75,8 @@ just remember that you can't purchase success!
**How to contribute**. Please see [CONTRIBUTING](CONTRIBUTING.md).
+**Getting help**. Please check our [Frequently Asked Questions](FAQ.md), and if you cannot find the answer, file an issue or talk to our [friendly community](#community)!
+
# Curriculum
**Curriculum version**: `7.2.2` (see [CHANGELOG](CHANGELOG.md))
@@ -110,6 +112,7 @@ and is knowledgeable enough now to decide which electives to take.
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.
+([Why?](FAQ.md#why-do-you-recommend-skipping-the-second-half-of-cs50))
**Topics covered**:
`imperative programming`
@@ -247,6 +250,9 @@ Parts 1 and 2 of Stanford Algorithms is available as [Algorithms: Design and Ana
Unlike the Coursera version, quizzes and tests are auto-graded for free.
If you are pursuing an optional certificate from Coursera, you will still need to complete parts 1 and 2 through Coursera.
+In spite of what it looks like, **these courses are free to access**.
+([How?](FAQ.md#are-coursera-courses-free-to-access))
+
### Core applications
**Topics covered**:
@@ -354,8 +360,9 @@ Courses | Duration | Effort | Prerequisites
[ops-class.org - Hack the Kernel](https://www.ops-class.org/) | 15 weeks | 6 hours/week | algorithms
**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:
+These courses assume knowledge of basic physics.
+([Why?](FAQ.md#why-is-the-curriculum-missing-some-pre-requisites))
+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)
### Advanced theory
From dd6177d13c504d2b8890ab460000d24a5207f689 Mon Sep 17 00:00:00 2001
From: Josh Hanson
Date: Sun, 2 Jul 2017 19:36:03 -0400
Subject: [PATCH 140/519] Update changelog for 7.2.2
---
CHANGELOG.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 343d8d509..8ae9ae0d8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,8 @@ This project adheres *in spirit* to [Semantic Versioning](http://semver.org/):
## [7.2.2] 2017-07-02
### Added
- "Haskell Programming from First Principles" book as a paid alternative to learn Haskell
+- "Think Python" to extras/readings
+- FAQ entries and links under relevant courses
## [7.2.1] 2017-05-14
### Updated
From 8ff61e80957f5c45d67ef67f1a3cf0465a39fc62 Mon Sep 17 00:00:00 2001
From: Josh Hanson
Date: Sun, 2 Jul 2017 19:39:01 -0400
Subject: [PATCH 141/519] Fix question link in FAQ
---
FAQ.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/FAQ.md b/FAQ.md
index 8b55f7396..218a28977 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -13,7 +13,7 @@ Alternatively, you could [contribute](#CONTRIBUTING.md) an answer yourself.
- [In what order should I take the courses?](#in-what-order-should-i-take-the-courses)
- [Is it necessary to purchase the Verified Upgrade for edX courses?](#is-it-necessary-to-purchase-the-verified-upgrade-for-edx-courses)
- [Why do you recommend skipping the second half of CS50?](#why-do-you-recommend-skipping-the-second-half-of-cs50)
-- [Why doesn't the curriculum cover/ignore topic X?](#why-doesnt-the-curriculum-cover-ignore-topic-x)
+- [Why doesn't the curriculum cover/ignore topic X?](#why-doesnt-the-curriculum-coverignore-topic-x)
- [Why is the curriculum missing some pre-requisites?](#why-is-the-curriculum-missing-some-pre-requisites)
## Questions
From 377da12c4a26f8b0e990bf6c252a12e65476c2d7 Mon Sep 17 00:00:00 2001
From: Josh Hanson
Date: Sun, 2 Jul 2017 19:45:28 -0400
Subject: [PATCH 142/519] Added Category Theory introductory reading
---
CHANGELOG.md | 1 +
extras/readings.md | 3 ++-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8ae9ae0d8..33855be92 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,6 +11,7 @@ This project adheres *in spirit* to [Semantic Versioning](http://semver.org/):
- "Haskell Programming from First Principles" book as a paid alternative to learn Haskell
- "Think Python" to extras/readings
- FAQ entries and links under relevant courses
+- "Category Theory: A Gentle Introduction" to extras/readings
## [7.2.1] 2017-05-14
### Updated
diff --git a/extras/readings.md b/extras/readings.md
index 0f9f692d4..d31fddc8f 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -48,8 +48,9 @@ Name | Author(s)
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
+[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
+[Category Theory: A Gentle Introduction](http://www.logicmatters.net/resources/pdfs/GentleIntro.pdf) | Peter Smith
## Applications
From 255afd3f76347cf8d43ee912aeb8df81cbebcd83 Mon Sep 17 00:00:00 2001
From: Josh Hanson
Date: Sun, 2 Jul 2017 19:55:04 -0400
Subject: [PATCH 143/519] Fix huge image size in FAQ
---
FAQ.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/FAQ.md b/FAQ.md
index 218a28977..bbab7343f 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -29,7 +29,7 @@ for others (especially those that are part of a specialization), you may only be
Unfortunately, for some courses, Coursera's interface is [very aggressive](https://darkpatterns.org/) about convincing you that you have to pay.
You may see something like this on the course page:
-
+
When attempting to enroll in such a course:
- Click the blue "Enroll" or "Enroll Now" button.
From e9b6fa7a46c268299036f15652721db670e23cb1 Mon Sep 17 00:00:00 2001
From: Josh Hanson
Date: Sun, 2 Jul 2017 20:02:39 -0400
Subject: [PATCH 144/519] Second attempt at fixing image width...
---
FAQ.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/FAQ.md b/FAQ.md
index bbab7343f..2f2b525c3 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -29,7 +29,7 @@ for others (especially those that are part of a specialization), you may only be
Unfortunately, for some courses, Coursera's interface is [very aggressive](https://darkpatterns.org/) about convincing you that you have to pay.
You may see something like this on the course page:
-
+
When attempting to enroll in such a course:
- Click the blue "Enroll" or "Enroll Now" button.
From c42ad02ee3384222675a5b2a252ab7f966c5b5f8 Mon Sep 17 00:00:00 2001
From: Josh Hanson
Date: Sun, 2 Jul 2017 20:07:13 -0400
Subject: [PATCH 145/519] Add newline for slight aesthetic improvement
---
FAQ.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/FAQ.md b/FAQ.md
index 2f2b525c3..f0023f506 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -29,6 +29,7 @@ for others (especially those that are part of a specialization), you may only be
Unfortunately, for some courses, Coursera's interface is [very aggressive](https://darkpatterns.org/) about convincing you that you have to pay.
You may see something like this on the course page:
+
When attempting to enroll in such a course:
From 3be7a59e2de4d82754e77ac079f8633b1c4e75f1 Mon Sep 17 00:00:00 2001
From: Avish Cheetaram
Date: Mon, 10 Jul 2017 22:25:16 +0400
Subject: [PATCH 146/519] Added System Design to reading
Learning how to design scalable systems will help you become a better engineer.
---
extras/readings.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/extras/readings.md b/extras/readings.md
index d31fddc8f..3b28aa83b 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -42,7 +42,7 @@ Name | Author(s)
[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
-
+[System Design: Design large-scale systems](https://github.com/donnemartin/system-design-primer) | Various
## Theory
Name | Author(s)
From 3b910e2617e2129b620bd0ecb2dd4bf78772453a Mon Sep 17 00:00:00 2001
From: Joshua Hanson
Date: Sat, 9 Sep 2017 11:37:54 -0400
Subject: [PATCH 147/519] Add Category Theory for Programmers to extra readings
---
extras/readings.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/extras/readings.md b/extras/readings.md
index 3b28aa83b..3d1386efc 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -51,6 +51,7 @@ Name | Author(s)
[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
[Category Theory: A Gentle Introduction](http://www.logicmatters.net/resources/pdfs/GentleIntro.pdf) | Peter Smith
+[Category Theory for Programmers: The Preface](https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/) | Bartosz Milewski
## Applications
From dba5d8689c2139789e7633f7873746b4df4c30a9 Mon Sep 17 00:00:00 2001
From: Joshua Hanson
Date: Sat, 9 Sep 2017 13:13:20 -0400
Subject: [PATCH 148/519] Move Mathematical Thinking to extra courses
Closes #420
---
README.md | 2 --
extras/courses.md | 1 +
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/README.md b/README.md
index d7de044a9..6eb84dccf 100644
--- a/README.md
+++ b/README.md
@@ -317,7 +317,6 @@ Courses | Duration | Effort | Prerequisites
### Advanced math
**Topics covered**:
-`real analysis`
`parametric equations`
`polar coordinate systems`
`multivariable integrals`
@@ -327,7 +326,6 @@ Courses | Duration | Effort | Prerequisites
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Introduction to Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 hours/week | pre-calculus
[Calculus: Parametric Equations and Polar Coordinates](https://ocw.mit.edu/courses/mathematics/18-01sc-single-variable-calculus-fall-2010/unit-4-techniques-of-integration/part-c-parametric-equations-and-polar-coordinates/) | - | - | 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 | Parametric Equations and Polar Coordinates
[Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-2) | 18 weeks | 12 hours/week | Multivariable Calculus
diff --git a/extras/courses.md b/extras/courses.md
index c97d8057a..1d8939102 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -24,6 +24,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 Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 hours/week
[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) | - | -
From 9fe6838ed83e8de98932753750093496770ec20a Mon Sep 17 00:00:00 2001
From: Joshua Hanson
Date: Sat, 9 Sep 2017 13:16:22 -0400
Subject: [PATCH 149/519] Remove unused pre-requisites from extra courses
---
extras/courses.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/extras/courses.md b/extras/courses.md
index 1d8939102..18ee99ec5 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -23,7 +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
+[Effective Thinking Through Mathematics](https://www.edx.org/course/effective-thinking-through-mathematics-utaustinx-ut-9-01x-0) | 4 weeks | 2 hours/week
[Introduction to Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 hours/week
[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) | - | -
@@ -42,8 +42,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
+[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
[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
[Programming Challenges (Skiena)](http://www3.cs.stonybrook.edu/~skiena/392/) | 14 weeks | 6-8 hours/week
From e7519697e595f9262cfe2938c8c59798cac6e7b6 Mon Sep 17 00:00:00 2001
From: Joshua Hanson
Date: Sat, 9 Sep 2017 13:48:54 -0400
Subject: [PATCH 150/519] Add section on Learning Git to CONTRIBUTING
Closes #421
---
CONTRIBUTING.md | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 622b53e99..683b643f1 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -9,4 +9,10 @@ the subreddit is recommended as there people may be able to give you suggested a
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
+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.
+
+# Learning Git
+
+To be able to create high-quality pull requests, it is recommended that you learn how to use the Git version control system.
+One of the best primers on the subject is a free ebook called [Ry's Git Tutorial](https://www.amazon.com/dp/B00QFIA5OC/).
+If you prefer a course-style introduction, try [Introduction to Git and GitHub](https://www.udacity.com/course/how-to-use-git-and-github--ud775).
\ No newline at end of file
From f0e6b56e6986f2426b8dcfd82ae1798f41a0ab03 Mon Sep 17 00:00:00 2001
From: Eric Douglas
Date: Mon, 11 Sep 2017 08:09:36 -0300
Subject: [PATCH 151/519] Update cover
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index d7de044a9..4860a7537 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-
+
Open Source Society University
From 402e0ab94c9bf8f0afcfa906737503c8604ca241 Mon Sep 17 00:00:00 2001
From: Eric Douglas
Date: Mon, 11 Sep 2017 11:14:59 -0300
Subject: [PATCH 152/519] Update links to point to OSSU
---
CHANGELOG.md | 2 +-
CONTRIBUTING.md | 2 +-
LICENSE | 2 +-
PROJECTS.md | 2 +-
README.md | 12 ++++++------
REQUIREMENTS.md | 4 ++--
6 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 33855be92..1a674d951 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -240,7 +240,7 @@ Due to Coursera's platform changes, we had the following updates:
- **Cryptography**:
- Applied Cryptography
-**ps**: These removed courses are now in the [extras](https://github.com/open-source-society/computer-science/tree/master/extras) section.
+**ps**: These removed courses are now in the [extras](https://github.com/ossu/computer-science/tree/master/extras) section.
## [1.3.12] 2016-03-17
### Added
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 622b53e99..11b79093e 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -9,4 +9,4 @@ the subreddit is recommended as there people may be able to give you suggested a
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
+6. If you want to suggest a new resource, send a pull request adding such resource to the [extras](https://github.com/ossu/computer-science/tree/master/extras) section.
diff --git a/LICENSE b/LICENSE
index 2b7761ff0..485e9c53f 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
The MIT License (MIT)
-Copyright (c) 2017 Open Source Society
+Copyright (c) 2017 Open Source Society University
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/PROJECTS.md b/PROJECTS.md
index bf6ca15ad..189482bc9 100644
--- a/PROJECTS.md
+++ b/PROJECTS.md
@@ -1,7 +1,7 @@
# Projects
> Here, we are providing a list curated by the community of exercises and projects to practice and reinforce the skills we try to master.
-Projects created by OSSU's students for each course of our [**Computer Science**](https://github.com/open-source-society/computer-science) curriculum.
+Projects created by OSSU's students for each course of our [**Computer Science**](https://github.com/ossu/computer-science) curriculum.
For more project ideas, check the [Mega Project List](https://github.com/karan/Projects).
diff --git a/README.md b/README.md
index 4860a7537..240c336f2 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
-
+
@@ -430,10 +430,10 @@ In some cases, it may not be permitted;
do **not** violate your course's Honor Code!
Put the OSSU-CS badge in the README of your repository!
-[](https://github.com/open-source-society/computer-science)
+[](https://github.com/ossu/computer-science)
-- Markdown: `[](https://github.com/open-source-society/computer-science)`
-- HTML: `
`
+- Markdown: `[](https://github.com/ossu/computer-science)`
+- HTML: `
`
### Evaluation
@@ -495,7 +495,7 @@ These aren't the only specializations you can choose. Check the following websit
- 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).
+- You can also interact through [GitHub issues](https://github.com/ossu/computer-science/issues).
- We also have a chat room! [](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!
@@ -529,7 +529,7 @@ You can change the status of your board to be *public* or *private*.
* **Curriculum Founder**: [Eric Douglas](https://github.com/ericdouglas)
* **Curriculum Maintainer**: [Eric Douglas](https://github.com/ericdouglas) and [hanjiexi](https://github.com/hanjiexi)
-* **Contributors**: [contributors](https://github.com/open-source-society/computer-science/graphs/contributors)
+* **Contributors**: [contributors](https://github.com/ossu/computer-science/graphs/contributors)
# References
diff --git a/REQUIREMENTS.md b/REQUIREMENTS.md
index 7e03e9a08..9805ede54 100644
--- a/REQUIREMENTS.md
+++ b/REQUIREMENTS.md
@@ -1,4 +1,4 @@
-# OSSU Academic Requirements
+# OSSU-CS Academic Requirements
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.
@@ -71,4 +71,4 @@ For Core CS, students have two options:
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
+- They can create their own Final Project, and must share the project code to be evaluated by the community.
From a2a7fb35210edc5f565757912e5fdb4d94fa5f54 Mon Sep 17 00:00:00 2001
From: Eric Douglas
Date: Fri, 29 Sep 2017 06:10:07 -0300
Subject: [PATCH 153/519] Add patreon badge
---
README.md | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 240c336f2..ce46405a4 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
Open Source Society University
- Path to a self-taught education in Computer Science!
+ Path to a free self-taught education in Computer Science!
@@ -11,6 +11,9 @@
+
+
+
# Contents
From 590f9cdecac01b0713cf9994c44bcbeda74aa981 Mon Sep 17 00:00:00 2001
From: asdevgit <32041546+asdevgit@users.noreply.github.com>
Date: Sun, 1 Oct 2017 01:21:26 +0100
Subject: [PATCH 154/519] Update CodeComplete book title
Updated to show 2nd edition
---
extras/readings.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/extras/readings.md b/extras/readings.md
index 3b28aa83b..e9c870baf 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -19,7 +19,7 @@ Name | Author(s)
[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
-[Code Complete](https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670) | Steve McConnell
+[Code Complete 2e](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
## Math
From 52c8c9c4ee79a63e983425a9e5138aa4c0a10241 Mon Sep 17 00:00:00 2001
From: Eric Douglas
Date: Mon, 2 Oct 2017 19:47:32 -0300
Subject: [PATCH 155/519] Add link to newsletter
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index ce46405a4..2bec3b583 100644
--- a/README.md
+++ b/README.md
@@ -496,6 +496,7 @@ These aren't the only specializations you can choose. Check the following websit
# Community
+- Subscribe to our [newsletter](https://tinyletter.com/ossu)
- 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/ossu/computer-science/issues).
From ae03d5abb75fd6c130791ac66cfe221cda72f1fd Mon Sep 17 00:00:00 2001
From: Eric Douglas
Date: Tue, 10 Oct 2017 11:39:18 -0300
Subject: [PATCH 156/519] Add new forum and code of conduct (#427)
* Add new forum and code of conduct
* Undo changes on headings
---
README.md | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
index 2bec3b583..69b431a3d 100644
--- a/README.md
+++ b/README.md
@@ -26,6 +26,7 @@
- [Advanced CS](#advanced-cs)
- [Final project](#final-project)
- [Pro CS](#pro-cs)
+- [Code of conduct](#code-of-conduct)
- [Community](#community)
- [How to show your progress](#how-to-show-your-progress)
- [Team](#team)
@@ -494,17 +495,19 @@ These aren't the only specializations you can choose. Check the following websit

+# Code of conduct
+[OSSU's code of conduct](https://github.com/ossu/code-of-conduct).
+
# Community
- Subscribe to our [newsletter](https://tinyletter.com/ossu)
-- 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)!
+- Use our [forum](https://github.com/ossu/forum) if you need some help.
- You can also interact through [GitHub issues](https://github.com/ossu/computer-science/issues).
- We also have a chat room! [](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!
+- Add **Open Source Society University** to your [Linkedin](https://www.linkedin.com/school/11272443/) and [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**.
+**Please use our forum for important discussions**.
## How to show your progress
@@ -531,8 +534,8 @@ You can change the status of your board to be *public* or *private*.
## Team
-* **Curriculum Founder**: [Eric Douglas](https://github.com/ericdouglas)
-* **Curriculum Maintainer**: [Eric Douglas](https://github.com/ericdouglas) and [hanjiexi](https://github.com/hanjiexi)
+* **Curriculum Founders**: [Eric Douglas](https://github.com/ericdouglas)
+* **Curriculum Maintainers**: [Eric Douglas](https://github.com/ericdouglas) and [hanjiexi](https://github.com/hanjiexi)
* **Contributors**: [contributors](https://github.com/ossu/computer-science/graphs/contributors)
# References
From 5947486570a830e13a3d25f7734c8f847f32e194 Mon Sep 17 00:00:00 2001
From: Victor Ferreira
Date: Tue, 31 Oct 2017 23:06:15 -0300
Subject: [PATCH 157/519] Fix grammatical inconsistencies in README.md (#432)
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 69b431a3d..a9d68c8f0 100644
--- a/README.md
+++ b/README.md
@@ -491,7 +491,7 @@ These aren't the only specializations you can choose. Check the following websit
- Pay attention to emerging technologies in the world of software development:
+ Explore the **actor model** through [Elixir](http://elixir-lang.org/), a new functional programming language for the web based on the battle-tested Erlang Virtual Machine!
+ Explore **borrowing and lifetimes** through [Rust](https://www.rust-lang.org/), a systems language which achieves memory- and thread-safety without a garbage collector!
- + Explore **dependent type systems** through [Idris](https://www.idris-lang.org/), a new Haskell-inspired language with unprecedented support for type-driven development
+ + Explore **dependent type systems** through [Idris](https://www.idris-lang.org/), a new Haskell-inspired language with unprecedented support for type-driven development.

@@ -500,7 +500,7 @@ These aren't the only specializations you can choose. Check the following websit
# Community
-- Subscribe to our [newsletter](https://tinyletter.com/ossu)
+- Subscribe to our [newsletter](https://tinyletter.com/ossu).
- Use our [forum](https://github.com/ossu/forum) if you need some help.
- You can also interact through [GitHub issues](https://github.com/ossu/computer-science/issues).
- We also have a chat room! [](https://gitter.im/open-source-society/computer-science?utm_campaign=pr-badge&utm_content=badge&utm_medium=badge&utm_source=badge)
From 627058f2264c29a8a35733b66d0f97584204455e Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Wed, 1 Nov 2017 20:28:38 -0400
Subject: [PATCH 158/519] Move Hack-the-Kernel from advanced systems to core
systems and change Three Easy Pieces from Required to Recommended
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 0bf656e50..74e753962 100644
--- a/README.md
+++ b/README.md
@@ -223,9 +223,10 @@ Courses | Duration | Effort | Prerequisites
[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)| 8 weeks | 4–12 hours/week | algebra, probability, basic CS
+[ops-class.org - Hack the Kernel](https://www.ops-class.org/) | 15 weeks | 6 hours/week | algorithms
#### Readings
-- **Required** since Nand2Tetris does not go deep enough into operating systems: [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/)
+- **Recommended**: While Hack the Kernel recommends Modern Operating Systems as a textbook, we suggest using [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/).
### Core theory
@@ -359,7 +360,6 @@ Courses | Duration | Effort | Prerequisites
[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
**1 Note**:
These courses assume knowledge of basic physics.
From abadda80adec1dc8955589d55777a82ddcac2491 Mon Sep 17 00:00:00 2001
From: Josh Hanson
Date: Thu, 2 Nov 2017 21:40:15 -0400
Subject: [PATCH 159/519] Core Theory: Replace Coursera with Lagunita
Closes #428. It is the same Stanford Algorithms course, but on
a better platform.
---
README.md | 13 ++-----------
1 file changed, 2 insertions(+), 11 deletions(-)
diff --git a/README.md b/README.md
index 74e753962..60f15c6d4 100644
--- a/README.md
+++ b/README.md
@@ -245,18 +245,9 @@ Courses | Duration | Effort | Prerequisites
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Algorithms (1/4)](https://www.coursera.org/learn/algorithms-divide-conquer)1 | 4 weeks | 4-8 hours/week | one programming language, proofs, probability
-[Algorithms (2/4)](https://www.coursera.org/learn/algorithms-graphs-data-structures)1 | 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)
+[Algorithms: Design and Analysis, Part I](https://lagunita.stanford.edu/courses/course-v1:Engineering+Algorithms1+SelfPaced/about) | 8 weeks | 4-8 hours/week | any programming language, Mathematics for Computer Science
+[Algorithms: Design and Analysis, Part II](https://lagunita.stanford.edu/courses/course-v1:Engineering+Algorithms2+SelfPaced/about) | 8 weeks | 4-8 hours/week | Part I
-**1 Note**:
-Parts 1 and 2 of Stanford Algorithms is available as [Algorithms: Design and Analysis](https://lagunita.stanford.edu/courses/course-v1:Engineering+Algorithms1+SelfPaced/about) through Stanford Lagunita.
-Unlike the Coursera version, quizzes and tests are auto-graded for free.
-If you are pursuing an optional certificate from Coursera, you will still need to complete parts 1 and 2 through Coursera.
-
-In spite of what it looks like, **these courses are free to access**.
-([How?](FAQ.md#are-coursera-courses-free-to-access))
### Core applications
From 2eccb8c16fd4d1ecf1cabf11affa2f9d8ec3fe5a Mon Sep 17 00:00:00 2001
From: Josh Hanson
Date: Thu, 2 Nov 2017 21:51:28 -0400
Subject: [PATCH 160/519] Core Math: Add Essence of Linear Algebra
Closes #423
---
README.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 60f15c6d4..a67c49248 100644
--- a/README.md
+++ b/README.md
@@ -190,7 +190,8 @@ Courses | Duration | Effort | Prerequisites
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
+[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | 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 | Essence of Linear Algebra
[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)
From 748cc87450010a55b7937470179f063789a4c443 Mon Sep 17 00:00:00 2001
From: Josh Hanson
Date: Thu, 2 Nov 2017 21:55:33 -0400
Subject: [PATCH 161/519] extras/readings: Add PLAI
Programming Languages: Application and Interpretation
---
extras/readings.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/extras/readings.md b/extras/readings.md
index aed6f2e30..9aba5be03 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -21,6 +21,7 @@ Name | Author(s)
[Clean Code](https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882) | Robert Martin
[Code Complete 2e](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
+[Programming Languages: Application and Interpretation](http://cs.brown.edu/~sk/Publications/Books/ProgLangs/) | Shriram Krishnamurthi
## Math
From d711db33b10be13b23024d4c2e372198667cf3c5 Mon Sep 17 00:00:00 2001
From: Josh Hanson
Date: Thu, 2 Nov 2017 21:58:57 -0400
Subject: [PATCH 162/519] extras/readings: Add PAPL
Programming and Programming Languages
---
extras/readings.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/extras/readings.md b/extras/readings.md
index 9aba5be03..c7168376c 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -22,6 +22,7 @@ Name | Author(s)
[Code Complete 2e](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
[Programming Languages: Application and Interpretation](http://cs.brown.edu/~sk/Publications/Books/ProgLangs/) | Shriram Krishnamurthi
+[Programming and Programming Languages](http://papl.cs.brown.edu/2016/) | Shriram Krishnamurthi, Benjamin S. Lerner, Joe Gibbs Politz
## Math
From 6c5a8bfa96bea6819f2a0f06a15273a6b87ee98c Mon Sep 17 00:00:00 2001
From: Josh Hanson
Date: Thu, 2 Nov 2017 22:01:00 -0400
Subject: [PATCH 163/519] Update to 8.0.0
---
CHANGELOG.md | 15 +++++++++++++++
README.md | 2 +-
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1a674d951..ffed818aa 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,21 @@ 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
+## [8.0.0] 2017-11-01
+### Added
+- extras/readings: "The System Design Primer"
+- extras/readings: "Category Theory for Programmers: The Preface"
+- extras/readings: "Programming Languages: Application and Interpretation"
+- extras/readings: "Programming and Programming Languages"
+- CONTRIBUTING: "Learning Git" section to the contributor guidelines page
+- Core Math: Added "Essence of Linear Algebra" as pre-requisite to "Linear Algebra: Foundations to Frontiers"
+
+### Updated
+- Moved "Introduction to Mathematical Thinking" to extras/courses
+- Moved "Hack the Kernel" (ops-class) from Advanced Systems to Core Systems
+- Core Systems: "Operating Systems: Three Easy Pieces" is no longer required, but is recommended as companion text to "Hack the Kernel"
+- Core Theory: Replaced Coursera with Lagunita as the host for Stanford Algorithms, since Coursera uses dark patterns to trick users into paying
+
## [7.2.2] 2017-07-02
### Added
- "Haskell Programming from First Principles" book as a paid alternative to learn Haskell
diff --git a/README.md b/README.md
index a67c49248..dd65a05f0 100644
--- a/README.md
+++ b/README.md
@@ -83,7 +83,7 @@ just remember that you can't purchase success!
# Curriculum
-**Curriculum version**: `7.2.2` (see [CHANGELOG](CHANGELOG.md))
+**Curriculum version**: `8.0.0` (see [CHANGELOG](CHANGELOG.md))
- [Prerequisites](#prerequisites)
- [Introduction to Computer Science](#introduction-to-computer-science)
From f6cadabde65c3f99c2281e5f92fd78c5da5fea0d Mon Sep 17 00:00:00 2001
From: Alfredo Serafini
Date: Sat, 30 Dec 2017 19:01:39 +0100
Subject: [PATCH 164/519] extras/readings: Add Stanford Information Retrieval
(#442)
Added the book "An Introduction to Information Retrieval", available on the nlp.stanford site
---
extras/readings.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/extras/readings.md b/extras/readings.md
index c7168376c..abcdbdd29 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -45,6 +45,7 @@ Name | Author(s)
[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
[System Design: Design large-scale systems](https://github.com/donnemartin/system-design-primer) | Various
+
## Theory
Name | Author(s)
@@ -54,6 +55,7 @@ Name | Author(s)
[The Algorithm Design Manual](https://www.amazon.com/gp/product/1848000693) | Steven Skiena
[Category Theory: A Gentle Introduction](http://www.logicmatters.net/resources/pdfs/GentleIntro.pdf) | Peter Smith
[Category Theory for Programmers: The Preface](https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/) | Bartosz Milewski
+[An Introduction to Information Retrieval](https://nlp.stanford.edu/IR-book/pdf/irbookonlinereading.pdf) | Christopher D. Manning, Prabhakar Raghavan, Hinrich Schütze
## Applications
From 60e6ccd8e325cb3a9e87d691f64fdf70d4afe701 Mon Sep 17 00:00:00 2001
From: Phillip Alexander
Date: Wed, 3 Jan 2018 00:02:12 -0800
Subject: [PATCH 165/519] Update License file copyright year
---
LICENSE | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/LICENSE b/LICENSE
index 485e9c53f..f5fb89ecb 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
The MIT License (MIT)
-Copyright (c) 2017 Open Source Society University
+Copyright (c) 2018 Open Source Society University
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
From 993ec66b22f43cf6e8c6b1449460140cbe96435a Mon Sep 17 00:00:00 2001
From: Nicolai Slovineanu
Date: Sun, 7 Jan 2018 13:13:35 +0200
Subject: [PATCH 166/519] Remove duplicate "machine language" topic
---
README.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/README.md b/README.md
index dd65a05f0..e1dd4d8d0 100644
--- a/README.md
+++ b/README.md
@@ -208,7 +208,6 @@ for how to progress through the course.
`boolean algebra`
`gate logic`
`memory`
-`machine language`
`computer architecture`
`assembly`
`machine language`
From b5514423d8fbefb850e4121bc5a1e41a467d0398 Mon Sep 17 00:00:00 2001
From: Mahmoud khalil
Date: Mon, 8 Jan 2018 17:23:53 +0200
Subject: [PATCH 167/519] CHANGELOG: Fix spelling errors (#447)
Fix spelling for "Data Mining" and "Functional"
---
CHANGELOG.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ffed818aa..0853746fd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -118,7 +118,7 @@ Complete overhaul of program structure
- Elective course: Game Theory
- Elective specializations:
- Robotics
- - Data Minig
+ - Data Mining
- Big Data
- Internet of Things
- Cloud Computing
@@ -135,7 +135,7 @@ Complete overhaul of program structure
- Removed many dead links and obsolete courses
- Removed per-course project requirement
- Course: Object-Oriented Programming in Java
-- Course: Funtional Programming in Scala
+- Course: Functional Programming in Scala
- Course: Computer Architecture (but left as a footnote)
- Course: Intro to Theoretical Computer Science
- Course: Software Processes and Agile Practices
From d596b44a7fb7269449d933ecd882d81eef056c39 Mon Sep 17 00:00:00 2001
From: Leo Leung
Date: Mon, 29 Jan 2018 10:17:15 -0800
Subject: [PATCH 168/519] README: Fix prereqs for Nand2Tetris II (#452)
Updates the prerequisites for "From Nand to Tetris II" to include a list of supported programming languages
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index e1dd4d8d0..a986a6c92 100644
--- a/README.md
+++ b/README.md
@@ -221,7 +221,7 @@ for how to progress through the course.
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[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
+[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | one of [these programming languages](https://user-images.githubusercontent.com/2046800/35426340-f6ce6358-026a-11e8-8bbb-4e95ac36b1d7.png), From Nand to Tetris Part I
[Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| 8 weeks | 4–12 hours/week | algebra, probability, basic CS
[ops-class.org - Hack the Kernel](https://www.ops-class.org/) | 15 weeks | 6 hours/week | algorithms
From 6836ed1660c34795cbc7eb3452d6679d8c864b69 Mon Sep 17 00:00:00 2001
From: Florian Hoornaar
Date: Mon, 29 Jan 2018 19:20:32 +0100
Subject: [PATCH 169/519] README: Change 'OBS' to 'Note' (#454)
As per issue https://github.com/ossu/computer-science/issues/453
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index a986a6c92..b19e8abd2 100644
--- a/README.md
+++ b/README.md
@@ -166,7 +166,7 @@ Courses | Duration | Effort | Prerequisites
#### Readings
- **Required** to learn about monads, laziness, purity: [Learn You a Haskell for a Great Good!](http://learnyouahaskell.com/)
- - **OBS**: probably the best resource to learn Haskell: [Haskell Programming from First Principles](http://haskellbook.com/) `paid`
+ - **Note**: probably the best resource to learn Haskell: [Haskell Programming from First Principles](http://haskellbook.com/) `paid`
- **Required**, to learn about logic programming, backtracking, unification: [Learn Prolog Now!](http://www.learnprolognow.org/)
### Core math
From 92b22f45538b8f440c01f579209a9fedcce95e4d Mon Sep 17 00:00:00 2001
From: Leo Leung
Date: Wed, 31 Jan 2018 06:56:08 -0800
Subject: [PATCH 170/519] README: Fix prereqs for Software Testing (#455)
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index b19e8abd2..4f7746cd8 100644
--- a/README.md
+++ b/README.md
@@ -305,7 +305,7 @@ 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
-[Software Testing](https://www.udacity.com/course/software-testing--cs258) | 4 weeks | 6 hours/week | programming experience
+[Software Testing](https://www.udacity.com/course/software-testing--cs258) | 4 weeks | 6 hours/week | Python, programming experience
[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 | software engineering in Java
From 751935b16f4338d15a2801044986ce23d6f480c5 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Thu, 15 Feb 2018 16:04:55 -0500
Subject: [PATCH 171/519] README: Move Reliable Distributed Systems to Advanced
Systems (#460)
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 4f7746cd8..adf23681c 100644
--- a/README.md
+++ b/README.md
@@ -346,6 +346,8 @@ Courses | Duration | Effort | Prerequisites
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
+[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
[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) | 10 weeks | 6 hours/week | electricity, magnetism
@@ -381,8 +383,6 @@ 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 914c5195970cb5a3bee2405f2a96dab0d9102d71 Mon Sep 17 00:00:00 2001
From: Leo Leung
Date: Fri, 16 Feb 2018 18:23:26 -0800
Subject: [PATCH 172/519] extras/courses: Add U of Helsinki OO Programming with
Java (#456)
---
extras/courses.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/extras/courses.md b/extras/courses.md
index 18ee99ec5..d08710491 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -14,6 +14,8 @@ Courses | Duration | Effort
[An Introduction to Interactive Programming in Python (Part 2)](https://www.coursera.org/learn/interactive-python-2)| - | -
[Programming Basics](https://www.edx.org/course/programming-basics-iitbombayx-cs101-1x)| 9 weeks | 8 hours/week
[Object-Oriented Programming](https://www.edx.org/course/object-oriented-programming-iitbombayx-cs101-2x)| 4 weeks | 8 hours/week
+[Object-Oriented Programming with Java (Part 1)](http://mooc.fi/courses/2013/programming-part-1/)| 6 weeks | -
+[Object-Oriented Programming with Java (Part 2)](http://mooc.fi/courses/2013/programming-part-2/)| 6 weeks | -
[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/) | - | -
From 7469d07efeddcae659ec999b8264ffda4f3f167a Mon Sep 17 00:00:00 2001
From: Leo Leung
Date: Wed, 7 Mar 2018 05:08:59 -0800
Subject: [PATCH 173/519] README: Add alt link for Intro to Parallel
Programming (#464)
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index adf23681c..b197e55e1 100644
--- a/README.md
+++ b/README.md
@@ -307,7 +307,7 @@ Courses | Duration | Effort | Prerequisites
[Software Debugging](https://www.udacity.com/course/software-debugging--cs259)| 8 weeks | 6 hours/week | Python, object-oriented programming
[Software Testing](https://www.udacity.com/course/software-testing--cs258) | 4 weeks | 6 hours/week | Python, programming experience
[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
+[Introduction to Parallel Programming](https://www.udacity.com/course/intro-to-parallel-programming--cs344) ([alt](https://www.youtube.com/playlist?list=PLGvfHSgImk4aweyWlhBXNF6XISY3um82_)) | 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
From c12308a0159febe3844262d3caba9d9ce571a7a4 Mon Sep 17 00:00:00 2001
From: Tyler Miller
Date: Fri, 30 Mar 2018 21:08:35 -0600
Subject: [PATCH 174/519] README: update Learn Prolog Now! link to interactive
site (#467)
Allows users to run Prolog scripts on the site.
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index b197e55e1..b26549e57 100644
--- a/README.md
+++ b/README.md
@@ -167,7 +167,7 @@ Courses | Duration | Effort | Prerequisites
#### Readings
- **Required** to learn about monads, laziness, purity: [Learn You a Haskell for a Great Good!](http://learnyouahaskell.com/)
- **Note**: probably the best resource to learn Haskell: [Haskell Programming from First Principles](http://haskellbook.com/) `paid`
-- **Required**, to learn about logic programming, backtracking, unification: [Learn Prolog Now!](http://www.learnprolognow.org/)
+- **Required**, to learn about logic programming, backtracking, unification: [Learn Prolog Now!](http://lpn.swi-prolog.org/lpnpage.php?pageid=top)
### Core math
From 1e877eaca611d5a086e67df913bcb6e8ec174c0d Mon Sep 17 00:00:00 2001
From: Vipin Kumar
Date: Wed, 9 May 2018 20:26:09 +0530
Subject: [PATCH 175/519] PROJECTS: Add Webliza project (#477)
Introduction to Computer Science section
---
PROJECTS.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/PROJECTS.md b/PROJECTS.md
index 189482bc9..49756c1e1 100644
--- a/PROJECTS.md
+++ b/PROJECTS.md
@@ -17,6 +17,7 @@ Project Title | Description | Author(s) | Repository
:-- | :-- | :--: | :--
Binary Machine | Convert decimal numbers to binary | [Eric Douglas](https://github.com/ericdouglas) | [binary-machine](https://github.com/ericdouglas/binary-machine)
StalkHub | Stalk Github beautifully | [Aman Roy](https://github.com/aman-roy) | [StalkHub](https://github.com/aman-roy/StalkHub)
+Webliza | ELIZA in python with web interface | [Vipin Kumar](https://github.com/VipinindKumar) | [Webliza](https://github.com/VipinindKumar/Webliza)
## Programming
From 98ecf7e5d3619a699078a39d416b4a88ca2f93ef Mon Sep 17 00:00:00 2001
From: Joshua Hanson
Date: Fri, 11 May 2018 11:36:43 -0400
Subject: [PATCH 176/519] README: Replace OSU Calculus with MIT Calculus
---
README.md | 16 +++++-----------
1 file changed, 5 insertions(+), 11 deletions(-)
diff --git a/README.md b/README.md
index b26549e57..87e8546db 100644
--- a/README.md
+++ b/README.md
@@ -192,15 +192,10 @@ Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | 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 | Essence of Linear Algebra
-[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.
+[Calculus 1A: Differentiation](https://www.edx.org/course/calculus-1a-differentiation-mitx-18-01-1x-0) | 13 weeks | 6-10 hours/week | pre-calculus
+[Calculus 1B: Integration](https://www.edx.org/course/calculus-1b-integration-mitx-18-01-2x-0) | 13 weeks | 5-10 hours/week | Calculus 1A
+[Calculus 1C: Coordinate Systems & Infinite Series](https://www.edx.org/course/calculus-1c-coordinate-systems-infinite-mitx-18-01-3x-0) | 13 weeks | 5-10 hours/week | Calculus 1B
+[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 1C
### Core systems
@@ -322,8 +317,7 @@ Courses | Duration | Effort | Prerequisites
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Calculus: Parametric Equations and Polar Coordinates](https://ocw.mit.edu/courses/mathematics/18-01sc-single-variable-calculus-fall-2010/unit-4-techniques-of-integration/part-c-parametric-equations-and-polar-coordinates/) | - | - | 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 | Parametric Equations and Polar Coordinates
+[Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/index.htm) | 13 weeks | 12 hours/week | MIT Calculus 1C
[Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-2) | 18 weeks | 12 hours/week | Multivariable Calculus
### Advanced systems
From aa0e0b77658435183feded818f4195c4586a1dc8 Mon Sep 17 00:00:00 2001
From: Joshua Hanson
Date: Fri, 11 May 2018 11:48:08 -0400
Subject: [PATCH 177/519] extras/readings: Add Ximera calculus textbook
---
extras/readings.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/extras/readings.md b/extras/readings.md
index abcdbdd29..58fbdcfab 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -28,7 +28,8 @@ Name | Author(s)
Name | Author(s)
:-- | :--:
-[Calculus Made Easy](http://www.gutenberg.org/ebooks/33283) | Silvanus P. Thompson
+[Calculus Made Easy](http://www.gutenberg.org/ebooks/33283) | Silvanus P. Thompson
+[Ximera](https://ximera.osu.edu/): Interactive Calculus Textbooks | [Ximera team](https://ximera.osu.edu/about/team)
[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
From be2e50ce5c5e04c863af63fd9f5be9b5cb3cb2c6 Mon Sep 17 00:00:00 2001
From: Joshua Hanson
Date: Fri, 11 May 2018 11:50:11 -0400
Subject: [PATCH 178/519] extras/readings: Add Oscar Levin Discrete Math
textbook
---
extras/readings.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/extras/readings.md b/extras/readings.md
index 58fbdcfab..ce646d884 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -31,6 +31,7 @@ Name | Author(s)
[Calculus Made Easy](http://www.gutenberg.org/ebooks/33283) | Silvanus P. Thompson
[Ximera](https://ximera.osu.edu/): Interactive Calculus Textbooks | [Ximera team](https://ximera.osu.edu/about/team)
[Discrete Mathematics with Applications (4th Edition)](http://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp/dp/0495391328/) | Susanna S. Epp
+[Discrete Mathematics: An Open Introduction](http://discrete.openmathbooks.org/dmoi/) | Oscar Levin
[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
From e6c1b44898fad7b450a35e579aea7faf6444a105 Mon Sep 17 00:00:00 2001
From: Joshua Hanson
Date: Fri, 11 May 2018 11:58:01 -0400
Subject: [PATCH 179/519] README: Add note about Coursera Discrete Math (paid)
---
README.md | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 87e8546db..0dca03173 100644
--- a/README.md
+++ b/README.md
@@ -195,7 +195,10 @@ Courses | Duration | Effort | Prerequisites
[Calculus 1A: Differentiation](https://www.edx.org/course/calculus-1a-differentiation-mitx-18-01-1x-0) | 13 weeks | 6-10 hours/week | pre-calculus
[Calculus 1B: Integration](https://www.edx.org/course/calculus-1b-integration-mitx-18-01-2x-0) | 13 weeks | 5-10 hours/week | Calculus 1A
[Calculus 1C: Coordinate Systems & Infinite Series](https://www.edx.org/course/calculus-1c-coordinate-systems-infinite-mitx-18-01-3x-0) | 13 weeks | 5-10 hours/week | Calculus 1B
-[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 1C
+[Mathematics for Computer Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-spring-2015/index.htm)**1** | 13 weeks | 5 hours/week | Calculus 1C
+
+**1**: Students struggling with MIT Math for CS can consider taking the [Discrete Mathematics Specialization](https://www.coursera.org/specializations/discrete-mathematics) first.
+It is more interactive but less comprehensive, and it costs money to unlock full interactivity.
### Core systems
From 037dd7b5ef02b0dcabf6a0eb91e7949526792788 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Thu, 17 May 2018 13:07:28 -0400
Subject: [PATCH 180/519] README: Remove dead link to Facebook group (#479)
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 0dca03173..3c70db1cb 100644
--- a/README.md
+++ b/README.md
@@ -490,7 +490,7 @@ These aren't the only specializations you can choose. Check the following websit
- Use our [forum](https://github.com/ossu/forum) if you need some help.
- You can also interact through [GitHub issues](https://github.com/ossu/computer-science/issues).
- We also have a chat room! [](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 [Linkedin](https://www.linkedin.com/school/11272443/) and [Facebook](https://www.facebook.com/ossuniversity) profile!
+- Add **Open Source Society University** to your [Linkedin](https://www.linkedin.com/school/11272443/) profile!
> **PS**: A forum is an ideal way to interact with other students as we do not lose important discussions, which usually occur in communication via chat apps.
**Please use our forum for important discussions**.
From 659e5cbe26e63220932171793590db03817daa80 Mon Sep 17 00:00:00 2001
From: Gustav Bertram
Date: Mon, 9 Jul 2018 00:07:09 +0200
Subject: [PATCH 181/519] #484 Fixed SICP link
Fix the SICP link, as reported in #484
---
extras/readings.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/extras/readings.md b/extras/readings.md
index ce646d884..643239d63 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -14,7 +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
[Think Python 2e](http://greenteapress.com/wp/think-python-2e/) | Allen B. Downey
[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
+[Structure and Interpretation of Computer Programs](https://mitpress.mit.edu/sites/default/files/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
From df29f6a1fcb70a1f3fdb2891e9a7e8b37c300183 Mon Sep 17 00:00:00 2001
From: Hugo
Date: Fri, 24 Aug 2018 18:53:51 -0300
Subject: [PATCH 182/519] Update README.md (#500)
spelling/syntax error
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 3c70db1cb..f5ad331d7 100644
--- a/README.md
+++ b/README.md
@@ -507,7 +507,7 @@ 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 Resources`: cards with that label represent courses that was added by the student.
+- `Extra Resources`: cards with that label represent courses that were 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.
From f8f4e5b7e4aa9654a3bcdafb5a11f134910ea77f Mon Sep 17 00:00:00 2001
From: Vapeur redman
Date: Thu, 27 Sep 2018 16:26:33 -0600
Subject: [PATCH 183/519] README.md: Fix Trello link (#501)
Update 'how to copy board' Trello instructions from 2012 blog post, to actual instructions.
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index f5ad331d7..01415732b 100644
--- a/README.md
+++ b/README.md
@@ -499,7 +499,7 @@ These aren't the only specializations you can choose. Check the following websit
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/).
+See how to copy a board [here](https://help.trello.com/article/802-copying-cards-lists-or-boards).
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 01b4eac751c1f8d7e05dd083fd78c4d25bf2e50c Mon Sep 17 00:00:00 2001
From: Amadeusz Annissimo
Date: Thu, 27 Sep 2018 18:28:32 -0400
Subject: [PATCH 184/519] README: Update fix link and title for LAFF On
Programming for Correctness (#506)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* updating link to LAFF – On Programming for Correctness
It seems like the most recent (and still available) course session added "On" to the course title. Previous link directed to the unavailable version of the course.
* update course name
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 01415732b..e44f351bc 100644
--- a/README.md
+++ b/README.md
@@ -304,7 +304,7 @@ 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
[Software Testing](https://www.udacity.com/course/software-testing--cs258) | 4 weeks | 6 hours/week | Python, programming experience
-[LAFF: Programming for Correctness](https://www.edx.org/course/laff-programming-correctness-utaustinx-ut-p4c-14-01x) | 7 weeks | 6 hours/week | linear algebra
+[LAFF - On Programming for Correctness](https://www.edx.org/course/laff-on-programming-for-correctness) | 7 weeks | 6 hours/week | linear algebra
[Introduction to Parallel Programming](https://www.udacity.com/course/intro-to-parallel-programming--cs344) ([alt](https://www.youtube.com/playlist?list=PLGvfHSgImk4aweyWlhBXNF6XISY3um82_)) | 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
From 7a928c436b0da1576b7ec53d0647f67fcb3683b6 Mon Sep 17 00:00:00 2001
From: Tyler Miller
Date: Thu, 27 Sep 2018 18:29:32 -0400
Subject: [PATCH 185/519] README: Update LAFF link (#508)
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index e44f351bc..1202210b4 100644
--- a/README.md
+++ b/README.md
@@ -191,7 +191,7 @@ Courses | Duration | Effort | Prerequisites
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | 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 | Essence of Linear Algebra
+[Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-to-frontiers#!) ([alt](http://ulaff.net/)) | 15 weeks | 8 hours/week | Essence of Linear Algebra
[Calculus 1A: Differentiation](https://www.edx.org/course/calculus-1a-differentiation-mitx-18-01-1x-0) | 13 weeks | 6-10 hours/week | pre-calculus
[Calculus 1B: Integration](https://www.edx.org/course/calculus-1b-integration-mitx-18-01-2x-0) | 13 weeks | 5-10 hours/week | Calculus 1A
[Calculus 1C: Coordinate Systems & Infinite Series](https://www.edx.org/course/calculus-1c-coordinate-systems-infinite-mitx-18-01-3x-0) | 13 weeks | 5-10 hours/week | Calculus 1B
From a51e9bf55cf3242dfdf5f5f134911cdd53714cfc Mon Sep 17 00:00:00 2001
From: Harshit Kumar
Date: Thu, 4 Oct 2018 08:40:21 +0530
Subject: [PATCH 186/519] extras/readings: Add ISLR (machine learning book)
(#509)
Added An Introduction to Statistical Learning
---
extras/readings.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/extras/readings.md b/extras/readings.md
index c7168376c..ff9df1180 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -65,6 +65,7 @@ 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
[The Architecture of Open Source Applications](http://aosabook.org/en/) | Michael DiBernardo (editor)
+[An Introduction to Statistical Learning](https://www-bcf.usc.edu/~gareth/ISL/) | Gareth James, Daniela Witten, Trevor Hastie and Robert Tibshirani
[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
From 1b8ec330c5e58ed797783010fdc3e3cdf0106fcd Mon Sep 17 00:00:00 2001
From: Amadeusz Annissimo
Date: Tue, 9 Oct 2018 10:22:36 -0400
Subject: [PATCH 187/519] README: Fix typo for Scala Specialization (#510)
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 1202210b4..5ba3ad031 100644
--- a/README.md
+++ b/README.md
@@ -400,7 +400,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 weeks | 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
+[Functional Programming in Scala (Specialization)](https://www.coursera.org/specializations/scala) | 29 weeks | 4-5 hours/week | One year programming experience
## Final project
From 0e1eba23fa1c077b7be465acbddc892ca18cfdb1 Mon Sep 17 00:00:00 2001
From: Sohel Shaikh
Date: Tue, 16 Oct 2018 19:58:48 +0530
Subject: [PATCH 188/519] README: Fix grammatical mistakes (#511)
Fixed sentence construction.
---
README.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 5ba3ad031..704756f87 100644
--- a/README.md
+++ b/README.md
@@ -68,8 +68,8 @@ Courses in Core CS should be taken linearly if possible, but since a perfectly l
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.
+**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!
@@ -408,7 +408,7 @@ 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, but the project will also *validate* and *consolidate* your knowledge.
You can create something entirely new, or you can find an existing project that needs help via websites like
[CodeTriage](https://www.codetriage.com/)
or
@@ -432,7 +432,7 @@ via a pull request and use our [community](#community) channels to announce it t
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,
+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,
From e73656d3c27d2c13204a5f6c791cb793355678a5 Mon Sep 17 00:00:00 2001
From: hanjiexi
Date: Tue, 16 Oct 2018 11:53:31 -0400
Subject: [PATCH 189/519] README: Add 'Process' section under Summary (#513)
Resolves #512. Provides recommendations on how to progress through
curriculum, including recommendations on cohorts, ordering, and
electives.
---
README.md | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/README.md b/README.md
index 704756f87..8f50879ef 100644
--- a/README.md
+++ b/README.md
@@ -74,6 +74,12 @@ 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!
+**Process**. Students can work through the curriculum alone or in groups, in order or out of order.
+- For grouping up, please use the [cohorts repository](https://github.com/ossu/cohorts) to find or create a cohort suited to you.
+- We recommend doing all courses in Core CS, only skipping a course when you are certain that you've already learned the material previously.
+- For simplicity, we recommend working through courses (especially Core CS) in order from top to bottom, as they have already been [topologically sorted](https://en.wikipedia.org/wiki/Topological_sorting) by their prerequisites.
+- Courses in Advanced CS are electives. Choose one subject (e.g. Advanced programming) you want to become an expert in, and take all the courses under that heading. You can also create your own custom subject, but we recommend getting validation from the community on the subject you choose.
+
**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!
From 73477a96198b19e88f879516d8231392b578a1b4 Mon Sep 17 00:00:00 2001
From: Joshua Hanson
Date: Tue, 16 Oct 2018 16:41:29 -0400
Subject: [PATCH 190/519] README: Move CS50 before Nand2Tetris
Resolves #440: It has been decided to keep CS50 as required for
now, but moving it later in the curriculum to match its high
degree of challenge and very low-level orientation.
Resolves #463: It has been decided to retain CS50's dynamic
programming assignment due to the positive feedback it received
as well as the fact that the additional challenge of this problem
is acceptable now that the course is later in the curriculum.
---
FAQ.md | 5 ++---
README.md | 20 +++++++++-----------
2 files changed, 11 insertions(+), 14 deletions(-)
diff --git a/FAQ.md b/FAQ.md
index f0023f506..247c841ab 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -74,11 +74,10 @@ The [Software Development](https://www.edx.org/micromasters/software-development
### Why do you recommend skipping the second half of CS50?
The strongest and most useful part of CS50 is the part where they teach C.
-We wish to retain this in the curriculum for now because it is one of the few chances the student has to play with manual memory management in a (relatively) low-level language.
-Everything after that gets a bit too easy and shallow, to the point that we believe the student's time will be better spent in MIT's Introduction to Computer Science course.
+We are retaining this in the curriculum for now because it is one of the few chances the student has to play with manual memory management in a (relatively) low-level language.
+By learning C, students will also have a much easier time getting through the following course, Nand2Tetris.
That being said, feel free to finish CS50 if you like it and want to.
-But don't skip the MIT Intro course.
### Why doesn't the curriculum cover/ignore topic X?
diff --git a/README.md b/README.md
index 8f50879ef..5ec2a760e 100644
--- a/README.md
+++ b/README.md
@@ -120,24 +120,16 @@ and is knowledgeable enough now to decide which electives to take.
## Introduction to Computer Science
-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.
-([Why?](FAQ.md#why-do-you-recommend-skipping-the-second-half-of-cs50))
+This course will introduce you to the world of computer science.
**Topics covered**:
+`computation`
`imperative programming`
-`procedural programming`
-`C`
-`manual memory management`
`basic data structures and algorithms`
-`Python`
-`SQL`
-`basic HTML, CSS, JavaScript`
`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
@@ -208,7 +200,12 @@ It is more interactive but less comprehensive, and it costs money to unlock full
### Core systems
+Skip to the second course (Nand2Tetris) when the first course (CS50) moves away from C.
+([Why?](FAQ.md#why-do-you-recommend-skipping-the-second-half-of-cs50))
+
**Topics covered**:
+`procedural programming`
+`manual memory management`
`boolean algebra`
`gate logic`
`memory`
@@ -224,7 +221,8 @@ It is more interactive but less comprehensive, and it costs money to unlock full
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[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
+[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 | introductory programming
+[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 | C-like programming language
[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | one of [these programming languages](https://user-images.githubusercontent.com/2046800/35426340-f6ce6358-026a-11e8-8bbb-4e95ac36b1d7.png), From Nand to Tetris Part I
[Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| 8 weeks | 4–12 hours/week | algebra, probability, basic CS
[ops-class.org - Hack the Kernel](https://www.ops-class.org/) | 15 weeks | 6 hours/week | algorithms
From 0df0b06915fca8ae0eda5cf7f4389a85428c96d2 Mon Sep 17 00:00:00 2001
From: Hassam
Date: Thu, 18 Oct 2018 17:32:15 -0500
Subject: [PATCH 191/519] extras/readings: Add PBRT (#514)
PBRT is an amazing book detailing the implementation of a real, well-developed path tracer and is used in many real Computer Graphics courses. The authors have no released it for free, so it would make a great addition to the curriculum.
---
extras/readings.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/extras/readings.md b/extras/readings.md
index 75d5838ad..ca0b5fc6f 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -76,3 +76,4 @@ Name | Author(s)
[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.
+[Physically Based Rendering: From Theory To Implementation](http://www.pbr-book.org/) | Matt Pharr, Wenzel Jakob, and Greg Humphreys
From 4eabbdcb656caba547a003955d535d95736eb475 Mon Sep 17 00:00:00 2001
From: Joshua Hanson
Date: Wed, 31 Oct 2018 12:31:04 -0400
Subject: [PATCH 192/519] README: Add waciumawanjohi to team as lead academic
---
README.md | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 5ec2a760e..9c9acc7ed 100644
--- a/README.md
+++ b/README.md
@@ -524,9 +524,10 @@ You can change the status of your board to be *public* or *private*.
## Team
-* **Curriculum Founders**: [Eric Douglas](https://github.com/ericdouglas)
-* **Curriculum Maintainers**: [Eric Douglas](https://github.com/ericdouglas) and [hanjiexi](https://github.com/hanjiexi)
-* **Contributors**: [contributors](https://github.com/ossu/computer-science/graphs/contributors)
+* **[Eric Douglas](https://github.com/ericdouglas)**: founder of OSSU and co-maintainer of all its curricula
+* **[hanjiexi](https://github.com/hanjiexi)**: lead technical maintainer
+* **[waciumawanjohi](https://github.com/waciumawanjohi)**: lead academic maintainer
+* **[Contributors](https://github.com/ossu/computer-science/graphs/contributors)**
# References
From 3097706b894acc4acaa74d5c0261985c1891d9bf Mon Sep 17 00:00:00 2001
From: Bradley Grant <38932484+bradleygrant@users.noreply.github.com>
Date: Thu, 1 Nov 2018 08:51:55 -0600
Subject: [PATCH 193/519] extras/courses: Add GTx CS1301 Course Sequence (#524)
GTx CS1301, "Computing In Python" is proposed as a supplemental course in the OSSU curriculum and as a potential future candidate for the Introduction to Computer Science course. It is an online-adapted version of the on-campus Introduction to Computing course for Georgia Tech computer science students. The online version is comprised of four parts, delivered on-demand via edX. The course is self-paced with 16 weeks of effort, and is 100% free to audit with all materials included. It covers all introductory CS topics discussed in MIT 6.00.1x from a language-agnostic perspective, while providing additional instruction and support in learning Python as a language. Students who complete this course will have an understanding of basic CS topics **and** a working knowledge of Python 3 they can immediately apply to interesting problems.
---
extras/courses.md | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/extras/courses.md b/extras/courses.md
index d08710491..7930b0154 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -12,6 +12,10 @@ Courses | Duration | Effort
[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)| - | -
+[Computing In Python, Part I: Fundamentals and Procedural Programming](https://www.edx.org/course/computing-in-python-i-fundamentals-and-procedural-programming-0) | 5 weeks | 10 hours/week
+[Computing In Python, Part II: Control Structures](https://www.edx.org/course/computing-in-python-ii-control-structures-0) | 5 weeks | 10 hours/week
+[Computing In Python, Part III: Data Structures](https://www.edx.org/course/computing-in-python-iii-data-structures-0) | 5 weeks | 10 hours/week
+[Computing In Python, Part IV: Objects & Algorithms](https://www.edx.org/course/computing-in-python-iv-objects-algorithms-0) | 5 weeks | 10 hours/week
[Programming Basics](https://www.edx.org/course/programming-basics-iitbombayx-cs101-1x)| 9 weeks | 8 hours/week
[Object-Oriented Programming](https://www.edx.org/course/object-oriented-programming-iitbombayx-cs101-2x)| 4 weeks | 8 hours/week
[Object-Oriented Programming with Java (Part 1)](http://mooc.fi/courses/2013/programming-part-1/)| 6 weeks | -
From 379ef0dc3bdbe69e3030723fde6e437a347d974d Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Tue, 6 Nov 2018 00:30:32 -0500
Subject: [PATCH 194/519] Add curriculum guidelines to Extras
---
extras/curriculum_guidelines.md | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
create mode 100644 extras/curriculum_guidelines.md
diff --git a/extras/curriculum_guidelines.md b/extras/curriculum_guidelines.md
new file mode 100644
index 000000000..80f97f511
--- /dev/null
+++ b/extras/curriculum_guidelines.md
@@ -0,0 +1,23 @@
+# Computer Science - Curricular Resources
+
+## Accreditation Board for Engineering and Technology
+
+ABET, incorporated as the Accreditation Board for Engineering and Technology, Inc., is a non-governmental organization that accredits post-secondary education programs in applied and natural science, computing, engineering and engineering technology. As of October 2017, 3,852 programs are accredited, distributed over 776 universities and colleges in 31 countries. ABET is the recognized U.S. accreditor of college and university programs in applied and natural science, computing, engineering and engineering technology.
+
+[Program Criteria for Computer Science, Information Systems, and Information Technology Programs](http://www.abet.org/accreditation/accreditation-criteria/criteria-for-accrediting-computing-programs-2018-2019/#2)
+
+## The Association for Computing Machinery
+
+The Association for Computing Machinery (ACM) is an international learned society for computing. It was founded in 1947, and is the world's largest scientific and educational computing society. The ACM is a non-profit professional membership group, with more than 100,000 members as of 2011.
+
+### with
+
+## Institute of Electrical and Electronics Engineers
+
+The Institute of Electrical and Electronics Engineers (IEEE) is a professional association formed in 1963 from the amalgamation of the American Institute of Electrical Engineers and the Institute of Radio Engineers. As of 2018, it is the world's largest association of technical professionals with more than 423,000 members in over 160 countries around the world. Its objectives are the educational and technical advancement of electrical and electronic engineering, telecommunications, computer engineering and allied disciplines.
+
+[Curriculum Guidelines for Undergraduate Programs in Computer Science](https://www.acm.org/binaries/content/assets/education/cs2013_web_final.pdf)
+
+[Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering](https://www.acm.org/binaries/content/assets/education/se2014.pdf)
+
+[Computer Engineering Curricula](https://www.acm.org/binaries/content/assets/education/ce2016-final-report.pdf)
From 3a74c22f8a43f67db7f094e9e23df1c311ef2c37 Mon Sep 17 00:00:00 2001
From: Alexey Filatov
Date: Thu, 22 Nov 2018 02:15:21 +0300
Subject: [PATCH 195/519] README: Update Automata from archived (2016) to
self-paced
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 9c9acc7ed..cc30cb6c1 100644
--- a/README.md
+++ b/README.md
@@ -383,7 +383,7 @@ If you are struggling, you can find a physics MOOC or utilize the materials from
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
+[Automata Theory](https://lagunita.stanford.edu/courses/course-v1:ComputerScience+Automata+SelfPaced/about) | 7 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 31756c783e7d67fa7a710a0c029884fe99f8f5fb Mon Sep 17 00:00:00 2001
From: Norbert Fuhs <42637633+nfuhs@users.noreply.github.com>
Date: Mon, 26 Nov 2018 19:06:18 +0100
Subject: [PATCH 196/519] REQUIREMENTS: Fixed misspelling of 'language' (#537)
---
REQUIREMENTS.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/REQUIREMENTS.md b/REQUIREMENTS.md
index 9805ede54..10909978e 100644
--- a/REQUIREMENTS.md
+++ b/REQUIREMENTS.md
@@ -20,7 +20,7 @@ The subject requirements are based on topics, rather than specific courses, beca
- XML/HTML
- JavaScript and/or related language
- An ML-family language
-- A Lisp-family langauge
+- A Lisp-family language
- Python and/or Ruby
### Math
From b52dd6a504902e333a5d725d4b931d31581d4440 Mon Sep 17 00:00:00 2001
From: Alexey Filatov
Date: Thu, 29 Nov 2018 00:11:54 +0300
Subject: [PATCH 197/519] README: Update MIT Calculus links (#541)
Links to particular archived version are substituted with generic links, always pointing to the newest enrollments
---
README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index cc30cb6c1..9577b8942 100644
--- a/README.md
+++ b/README.md
@@ -190,9 +190,9 @@ Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | pre-calculus
[Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-to-frontiers#!) ([alt](http://ulaff.net/)) | 15 weeks | 8 hours/week | Essence of Linear Algebra
-[Calculus 1A: Differentiation](https://www.edx.org/course/calculus-1a-differentiation-mitx-18-01-1x-0) | 13 weeks | 6-10 hours/week | pre-calculus
-[Calculus 1B: Integration](https://www.edx.org/course/calculus-1b-integration-mitx-18-01-2x-0) | 13 weeks | 5-10 hours/week | Calculus 1A
-[Calculus 1C: Coordinate Systems & Infinite Series](https://www.edx.org/course/calculus-1c-coordinate-systems-infinite-mitx-18-01-3x-0) | 13 weeks | 5-10 hours/week | Calculus 1B
+[Calculus 1A: Differentiation](https://www.edx.org/course/calculus-1a-differentiation) | 13 weeks | 6-10 hours/week | pre-calculus
+[Calculus 1B: Integration](https://www.edx.org/course/calculus-1b-integration) | 13 weeks | 5-10 hours/week | Calculus 1A
+[Calculus 1C: Coordinate Systems & Infinite Series](https://www.edx.org/course/calculus-1c-coordinate-systems-infinite-series) | 13 weeks | 5-10 hours/week | Calculus 1B
[Mathematics for Computer Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-spring-2015/index.htm)**1** | 13 weeks | 5 hours/week | Calculus 1C
**1**: Students struggling with MIT Math for CS can consider taking the [Discrete Mathematics Specialization](https://www.coursera.org/specializations/discrete-mathematics) first.
From 7d00e1c2035468ddc4a6fd19a1d1a76f85fc2209 Mon Sep 17 00:00:00 2001
From: Alexey Filatov
Date: Thu, 29 Nov 2018 02:13:12 +0300
Subject: [PATCH 198/519] readings: Add Computer Systems: A Programmer's
Perspective book
This is probably the best introduction to computer systems for programmers. It contains all needed essentials of computer architecture, describes how C language works internally (e.g. how data structures are organized in memory and managed on machine language level) and even describes essentials of operating systems.
---
extras/readings.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/extras/readings.md b/extras/readings.md
index ca0b5fc6f..7094371a2 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -40,6 +40,7 @@ Name | Author(s)
Name | Author(s)
:-- | :--:
+[Computer Systems: A Programmer's Perspective (3rd Edition)](http://csapp.cs.cmu.edu/) | Randal E. Bryant, David R. O'Hallaron
[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
From 91c479540c1d4c761c2a812849286ccad9a6c295 Mon Sep 17 00:00:00 2001
From: Alexey Filatov
Date: Mon, 10 Dec 2018 05:20:04 +0300
Subject: [PATCH 199/519] READINGS: Add Introduction to the Theory of
Computation (#545)
This books contains easy to understand introduction to the automata theory, which is missing in "Introduction to computing" book by David Evans. It does not require complicated math, so it can be useful to students who do not want to become theoretical computer scientists, but want do have general understanding of it's topics. Also, it almost perfectly matches The Automata Theory course we have in the curriculum.
---
extras/readings.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/extras/readings.md b/extras/readings.md
index 7094371a2..4ab9d5d24 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -54,6 +54,7 @@ Name | Author(s)
Name | Author(s)
:-- | :--:
[Introduction to Computing: Explorations in Language, Logic, and Machines](http://www.computingbook.org/) | David Evans
+[Introduction to the Theory of Computation](https://www.amazon.com/Introduction-Theory-Computation-Michael-Sipser/dp/113318779X) | Michael Sipser
[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
[Category Theory: A Gentle Introduction](http://www.logicmatters.net/resources/pdfs/GentleIntro.pdf) | Peter Smith
From e89d89d4bd000cafa1ac0e71973127045008d332 Mon Sep 17 00:00:00 2001
From: Alaharon123 <34926441+Alaharon123@users.noreply.github.com>
Date: Wed, 2 Jan 2019 23:41:11 -0500
Subject: [PATCH 200/519] READINGS: Update links (#557)
Newer edition of Introduction to Computation and Programming Using Python uses Python 3 and the link to htdp was wrong.
---
extras/readings.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/extras/readings.md b/extras/readings.md
index 4ab9d5d24..d41487883 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -11,9 +11,9 @@ Or, if you are struggling in one of the courses, perhaps reading a book on the s
Name | Author(s)
:-- | :--:
-[Introduction to Computation and Programming Using Python](https://www.amazon.com/Introduction-Computation-Programming-Using-Python/dp/0262525003/) | John V. Guttag
+[Introduction to Computation and Programming Using Python 2e](https://www.amazon.com/Introduction-Computation-Programming-Using-Python/dp/0262529629/) | John V. Guttag
[Think Python 2e](http://greenteapress.com/wp/think-python-2e/) | Allen B. Downey
-[How to Design Programs](http://www.ccs.neu.edu/home/matthias/HtDP2e/) | Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi
+[How to Design Programs](https://www.htdp.org/) | Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi
[Structure and Interpretation of Computer Programs](https://mitpress.mit.edu/sites/default/files/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
From 545aa18cbf15354bbaad0ff9cd0b1aca6507f1c9 Mon Sep 17 00:00:00 2001
From: Michael Alexander Mejia Mora
<35932384+MichaelMejiaMora@users.noreply.github.com>
Date: Tue, 22 Jan 2019 13:28:37 -0600
Subject: [PATCH 201/519] Update License file copyright year (#559)
---
LICENSE | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/LICENSE b/LICENSE
index f5fb89ecb..361102402 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
The MIT License (MIT)
-Copyright (c) 2018 Open Source Society University
+Copyright (c) 2019 Open Source Society University
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
From a202d46b4faf161cadf6377866e3c11829f64dc9 Mon Sep 17 00:00:00 2001
From: Agon Gashi
Date: Mon, 28 Jan 2019 09:39:12 +0100
Subject: [PATCH 202/519] Added Tools section on extra/courses
---
extras/courses.md | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/extras/courses.md b/extras/courses.md
index 7930b0154..e130f3ee1 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -73,6 +73,14 @@ Courses | Duration | Effort
[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
+## Tools
+
+Courses | Duration | Effort
+:-- | :--: | :--:
+[Version Control with Git](https://www.udacity.com/course/version-control-with-git--ud123) | 4 weeks | 2-3 hours/week
+[How to Use Git and GitHub](hhttps://www.udacity.com/course/how-to-use-git-and-github--ud775) | 3 weeks | 2-3 hours/week
+
+
# Online Learning - Great Courses
Courses | Duration | Effort
From b8432806ab49322fc194661f4ad97ed84250d0ea Mon Sep 17 00:00:00 2001
From: Agon Gashi
Date: Mon, 28 Jan 2019 09:41:24 +0100
Subject: [PATCH 203/519] Added Tools section on extra/courses
---
extras/courses.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/extras/courses.md b/extras/courses.md
index e130f3ee1..162a10c09 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -78,7 +78,7 @@ Courses | Duration | Effort
Courses | Duration | Effort
:-- | :--: | :--:
[Version Control with Git](https://www.udacity.com/course/version-control-with-git--ud123) | 4 weeks | 2-3 hours/week
-[How to Use Git and GitHub](hhttps://www.udacity.com/course/how-to-use-git-and-github--ud775) | 3 weeks | 2-3 hours/week
+[How to Use Git and GitHub](https://www.udacity.com/course/how-to-use-git-and-github--ud775) | 3 weeks | 2-3 hours/week
# Online Learning - Great Courses
From 92821dcedd8fadef02e7328b088d829abd9fcbc4 Mon Sep 17 00:00:00 2001
From: Alaharon123 <34926441+Alaharon123@users.noreply.github.com>
Date: Fri, 1 Feb 2019 21:36:17 -0500
Subject: [PATCH 204/519] Add ocw alt to 6.00.1x
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 9577b8942..44fe6acf4 100644
--- a/README.md
+++ b/README.md
@@ -130,7 +130,7 @@ This course will introduce you to the world of computer science.
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[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
+[Introduction to Computer Science and Programming using Python](https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x-10) ([alt](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/)) | 9 weeks | 15 hours/week | high school algebra
## Core CS
From 49617096c846ad6963af47f6b5bd9530e9688517 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Mon, 1 Apr 2019 20:04:32 -0400
Subject: [PATCH 205/519] Update trello link to a current board.
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 9577b8942..01f74bdc6 100644
--- a/README.md
+++ b/README.md
@@ -502,7 +502,7 @@ These aren't the only specializations you can choose. Check the following websit
## 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.
+1. Copy [this](https://trello.com/b/7NIfi40X) board to your personal account.
See how to copy a board [here](https://help.trello.com/article/802-copying-cards-lists-or-boards).
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 90462ab85ea8bfcc0d629475daa8a633080c1d9e Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Wed, 3 Apr 2019 00:11:51 -0400
Subject: [PATCH 206/519] Recommend 1 git course rather than 2
---
extras/courses.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/extras/courses.md b/extras/courses.md
index 162a10c09..4b8e58252 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -77,7 +77,6 @@ Courses | Duration | Effort
Courses | Duration | Effort
:-- | :--: | :--:
-[Version Control with Git](https://www.udacity.com/course/version-control-with-git--ud123) | 4 weeks | 2-3 hours/week
[How to Use Git and GitHub](https://www.udacity.com/course/how-to-use-git-and-github--ud775) | 3 weeks | 2-3 hours/week
From 94e0d0079218f32023c143b4c03dd81b166a6669 Mon Sep 17 00:00:00 2001
From: Tyler Miller
Date: Thu, 11 Apr 2019 15:34:39 -0400
Subject: [PATCH 207/519] Update to current version of LAFF course website
(#571)
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 6079d67c7..d9ae800f3 100644
--- a/README.md
+++ b/README.md
@@ -189,7 +189,7 @@ Courses | Duration | Effort | Prerequisites
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | pre-calculus
-[Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-to-frontiers#!) ([alt](http://ulaff.net/)) | 15 weeks | 8 hours/week | Essence of Linear Algebra
+[Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-to-frontiers-0) ([alt](http://ulaff.net/)) | 15 weeks | 8 hours/week | Essence of Linear Algebra
[Calculus 1A: Differentiation](https://www.edx.org/course/calculus-1a-differentiation) | 13 weeks | 6-10 hours/week | pre-calculus
[Calculus 1B: Integration](https://www.edx.org/course/calculus-1b-integration) | 13 weeks | 5-10 hours/week | Calculus 1A
[Calculus 1C: Coordinate Systems & Infinite Series](https://www.edx.org/course/calculus-1c-coordinate-systems-infinite-series) | 13 weeks | 5-10 hours/week | Calculus 1B
From eae5780330d4be0455615ded6d4e79294b979767 Mon Sep 17 00:00:00 2001
From: Alexey Filatov
Date: Tue, 9 Jul 2019 12:21:30 +0300
Subject: [PATCH 208/519] Update "Introduction to Parallel Programming" link
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index d9ae800f3..de48f650b 100644
--- a/README.md
+++ b/README.md
@@ -309,7 +309,7 @@ Courses | Duration | Effort | Prerequisites
[Software Debugging](https://www.udacity.com/course/software-debugging--cs259)| 8 weeks | 6 hours/week | Python, object-oriented programming
[Software Testing](https://www.udacity.com/course/software-testing--cs258) | 4 weeks | 6 hours/week | Python, programming experience
[LAFF - On Programming for Correctness](https://www.edx.org/course/laff-on-programming-for-correctness) | 7 weeks | 6 hours/week | linear algebra
-[Introduction to Parallel Programming](https://www.udacity.com/course/intro-to-parallel-programming--cs344) ([alt](https://www.youtube.com/playlist?list=PLGvfHSgImk4aweyWlhBXNF6XISY3um82_)) | 12 weeks | - | C, algorithms
+[Introduction to Parallel Programming](https://classroom.udacity.com/courses/cs344) ([alt](https://www.youtube.com/playlist?list=PLGvfHSgImk4aweyWlhBXNF6XISY3um82_)) | 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
From 61ca8a76a3c269ae36334af38cde5445cebf819b Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Wed, 21 Aug 2019 19:02:23 -0400
Subject: [PATCH 209/519] Update Core Systems
Add assignments to Computer Networking course. See here:
https://github.com/ossu/computer-science/issues/520#issuecomment-515740803
Add an extra column to the Core Systems courses chart so that it can
hold information previously written above and below. Centralizing
information should improve readability.
---
README.md | 20 +++++++-------------
1 file changed, 7 insertions(+), 13 deletions(-)
diff --git a/README.md b/README.md
index de48f650b..c30373233 100644
--- a/README.md
+++ b/README.md
@@ -200,9 +200,6 @@ It is more interactive but less comprehensive, and it costs money to unlock full
### Core systems
-Skip to the second course (Nand2Tetris) when the first course (CS50) moves away from C.
-([Why?](FAQ.md#why-do-you-recommend-skipping-the-second-half-of-cs50))
-
**Topics covered**:
`procedural programming`
`manual memory management`
@@ -219,16 +216,13 @@ Skip to the second course (Nand2Tetris) when the first course (CS50) moves away
`network protocols`
`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 | introductory programming
-[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 | C-like programming language
-[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | one of [these programming languages](https://user-images.githubusercontent.com/2046800/35426340-f6ce6358-026a-11e8-8bbb-4e95ac36b1d7.png), From Nand to Tetris Part I
-[Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| 8 weeks | 4–12 hours/week | algebra, probability, basic CS
-[ops-class.org - Hack the Kernel](https://www.ops-class.org/) | 15 weeks | 6 hours/week | algorithms
-
-#### Readings
-- **Recommended**: While Hack the Kernel recommends Modern Operating Systems as a textbook, we suggest using [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/).
+Courses | Duration | Effort | Additional Text / Assignments| 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 | After the sections on C, skip to the next course. [Why?](FAQ.md#why-do-you-recommend-skipping-the-second-half-of-cs50) | introductory programming
+[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 | - | C-like programming language
+[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | - | one of [these programming languages](https://user-images.githubusercontent.com/2046800/35426340-f6ce6358-026a-11e8-8bbb-4e95ac36b1d7.png), From Nand to Tetris Part I
+[Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| 8 weeks | 4–12 hours/week | [Assignment 1](https://github.com/PrincetonUniversity/COS461-Public/tree/master/assignments/assignment1)
[Assignment 2](https://www.scs.stanford.edu/10au-cs144/lab/reliable/reliable.html)
[Assignment 3](https://nptel.ac.in/courses/106105080/pdf/M2L7.pdf)
[Assignment 4](http://www-net.cs.umass.edu/wireshark-labs/Wireshark_TCP_v7.0.pdf) | algebra, probability, basic CS
+[ops-class.org - Hack the Kernel](https://www.ops-class.org/) | 15 weeks | 6 hours/week | Replace course textbook with [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/) | algorithms
### Core theory
From d56b071cf1b21d10e3373af4f3004cb559445730 Mon Sep 17 00:00:00 2001
From: Maizbest
Date: Thu, 5 Sep 2019 01:02:19 +0300
Subject: [PATCH 210/519] Update README.md
fix link to Assignment 3 in Core Systems
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index c30373233..c4e84e34b 100644
--- a/README.md
+++ b/README.md
@@ -221,7 +221,7 @@ Courses | Duration | Effort | Additional Text / Assignments| 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 | After the sections on C, skip to the next course. [Why?](FAQ.md#why-do-you-recommend-skipping-the-second-half-of-cs50) | introductory programming
[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 | - | C-like programming language
[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | - | one of [these programming languages](https://user-images.githubusercontent.com/2046800/35426340-f6ce6358-026a-11e8-8bbb-4e95ac36b1d7.png), From Nand to Tetris Part I
-[Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| 8 weeks | 4–12 hours/week | [Assignment 1](https://github.com/PrincetonUniversity/COS461-Public/tree/master/assignments/assignment1)
[Assignment 2](https://www.scs.stanford.edu/10au-cs144/lab/reliable/reliable.html)
[Assignment 3](https://nptel.ac.in/courses/106105080/pdf/M2L7.pdf)
[Assignment 4](http://www-net.cs.umass.edu/wireshark-labs/Wireshark_TCP_v7.0.pdf) | algebra, probability, basic CS
+[Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| 8 weeks | 4–12 hours/week | [Assignment 1](https://github.com/PrincetonUniversity/COS461-Public/tree/master/assignments/assignment1)
[Assignment 2](https://www.scs.stanford.edu/10au-cs144/lab/reliable/reliable.html)
[Assignment 3](https://nptel.ac.in/content/storage2/courses/106105080/pdf/M2L7.pdf)
[Assignment 4](http://www-net.cs.umass.edu/wireshark-labs/Wireshark_TCP_v7.0.pdf) | algebra, probability, basic CS
[ops-class.org - Hack the Kernel](https://www.ops-class.org/) | 15 weeks | 6 hours/week | Replace course textbook with [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/) | algorithms
### Core theory
From 1eda3a287a81bddd91e61f05523551189093dbad Mon Sep 17 00:00:00 2001
From: zogamnuam
Date: Fri, 4 Oct 2019 12:38:54 +0200
Subject: [PATCH 211/519] Update readings.md
Programming and Programming Languages - updated to current stable version 2018
---
extras/readings.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/extras/readings.md b/extras/readings.md
index d41487883..04aa30a30 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -22,7 +22,7 @@ Name | Author(s)
[Code Complete 2e](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
[Programming Languages: Application and Interpretation](http://cs.brown.edu/~sk/Publications/Books/ProgLangs/) | Shriram Krishnamurthi
-[Programming and Programming Languages](http://papl.cs.brown.edu/2016/) | Shriram Krishnamurthi, Benjamin S. Lerner, Joe Gibbs Politz
+[Programming and Programming Languages](https://papl.cs.brown.edu/2018/) | Shriram Krishnamurthi, Benjamin S. Lerner, Joe Gibbs Politz
## Math
From 6dee7765930a04595aeaab70f73cf040c56ef78d Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Thu, 10 Oct 2019 00:04:17 -0400
Subject: [PATCH 212/519] Create section for Intro to Programming
Pursuant to the RFC:
https://github.com/ossu/computer-science/issues/589
---
README.md | 21 ++++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index c4e84e34b..d92d6179a 100644
--- a/README.md
+++ b/README.md
@@ -118,9 +118,28 @@ Some high school graduates will have already taken AP Calculus, but this is usua
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).
+## Introduction to Programming
+
+If you've never written a for-loop, or don't know what a string is in programming, start here. Choose one of the two course series below. Either one will give you an introduction to programming that assumes no prior knowledge.
+
+Trying to decide between them?
+
+_Python for Everyone_ will introduce you to a popular language and will quickly move to practical programming tasks - using web APIs and databases. This will give you a taste of what many professional developers do.
+
+_Fundamentals of Computing_ will also start by introducing you to Python. It then moves on to give an introduction to academic Computer Science topics, like sorting and recursion. This will give you a taste of what the following courses will be like. (Students who complete _Fundamentals of Computing_ can skip Intro to Computer Science and begin Core CS.)
+
+**Topics covered**:
+`simple programs`
+`simple data structures`
+
+Courses | Duration | Effort | Prerequisites
+:-- | :--: | :--: | :--:
+[Python for Everyone](https://www.coursera.org/specializations/python) | 9 weeks | 58 hours | none
+[Fundamentals of Computing](https://www.coursera.org/specializations/computer-fundamentals) | 9 weeks | 138 hours | high school mathematics
+
## Introduction to Computer Science
-This course will introduce you to the world of computer science.
+This course will introduce you to the world of computer science. Students who have been introduced to programming, either from the courses above or through study elsewhere, should take this course for a flavor of the material to come. If you finish the course wanting more, Computer Science is likely for you!
**Topics covered**:
`computation`
From 1ba60ede5992af283c9cd30b3826d5f7212b4891 Mon Sep 17 00:00:00 2001
From: Charlie van Rantwijk
Date: Sat, 12 Oct 2019 00:00:02 +0200
Subject: [PATCH 213/519] README: Small text fixes (#610)
* README: Small text fixes
---
README.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index d92d6179a..85d6598c2 100644
--- a/README.md
+++ b/README.md
@@ -65,7 +65,7 @@ they belong in [extras/courses](extras/courses.md) or [extras/readings](extras/r
**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
+each class's prerequisites are 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.
@@ -78,7 +78,7 @@ just remember that you can't purchase success!
- For grouping up, please use the [cohorts repository](https://github.com/ossu/cohorts) to find or create a cohort suited to you.
- We recommend doing all courses in Core CS, only skipping a course when you are certain that you've already learned the material previously.
- For simplicity, we recommend working through courses (especially Core CS) in order from top to bottom, as they have already been [topologically sorted](https://en.wikipedia.org/wiki/Topological_sorting) by their prerequisites.
-- Courses in Advanced CS are electives. Choose one subject (e.g. Advanced programming) you want to become an expert in, and take all the courses under that heading. You can also create your own custom subject, but we recommend getting validation from the community on the subject you choose.
+- Courses in Advanced CS are electives. Choose one subject (e.g. Advanced programming) you want to become an expert in and take all the courses under that heading. You can also create your own custom subject, but we recommend getting validation from the community on the subject you choose.
**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!
@@ -422,7 +422,7 @@ Courses | Duration | Effort | Prerequisites
## 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.
+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, but the project will also *validate* and *consolidate* your knowledge.
@@ -477,7 +477,7 @@ 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
+- [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
From c863d8baf93292c0a9b6a07291793fd66e492f99 Mon Sep 17 00:00:00 2001
From: hematogender <46577620+hematogender@users.noreply.github.com>
Date: Sun, 13 Oct 2019 16:54:51 +0300
Subject: [PATCH 214/519] Fixed curriculum structure
Added Intro CS section (h2) to follow initial ierarchy of the document.
Made Introduction to Programming and Introduction to Computer Science sub-sections (h3).
Also fixed Contents and Curriculum links to reflect these changes.
---
README.md | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 85d6598c2..388f3e7c9 100644
--- a/README.md
+++ b/README.md
@@ -21,7 +21,7 @@
- [Summary](#summary)
- [Curriculum](#curriculum)
- [Prerequisites](#prerequisites)
- - [Introduction to Computer Science](#introduction-to-computer-science)
+ - [Intro CS](#intro-cs)
- [Core CS](#core-cs)
- [Advanced CS](#advanced-cs)
- [Final project](#final-project)
@@ -92,7 +92,9 @@ just remember that you can't purchase success!
**Curriculum version**: `8.0.0` (see [CHANGELOG](CHANGELOG.md))
- [Prerequisites](#prerequisites)
-- [Introduction to Computer Science](#introduction-to-computer-science)
+- [Intro CS](#intro-cs)
+ - [Introduction to Programming](#introduction-to-programming)
+ - [Introduction to Computer Science](#introduction-to-computer-science)
- [Core CS](#core-cs)
- [Core programming](#core-programming)
- [Core math](#core-math)
@@ -118,7 +120,9 @@ Some high school graduates will have already taken AP Calculus, but this is usua
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).
-## Introduction to Programming
+## Intro CS
+
+### Introduction to Programming
If you've never written a for-loop, or don't know what a string is in programming, start here. Choose one of the two course series below. Either one will give you an introduction to programming that assumes no prior knowledge.
@@ -137,7 +141,7 @@ Courses | Duration | Effort | Prerequisites
[Python for Everyone](https://www.coursera.org/specializations/python) | 9 weeks | 58 hours | none
[Fundamentals of Computing](https://www.coursera.org/specializations/computer-fundamentals) | 9 weeks | 138 hours | high school mathematics
-## Introduction to Computer Science
+### Introduction to Computer Science
This course will introduce you to the world of computer science. Students who have been introduced to programming, either from the courses above or through study elsewhere, should take this course for a flavor of the material to come. If you finish the course wanting more, Computer Science is likely for you!
From b073cb6fd7a901b22263fba6c738ac66ccb8a937 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sun, 13 Oct 2019 12:34:14 -0400
Subject: [PATCH 215/519] Remove duration from Intro to Programming Courses.
See https://github.com/ossu/computer-science/issues/613
---
README.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 388f3e7c9..a2e380bc2 100644
--- a/README.md
+++ b/README.md
@@ -136,10 +136,10 @@ _Fundamentals of Computing_ will also start by introducing you to Python. It the
`simple programs`
`simple data structures`
-Courses | Duration | Effort | Prerequisites
-:-- | :--: | :--: | :--:
-[Python for Everyone](https://www.coursera.org/specializations/python) | 9 weeks | 58 hours | none
-[Fundamentals of Computing](https://www.coursera.org/specializations/computer-fundamentals) | 9 weeks | 138 hours | high school mathematics
+Courses | Effort | Prerequisites
+:-- | :--: | :--:
+[Python for Everyone](https://www.coursera.org/specializations/python) | 58 hours | none
+[Fundamentals of Computing](https://www.coursera.org/specializations/computer-fundamentals) | 138 hours | high school mathematics
### Introduction to Computer Science
From 0f40285759cf7a9898e52faca02aaa97fe495bfb Mon Sep 17 00:00:00 2001
From: Antony ekirapa
Date: Mon, 21 Oct 2019 13:58:55 +0300
Subject: [PATCH 216/519] Included 'a' to 'education is scarce resource'
---
FAQ.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/FAQ.md b/FAQ.md
index 247c841ab..305f54783 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -47,7 +47,7 @@ Yes, because we have to draw a line.
As soon as we require paid resources in the main curriculum, we might as well tell people to pay half a million dollars to attend a university.
We are an Internet-based community of learners, not a business, so free is the most sensible price and ensures that the only price you need pay is the price of Internet access.
-At the same time, we recognize that education is scarce resource and therefore requires payment to instructors to make it sustainable in the long term.
+At the same time, we recognize that education is a scarce resource and therefore requires payment to instructors to make it sustainable in the long term.
Therefore, we respect the business model of websites like edX, which make their materials free but with some paid add-ons, like official certificates or extra interaction with course instructors.
So we only require that the *learning materials* of a resource be free to access, not that every possible add-on be free.
@@ -98,4 +98,4 @@ The curriculum assumes two things:
Without these assumptions, the curriculum would be out of control with trying to fill in your knowledge gaps.
But those who for whatever reason didn't get all the way through high school math and physics are in luck: you can find the content you need on [Khan Academy](https://www.khanacademy.org/).
-Of course, if you find that the curriculum is missing a pre-requisite for a course that isn't part of a normal high school curriculum, please let us know!
\ No newline at end of file
+Of course, if you find that the curriculum is missing a pre-requisite for a course that isn't part of a normal high school curriculum, please let us know!
From f5f81226a4e4a8284adb3f591fdbfff2322ded1b Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sat, 25 Jan 2020 22:01:03 +0900
Subject: [PATCH 217/519] Add note deprecating firebase app
---
FAQ.md | 10 ++++++++++
README.md | 1 +
2 files changed, 11 insertions(+)
diff --git a/FAQ.md b/FAQ.md
index 305f54783..32679c963 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -15,6 +15,7 @@ Alternatively, you could [contribute](#CONTRIBUTING.md) an answer yourself.
- [Why do you recommend skipping the second half of CS50?](#why-do-you-recommend-skipping-the-second-half-of-cs50)
- [Why doesn't the curriculum cover/ignore topic X?](#why-doesnt-the-curriculum-coverignore-topic-x)
- [Why is the curriculum missing some pre-requisites?](#why-is-the-curriculum-missing-some-pre-requisites)
+- [Why is the Firebase OSSU app different/broken?](#why-is-the-Firebase-OSSU-app-different-broken)
## Questions
@@ -99,3 +100,12 @@ Without these assumptions, the curriculum would be out of control with trying to
But those who for whatever reason didn't get all the way through high school math and physics are in luck: you can find the content you need on [Khan Academy](https://www.khanacademy.org/).
Of course, if you find that the curriculum is missing a pre-requisite for a course that isn't part of a normal high school curriculum, please let us know!
+
+### Why is the Firebase OSSU app different/broken?
+(#why-is-the-Firebase-OSSU-app-different-broken)
+
+The OSSU curriculum and ecosystem have been collaboratively built by many individuals. The Firebase app was one such contribution. When it was written, it was with the intention of helping future OSSU students.
+
+Unfortunately, the app has not been updated in many years. It does not reflect updates to the curriculum, it contains links to courses that no longer exist, and it has known bugs that prevent students from loggining in.
+
+It is our hope that the creators of the Firebase app can bring the app up to date. Until that time, the firebase app should be considered a deprecated product that is no longer supported.
diff --git a/README.md b/README.md
index a2e380bc2..62118949e 100644
--- a/README.md
+++ b/README.md
@@ -512,6 +512,7 @@ These aren't the only specializations you can choose. Check the following websit
- You can also interact through [GitHub issues](https://github.com/ossu/computer-science/issues).
- We also have a chat room! [](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 [Linkedin](https://www.linkedin.com/school/11272443/) profile!
+- Please note that the firebase app has been deprecated and is not maintained. Read more in the [FAQ](https://github.com/ossu/computer-science/FAQ).
> **PS**: A forum is an ideal way to interact with other students as we do not lose important discussions, which usually occur in communication via chat apps.
**Please use our forum for important discussions**.
From 4e4fc34d344e0ab3556a535e5ef1e77b734c1f44 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sat, 25 Jan 2020 22:11:14 +0900
Subject: [PATCH 218/519] Rearrange community section
Elevate reference to the gitter chat room, as it is a community resource with regular usage. Remove references to the forum as it has not been taken up by users.
Resolves #551
---
README.md | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/README.md b/README.md
index 62118949e..b0a813533 100644
--- a/README.md
+++ b/README.md
@@ -507,15 +507,11 @@ These aren't the only specializations you can choose. Check the following websit
# Community
+- We have a chat room! This should be your first stop to talk with other OSSU students. [](https://gitter.im/open-source-society/computer-science?utm_campaign=pr-badge&utm_content=badge&utm_medium=badge&utm_source=badge)
+- You can also interact through [GitHub issues](https://github.com/ossu/computer-science/issues). If there is a problem with a course, or a change needs to be made to the curriculum, this is the place to start the conversation.
- Subscribe to our [newsletter](https://tinyletter.com/ossu).
-- Use our [forum](https://github.com/ossu/forum) if you need some help.
-- You can also interact through [GitHub issues](https://github.com/ossu/computer-science/issues).
-- We also have a chat room! [](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 [Linkedin](https://www.linkedin.com/school/11272443/) profile!
-- Please note that the firebase app has been deprecated and is not maintained. Read more in the [FAQ](https://github.com/ossu/computer-science/FAQ).
-
-> **PS**: A forum is an ideal way to interact with other students as we do not lose important discussions, which usually occur in communication via chat apps.
-**Please use our forum for important discussions**.
+- There is an unmaintained and deprecated firebase app that you might find when searching OSSU. You can safely ignore it. Read more in the [FAQ](https://github.com/ossu/computer-science/FAQ).
## How to show your progress
From ee20dd1a0a4ac5512972c5ca97aec60b6bc41f81 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sun, 26 Jan 2020 06:40:53 -0500
Subject: [PATCH 219/519] Update FAQ link
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index b0a813533..9bce184ec 100644
--- a/README.md
+++ b/README.md
@@ -511,7 +511,7 @@ These aren't the only specializations you can choose. Check the following websit
- You can also interact through [GitHub issues](https://github.com/ossu/computer-science/issues). If there is a problem with a course, or a change needs to be made to the curriculum, this is the place to start the conversation.
- Subscribe to our [newsletter](https://tinyletter.com/ossu).
- Add **Open Source Society University** to your [Linkedin](https://www.linkedin.com/school/11272443/) profile!
-- There is an unmaintained and deprecated firebase app that you might find when searching OSSU. You can safely ignore it. Read more in the [FAQ](https://github.com/ossu/computer-science/FAQ).
+- There is an unmaintained and deprecated firebase app that you might find when searching OSSU. You can safely ignore it. Read more in the [FAQ](./FAQ.md).
## How to show your progress
From 8de2c0551adf283a2d35fa6c5e2cf4aaa86d0fe9 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sun, 26 Jan 2020 08:28:36 -0500
Subject: [PATCH 220/519] Fix link in FAQ
---
FAQ.md | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/FAQ.md b/FAQ.md
index 32679c963..d0bcedc8b 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -15,7 +15,7 @@ Alternatively, you could [contribute](#CONTRIBUTING.md) an answer yourself.
- [Why do you recommend skipping the second half of CS50?](#why-do-you-recommend-skipping-the-second-half-of-cs50)
- [Why doesn't the curriculum cover/ignore topic X?](#why-doesnt-the-curriculum-coverignore-topic-x)
- [Why is the curriculum missing some pre-requisites?](#why-is-the-curriculum-missing-some-pre-requisites)
-- [Why is the Firebase OSSU app different/broken?](#why-is-the-Firebase-OSSU-app-different-broken)
+- [Why is the Firebase OSSU app different/broken?](#why-is-the-firebase-ossu-app-different-or-broken)
## Questions
@@ -101,8 +101,7 @@ But those who for whatever reason didn't get all the way through high school mat
Of course, if you find that the curriculum is missing a pre-requisite for a course that isn't part of a normal high school curriculum, please let us know!
-### Why is the Firebase OSSU app different/broken?
-(#why-is-the-Firebase-OSSU-app-different-broken)
+### Why is the Firebase OSSU app different or broken?
The OSSU curriculum and ecosystem have been collaboratively built by many individuals. The Firebase app was one such contribution. When it was written, it was with the intention of helping future OSSU students.
From a08d2eedd2ad99381d7aabaac979af354ada3ca6 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sun, 26 Jan 2020 10:44:39 -0500
Subject: [PATCH 221/519] Remove cryptography from Core Applications
Closes #570
Removing, as the course is too in depth on cryptography without teaching other important areas of security.
CS2013 specifies that the undergraduate CS curriculum include the Knowledge Area Information Assurance and Security (IAS). This knowledge area includes an introduction to cryptography. But unless students take an elective course in Cryptography, they need only demonstrate a familiarity with the topic, vocabulary, the use of primes in cryptography and how public keys are used.
As pointed out by @MohamedMandouh, this course is an advanced class offered at Stanford.
Meanwhile, IAS specifies a number of other important topics, which this class does not address.
---
README.md | 4 ----
1 file changed, 4 deletions(-)
diff --git a/README.md b/README.md
index 9bce184ec..bda2010d0 100644
--- a/README.md
+++ b/README.md
@@ -283,9 +283,6 @@ Courses | Duration | Effort | Prerequisites
`unsupervised learning`
`OpenGL`
`raytracing`
-`block ciphers`
-`authentication`
-`public key encryption`
`and more`
Courses | Duration | Effort | Prerequisites
@@ -293,7 +290,6 @@ 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
[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
From 89c1cacac6eef55af232798b66226a3246ed751f Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sun, 26 Jan 2020 16:57:03 -0500
Subject: [PATCH 222/519] Change Robotics recommendation
Resolves #565
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index bda2010d0..0fc28f0eb 100644
--- a/README.md
+++ b/README.md
@@ -410,7 +410,7 @@ So if you don't wish to spend money or use the Capstone as your Final, it may be
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Robotics (Specialization)](https://www.coursera.org/specializations/robotics) | 26 weeks | 2-5 hours/week | linear algebra, calculus, programming, probability
+[Modern Robotics (Specialization)](https://www.coursera.org/specializations/modernrobotics) | 26 weeks | 2-5 hours/week | freshman-level physics, linear algebra, calculus, linear ordinary differential equations
[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
From 28ab3a76cb5cd2c1fda81537ae1318ffb9150da7 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sun, 26 Jan 2020 23:16:15 -0500
Subject: [PATCH 223/519] Add link to lecture for Dist. Sys.
While Reliable Distributed Systems 1 is currently unavailable, the lectures for the course are still up on Youtube.
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 0fc28f0eb..6e5baa5ff 100644
--- a/README.md
+++ b/README.md
@@ -360,8 +360,8 @@ Courses | Duration | Effort | Prerequisites
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[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
+[Reliable Distributed Systems, Part 1](https://www.edx.org/course/reliable-distributed-algorithms-part-1-kthx-id2203-1x) ([alt](https://www.youtube.com/watch?v=bPMOpxFMJUE&list=PLpeTtG9-RpWkQHiB_mAR9aftkuTluFxdX)) | 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) ([alt](https://www.youtube.com/watch?v=jFCQ4hmMcus&list=PLx3mQFFeHPjndmQ0iP9j6C58b90hqGa0X&index=92)) | 5 weeks | 5 hours/week | Part 1
[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) | 10 weeks | 6 hours/week | electricity, magnetism
From aa8d24f651f411b7fcd4db5f8eda8c43f81820b9 Mon Sep 17 00:00:00 2001
From: Angel_Kitty
Date: Wed, 29 Jan 2020 13:37:41 +0800
Subject: [PATCH 224/519] Update License file copyright year
---
LICENSE | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/LICENSE b/LICENSE
index 361102402..0883b2b3f 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
The MIT License (MIT)
-Copyright (c) 2019 Open Source Society University
+Copyright (c) 2020 Open Source Society University
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
From 230693a305567c7018b854defbaa16cd74c3e513 Mon Sep 17 00:00:00 2001
From: Jack Wong
Date: Sun, 13 Oct 2019 23:02:30 +0800
Subject: [PATCH 225/519] add cp book
---
extras/readings.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/extras/readings.md b/extras/readings.md
index 04aa30a30..e245feb8a 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -23,6 +23,7 @@ Name | Author(s)
[The Pragmatic Programmer](https://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X) | Andrew Hunt, David Thomas
[Programming Languages: Application and Interpretation](http://cs.brown.edu/~sk/Publications/Books/ProgLangs/) | Shriram Krishnamurthi
[Programming and Programming Languages](https://papl.cs.brown.edu/2018/) | Shriram Krishnamurthi, Benjamin S. Lerner, Joe Gibbs Politz
+[Competitive Programming](https://cpbook.net/) | Steven Halim, Felix Halim
## Math
From a4d876bb4fdd473ccda0167c25e62e3a5baaa080 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Wed, 29 Jan 2020 03:00:30 -0500
Subject: [PATCH 226/519] Update course time estimate
See conversation here:
https://github.com/ossu/computer-science/pull/578/
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 6e5baa5ff..6af7fd114 100644
--- a/README.md
+++ b/README.md
@@ -399,7 +399,7 @@ Courses | Duration | Effort | Prerequisites
[Automata Theory](https://lagunita.stanford.edu/courses/course-v1:ComputerScience+Automata+SelfPaced/about) | 7 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
+[Game Theory](https://www.coursera.org/learn/game-theory-1) | 8 weeks | 3 hours/week | mathematical thinking, probability, calculus
### Advanced applications
From 9eff731dc22dcc7f5a53bfe528384ba8760da2e2 Mon Sep 17 00:00:00 2001
From: matt
Date: Sat, 1 Feb 2020 11:07:47 -0500
Subject: [PATCH 227/519] Added alt link for coursera Python for everyone _ new
to course and my first commit
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 6af7fd114..cd220b703 100644
--- a/README.md
+++ b/README.md
@@ -138,7 +138,7 @@ _Fundamentals of Computing_ will also start by introducing you to Python. It the
Courses | Effort | Prerequisites
:-- | :--: | :--:
-[Python for Everyone](https://www.coursera.org/specializations/python) | 58 hours | none
+[Python for Everyone](https://www.coursera.org/specializations/python) ([alt](https://www.py4e.com/)) | 58 hours | none
[Fundamentals of Computing](https://www.coursera.org/specializations/computer-fundamentals) | 138 hours | high school mathematics
### Introduction to Computer Science
From efc618c6e059c873f916a4983b128a35a123b03a Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Tue, 11 Feb 2020 16:45:21 -0500
Subject: [PATCH 228/519] Replace Networking with Lectures from the course
Stanford Lagunita is no longer accepting new registrations. Replacing the course with just the lectures from the course. Note that there are already 4 programming assignments pulled from other resources that students are expected to complete.
See: https://github.com/ossu/computer-science/issues/645
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index cd220b703..1cc2d3af7 100644
--- a/README.md
+++ b/README.md
@@ -244,7 +244,7 @@ Courses | Duration | Effort | Additional Text / Assignments| 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 | After the sections on C, skip to the next course. [Why?](FAQ.md#why-do-you-recommend-skipping-the-second-half-of-cs50) | introductory programming
[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 | - | C-like programming language
[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | - | one of [these programming languages](https://user-images.githubusercontent.com/2046800/35426340-f6ce6358-026a-11e8-8bbb-4e95ac36b1d7.png), From Nand to Tetris Part I
-[Introduction to Computer Networking](https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about)| 8 weeks | 4–12 hours/week | [Assignment 1](https://github.com/PrincetonUniversity/COS461-Public/tree/master/assignments/assignment1)
[Assignment 2](https://www.scs.stanford.edu/10au-cs144/lab/reliable/reliable.html)
[Assignment 3](https://nptel.ac.in/content/storage2/courses/106105080/pdf/M2L7.pdf)
[Assignment 4](http://www-net.cs.umass.edu/wireshark-labs/Wireshark_TCP_v7.0.pdf) | algebra, probability, basic CS
+[Introduction to Computer Networking](https://www.youtube.com/playlist?list=PLEAYkSg4uSQ2dr0XO_Nwa5OcdEcaaELSG)| 8 weeks | 4–12 hours/week | [Assignment 1](https://github.com/PrincetonUniversity/COS461-Public/tree/master/assignments/assignment1)
[Assignment 2](https://www.scs.stanford.edu/10au-cs144/lab/reliable/reliable.html)
[Assignment 3](https://nptel.ac.in/content/storage2/courses/106105080/pdf/M2L7.pdf)
[Assignment 4](http://www-net.cs.umass.edu/wireshark-labs/Wireshark_TCP_v7.0.pdf) | algebra, probability, basic CS
[ops-class.org - Hack the Kernel](https://www.ops-class.org/) | 15 weeks | 6 hours/week | Replace course textbook with [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/) | algorithms
### Core theory
From a62fc346b60a43c404c47ef2fab5554ebb7fa2e0 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Tue, 11 Feb 2020 16:56:14 -0500
Subject: [PATCH 229/519] Compilers - available material
Stanford Lagunita is closing. Replacing with material from the same professor.
https://github.com/ossu/computer-science/issues/645
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 1cc2d3af7..ee2a7c920 100644
--- a/README.md
+++ b/README.md
@@ -318,7 +318,7 @@ If not, or if a student chooses not to take the Capstone, then a separate Final
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Compilers](https://lagunita.stanford.edu/courses/Engineering/Compilers/Fall2014/about)| 9 weeks | 6-8 hours/week | none
+[Compilers](https://web.stanford.edu/class/cs143/index2018.html) ([lectures](https://www.youtube.com/playlist?list=PLDcmCgguL9rxPoVn2ykUFc8TOpLyDU5gx))| 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
[Software Testing](https://www.udacity.com/course/software-testing--cs258) | 4 weeks | 6 hours/week | Python, programming experience
[LAFF - On Programming for Correctness](https://www.edx.org/course/laff-on-programming-for-correctness) | 7 weeks | 6 hours/week | linear algebra
From 318470e75c32e832c340755549b3f4255890bca1 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Tue, 11 Feb 2020 17:01:45 -0500
Subject: [PATCH 230/519] Replace Algorithms
Stanford Lagunita is no longer available. Recommending the same course on the Coursera platform.
https://github.com/ossu/computer-science/issues/645
---
README.md | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index ee2a7c920..76acb393b 100644
--- a/README.md
+++ b/README.md
@@ -262,10 +262,9 @@ Courses | Duration | Effort | Additional Text / Assignments| Prerequisites
`NP-completeness`
`and more`
-Courses | Duration | Effort | Prerequisites
+Courses | Duration | Prerequisites
:-- | :--: | :--: | :--:
-[Algorithms: Design and Analysis, Part I](https://lagunita.stanford.edu/courses/course-v1:Engineering+Algorithms1+SelfPaced/about) | 8 weeks | 4-8 hours/week | any programming language, Mathematics for Computer Science
-[Algorithms: Design and Analysis, Part II](https://lagunita.stanford.edu/courses/course-v1:Engineering+Algorithms2+SelfPaced/about) | 8 weeks | 4-8 hours/week | Part I
+[Algorithms](https://www.coursera.org/specializations/algorithms) | 80 hours | any programming language, Mathematics for Computer Science
### Core applications
From e8e7b8f28c7448a3c6339b6ff21512552d92a737 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Tue, 11 Feb 2020 17:09:55 -0500
Subject: [PATCH 231/519] Update courses.md
---
extras/courses.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/extras/courses.md b/extras/courses.md
index 4b8e58252..6fd32cdf2 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -78,6 +78,7 @@ Courses | Duration | Effort
Courses | Duration | Effort
:-- | :--: | :--:
[How to Use Git and GitHub](https://www.udacity.com/course/how-to-use-git-and-github--ud775) | 3 weeks | 2-3 hours/week
+[Kubernetes Certified Application Developer](https://www.udemy.com/course/certified-kubernetes-application-developer/) | 5 weeks | 2 hours/week
# Online Learning - Great Courses
From 16d46b43c7b811795ce16005c449f9254851553e Mon Sep 17 00:00:00 2001
From: "saif.sohomow"
Date: Wed, 19 Feb 2020 13:49:13 +0400
Subject: [PATCH 232/519] Removes extra column in table core theory
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 76acb393b..75b493d49 100644
--- a/README.md
+++ b/README.md
@@ -263,7 +263,7 @@ Courses | Duration | Effort | Additional Text / Assignments| Prerequisites
`and more`
Courses | Duration | Prerequisites
-:-- | :--: | :--: | :--:
+:-- | :--: | :--:
[Algorithms](https://www.coursera.org/specializations/algorithms) | 80 hours | any programming language, Mathematics for Computer Science
From df1380ce446dc6a64c26692ef82d5b2132b82c81 Mon Sep 17 00:00:00 2001
From: Josh Taylor <35666594+xxylem@users.noreply.github.com>
Date: Fri, 28 Feb 2020 20:33:44 +0000
Subject: [PATCH 233/519] Add Gitter link to Getting help in Summary section
Rationale: A new student probably does not know what Git, GitHub or Gitter are, so explaining what it is and putting it near the top of the page will help guide people to the Gitter more easily.
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 75b493d49..ff3c360a8 100644
--- a/README.md
+++ b/README.md
@@ -85,7 +85,7 @@ just remember that you can't purchase success!
**How to contribute**. Please see [CONTRIBUTING](CONTRIBUTING.md).
-**Getting help**. Please check our [Frequently Asked Questions](FAQ.md), and if you cannot find the answer, file an issue or talk to our [friendly community](#community)!
+**Getting help**. Please check our [Frequently Asked Questions](FAQ.md), and if you cannot find the answer, file an issue or talk to our [friendly community](#community)! In particular, join in the conversation on our [Gitter](https://gitter.im/open-source-society/computer-science) (which is an online chat service, similar to Discord or IRC) where you can chat with other students and get help. [](https://gitter.im/open-source-society/computer-science?utm_campaign=pr-badge&utm_content=badge&utm_medium=badge&utm_source=badge)
# Curriculum
From df581e55a7893f535dafa90768e98e012ae55172 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Wed, 4 Mar 2020 01:03:18 -0700
Subject: [PATCH 234/519] Align math curriculum with CS2013
See: https://github.com/ossu/computer-science/issues/637
---
README.md | 63 ++++++++++++++++++++++-------------------------
extras/courses.md | 1 +
2 files changed, 30 insertions(+), 34 deletions(-)
diff --git a/README.md b/README.md
index ff3c360a8..e143eeb02 100644
--- a/README.md
+++ b/README.md
@@ -190,32 +190,43 @@ Courses | Duration | Effort | Prerequisites
- **Note**: probably the best resource to learn Haskell: [Haskell Programming from First Principles](http://haskellbook.com/) `paid`
- **Required**, to learn about logic programming, backtracking, unification: [Learn Prolog Now!](http://lpn.swi-prolog.org/lpnpage.php?pageid=top)
-### Core math
-
-**Topics covered**:
-`linear transformations`
-`matrices`
-`vectors`
-`mathematical proofs`
-`number theory`
-`differential calculus`
-`integral calculus`
-`sequences and series`
-`discrete mathematics`
-`basic statistics`
-`O-notation`
-`graph theory`
-`vector calculus`
-`discrete probability`
-`and more`
+### Math Electives
+**Students must choose one of the following topics**: calculus, linear algebra, logic, or probability.
+#### Linear Algebra
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | pre-calculus
[Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-to-frontiers-0) ([alt](http://ulaff.net/)) | 15 weeks | 8 hours/week | Essence of Linear Algebra
+
+#### Calculus
+Courses | Duration | Effort | Prerequisites
+:-- | :--: | :--: | :--:
[Calculus 1A: Differentiation](https://www.edx.org/course/calculus-1a-differentiation) | 13 weeks | 6-10 hours/week | pre-calculus
[Calculus 1B: Integration](https://www.edx.org/course/calculus-1b-integration) | 13 weeks | 5-10 hours/week | Calculus 1A
[Calculus 1C: Coordinate Systems & Infinite Series](https://www.edx.org/course/calculus-1c-coordinate-systems-infinite-series) | 13 weeks | 5-10 hours/week | Calculus 1B
+
+#### Logic
+Courses | Duration | Effort | Prerequisites
+:-- | :--: | :--: | :--:
+[Introduction to Logic](https://www.coursera.org/learn/logic-introduction) | 10 weeks | 4-8 hours/week | set theory
+
+#### Probability
+Courses | Duration | Effort | Prerequisites
+:-- | :--: | :--: | :--:
+[Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-2) | 18 weeks | 12 hours/week | Multivariable Calculus
+
+### Math Core
+In addition to their math elective, students must complete the following course on discrete mathematics.
+
+**Topics covered**:
+`discrete mathematics`
+`mathematical proofs`
+`basic statistics`
+`O-notation`
+`discrete probability`
+`and more`
+
[Mathematics for Computer Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-spring-2015/index.htm)**1** | 13 weeks | 5 hours/week | Calculus 1C
**1**: Students struggling with MIT Math for CS can consider taking the [Discrete Mathematics Specialization](https://www.coursera.org/specializations/discrete-mathematics) first.
@@ -324,21 +335,6 @@ Courses | Duration | Effort | Prerequisites
[Introduction to Parallel Programming](https://classroom.udacity.com/courses/cs344) ([alt](https://www.youtube.com/playlist?list=PLGvfHSgImk4aweyWlhBXNF6XISY3um82_)) | 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**:
-`parametric equations`
-`polar coordinate systems`
-`multivariable integrals`
-`multivariable differentials`
-`probability theory`
-`and more`
-
-Courses | Duration | Effort | Prerequisites
-:-- | :--: | :--: | :--:
-[Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/index.htm) | 13 weeks | 12 hours/week | MIT Calculus 1C
-[Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-2) | 18 weeks | 12 hours/week | Multivariable Calculus
-
### Advanced systems
**Topics covered**:
@@ -394,7 +390,6 @@ If you are struggling, you can find a physics MOOC or utilize the materials from
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+SelfPaced/about) | 7 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
diff --git a/extras/courses.md b/extras/courses.md
index 6fd32cdf2..78e1233c3 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -33,6 +33,7 @@ Courses | Duration | Effort
[Introduction to Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 hours/week
[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) | - | -
+[Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/index.htm) | 13 weeks | 12 hours/week
## Systems
From 2354e9eec4c581de0b50c5ef3538ea0f35f93f4d Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Wed, 4 Mar 2020 01:53:21 -0700
Subject: [PATCH 235/519] Remove defunct courses
See: https://github.com/ossu/computer-science/issues/640
---
README.md | 4 +---
extras/courses.md | 1 +
2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index e143eeb02..6dd117003 100644
--- a/README.md
+++ b/README.md
@@ -328,11 +328,11 @@ If not, or if a student chooses not to take the Capstone, then a separate Final
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
+[Introduction to Parallel Programming](https://classroom.udacity.com/courses/cs344) ([alt](https://www.youtube.com/playlist?list=PLGvfHSgImk4aweyWlhBXNF6XISY3um82_)) | 12 weeks | - | C, algorithms
[Compilers](https://web.stanford.edu/class/cs143/index2018.html) ([lectures](https://www.youtube.com/playlist?list=PLDcmCgguL9rxPoVn2ykUFc8TOpLyDU5gx))| 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
[Software Testing](https://www.udacity.com/course/software-testing--cs258) | 4 weeks | 6 hours/week | Python, programming experience
[LAFF - On Programming for Correctness](https://www.edx.org/course/laff-on-programming-for-correctness) | 7 weeks | 6 hours/week | linear algebra
-[Introduction to Parallel Programming](https://classroom.udacity.com/courses/cs344) ([alt](https://www.youtube.com/playlist?list=PLGvfHSgImk4aweyWlhBXNF6XISY3um82_)) | 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 systems
@@ -355,8 +355,6 @@ Courses | Duration | Effort | Prerequisites
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Reliable Distributed Systems, Part 1](https://www.edx.org/course/reliable-distributed-algorithms-part-1-kthx-id2203-1x) ([alt](https://www.youtube.com/watch?v=bPMOpxFMJUE&list=PLpeTtG9-RpWkQHiB_mAR9aftkuTluFxdX)) | 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) ([alt](https://www.youtube.com/watch?v=jFCQ4hmMcus&list=PLx3mQFFeHPjndmQ0iP9j6C58b90hqGa0X&index=92)) | 5 weeks | 5 hours/week | Part 1
[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) | 10 weeks | 6 hours/week | electricity, magnetism
diff --git a/extras/courses.md b/extras/courses.md
index 78e1233c3..3ab1ba263 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -39,6 +39,7 @@ Courses | Duration | Effort
Courses | Duration | Effort
:-- | :--: | :--:
+[Cloud Computing / Distributed Programming](https://www.coursera.org/learn/cloud-computing) | 5 weeks | 5-10 hours/week
[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
From 47d156244903adc974f33f7c14694e3deac3d840 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Wed, 4 Mar 2020 02:17:48 -0700
Subject: [PATCH 236/519] Replace disappearing course
See: https://github.com/ossu/computer-science/issues/645
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 6dd117003..1f4d78c20 100644
--- a/README.md
+++ b/README.md
@@ -388,7 +388,7 @@ If you are struggling, you can find a physics MOOC or utilize the materials from
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Automata Theory](https://lagunita.stanford.edu/courses/course-v1:ComputerScience+Automata+SelfPaced/about) | 7 weeks | 10 hours/week | discrete mathematics, logic, algorithms
+[Theory of Computation](http://aduni.org/courses/theory/index.php?view=cw) ([Lectures](https://www.youtube.com/playlist?list=PLTke5lHMAdSNmi57H0DOTzClHPK6UwSTN)) | 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 | 3 hours/week | mathematical thinking, probability, calculus
From 788f363ca0d013b36d6f7c462c31a2eae236421f Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Wed, 4 Mar 2020 03:04:40 -0700
Subject: [PATCH 237/519] Replace course that is no longer offered.
See: https://github.com/ossu/computer-science/issues/645
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 1f4d78c20..71947fd78 100644
--- a/README.md
+++ b/README.md
@@ -297,7 +297,7 @@ Courses | Duration | Prerequisites
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Databases](https://lagunita.stanford.edu/courses/DB/2014/SelfPaced/about)| 12 weeks | 8-12 hours/week | some programming, basic CS
+[Relational Databases Systems](https://www.coursera.org/learn/relational-database)| 6 weeks | 3 hours/week | -
[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
[Software Engineering: Introduction](https://www.edx.org/course/software-engineering-introduction-ubcx-softeng1x) | 6 weeks | 8-10 hours/week | Software Construction - Object-Oriented Design
From e475addf995540ff8eaf5d5bff41ba29c94dcc17 Mon Sep 17 00:00:00 2001
From: Alaharon123 <34926441+Alaharon123@users.noreply.github.com>
Date: Wed, 4 Mar 2020 15:06:43 -0500
Subject: [PATCH 238/519] Update to latest ABET guidelines
---
extras/curriculum_guidelines.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/extras/curriculum_guidelines.md b/extras/curriculum_guidelines.md
index 80f97f511..96ac99ef2 100644
--- a/extras/curriculum_guidelines.md
+++ b/extras/curriculum_guidelines.md
@@ -4,7 +4,7 @@
ABET, incorporated as the Accreditation Board for Engineering and Technology, Inc., is a non-governmental organization that accredits post-secondary education programs in applied and natural science, computing, engineering and engineering technology. As of October 2017, 3,852 programs are accredited, distributed over 776 universities and colleges in 31 countries. ABET is the recognized U.S. accreditor of college and university programs in applied and natural science, computing, engineering and engineering technology.
-[Program Criteria for Computer Science, Information Systems, and Information Technology Programs](http://www.abet.org/accreditation/accreditation-criteria/criteria-for-accrediting-computing-programs-2018-2019/#2)
+[Program Criteria for Computer Science, Information Systems, and Information Technology Programs](http://www.abet.org/accreditation/accreditation-criteria/criteria-for-accrediting-computing-programs-2019-2020/#2)
## The Association for Computing Machinery
From e24e97acdaf6bf3f33e951fb36f374cddc79f9c0 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Wed, 4 Mar 2020 19:10:00 -0700
Subject: [PATCH 239/519] Fixup math
Swap course order, readd header for core math info.
---
README.md | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
index 71947fd78..a1f2ef0cc 100644
--- a/README.md
+++ b/README.md
@@ -193,12 +193,6 @@ Courses | Duration | Effort | Prerequisites
### Math Electives
**Students must choose one of the following topics**: calculus, linear algebra, logic, or probability.
-#### Linear Algebra
-Courses | Duration | Effort | Prerequisites
-:-- | :--: | :--: | :--:
-[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | pre-calculus
-[Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-to-frontiers-0) ([alt](http://ulaff.net/)) | 15 weeks | 8 hours/week | Essence of Linear Algebra
-
#### Calculus
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
@@ -206,6 +200,12 @@ Courses | Duration | Effort | Prerequisites
[Calculus 1B: Integration](https://www.edx.org/course/calculus-1b-integration) | 13 weeks | 5-10 hours/week | Calculus 1A
[Calculus 1C: Coordinate Systems & Infinite Series](https://www.edx.org/course/calculus-1c-coordinate-systems-infinite-series) | 13 weeks | 5-10 hours/week | Calculus 1B
+#### Linear Algebra
+Courses | Duration | Effort | Prerequisites
+:-- | :--: | :--: | :--:
+[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | pre-calculus
+[Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-to-frontiers-0) ([alt](http://ulaff.net/)) | 15 weeks | 8 hours/week | Essence of Linear Algebra
+
#### Logic
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
@@ -227,6 +227,8 @@ In addition to their math elective, students must complete the following course
`discrete probability`
`and more`
+Courses | Duration | Effort | Prerequisites
+:-- | :--: | :--: | :--:
[Mathematics for Computer Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-spring-2015/index.htm)**1** | 13 weeks | 5 hours/week | Calculus 1C
**1**: Students struggling with MIT Math for CS can consider taking the [Discrete Mathematics Specialization](https://www.coursera.org/specializations/discrete-mathematics) first.
From db2aab4d4f903b8cd085ed8efee5b936a199725b Mon Sep 17 00:00:00 2001
From: dhajn <47918235+dhajn@users.noreply.github.com>
Date: Thu, 5 Mar 2020 13:15:10 +0100
Subject: [PATCH 240/519] Update link to Stanford Compilers
The 2018 course doesn't seem to be accessible anymore. The course is launching on edX on 16 March - I updated the link to the edX version and marked the youtube lectures as alternative.
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index a1f2ef0cc..5b688f140 100644
--- a/README.md
+++ b/README.md
@@ -331,7 +331,7 @@ If not, or if a student chooses not to take the Capstone, then a separate Final
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[Introduction to Parallel Programming](https://classroom.udacity.com/courses/cs344) ([alt](https://www.youtube.com/playlist?list=PLGvfHSgImk4aweyWlhBXNF6XISY3um82_)) | 12 weeks | - | C, algorithms
-[Compilers](https://web.stanford.edu/class/cs143/index2018.html) ([lectures](https://www.youtube.com/playlist?list=PLDcmCgguL9rxPoVn2ykUFc8TOpLyDU5gx))| 9 weeks | 6-8 hours/week | none
+[Compilers](https://www.edx.org/course/compilers) ([alt](https://www.youtube.com/playlist?list=PLDcmCgguL9rxPoVn2ykUFc8TOpLyDU5gx))| 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
[Software Testing](https://www.udacity.com/course/software-testing--cs258) | 4 weeks | 6 hours/week | Python, programming experience
[LAFF - On Programming for Correctness](https://www.edx.org/course/laff-on-programming-for-correctness) | 7 weeks | 6 hours/week | linear algebra
From b6d50b14f0b692e2dbf63040ca095947c903d436 Mon Sep 17 00:00:00 2001
From: "saif.sohomow"
Date: Fri, 6 Mar 2020 12:06:47 +0400
Subject: [PATCH 241/519] Algorithms Specialization - Breaks down
specialization into individual courses See:
https://github.com/ossu/computer-science/issues/645#issuecomment-588705984
---
README.md | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 5b688f140..fac963315 100644
--- a/README.md
+++ b/README.md
@@ -275,9 +275,12 @@ Courses | Duration | Effort | Additional Text / Assignments| Prerequisites
`NP-completeness`
`and more`
-Courses | Duration | Prerequisites
-:-- | :--: | :--:
-[Algorithms](https://www.coursera.org/specializations/algorithms) | 80 hours | any programming language, Mathematics for Computer Science
+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 | any programming language, Mathematics for Computer Science
+[Graph Search, Shortest Paths, and Data Structures](https://www.coursera.org/learn/algorithms-graphs-data-structures) | 4 weeks | 4-8 hours/week | Divide and Conquer, Sorting and Searching, and Randomized Algorithms
+[Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming](https://www.coursera.org/learn/algorithms-greedy) | 4 weeks | 4-8 hours/week | Graph Search, Shortest Paths, and Data Structures
+[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 | Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming
### Core applications
From 02bdf891e6c3ac2d916d55179a7ce3b3301c008b Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Wed, 11 Mar 2020 02:03:04 -0400
Subject: [PATCH 242/519] Remove link to Patreon
This fundraising campaign was closed at the end of 2017. https://gitter.im/open-source-society/computer-science?at=5a354e4a232e79134d596781
---
README.md | 3 ---
1 file changed, 3 deletions(-)
diff --git a/README.md b/README.md
index fac963315..ec8f08e53 100644
--- a/README.md
+++ b/README.md
@@ -11,9 +11,6 @@
-
-
-
# Contents
From 2deca7ef2ba59d4b07e32b8637bbe67b2cca72ec Mon Sep 17 00:00:00 2001
From: Alaharon123 <34926441+Alaharon123@users.noreply.github.com>
Date: Sun, 15 Mar 2020 17:15:48 -0400
Subject: [PATCH 243/519] Add Computer Architecture/Organization courses
Prerequisite for both is CS1-2. Either course (Berkeley and Carnegie Mellon) is suitable as an alternative to nand2tetris and/or 6.004 as the required course of choice for Computer Architecture/Organization. The Princeton course that's already here would have one of these 4 courses as a prerequisite and is suitable as an elective.
---
extras/courses.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/extras/courses.md b/extras/courses.md
index 3ab1ba263..27a4f3d5d 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -40,6 +40,8 @@ Courses | Duration | Effort
Courses | Duration | Effort
:-- | :--: | :--:
[Cloud Computing / Distributed Programming](https://www.coursera.org/learn/cloud-computing) | 5 weeks | 5-10 hours/week
+[Intro to Computer Systems](http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15213-f15/www/) ([Labs](http://csapp.cs.cmu.edu/3e/labs.html)) | 15 weeks | 12 hours/week
+[Great Ideas in Computer Architecture (Machine Structures)](https://inst.eecs.berkeley.edu/~cs61c/fa14/) ([Lectures](https://archive.org/details/ucberkeley_webcast_itunesu_915550404)) | 15 weeks | 12 hours/week
[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
From 4a5d5302776a1faa971b93771da560ab8fc5c04b Mon Sep 17 00:00:00 2001
From: riceeatingmachine <50071043+riceeatingmachine@users.noreply.github.com>
Date: Thu, 19 Mar 2020 01:47:55 +0530
Subject: [PATCH 244/519] Update README.md
---
README.md | 2 --
1 file changed, 2 deletions(-)
diff --git a/README.md b/README.md
index ec8f08e53..ab43f0893 100644
--- a/README.md
+++ b/README.md
@@ -176,8 +176,6 @@ Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[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 6f97c7b9d7afe01ae66691e82988324f4c543a23 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Thu, 19 Mar 2020 05:01:43 -0400
Subject: [PATCH 245/519] Add addition direction for Math for CS
Point students to Math for CS version with solutions to problem sets.
---
README.md | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
index ab43f0893..c9175de57 100644
--- a/README.md
+++ b/README.md
@@ -222,12 +222,9 @@ In addition to their math elective, students must complete the following course
`discrete probability`
`and more`
-Courses | Duration | Effort | Prerequisites
-:-- | :--: | :--: | :--:
-[Mathematics for Computer Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-spring-2015/index.htm)**1** | 13 weeks | 5 hours/week | Calculus 1C
-
-**1**: Students struggling with MIT Math for CS can consider taking the [Discrete Mathematics Specialization](https://www.coursera.org/specializations/discrete-mathematics) first.
-It is more interactive but less comprehensive, and it costs money to unlock full interactivity.
+Courses | Duration | Effort | Notes | Prerequisites
+:-- | :--: | :--: | :--: | :--:
+[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 | An alternate version with solutions to the problem sets is [here](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2005/assignments/). Students struggling can consider the [Discrete Mathematics Specialization](https://www.coursera.org/specializations/discrete-mathematics) first. It is more interactive but less comprehensive, and costs money to unlock full interactivity. | Calculus 1C
### Core systems
From 02975f49c2ad768d2d4f71d95178f46f96842f67 Mon Sep 17 00:00:00 2001
From: Josh Bodah
Date: Fri, 20 Mar 2020 14:35:14 +0000
Subject: [PATCH 246/519] Fix README ToC link
The ToC link was broken; this fixes it
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index c9175de57..84a478b93 100644
--- a/README.md
+++ b/README.md
@@ -211,7 +211,7 @@ Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-2) | 18 weeks | 12 hours/week | Multivariable Calculus
-### Math Core
+### Core Math
In addition to their math elective, students must complete the following course on discrete mathematics.
**Topics covered**:
From fec43039d1ff8dc58c7a8b49448a19a55e4552e9 Mon Sep 17 00:00:00 2001
From: Aaron Hooper
Date: Fri, 20 Mar 2020 00:03:35 +0000
Subject: [PATCH 247/519] Databases -> Database
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 84a478b93..25729a36d 100644
--- a/README.md
+++ b/README.md
@@ -294,7 +294,7 @@ Courses | Duration | Effort | Prerequisites
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Relational Databases Systems](https://www.coursera.org/learn/relational-database)| 6 weeks | 3 hours/week | -
+[Relational Database Systems](https://www.coursera.org/learn/relational-database)| 6 weeks | 3 hours/week | -
[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
[Software Engineering: Introduction](https://www.edx.org/course/software-engineering-introduction-ubcx-softeng1x) | 6 weeks | 8-10 hours/week | Software Construction - Object-Oriented Design
From 879147a5671aeca5b92327dac830e5b5d91160f2 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Tue, 24 Mar 2020 19:15:06 -0500
Subject: [PATCH 248/519] Update link
Link Firebase section directly to FAQ question/answer.
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 25729a36d..4c4a602ca 100644
--- a/README.md
+++ b/README.md
@@ -496,7 +496,7 @@ These aren't the only specializations you can choose. Check the following websit
- You can also interact through [GitHub issues](https://github.com/ossu/computer-science/issues). If there is a problem with a course, or a change needs to be made to the curriculum, this is the place to start the conversation.
- Subscribe to our [newsletter](https://tinyletter.com/ossu).
- Add **Open Source Society University** to your [Linkedin](https://www.linkedin.com/school/11272443/) profile!
-- There is an unmaintained and deprecated firebase app that you might find when searching OSSU. You can safely ignore it. Read more in the [FAQ](./FAQ.md).
+- There is an unmaintained and deprecated firebase app that you might find when searching OSSU. You can safely ignore it. Read more in the [FAQ](./FAQ.md#why-is-the-firebase-ossu-app-different-or-broken).
## How to show your progress
From bc0c5a1b3e3a57815b358cd92dcf07f102a84fa6 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Tue, 24 Mar 2020 19:21:02 -0700
Subject: [PATCH 249/519] Update OOP Java Courses
Removes Bombay IIT course which has few reviews, which are middling. https://www.classcentral.com/course/edx-object-oriented-programming-1651
Updates mooc.fi address.
---
extras/courses.md | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/extras/courses.md b/extras/courses.md
index 27a4f3d5d..44f557e3f 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -17,9 +17,7 @@ Courses | Duration | Effort
[Computing In Python, Part III: Data Structures](https://www.edx.org/course/computing-in-python-iii-data-structures-0) | 5 weeks | 10 hours/week
[Computing In Python, Part IV: Objects & Algorithms](https://www.edx.org/course/computing-in-python-iv-objects-algorithms-0) | 5 weeks | 10 hours/week
[Programming Basics](https://www.edx.org/course/programming-basics-iitbombayx-cs101-1x)| 9 weeks | 8 hours/week
-[Object-Oriented Programming](https://www.edx.org/course/object-oriented-programming-iitbombayx-cs101-2x)| 4 weeks | 8 hours/week
-[Object-Oriented Programming with Java (Part 1)](http://mooc.fi/courses/2013/programming-part-1/)| 6 weeks | -
-[Object-Oriented Programming with Java (Part 2)](http://mooc.fi/courses/2013/programming-part-2/)| 6 weeks | -
+[Object-Oriented Programming with Java](https://java-programming.mooc.fi/)| 14 weeks | 10 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/) | - | -
From 5228d468599567a3e1317c46c0ad41851238eb81 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Tue, 24 Mar 2020 21:24:21 -0700
Subject: [PATCH 250/519] Update Contributing.md to focus on contributing
This section had information on contributing as well as how to get help. Separating these.
---
CONTRIBUTING.md | 32 ++++++++++++++------------------
1 file changed, 14 insertions(+), 18 deletions(-)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 0951c491a..958f5eeda 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,18 +1,14 @@
-# Contributor guidelines
-
-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.
-
-# Learning Git
-
-To be able to create high-quality pull requests, it is recommended that you learn how to use the Git version control system.
-One of the best primers on the subject is a free ebook called [Ry's Git Tutorial](https://www.amazon.com/dp/B00QFIA5OC/).
-If you prefer a course-style introduction, try [Introduction to Git and GitHub](https://www.udacity.com/course/how-to-use-git-and-github--ud775).
+# Changing the curriculum
+OSSU thrives because of the changes made by our many contributors. Read on for details on how to help every student that follows you.
+## Non-substantive changes
+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://www.freecodecamp.org/news/how-to-make-your-first-pull-request-on-github-3/) to fix any mistakes that you have found.
+## Substantive changes
+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/). While it is acceptable to point out problems, all successful changes naturally require a plan for fixing the problem.
+OSSU’s curricular guidelines are [here](https://github.com/ossu/computer-science/blob/master/extras/curriculum_guidelines.md). Successful critiques of the curriculum will point out ways that OSSU is failing to uphold these guidelines. Examples are:
+OSSU lists a course as required when the course topics are elective in the curricular guide.
+OSSU does not having a course to cover required topics from the curricular guide.
+OSSU lists multiple courses that cover the same topics when fewer courses could suffice.
+OSSU recommends a course to teach a topic, but there exists a higher quality course that covers the same material.
+Issues require more than just users to suggest them. Issues require active community members to read and respond to proposals. Even adding simple [emoji reactions](https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/) can help the community.
+# Personal Customization
+If you want to customize the curriculum for yourself, you are encouraged to [fork this project](https://help.github.com/articles/fork-a-repo/)!
From 09e3160a19185aebbee49042ace990ab6c304d41 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Wed, 25 Mar 2020 01:30:49 -0700
Subject: [PATCH 251/519] Add course for language question to FAQ
---
FAQ.md | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/FAQ.md b/FAQ.md
index d0bcedc8b..89dc42c36 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -16,6 +16,7 @@ Alternatively, you could [contribute](#CONTRIBUTING.md) an answer yourself.
- [Why doesn't the curriculum cover/ignore topic X?](#why-doesnt-the-curriculum-coverignore-topic-x)
- [Why is the curriculum missing some pre-requisites?](#why-is-the-curriculum-missing-some-pre-requisites)
- [Why is the Firebase OSSU app different/broken?](#why-is-the-firebase-ossu-app-different-or-broken)
+- [What is a good course to learn the language XXXX?](#what-is-a-good-course-to-learn-this-particular-language)
## Questions
@@ -108,3 +109,8 @@ The OSSU curriculum and ecosystem have been collaboratively built by many indivi
Unfortunately, the app has not been updated in many years. It does not reflect updates to the curriculum, it contains links to courses that no longer exist, and it has known bugs that prevent students from loggining in.
It is our hope that the creators of the Firebase app can bring the app up to date. Until that time, the firebase app should be considered a deprecated product that is no longer supported.
+
+### What is a good course to learn this particular language?
+OSSU focuses on finding the best courses to learn computer science topics, and isn’t focused on finding language specific courses. If you are looking to learn a particular language or framework there are two great resources to check.
+1. [Hackr.io](https://hackr.io/) allows users to submit and upvote learning resources for topics such as Python or the Java Spring Framework.
+2. Most languages have a community on reddit. When you find the community’s page, check to see if there is a wiki or sidebar with resources. For example, see [/r/python](https://old.reddit.com/r/Python). Note that the sidebar content can be different depending on whether you use www.reddit.com or old.reddit.com.
From 8b3fe645e1fe97f0dd0bb5e0a710b6fd88ae3eab Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Wed, 25 Mar 2020 01:36:05 -0700
Subject: [PATCH 252/519] Create section for students needing help
---
HELP.md | 9 +++++++++
README.md | 4 ++--
2 files changed, 11 insertions(+), 2 deletions(-)
create mode 100644 HELP.md
diff --git a/HELP.md b/HELP.md
new file mode 100644
index 000000000..ddf09a8b4
--- /dev/null
+++ b/HELP.md
@@ -0,0 +1,9 @@
+# Getting help
+## Check the FAQ!
+Please check our [Frequently Asked Questions](https://github.com/ossu/computer-science/blob/master/FAQ.md) to see if your question has been addressed.
+## Ask in the chat room
+OSSU uses Gitter for conversations. [Gitter](https://gitter.im/open-source-society/computer-science) is an online chat service, similar to Discord or IRC where you can chat with other students and get help. [](https://gitter.im/open-source-society/computer-science?utm_campaign=pr-badge&utm_content=badge&utm_medium=badge&utm_source=badge)
+### Specific problems
+If you need help successfully completing the content of a course or are having general technical difficulties, first reach out to the resources provided by the course (e.g. the course forum on Coursera, edX, etc). If you need additional help after that, make a post on gitter. **In your post, mention what steps you have already taken to try and solve the problem**.
+### General problems
+If you have general problems with the program not specific to any course, such as preferring textbook-style learning over MOOCs, gitter is a good place to reach out to people who may have great suggestions.
diff --git a/README.md b/README.md
index 4c4a602ca..332299791 100644
--- a/README.md
+++ b/README.md
@@ -80,9 +80,9 @@ 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).
+**[How to contribute](CONTRIBUTING.md)**
-**Getting help**. Please check our [Frequently Asked Questions](FAQ.md), and if you cannot find the answer, file an issue or talk to our [friendly community](#community)! In particular, join in the conversation on our [Gitter](https://gitter.im/open-source-society/computer-science) (which is an online chat service, similar to Discord or IRC) where you can chat with other students and get help. [](https://gitter.im/open-source-society/computer-science?utm_campaign=pr-badge&utm_content=badge&utm_medium=badge&utm_source=badge)
+**[Getting help](HELP.md)** (Details about our FAQ and chatroom)
# Curriculum
From ddb4883bce2c4a8da6857fee087d8c8e2f523269 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Wed, 25 Mar 2020 01:41:01 -0700
Subject: [PATCH 253/519] Make community section more visible
---
README.md | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/README.md b/README.md
index 332299791..6b7623a77 100644
--- a/README.md
+++ b/README.md
@@ -84,6 +84,13 @@ just remember that you can't purchase success!
**[Getting help](HELP.md)** (Details about our FAQ and chatroom)
+# Community
+
+- We have a chat room! This should be your first stop to talk with other OSSU students. Why don't you introduce yourself right now? [](https://gitter.im/open-source-society/computer-science?utm_campaign=pr-badge&utm_content=badge&utm_medium=badge&utm_source=badge)
+- You can also interact through [GitHub issues](https://github.com/ossu/computer-science/issues). If there is a problem with a course, or a change needs to be made to the curriculum, this is the place to start the conversation. Read more [here](CONTRIBUTING.md).
+- Add **Open Source Society University** to your [Linkedin](https://www.linkedin.com/school/11272443/) profile!
+- Note: There is an unmaintained and deprecated firebase app that you might find when searching OSSU. You can safely ignore it. Read more in the [FAQ](./FAQ.md#why-is-the-firebase-ossu-app-different-or-broken).
+
# Curriculum
**Curriculum version**: `8.0.0` (see [CHANGELOG](CHANGELOG.md))
@@ -490,14 +497,6 @@ These aren't the only specializations you can choose. Check the following websit
# Code of conduct
[OSSU's code of conduct](https://github.com/ossu/code-of-conduct).
-# Community
-
-- We have a chat room! This should be your first stop to talk with other OSSU students. [](https://gitter.im/open-source-society/computer-science?utm_campaign=pr-badge&utm_content=badge&utm_medium=badge&utm_source=badge)
-- You can also interact through [GitHub issues](https://github.com/ossu/computer-science/issues). If there is a problem with a course, or a change needs to be made to the curriculum, this is the place to start the conversation.
-- Subscribe to our [newsletter](https://tinyletter.com/ossu).
-- Add **Open Source Society University** to your [Linkedin](https://www.linkedin.com/school/11272443/) profile!
-- There is an unmaintained and deprecated firebase app that you might find when searching OSSU. You can safely ignore it. Read more in the [FAQ](./FAQ.md#why-is-the-firebase-ossu-app-different-or-broken).
-
## How to show your progress
1. Create an account in [Trello](https://trello.com/).
From 0bd515a57fec032998cc44796e155b629f9cde08 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Wed, 25 Mar 2020 02:09:01 -0700
Subject: [PATCH 254/519] Update Contributing
---
CONTRIBUTING.md | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 958f5eeda..614734424 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -5,10 +5,15 @@ If you have non-substantive updates to make to the curriculum, such as a course'
## Substantive changes
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/). While it is acceptable to point out problems, all successful changes naturally require a plan for fixing the problem.
OSSU’s curricular guidelines are [here](https://github.com/ossu/computer-science/blob/master/extras/curriculum_guidelines.md). Successful critiques of the curriculum will point out ways that OSSU is failing to uphold these guidelines. Examples are:
-OSSU lists a course as required when the course topics are elective in the curricular guide.
-OSSU does not having a course to cover required topics from the curricular guide.
-OSSU lists multiple courses that cover the same topics when fewer courses could suffice.
-OSSU recommends a course to teach a topic, but there exists a higher quality course that covers the same material.
+
+* OSSU lists a course as required when the course topics are elective in the curricular guide.
+* OSSU does not having a course to cover required topics from the curricular guide.
+* OSSU lists multiple courses that cover the same topics when fewer courses could suffice.
+* OSSU recommends a course to teach a topic, but there exists a higher quality course that covers the same material.
+## Other ways to contribute
+### Responding to Issues
Issues require more than just users to suggest them. Issues require active community members to read and respond to proposals. Even adding simple [emoji reactions](https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/) can help the community.
+### Engaging with other students
+Learning is enhanced by engaged peers. You can be that peer for someone new to OSSU. When you see a new person posting in Gitter, ask them a question about themselves. When you see a cohort starting at _almost_ the right time, join in. Doing so will make OSSU a stronger program for everyone, including you.
# Personal Customization
If you want to customize the curriculum for yourself, you are encouraged to [fork this project](https://help.github.com/articles/fork-a-repo/)!
From 2ddc587e2bd81964100be28d375e2dcfbf5001ef Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sat, 28 Mar 2020 17:06:12 -0500
Subject: [PATCH 255/519] Ensure students can Ctrl-F for Gitter
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 6b7623a77..da4541b8d 100644
--- a/README.md
+++ b/README.md
@@ -86,7 +86,7 @@ just remember that you can't purchase success!
# Community
-- We have a chat room! This should be your first stop to talk with other OSSU students. Why don't you introduce yourself right now? [](https://gitter.im/open-source-society/computer-science?utm_campaign=pr-badge&utm_content=badge&utm_medium=badge&utm_source=badge)
+- We have a chat room! This should be your first stop to talk with other OSSU students. Why don't you introduce yourself right now? [Join the chat in Gitter](https://gitter.im/open-source-society/computer-science) [](https://gitter.im/open-source-society/computer-science?utm_campaign=pr-badge&utm_content=badge&utm_medium=badge&utm_source=badge)
- You can also interact through [GitHub issues](https://github.com/ossu/computer-science/issues). If there is a problem with a course, or a change needs to be made to the curriculum, this is the place to start the conversation. Read more [here](CONTRIBUTING.md).
- Add **Open Source Society University** to your [Linkedin](https://www.linkedin.com/school/11272443/) profile!
- Note: There is an unmaintained and deprecated firebase app that you might find when searching OSSU. You can safely ignore it. Read more in the [FAQ](./FAQ.md#why-is-the-firebase-ossu-app-different-or-broken).
From 97e52234f8b1d82388d67abc1fcdacc125550190 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sat, 28 Mar 2020 17:23:30 -0500
Subject: [PATCH 256/519] Add precal suggestions and Khan Academy
---
extras/courses.md | 3 +++
1 file changed, 3 insertions(+)
diff --git a/extras/courses.md b/extras/courses.md
index 44f557e3f..782e248ec 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -29,6 +29,9 @@ 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
[Introduction to Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 hours/week
+[High School Math](https://www.khanacademy.org/math/high-school-math) | - | -
+[Precalculus](https://www.futurelearn.com/courses/precalculus) | 5 weeks | 6 hours/week
+[Advanced Precalculus](https://www.futurelearn.com/courses/advanced-precalculus) | 4 weeks | 5 hours/week
[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) | - | -
[Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/index.htm) | 13 weeks | 12 hours/week
From f3ecd51de78e5a2db726505cccf011d4ec8fc94b Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sat, 28 Mar 2020 17:27:17 -0500
Subject: [PATCH 257/519] Remove mention of HS physics as a pre-req
Resolves #668
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index da4541b8d..2d08ee8b4 100644
--- a/README.md
+++ b/README.md
@@ -118,7 +118,7 @@ just remember that you can't purchase success!
## Prerequisites
-- [Core CS](#core-cs) assumes the student has already taken high school math and physics, including algebra, geometry, and pre-calculus.
+- [Core CS](#core-cs) assumes the student has already taken high school math, 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.
From 974b7e8d8f406e702c08bbead879b601b046c23b Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sat, 28 Mar 2020 17:45:19 -0500
Subject: [PATCH 258/519] Update math prerequisites info
---
README.md | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 2d08ee8b4..348211433 100644
--- a/README.md
+++ b/README.md
@@ -118,8 +118,7 @@ just remember that you can't purchase success!
## Prerequisites
-- [Core CS](#core-cs) assumes the student has already taken high school math, 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.
+- [Core CS](#core-cs) assumes the student has already taken [high school math](https://www.khanacademy.org/math/high-school-math), including algebra, geometry, and pre-calculus.
- [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).
From a21b0db548017e121d570d9562481560788bd53f Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Wed, 1 Apr 2020 20:39:17 -0500
Subject: [PATCH 259/519] Remove Pro CS
Resolves #681
---
README.md | 22 ++++------------------
1 file changed, 4 insertions(+), 18 deletions(-)
diff --git a/README.md b/README.md
index 348211433..19f4d950a 100644
--- a/README.md
+++ b/README.md
@@ -22,7 +22,7 @@
- [Core CS](#core-cs)
- [Advanced CS](#advanced-cs)
- [Final project](#final-project)
- - [Pro CS](#pro-cs)
+ - [Congratulations](#congratulations)
- [Code of conduct](#code-of-conduct)
- [Community](#community)
- [How to show your progress](#how-to-show-your-progress)
@@ -463,25 +463,11 @@ 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
+## Congratulations
-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 in the Advanced CS section, but the next step to completing your studies is to develop skills and knowledge in a specific domain.
-Many of these courses are graduate-level.
+After completing the requirements of the curriculum above, you will have completed the equivalent of a full bachelor's degree in Computer Science. Congratulations!
-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)
-
-### Where to go next?
+What is next for you? The possibilities are boundless and overlapping:
- 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.
From 74dc37f3e3433e0aa298ed9c81f81acc2f7b96d4 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sat, 4 Apr 2020 00:54:54 -0500
Subject: [PATCH 260/519] Add intro book on computer architecture
---
extras/readings.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/extras/readings.md b/extras/readings.md
index e245feb8a..09993dd65 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -41,6 +41,7 @@ Name | Author(s)
Name | Author(s)
:-- | :--:
+[But How Do It Know?](http://www.buthowdoitknow.com/) | J. Clark Scott
[Computer Systems: A Programmer's Perspective (3rd Edition)](http://csapp.cs.cmu.edu/) | Randal E. Bryant, David R. O'Hallaron
[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
From bfabc85527c336e46c38614d5be963e64b53f4b6 Mon Sep 17 00:00:00 2001
From: spamegg <4255997+spamegg1@users.noreply.github.com>
Date: Sun, 5 Apr 2020 15:02:00 +0300
Subject: [PATCH 261/519] Update README.md
Added Game Development Specialization to Advanced Applications
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index 19f4d950a..3e25f43a3 100644
--- a/README.md
+++ b/README.md
@@ -413,6 +413,7 @@ Courses | Duration | Effort | Prerequisites
[Full Stack Web Development (Specialization)](https://www.coursera.org/specializations/full-stack) | 27 weeks | 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/week | One year programming experience
+[Game Design and Development (Specialization)](https://www.coursera.org/specializations/game-development) | 6 months | 5 hours/week | programming, interactive design
## Final project
From 13f273171581658ef30800ab8aebac3f366ca1fd Mon Sep 17 00:00:00 2001
From: Aaron Hooper
Date: Mon, 6 Apr 2020 04:57:17 +0100
Subject: [PATCH 262/519] Remove remaining references to Pro CS
---
README.md | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 3e25f43a3..43934998f 100644
--- a/README.md
+++ b/README.md
@@ -58,15 +58,14 @@ they belong in [extras/courses](extras/courses.md) or [extras/readings](extras/r
- *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
+
**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 are 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.
+**Cost**. All or nearly all course material 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!
@@ -112,7 +111,6 @@ just remember that you can't purchase success!
- [Advanced theory](#advanced-theory)
- [Advanced applications](#advanced-applications)
- [Final project](#final-project)
-- [Pro CS](#pro-cs)
---
From bafc536960c0a15856f0587275b6e3e3972ba9f1 Mon Sep 17 00:00:00 2001
From: Aaron Hooper
Date: Mon, 6 Apr 2020 05:11:52 +0100
Subject: [PATCH 263/519] Some extra whitespace
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index 43934998f..b44fee34f 100644
--- a/README.md
+++ b/README.md
@@ -67,6 +67,7 @@ based on the class schedules and your own life plans.
**Cost**. All or nearly all course material 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!
From 7aabe23af4d0f4ca4ef7815c184e23f7c1722b36 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Tue, 7 Apr 2020 00:11:05 -0500
Subject: [PATCH 264/519] Add security courses on a provisional basis.
See https://github.com/ossu/computer-science/issues/639
---
README.md | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/README.md b/README.md
index b44fee34f..c93181f5c 100644
--- a/README.md
+++ b/README.md
@@ -105,6 +105,7 @@ just remember that you can't purchase success!
- [Core systems](#core-systems)
- [Core theory](#core-theory)
- [Core applications](#core-applications)
+ - [Core security](#core-security)
- [Advanced CS](#advanced-cs)
- [Advanced programming](#advanced-programming)
- [Advanced math](#advanced-math)
@@ -279,6 +280,29 @@ Courses | Duration | Effort | Prerequisites
[Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming](https://www.coursera.org/learn/algorithms-greedy) | 4 weeks | 4-8 hours/week | Graph Search, Shortest Paths, and Data Structures
[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 | Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming
+### Core Security
+**Topics covered**
+`Confidentiality, Integrity, Availability`
+`Secure Design`
+`Defensive Programming`
+`Threats and Attacks`
+`Network Security`
+`Cryptography`
+`and more`
+
+Note: **_These courses are provisionally recommended_**. There is an open [Request For Comment](https://github.com/ossu/computer-science/issues/639) on security course selection. Contributors are encouraged to compare the various courses in the RFC and offer feedback.
+
+Courses | Duration | Effort | Prerequisites
+:-- | :--: | :--: | :--:
+[Information Security: Context and Introduction](https://www.coursera.org/learn/information-security-data) | 5 weeks | 3 hours/week | -
+[Principles of Secure Coding](https://www.coursera.org/learn/secure-coding-principles)| 4 weeks | 4 hours/week | -
+[Identifying Security Vulnerabilities](https://www.coursera.org/learn/identifying-security-vulnerabilities) | 4 weeks | 4 hours/week | -
+
+Choose **one** of the following:
+Courses | Duration | Effort | Prerequisites
+:-- | :--: | :--: | :--:
+[Identifying Security Vulnerabilities in C/C++Programming](https://www.coursera.org/learn/identifying-security-vulnerabilities-c-programming) | 4 weeks | 5 hours/week | -
+[Exploiting and Securing Vulnerabilities in Java Applications](https://www.coursera.org/learn/exploiting-securing-vulnerabilities-java-applications) | 4 weeks | 5 hours/week | -
### Core applications
From 758e08756950eaa6125eebdf1661008435367d6e Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Tue, 7 Apr 2020 00:27:10 -0500
Subject: [PATCH 265/519] Include link to HtDP book and problem sets
---
README.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/README.md b/README.md
index c93181f5c..487acd151 100644
--- a/README.md
+++ b/README.md
@@ -178,6 +178,8 @@ All coursework under Core CS is **required**, unless otherwise indicated.
`Ruby`
`and more`
+The How to Code courses are based on the textbook [How to Design Programs](https://htdp.org/2003-09-26/). The First Edition is available for free online and includes problem sets and solutions. Students are encouraged to do these assignments.
+
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[How to Code - Simple Data](https://www.edx.org/course/how-code-simple-data-ubcx-htc1x) | 7 weeks | 8-10 hours/week | none
From 1a8722d31736f06f24eb5094aa6d27cb7e3caa25 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Fri, 10 Apr 2020 14:39:54 -0500
Subject: [PATCH 266/519] Update readings.md
---
extras/readings.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/extras/readings.md b/extras/readings.md
index 09993dd65..274b00b73 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -36,6 +36,7 @@ Name | Author(s)
[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
+[Linear Algebra Done Right (FREE)](https://link.springer.com/book/10.1007/978-3-319-11080-6) | Sheldon Axler
## Systems
From 1a61dc208d12336ff4419df65aaa1c343b31a17f Mon Sep 17 00:00:00 2001
From: spamegg <4255997+spamegg1@users.noreply.github.com>
Date: Fri, 10 Apr 2020 15:39:38 +0300
Subject: [PATCH 267/519] Added link to HW for Intro to Parallel Programming
Intro to Parallel Programming's grader is broken, it's impossible to submit programming assignments. It's also impossible to compile and run the code on your PC, unless you own an nVidia GPU. Thankfully some nice folks on Github created a Google Research Colab page where you can compile and run your homeworks (unfortunately the Final Exam is not available and probably never will be). I understand this uses Google's GPU sharing.
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 487acd151..29aefea86 100644
--- a/README.md
+++ b/README.md
@@ -356,7 +356,7 @@ If not, or if a student chooses not to take the Capstone, then a separate Final
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Introduction to Parallel Programming](https://classroom.udacity.com/courses/cs344) ([alt](https://www.youtube.com/playlist?list=PLGvfHSgImk4aweyWlhBXNF6XISY3um82_)) | 12 weeks | - | C, algorithms
+[Introduction to Parallel Programming](https://classroom.udacity.com/courses/cs344) ([alt](https://www.youtube.com/playlist?list=PLGvfHSgImk4aweyWlhBXNF6XISY3um82_)) ([HW](https://colab.research.google.com/github/depctg/udacity-cs344-colab))| 12 weeks | - | C, algorithms
[Compilers](https://www.edx.org/course/compilers) ([alt](https://www.youtube.com/playlist?list=PLDcmCgguL9rxPoVn2ykUFc8TOpLyDU5gx))| 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
[Software Testing](https://www.udacity.com/course/software-testing--cs258) | 4 weeks | 6 hours/week | Python, programming experience
From 249576565446744d6dc158250a34f54d4fbead25 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sun, 12 Apr 2020 15:33:07 -0500
Subject: [PATCH 268/519] Remove dead link
---
README.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/README.md b/README.md
index 29aefea86..4b6df17c7 100644
--- a/README.md
+++ b/README.md
@@ -108,7 +108,6 @@ just remember that you can't purchase success!
- [Core security](#core-security)
- [Advanced CS](#advanced-cs)
- [Advanced programming](#advanced-programming)
- - [Advanced math](#advanced-math)
- [Advanced systems](#advanced-systems)
- [Advanced theory](#advanced-theory)
- [Advanced applications](#advanced-applications)
From 8b2135aa5162cadec46432bea27e924a261aaae8 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Tue, 14 Apr 2020 00:49:42 -0500
Subject: [PATCH 269/519] Simplify table of contents
---
README.md | 15 ++++-----------
1 file changed, 4 insertions(+), 11 deletions(-)
diff --git a/README.md b/README.md
index 4b6df17c7..c6ef53254 100644
--- a/README.md
+++ b/README.md
@@ -16,17 +16,10 @@
# Contents
- [Summary](#summary)
+- [Community](#community)
- [Curriculum](#curriculum)
- - [Prerequisites](#prerequisites)
- - [Intro CS](#intro-cs)
- - [Core CS](#core-cs)
- - [Advanced CS](#advanced-cs)
- - [Final project](#final-project)
- - [Congratulations](#congratulations)
- [Code of conduct](#code-of-conduct)
-- [Community](#community)
- - [How to show your progress](#how-to-show-your-progress)
- - [Team](#team)
+- [Team](#team)
- [References](#references)
# Summary
@@ -530,9 +523,9 @@ 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*.
-## Team
+# Team
-* **[Eric Douglas](https://github.com/ericdouglas)**: founder of OSSU and co-maintainer of all its curricula
+* **[Eric Douglas](https://github.com/ericdouglas)**: founder of OSSU
* **[hanjiexi](https://github.com/hanjiexi)**: lead technical maintainer
* **[waciumawanjohi](https://github.com/waciumawanjohi)**: lead academic maintainer
* **[Contributors](https://github.com/ossu/computer-science/graphs/contributors)**
From b1add90e99abc46ad97097df9892186939ef2327 Mon Sep 17 00:00:00 2001
From: Aaron Hooper
Date: Wed, 22 Apr 2020 17:58:54 +0100
Subject: [PATCH 270/519] Fix spelling mistake
---
FAQ.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/FAQ.md b/FAQ.md
index 89dc42c36..fcee499f8 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -106,7 +106,7 @@ Of course, if you find that the curriculum is missing a pre-requisite for a cour
The OSSU curriculum and ecosystem have been collaboratively built by many individuals. The Firebase app was one such contribution. When it was written, it was with the intention of helping future OSSU students.
-Unfortunately, the app has not been updated in many years. It does not reflect updates to the curriculum, it contains links to courses that no longer exist, and it has known bugs that prevent students from loggining in.
+Unfortunately, the app has not been updated in many years. It does not reflect updates to the curriculum, it contains links to courses that no longer exist, and it has known bugs that prevent students from logging in.
It is our hope that the creators of the Firebase app can bring the app up to date. Until that time, the firebase app should be considered a deprecated product that is no longer supported.
From 9452a2001c1cd548b0b9d7a908c453d5a1fce28d Mon Sep 17 00:00:00 2001
From: Manuel Esparza
Date: Sat, 25 Apr 2020 18:14:30 -0700
Subject: [PATCH 271/519] Links to prerequisites courses added
---
README.md | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/README.md b/README.md
index c6ef53254..d132d39a4 100644
--- a/README.md
+++ b/README.md
@@ -148,7 +148,7 @@ This course will introduce you to the world of computer science. Students who ha
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Introduction to Computer Science and Programming using Python](https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x-10) ([alt](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/)) | 9 weeks | 15 hours/week | high school algebra
+[Introduction to Computer Science and Programming using Python](https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x-10) ([alt](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/)) | 9 weeks | 15 hours/week | [high school algebra](https://www.khanacademy.org/math/algebra-home)
## Core CS
@@ -191,25 +191,25 @@ Courses | Duration | Effort | Prerequisites
#### Calculus
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Calculus 1A: Differentiation](https://www.edx.org/course/calculus-1a-differentiation) | 13 weeks | 6-10 hours/week | pre-calculus
+[Calculus 1A: Differentiation](https://www.edx.org/course/calculus-1a-differentiation) | 13 weeks | 6-10 hours/week | [pre-calculus](https://www.futurelearn.com/courses/precalculus)
[Calculus 1B: Integration](https://www.edx.org/course/calculus-1b-integration) | 13 weeks | 5-10 hours/week | Calculus 1A
[Calculus 1C: Coordinate Systems & Infinite Series](https://www.edx.org/course/calculus-1c-coordinate-systems-infinite-series) | 13 weeks | 5-10 hours/week | Calculus 1B
#### Linear Algebra
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | pre-calculus
+[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | [pre-calculus](https://www.futurelearn.com/courses/precalculus)
[Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-to-frontiers-0) ([alt](http://ulaff.net/)) | 15 weeks | 8 hours/week | Essence of Linear Algebra
#### Logic
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Introduction to Logic](https://www.coursera.org/learn/logic-introduction) | 10 weeks | 4-8 hours/week | set theory
+[Introduction to Logic](https://www.coursera.org/learn/logic-introduction) | 10 weeks | 4-8 hours/week | [set theory](https://www.youtube.com/playlist?list=PL5KkMZvBpo5AH_5GpxMiryJT6Dkj32H6N)
#### Probability
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-2) | 18 weeks | 12 hours/week | Multivariable Calculus
+[Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-2) | 18 weeks | 12 hours/week | [Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/index.htm)
### Core Math
In addition to their math elective, students must complete the following course on discrete mathematics.
@@ -375,7 +375,7 @@ 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)1 | 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](https://www.khanacademy.org/math/calculus-1), [basic mechanics](https://www.khanacademy.org/science/physics)
[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) | 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
@@ -422,7 +422,7 @@ So if you don't wish to spend money or use the Capstone as your Final, it may be
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Modern Robotics (Specialization)](https://www.coursera.org/specializations/modernrobotics) | 26 weeks | 2-5 hours/week | freshman-level physics, linear algebra, calculus, linear ordinary differential equations
+[Modern Robotics (Specialization)](https://www.coursera.org/specializations/modernrobotics) | 26 weeks | 2-5 hours/week | freshman-level physics, linear algebra, calculus, [linear ordinary differential equations](https://www.khanacademy.org/math/differential-equations)
[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
From 271b12dec6d360e0b9716c36a707afd86bc107c6 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sat, 2 May 2020 23:01:35 -0500
Subject: [PATCH 272/519] Move courses to advanced
Change the Haskell course suggestion. A big thank you to @aryzach for prompting the switch.
Move courses to advanced programming. See Issue.
Closes #669
---
README.md | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index d132d39a4..f4f2048e1 100644
--- a/README.md
+++ b/README.md
@@ -180,11 +180,6 @@ 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
-#### Readings
-- **Required** to learn about monads, laziness, purity: [Learn You a Haskell for a Great Good!](http://learnyouahaskell.com/)
- - **Note**: probably the best resource to learn Haskell: [Haskell Programming from First Principles](http://haskellbook.com/) `paid`
-- **Required**, to learn about logic programming, backtracking, unification: [Learn Prolog Now!](http://lpn.swi-prolog.org/lpnpage.php?pageid=top)
-
### Math Electives
**Students must choose one of the following topics**: calculus, linear algebra, logic, or probability.
@@ -350,6 +345,8 @@ Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[Introduction to Parallel Programming](https://classroom.udacity.com/courses/cs344) ([alt](https://www.youtube.com/playlist?list=PLGvfHSgImk4aweyWlhBXNF6XISY3um82_)) ([HW](https://colab.research.google.com/github/depctg/udacity-cs344-colab))| 12 weeks | - | C, algorithms
[Compilers](https://www.edx.org/course/compilers) ([alt](https://www.youtube.com/playlist?list=PLDcmCgguL9rxPoVn2ykUFc8TOpLyDU5gx))| 9 weeks | 6-8 hours/week | none
+[Introduction to Haskell](https://www.seas.upenn.edu/~cis194/fall16/)| 14 weeks | - | -
+[Learn Prolog Now!](http://lpn.swi-prolog.org/lpnpage.php?pageid=top)| 12 weeks | - | -
[Software Debugging](https://www.udacity.com/course/software-debugging--cs259)| 8 weeks | 6 hours/week | Python, object-oriented programming
[Software Testing](https://www.udacity.com/course/software-testing--cs258) | 4 weeks | 6 hours/week | Python, programming experience
[LAFF - On Programming for Correctness](https://www.edx.org/course/laff-on-programming-for-correctness) | 7 weeks | 6 hours/week | linear algebra
From badd13a132c2c7b3dd7258dc976fa48b20447ffd Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sat, 2 May 2020 23:19:25 -0500
Subject: [PATCH 273/519] Move curricular guidelines out of extras.
---
extras/curriculum_guidelines.md => CURRICULAR_GUIDELINES.md | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename extras/curriculum_guidelines.md => CURRICULAR_GUIDELINES.md (100%)
diff --git a/extras/curriculum_guidelines.md b/CURRICULAR_GUIDELINES.md
similarity index 100%
rename from extras/curriculum_guidelines.md
rename to CURRICULAR_GUIDELINES.md
From 239de1c6d0ce92de63ad19065db1c4811c5c930f Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sun, 3 May 2020 00:21:00 -0500
Subject: [PATCH 274/519] Clarify that CS2013 is the curricular guidance for
OSSU
Resolves #679
---
CURRICULAR_GUIDELINES.md | 22 ++++--------
README.md | 19 ++--------
REQUIREMENTS.md | 74 ---------------------------------------
extras/other_curricula.md | 12 +++++++
4 files changed, 21 insertions(+), 106 deletions(-)
delete mode 100644 REQUIREMENTS.md
create mode 100644 extras/other_curricula.md
diff --git a/CURRICULAR_GUIDELINES.md b/CURRICULAR_GUIDELINES.md
index 96ac99ef2..e1598d261 100644
--- a/CURRICULAR_GUIDELINES.md
+++ b/CURRICULAR_GUIDELINES.md
@@ -1,23 +1,15 @@
-# Computer Science - Curricular Resources
+# Curricular Guidelines
-## Accreditation Board for Engineering and Technology
+[Curriculum Guidelines for Undergraduate Programs in Computer Science](https://www.acm.org/binaries/content/assets/education/cs2013_web_final.pdf)
-ABET, incorporated as the Accreditation Board for Engineering and Technology, Inc., is a non-governmental organization that accredits post-secondary education programs in applied and natural science, computing, engineering and engineering technology. As of October 2017, 3,852 programs are accredited, distributed over 776 universities and colleges in 31 countries. ABET is the recognized U.S. accreditor of college and university programs in applied and natural science, computing, engineering and engineering technology.
+Our curricular guidelines are from the 2013 report of the Association for Computing Machinery and the Institute of Electrical and Electronics Engineers. This report is the most recent in a series of such reports outlining the expectations of undergraduate degrees in Computer Science. The report outlines critical Knowledge Areas and topics within them. It drills down further to outline specific learning goals, going so far as to outline what concepts a student must be able to explain vs concepts a student must be able to demonstrate using in practice.
-[Program Criteria for Computer Science, Information Systems, and Information Technology Programs](http://www.abet.org/accreditation/accreditation-criteria/criteria-for-accrediting-computing-programs-2019-2020/#2)
+## Organizations publishing:
-## The Association for Computing Machinery
+### The Association for Computing Machinery
The Association for Computing Machinery (ACM) is an international learned society for computing. It was founded in 1947, and is the world's largest scientific and educational computing society. The ACM is a non-profit professional membership group, with more than 100,000 members as of 2011.
-### with
-
-## Institute of Electrical and Electronics Engineers
-
-The Institute of Electrical and Electronics Engineers (IEEE) is a professional association formed in 1963 from the amalgamation of the American Institute of Electrical Engineers and the Institute of Radio Engineers. As of 2018, it is the world's largest association of technical professionals with more than 423,000 members in over 160 countries around the world. Its objectives are the educational and technical advancement of electrical and electronic engineering, telecommunications, computer engineering and allied disciplines.
-
-[Curriculum Guidelines for Undergraduate Programs in Computer Science](https://www.acm.org/binaries/content/assets/education/cs2013_web_final.pdf)
-
-[Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering](https://www.acm.org/binaries/content/assets/education/se2014.pdf)
+### Institute of Electrical and Electronics Engineers
-[Computer Engineering Curricula](https://www.acm.org/binaries/content/assets/education/ce2016-final-report.pdf)
+The Institute of Electrical and Electronics Engineers (IEEE) is a professional association formed in 1963 from the amalgamation of the American Institute of Electrical Engineers and the Institute of Radio Engineers. As of 2018, it is the world's largest association of technical professionals with more than 423,000 members in over 160 countries around the world. Its objectives are the educational and technical advancement of electrical and electronic engineering, telecommunications, computer engineering and allied disciplines.
\ No newline at end of file
diff --git a/README.md b/README.md
index f4f2048e1..973ce28c8 100644
--- a/README.md
+++ b/README.md
@@ -20,7 +20,6 @@
- [Curriculum](#curriculum)
- [Code of conduct](#code-of-conduct)
- [Team](#team)
-- [References](#references)
# Summary
@@ -37,10 +36,9 @@ but specifically chosen to meet the following criteria.
**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
+- Run regularly (ideally in self-paced format, otherwise running multiple times per year)
- Be of generally high quality in teaching materials and pedagogical principles
+- Match the curricular standards of the [CS 2013](CURRICULAR_GUIDELINES.md): Curriculum Guidelines for Undergraduate Degree Programs in Computer Science
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,
@@ -52,7 +50,6 @@ they belong in [extras/courses](extras/courses.md) or [extras/readings](extras/r
- *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
-
**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 are specified so that you can design a logical but non-linear progression
@@ -526,15 +523,3 @@ You can change the status of your board to be *public* or *private*.
* **[hanjiexi](https://github.com/hanjiexi)**: lead technical maintainer
* **[waciumawanjohi](https://github.com/waciumawanjohi)**: lead academic maintainer
* **[Contributors](https://github.com/ossu/computer-science/graphs/contributors)**
-
-# References
-
-- [Google - Guide for Technical Development](https://www.google.com/about/careers/students/guide-to-technical-development.html)
-- [Coursera](https://www.coursera.org/)
-- [edX](https://www.edx.org)
-- [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)
-- [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/)
diff --git a/REQUIREMENTS.md b/REQUIREMENTS.md
deleted file mode 100644
index 10909978e..000000000
--- a/REQUIREMENTS.md
+++ /dev/null
@@ -1,74 +0,0 @@
-# OSSU-CS Academic Requirements
-
-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
-
-### 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 language
-- 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
-
-## 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.
diff --git a/extras/other_curricula.md b/extras/other_curricula.md
new file mode 100644
index 000000000..32c5431c7
--- /dev/null
+++ b/extras/other_curricula.md
@@ -0,0 +1,12 @@
+# Other curricula
+
+OSSU is one of a few efforts to inform learners how they can pursue computer science independently. Below are a few other such efforts.
+
+- [Google - Guide for Technical Development](https://www.google.com/about/careers/students/guide-to-technical-development.html)
+- [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/)
+- [P1xt](https://github.com/P1xt/p1xt-guides)
+
+What differentiates OSSU? OSSU is dedicated to how an individual can learn the undergraduate CS curriculum. This is why we use the [CS2013](../CURRICULAR_GUIDELINES.md) as our curricular guidelines. These guidelines are written by the two foremost professional organizations in computing.
+
+This approach has the benefit of clarifying to others the extent of a student's study and understanding. Students have gone from OSSU study into both tech industry employment and into Computer Science graduate school. We look forward to helping you do the same.
From 87db17d348e0565f232b414dbc01ec6aa948b1d5 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sun, 3 May 2020 00:34:41 -0500
Subject: [PATCH 275/519] Add The Missing Semester
Resolves #678
---
README.md | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/README.md b/README.md
index 973ce28c8..bf8e7bc3e 100644
--- a/README.md
+++ b/README.md
@@ -89,6 +89,7 @@ just remember that you can't purchase success!
- [Intro CS](#intro-cs)
- [Introduction to Programming](#introduction-to-programming)
- [Introduction to Computer Science](#introduction-to-computer-science)
+ - [Introduction to CS Tools](#introduction-to-cs-tools)
- [Core CS](#core-cs)
- [Core programming](#core-programming)
- [Core math](#core-math)
@@ -147,6 +148,21 @@ Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[Introduction to Computer Science and Programming using Python](https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x-10) ([alt](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/)) | 9 weeks | 15 hours/week | [high school algebra](https://www.khanacademy.org/math/algebra-home)
+### Introduction to CS Tools
+Understanding theory is important, but you will also be expected to create programs. There are a number of tools that are widely used to make that process easier. Learn them now to ease your future work writing programs.
+
+**Topics covered**:
+`terminals and shell scripting`
+`vim`
+`command line environments`
+`version control`
+`and more`
+
+Courses | Duration | Effort | Prerequisites
+:-- | :--: | :--: | :--:
+[The Missing Semester of Your CS Education](https://missing.csail.mit.edu/) | 2 weeks | 12 hours/week | -
+
+
## Core CS
All coursework under Core CS is **required**, unless otherwise indicated.
From 83d8db63552acdf9e4210cc374d16ecd4df5d181 Mon Sep 17 00:00:00 2001
From: spamegg <4255997+spamegg1@users.noreply.github.com>
Date: Sat, 25 Apr 2020 09:08:27 +0300
Subject: [PATCH 276/519] Replaced Hack the Kernel with OSTEP
Implementing the proposal from issue 690: https://github.com/ossu/computer-science/issues/690
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index bf8e7bc3e..8d0e7f1b4 100644
--- a/README.md
+++ b/README.md
@@ -258,7 +258,7 @@ Courses | Duration | Effort | Additional Text / Assignments| Prerequisites
[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 | - | C-like programming language
[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | - | one of [these programming languages](https://user-images.githubusercontent.com/2046800/35426340-f6ce6358-026a-11e8-8bbb-4e95ac36b1d7.png), From Nand to Tetris Part I
[Introduction to Computer Networking](https://www.youtube.com/playlist?list=PLEAYkSg4uSQ2dr0XO_Nwa5OcdEcaaELSG)| 8 weeks | 4–12 hours/week | [Assignment 1](https://github.com/PrincetonUniversity/COS461-Public/tree/master/assignments/assignment1)
[Assignment 2](https://www.scs.stanford.edu/10au-cs144/lab/reliable/reliable.html)
[Assignment 3](https://nptel.ac.in/content/storage2/courses/106105080/pdf/M2L7.pdf)
[Assignment 4](http://www-net.cs.umass.edu/wireshark-labs/Wireshark_TCP_v7.0.pdf) | algebra, probability, basic CS
-[ops-class.org - Hack the Kernel](https://www.ops-class.org/) | 15 weeks | 6 hours/week | Replace course textbook with [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/) | algorithms
+[Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/) | 10-12 weeks | 6 hours/week | [Homework](http://pages.cs.wisc.edu/~remzi/OSTEP/Homework/homework.html) [Lectures](https://www.youtube.com/channel/UCGweYi6vcfHaTrkap3c1TPg/videos) [Supplement](http://pages.cs.wisc.edu/~shivaram/cs537-sp20/) | algorithms
### Core theory
From 7595afa2516c3173269045767494148792210ab9 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sun, 3 May 2020 00:56:36 -0500
Subject: [PATCH 277/519] Add note to Changelog that curriculum is > v8 and <
v9.
Resolves #674
---
CHANGELOG.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0853746fd..c4cf4e1ba 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,8 @@ 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
+**Note**: The curriculum is currently undergoing review for v9. This consists largely of checking our recommendations against our [curricular guidelines](CURRICULAR_GUIDELINES.md), adding missing topics and cutting redundant or out of scope courses. As Requests for Comment in this effort are completed, changes are made immediately to the curriculum. When the overall review is complete we will notate the version bump to v9.
+
## [8.0.0] 2017-11-01
### Added
- extras/readings: "The System Design Primer"
From ce8df13066ac5e18d4297a6ecf8b19797b8745ba Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sun, 3 May 2020 01:10:03 -0500
Subject: [PATCH 278/519] Replace LAFF with MIT's OCW Scholar Linear Algebra
Resolves #693
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 8d0e7f1b4..ff4ac9fdf 100644
--- a/README.md
+++ b/README.md
@@ -207,7 +207,7 @@ Courses | Duration | Effort | Prerequisites
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | [pre-calculus](https://www.futurelearn.com/courses/precalculus)
-[Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-to-frontiers-0) ([alt](http://ulaff.net/)) | 15 weeks | 8 hours/week | Essence of Linear Algebra
+[Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | 14 weeks | 12 hours/week | Essence of Linear Algebra
#### Logic
Courses | Duration | Effort | Prerequisites
From 9c7faa86637ca3a8fe2d315129b7831d2b56eed3 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sun, 3 May 2020 23:19:31 -0500
Subject: [PATCH 279/519] Reflect addition of new Intro section.
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index ff4ac9fdf..15add6eb5 100644
--- a/README.md
+++ b/README.md
@@ -123,7 +123,7 @@ Trying to decide between them?
_Python for Everyone_ will introduce you to a popular language and will quickly move to practical programming tasks - using web APIs and databases. This will give you a taste of what many professional developers do.
-_Fundamentals of Computing_ will also start by introducing you to Python. It then moves on to give an introduction to academic Computer Science topics, like sorting and recursion. This will give you a taste of what the following courses will be like. (Students who complete _Fundamentals of Computing_ can skip Intro to Computer Science and begin Core CS.)
+_Fundamentals of Computing_ will also start by introducing you to Python. It then moves on to give an introduction to academic Computer Science topics, like sorting and recursion. This will give you a taste of what the following courses will be like. (Students who complete _Fundamentals of Computing_ can skip Intro to Computer Science and begin Introduction to CS Tools.)
**Topics covered**:
`simple programs`
From cd7fa721421716517a45151858b1832abfcf604f Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Thu, 7 May 2020 20:07:39 -0500
Subject: [PATCH 280/519] Make note more prominent
---
CHANGELOG.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c4cf4e1ba..71929b1d5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,13 +1,13 @@
# Change Log
+**Note**: The curriculum is currently undergoing review for v9. This consists largely of checking our recommendations against our [curricular guidelines](CURRICULAR_GUIDELINES.md), adding missing topics and cutting redundant or out of scope courses. As Requests for Comment in this effort are completed, changes are made immediately to the curriculum. When the overall review is complete we will notate the version bump to v9.
+
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 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
-**Note**: The curriculum is currently undergoing review for v9. This consists largely of checking our recommendations against our [curricular guidelines](CURRICULAR_GUIDELINES.md), adding missing topics and cutting redundant or out of scope courses. As Requests for Comment in this effort are completed, changes are made immediately to the curriculum. When the overall review is complete we will notate the version bump to v9.
-
## [8.0.0] 2017-11-01
### Added
- extras/readings: "The System Design Primer"
From 2665990266db0db7bcb0d84a1b7c921d60e92a05 Mon Sep 17 00:00:00 2001
From: aryzach
Date: Sun, 10 May 2020 10:57:02 -0500
Subject: [PATCH 281/519] updated Software Engineering prereqs and added
relevant FAQ
---
FAQ.md | 6 ++++++
README.md | 2 +-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/FAQ.md b/FAQ.md
index fcee499f8..9f6da9344 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -17,6 +17,7 @@ Alternatively, you could [contribute](#CONTRIBUTING.md) an answer yourself.
- [Why is the curriculum missing some pre-requisites?](#why-is-the-curriculum-missing-some-pre-requisites)
- [Why is the Firebase OSSU app different/broken?](#why-is-the-firebase-ossu-app-different-or-broken)
- [What is a good course to learn the language XXXX?](#what-is-a-good-course-to-learn-this-particular-language)
+- [Why require experience with a sizable project before the Software Engineering courses?](#why-require-experience-with-a-sizable-project-before-the-Software-Engineering-courses)
## Questions
@@ -114,3 +115,8 @@ It is our hope that the creators of the Firebase app can bring the app up to dat
OSSU focuses on finding the best courses to learn computer science topics, and isn’t focused on finding language specific courses. If you are looking to learn a particular language or framework there are two great resources to check.
1. [Hackr.io](https://hackr.io/) allows users to submit and upvote learning resources for topics such as Python or the Java Spring Framework.
2. Most languages have a community on reddit. When you find the community’s page, check to see if there is a wiki or sidebar with resources. For example, see [/r/python](https://old.reddit.com/r/Python). Note that the sidebar content can be different depending on whether you use www.reddit.com or old.reddit.com.
+
+### Why require experience with a sizable project before the Software Engineering courses?
+Software engineering tries to solve the problem of dealing with large programs. Building a sizable program before taking the SE courses will help you understand what SE is trying to solve. We recommend the Jack-to-VM-code compiler project from the nand2tetris course because it's the first project in the curriculum that is complex enough to see value in a SE course. That said, any sizable project will do and can come from outside of the OSSU curriculum. The idea is that you've done some large enough project where the pieces started to feel unmanageable. This experience will expose pain points and lead to a better understanding of SE.
+
+
diff --git a/README.md b/README.md
index 15add6eb5..263445441 100644
--- a/README.md
+++ b/README.md
@@ -328,7 +328,7 @@ Courses | Duration | Effort | Prerequisites
[Relational Database Systems](https://www.coursera.org/learn/relational-database)| 6 weeks | 3 hours/week | -
[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
-[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 Engineering: Introduction](https://www.edx.org/course/software-engineering-introduction-ubcx-softeng1x) | 6 weeks | 8-10 hours/week | Core Programming, and a [sizable project](FAQ.md#why-require-experience-with-a-sizable-project-before-the-Software-Engineering-courses)
[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
From cec374651357f204fbfffd74f1d4a84d0e11c1f7 Mon Sep 17 00:00:00 2001
From: riceeatingmachine <50071043+riceeatingmachine@users.noreply.github.com>
Date: Mon, 11 May 2020 14:13:13 +0530
Subject: [PATCH 282/519] Update README.md
---
README.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 263445441..7f3c570ad 100644
--- a/README.md
+++ b/README.md
@@ -189,9 +189,9 @@ Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[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
-[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
+[Programming Languages, Part A](https://www.coursera.org/learn/programming-languages) | 5 weeks | 4-8 hours/week | recommended: Java, C
+[Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 4-8 hours/week | Programming Languages, Part A
+[Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 4-8 hours/week | Programming Languages, Part B
### Math Electives
**Students must choose one of the following topics**: calculus, linear algebra, logic, or probability.
@@ -201,7 +201,7 @@ Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[Calculus 1A: Differentiation](https://www.edx.org/course/calculus-1a-differentiation) | 13 weeks | 6-10 hours/week | [pre-calculus](https://www.futurelearn.com/courses/precalculus)
[Calculus 1B: Integration](https://www.edx.org/course/calculus-1b-integration) | 13 weeks | 5-10 hours/week | Calculus 1A
-[Calculus 1C: Coordinate Systems & Infinite Series](https://www.edx.org/course/calculus-1c-coordinate-systems-infinite-series) | 13 weeks | 5-10 hours/week | Calculus 1B
+[Calculus 1C: Coordinate Systems & Infinite Series](https://www.edx.org/course/calculus-1c-coordinate-systems-infinite-series) | 6 weeks | 5-10 hours/week | Calculus 1B
#### Linear Algebra
Courses | Duration | Effort | Prerequisites
From b4b542d9587c9fafcd231cdbc318f8c22e5094f5 Mon Sep 17 00:00:00 2001
From: Aaron Hooper
Date: Sat, 16 May 2020 18:22:20 +0100
Subject: [PATCH 283/519] Update link to curricular guidelines
---
CONTRIBUTING.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 614734424..f0e4e5a0b 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -4,7 +4,7 @@ OSSU thrives because of the changes made by our many contributors. Read on for d
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://www.freecodecamp.org/news/how-to-make-your-first-pull-request-on-github-3/) to fix any mistakes that you have found.
## Substantive changes
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/). While it is acceptable to point out problems, all successful changes naturally require a plan for fixing the problem.
-OSSU’s curricular guidelines are [here](https://github.com/ossu/computer-science/blob/master/extras/curriculum_guidelines.md). Successful critiques of the curriculum will point out ways that OSSU is failing to uphold these guidelines. Examples are:
+OSSU’s curricular guidelines are [here](https://github.com/ossu/computer-science/blob/master/CURRICULAR_GUIDELINES.md). Successful critiques of the curriculum will point out ways that OSSU is failing to uphold these guidelines. Examples are:
* OSSU lists a course as required when the course topics are elective in the curricular guide.
* OSSU does not having a course to cover required topics from the curricular guide.
From bcdb9c978c35b45bdc7328dd2c1938e300d7a68b Mon Sep 17 00:00:00 2001
From: Aaron Hooper
Date: Sat, 16 May 2020 18:23:02 +0100
Subject: [PATCH 284/519] Remove link to dead domain
---
extras/readings.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/extras/readings.md b/extras/readings.md
index 274b00b73..414d00efc 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -79,6 +79,5 @@ Name | Author(s)
[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.
[Physically Based Rendering: From Theory To Implementation](http://www.pbr-book.org/) | Matt Pharr, Wenzel Jakob, and Greg Humphreys
From 7a74d27da5213e10339ee8594827e9aa99c43532 Mon Sep 17 00:00:00 2001
From: Aaron Hooper
Date: Sat, 16 May 2020 20:37:34 +0100
Subject: [PATCH 285/519] Update link for Compiler Construction
---
extras/readings.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/extras/readings.md b/extras/readings.md
index 414d00efc..69f70fc10 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -79,5 +79,6 @@ Name | Author(s)
[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](https://inf.ethz.ch/personal/wirth/CompilerConstruction/index.html) | Niklaus Wirth
[The Mythical Man-Month](https://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/) | Fred Brooks, Jr.
[Physically Based Rendering: From Theory To Implementation](http://www.pbr-book.org/) | Matt Pharr, Wenzel Jakob, and Greg Humphreys
From 9edea7f7121428540efb1fd272315146260b6753 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Fri, 5 Jun 2020 21:31:59 -0400
Subject: [PATCH 286/519] Change Programming Languages Part A Prereq
Resolves 716
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 7f3c570ad..30cc6246f 100644
--- a/README.md
+++ b/README.md
@@ -189,7 +189,7 @@ Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[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
-[Programming Languages, Part A](https://www.coursera.org/learn/programming-languages) | 5 weeks | 4-8 hours/week | recommended: Java, C
+[Programming Languages, Part A](https://www.coursera.org/learn/programming-languages) | 5 weeks | 4-8 hours/week | How to Code ([Hear instructor](https://www.coursera.org/lecture/programming-languages/recommended-background-k1yuh))
[Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 4-8 hours/week | Programming Languages, Part A
[Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 4-8 hours/week | Programming Languages, Part B
From b63f0bc4e4b4f6f7576a2a8a5900ffe130e4b779 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Fri, 5 Jun 2020 22:44:56 -0400
Subject: [PATCH 287/519] How to audit the intro to programming courses
Resolves #724
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 30cc6246f..8769590ef 100644
--- a/README.md
+++ b/README.md
@@ -117,7 +117,7 @@ and is knowledgeable enough now to decide which electives to take.
### Introduction to Programming
-If you've never written a for-loop, or don't know what a string is in programming, start here. Choose one of the two course series below. Either one will give you an introduction to programming that assumes no prior knowledge.
+If you've never written a for-loop, or don't know what a string is in programming, start here. Choose one of the two course series below. Either one will give you an introduction to programming that assumes no prior knowledge. You can audit either for free, _in order to do so, click through to the individual courses in the specializations_.
Trying to decide between them?
From a416cc442916690ced13b0a2f81ca799f0c10eb2 Mon Sep 17 00:00:00 2001
From: spamegg
Date: Tue, 9 Jun 2020 14:09:35 +0300
Subject: [PATCH 288/519] Updated PROJECTS.md
Finished Specialization, using its Capstone as Final Project
---
PROJECTS.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/PROJECTS.md b/PROJECTS.md
index 49756c1e1..7c5af33a6 100644
--- a/PROJECTS.md
+++ b/PROJECTS.md
@@ -39,3 +39,4 @@ Project Title | Description | Author(s) | Repository
## Application
Project Title | Description | Author(s) | Repository
:-- | :-- | :--: | :--
+Observatory | Interactively displays temperatures and deviations all around the world from 1975 to 2015 | [spamegg](https://github.com/spamegg1) | [ScalaCapstone](https://github.com/spamegg1/ScalaCapstone)
\ No newline at end of file
From 0e05196e4e6c3664378c71f5500203a4952e2bc6 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Wed, 10 Jun 2020 00:57:29 -0400
Subject: [PATCH 289/519] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 8769590ef..2fa174c2a 100644
--- a/README.md
+++ b/README.md
@@ -513,7 +513,7 @@ What is next for you? The possibilities are boundless and overlapping:
## How to show your progress
1. Create an account in [Trello](https://trello.com/).
-1. Copy [this](https://trello.com/b/7NIfi40X) board to your personal account.
+1. Copy [this](https://trello.com/b/IScNSzsI/ossu-compsci) board to your personal account.
See how to copy a board [here](https://help.trello.com/article/802-copying-cards-lists-or-boards).
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 eb0a45a549fd2a4bd940447b0242004a1421ad91 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sun, 14 Jun 2020 22:27:22 -0400
Subject: [PATCH 290/519] Update OS Course Version
Resolves #707
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 2fa174c2a..6a90d397b 100644
--- a/README.md
+++ b/README.md
@@ -258,7 +258,7 @@ Courses | Duration | Effort | Additional Text / Assignments| Prerequisites
[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 | - | C-like programming language
[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | - | one of [these programming languages](https://user-images.githubusercontent.com/2046800/35426340-f6ce6358-026a-11e8-8bbb-4e95ac36b1d7.png), From Nand to Tetris Part I
[Introduction to Computer Networking](https://www.youtube.com/playlist?list=PLEAYkSg4uSQ2dr0XO_Nwa5OcdEcaaELSG)| 8 weeks | 4–12 hours/week | [Assignment 1](https://github.com/PrincetonUniversity/COS461-Public/tree/master/assignments/assignment1)
[Assignment 2](https://www.scs.stanford.edu/10au-cs144/lab/reliable/reliable.html)
[Assignment 3](https://nptel.ac.in/content/storage2/courses/106105080/pdf/M2L7.pdf)
[Assignment 4](http://www-net.cs.umass.edu/wireshark-labs/Wireshark_TCP_v7.0.pdf) | algebra, probability, basic CS
-[Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/) | 10-12 weeks | 6 hours/week | [Homework](http://pages.cs.wisc.edu/~remzi/OSTEP/Homework/homework.html) [Lectures](https://www.youtube.com/channel/UCGweYi6vcfHaTrkap3c1TPg/videos) [Supplement](http://pages.cs.wisc.edu/~shivaram/cs537-sp20/) | algorithms
+[Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/Classes/537/Spring2018/) | 10-12 weeks | 6 hours/week | - | algorithms
### Core theory
From 2ed708fb5b90a49d37994c65808c43037dba2ace Mon Sep 17 00:00:00 2001
From: spamegg <4255997+spamegg1@users.noreply.github.com>
Date: Fri, 17 Jul 2020 08:16:28 +0300
Subject: [PATCH 291/519] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 6a90d397b..df947dcf1 100644
--- a/README.md
+++ b/README.md
@@ -437,7 +437,7 @@ Courses | Duration | Effort | Prerequisites
[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 weeks | 2-6 hours/week | programming, databases
+[Fullstack Open](https://fullstackopen.com/en) | 12 weeks | 6 hours/week | programming
[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/week | One year programming experience
[Game Design and Development (Specialization)](https://www.coursera.org/specializations/game-development) | 6 months | 5 hours/week | programming, interactive design
From 7e6af4863f6c977bef01d27acd7a9ef06feeda95 Mon Sep 17 00:00:00 2001
From: spamegg <4255997+spamegg1@users.noreply.github.com>
Date: Fri, 17 Jul 2020 11:03:44 +0300
Subject: [PATCH 292/519] Update README.md
Removed LAFF, changed Parallel Programming
---
README.md | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/README.md b/README.md
index df947dcf1..97636e8b9 100644
--- a/README.md
+++ b/README.md
@@ -356,13 +356,12 @@ If not, or if a student chooses not to take the Capstone, then a separate Final
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Introduction to Parallel Programming](https://classroom.udacity.com/courses/cs344) ([alt](https://www.youtube.com/playlist?list=PLGvfHSgImk4aweyWlhBXNF6XISY3um82_)) ([HW](https://colab.research.google.com/github/depctg/udacity-cs344-colab))| 12 weeks | - | C, algorithms
+[Parallel Programming](https://www.coursera.org/learn/parprog1)| 4 weeks | 6-8 hours/week | Scala programming
[Compilers](https://www.edx.org/course/compilers) ([alt](https://www.youtube.com/playlist?list=PLDcmCgguL9rxPoVn2ykUFc8TOpLyDU5gx))| 9 weeks | 6-8 hours/week | none
[Introduction to Haskell](https://www.seas.upenn.edu/~cis194/fall16/)| 14 weeks | - | -
[Learn Prolog Now!](http://lpn.swi-prolog.org/lpnpage.php?pageid=top)| 12 weeks | - | -
[Software Debugging](https://www.udacity.com/course/software-debugging--cs259)| 8 weeks | 6 hours/week | Python, object-oriented programming
[Software Testing](https://www.udacity.com/course/software-testing--cs258) | 4 weeks | 6 hours/week | Python, programming experience
-[LAFF - On Programming for Correctness](https://www.edx.org/course/laff-on-programming-for-correctness) | 7 weeks | 6 hours/week | linear algebra
[Software Architecture & Design](https://www.udacity.com/course/software-architecture-design--ud821)| 8 weeks | 6 hours/week | software engineering in Java
### Advanced systems
From 885452dabc5c3e6ace64f69c53a20cef06fb6230 Mon Sep 17 00:00:00 2001
From: spamegg <4255997+spamegg1@users.noreply.github.com>
Date: Fri, 17 Jul 2020 11:07:38 +0300
Subject: [PATCH 293/519] Update courses.md
Moved Intro to Parallel Programming to Extras
---
extras/courses.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/extras/courses.md b/extras/courses.md
index 782e248ec..6df147508 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -41,6 +41,7 @@ Courses | Duration | Effort
Courses | Duration | Effort
:-- | :--: | :--:
[Cloud Computing / Distributed Programming](https://www.coursera.org/learn/cloud-computing) | 5 weeks | 5-10 hours/week
+[Introduction to Parallel Programming](https://classroom.udacity.com/courses/cs344) ([alt](https://www.youtube.com/playlist?list=PLGvfHSgImk4aweyWlhBXNF6XISY3um82_)) ([HW](https://colab.research.google.com/github/depctg/udacity-cs344-colab))| 12 weeks | 8-10 hours/week
[Intro to Computer Systems](http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15213-f15/www/) ([Labs](http://csapp.cs.cmu.edu/3e/labs.html)) | 15 weeks | 12 hours/week
[Great Ideas in Computer Architecture (Machine Structures)](https://inst.eecs.berkeley.edu/~cs61c/fa14/) ([Lectures](https://archive.org/details/ucberkeley_webcast_itunesu_915550404)) | 15 weeks | 12 hours/week
[Computer Architecture](https://www.coursera.org/learn/comparch) | - | 5-8 hours/week
From c43aee63da5aa14756f96738f8cb81bcc60fa9ad Mon Sep 17 00:00:00 2001
From: spamegg <4255997+spamegg1@users.noreply.github.com>
Date: Fri, 17 Jul 2020 11:09:46 +0300
Subject: [PATCH 294/519] Update readings.md
Removed Sheldon Axler's "Linear Algebra Done Right (FREE)" because it is no longer free after the end of July 2020. It was made free temporarily due to COVID-19.
---
extras/readings.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/extras/readings.md b/extras/readings.md
index 69f70fc10..2d1f6eca6 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -36,7 +36,6 @@ Name | Author(s)
[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
-[Linear Algebra Done Right (FREE)](https://link.springer.com/book/10.1007/978-3-319-11080-6) | Sheldon Axler
## Systems
From 899bb92281b50d5af823a4095bef400626ce9c3d Mon Sep 17 00:00:00 2001
From: Travis Brackett
Date: Sun, 19 Jul 2020 21:39:30 -0700
Subject: [PATCH 295/519] Python for Everyone > Python for Everybody
The course, book and website all say everybody instead of everyone. Just a little nit I noticed.
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 97636e8b9..4ac5b0b8a 100644
--- a/README.md
+++ b/README.md
@@ -121,7 +121,7 @@ If you've never written a for-loop, or don't know what a string is in programmin
Trying to decide between them?
-_Python for Everyone_ will introduce you to a popular language and will quickly move to practical programming tasks - using web APIs and databases. This will give you a taste of what many professional developers do.
+_Python for Everybody_ will introduce you to a popular language and will quickly move to practical programming tasks - using web APIs and databases. This will give you a taste of what many professional developers do.
_Fundamentals of Computing_ will also start by introducing you to Python. It then moves on to give an introduction to academic Computer Science topics, like sorting and recursion. This will give you a taste of what the following courses will be like. (Students who complete _Fundamentals of Computing_ can skip Intro to Computer Science and begin Introduction to CS Tools.)
@@ -131,7 +131,7 @@ _Fundamentals of Computing_ will also start by introducing you to Python. It the
Courses | Effort | Prerequisites
:-- | :--: | :--:
-[Python for Everyone](https://www.coursera.org/specializations/python) ([alt](https://www.py4e.com/)) | 58 hours | none
+[Python for Everybody](https://www.coursera.org/specializations/python) ([alt](https://www.py4e.com/)) | 58 hours | none
[Fundamentals of Computing](https://www.coursera.org/specializations/computer-fundamentals) | 138 hours | high school mathematics
### Introduction to Computer Science
From 26a7f90901a961f78cbf1896d98bffd6cb0302c0 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sat, 25 Jul 2020 11:15:01 -0500
Subject: [PATCH 296/519] Switch Python for Everybody link
Students regularly ask in Gitter how to audit Python for Everybody (Py4E). The instructor of Py4E has created a free version on a standalone site. This has been the alternate link. Instead this should be the main link.
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 4ac5b0b8a..0f58c99f3 100644
--- a/README.md
+++ b/README.md
@@ -131,7 +131,7 @@ _Fundamentals of Computing_ will also start by introducing you to Python. It the
Courses | Effort | Prerequisites
:-- | :--: | :--:
-[Python for Everybody](https://www.coursera.org/specializations/python) ([alt](https://www.py4e.com/)) | 58 hours | none
+[Python for Everybody](https://www.py4e.com/) | 58 hours | none
[Fundamentals of Computing](https://www.coursera.org/specializations/computer-fundamentals) | 138 hours | high school mathematics
### Introduction to Computer Science
From e92d1cd2e5017828e3193b6af383a32027121dab Mon Sep 17 00:00:00 2001
From: Cybermise
Date: Sat, 25 Jul 2020 18:02:16 +0100
Subject: [PATCH 297/519] Replace previous Probability course
Added a new probability course called Stat110 from Harvard, and moved the previous one to the extra courses page.
---
README.md | 2 +-
extras/courses.md | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 0f58c99f3..db032b643 100644
--- a/README.md
+++ b/README.md
@@ -217,7 +217,7 @@ Courses | Duration | Effort | Prerequisites
#### Probability
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Introduction to Probability - The Science of Uncertainty](https://www.edx.org/course/introduction-probability-science-mitx-6-041x-2) | 18 weeks | 12 hours/week | [Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/index.htm)
+[Harvard Stats110](https://projects.iq.harvard.edu/stat110/home) | 24 weeks | 12 hours/week | [Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/)
### Core Math
In addition to their math elective, students must complete the following course on discrete mathematics.
diff --git a/extras/courses.md b/extras/courses.md
index 6df147508..a0556bbe1 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -35,6 +35,7 @@ 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) | - | -
[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 | [Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/index.htm)
## Systems
From 405df431aa44e049ee40f9300586a556620cbdbd Mon Sep 17 00:00:00 2001
From: Cybermise <57189446+Cybermise@users.noreply.github.com>
Date: Sat, 25 Jul 2020 18:15:55 +0100
Subject: [PATCH 298/519] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index db032b643..4be3dcb83 100644
--- a/README.md
+++ b/README.md
@@ -217,7 +217,7 @@ Courses | Duration | Effort | Prerequisites
#### Probability
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Harvard Stats110](https://projects.iq.harvard.edu/stat110/home) | 24 weeks | 12 hours/week | [Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/)
+[Harvard Stat110](https://projects.iq.harvard.edu/stat110/home) | 24 weeks | 12 hours/week | [Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/)
### Core Math
In addition to their math elective, students must complete the following course on discrete mathematics.
From 54204c7c4ec8dc1f244a4d5a52a630e3a4dc6b8e Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sat, 25 Jul 2020 14:18:35 -0500
Subject: [PATCH 299/519] Add new question to FAQ
Tighten language on some FAQ answers
---
FAQ.md | 27 +++++++++++++++++++--------
1 file changed, 19 insertions(+), 8 deletions(-)
diff --git a/FAQ.md b/FAQ.md
index 9f6da9344..c7e753cd9 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -16,8 +16,9 @@ Alternatively, you could [contribute](#CONTRIBUTING.md) an answer yourself.
- [Why doesn't the curriculum cover/ignore topic X?](#why-doesnt-the-curriculum-coverignore-topic-x)
- [Why is the curriculum missing some pre-requisites?](#why-is-the-curriculum-missing-some-pre-requisites)
- [Why is the Firebase OSSU app different/broken?](#why-is-the-firebase-ossu-app-different-or-broken)
-- [What is a good course to learn the language XXXX?](#what-is-a-good-course-to-learn-this-particular-language)
+- [What is a good course to learn the language XXXX?](#what-is-a-good-course-to-learn-a-particular-language)
- [Why require experience with a sizable project before the Software Engineering courses?](#why-require-experience-with-a-sizable-project-before-the-Software-Engineering-courses)
+- [How can I review the math prerequisites?](#how-can-i-review-the-math-prerequisites)
## Questions
@@ -46,16 +47,13 @@ When attempting to enroll in such a course:
### Does every resource in the main curriculum have to be free?
-Yes, because we have to draw a line.
-As soon as we require paid resources in the main curriculum, we might as well tell people to pay half a million dollars to attend a university.
-We are an Internet-based community of learners, not a business, so free is the most sensible price and ensures that the only price you need pay is the price of Internet access.
+Yes, that is a core goal of OSSU.
-At the same time, we recognize that education is a scarce resource and therefore requires payment to instructors to make it sustainable in the long term.
+At the same time, we recognize that education is a resource that requires payment to instructors to make it sustainable in the long term.
Therefore, we respect the business model of websites like edX, which make their materials free but with some paid add-ons, like official certificates or extra interaction with course instructors.
So we only require that the *learning materials* of a resource be free to access, not that every possible add-on be free.
It would be ideal if graded assignments were always free but if we had this requirement, we would have to exclude any resource that doesn't have graded assignments at all.
-Plus, there are other ways to get feedback on your work, and OSSU is a do-it-yourself education.
### In what order should I take the courses?
@@ -99,7 +97,7 @@ The curriculum assumes two things:
- You have gotten through a standard high school curriculum that included physics and pre-calculus.
Without these assumptions, the curriculum would be out of control with trying to fill in your knowledge gaps.
-But those who for whatever reason didn't get all the way through high school math and physics are in luck: you can find the content you need on [Khan Academy](https://www.khanacademy.org/).
+For those who want to study math pre-requisites, read more [here](#how-can-i-review-the-math-prerequisites)
Of course, if you find that the curriculum is missing a pre-requisite for a course that isn't part of a normal high school curriculum, please let us know!
@@ -111,7 +109,7 @@ Unfortunately, the app has not been updated in many years. It does not reflect u
It is our hope that the creators of the Firebase app can bring the app up to date. Until that time, the firebase app should be considered a deprecated product that is no longer supported.
-### What is a good course to learn this particular language?
+### What is a good course to learn a particular language?
OSSU focuses on finding the best courses to learn computer science topics, and isn’t focused on finding language specific courses. If you are looking to learn a particular language or framework there are two great resources to check.
1. [Hackr.io](https://hackr.io/) allows users to submit and upvote learning resources for topics such as Python or the Java Spring Framework.
2. Most languages have a community on reddit. When you find the community’s page, check to see if there is a wiki or sidebar with resources. For example, see [/r/python](https://old.reddit.com/r/Python). Note that the sidebar content can be different depending on whether you use www.reddit.com or old.reddit.com.
@@ -119,4 +117,17 @@ OSSU focuses on finding the best courses to learn computer science topics, and i
### Why require experience with a sizable project before the Software Engineering courses?
Software engineering tries to solve the problem of dealing with large programs. Building a sizable program before taking the SE courses will help you understand what SE is trying to solve. We recommend the Jack-to-VM-code compiler project from the nand2tetris course because it's the first project in the curriculum that is complex enough to see value in a SE course. That said, any sizable project will do and can come from outside of the OSSU curriculum. The idea is that you've done some large enough project where the pieces started to feel unmanageable. This experience will expose pain points and lead to a better understanding of SE.
+### How can I review the math prerequisites?
+Many OSSU students choose to review math topics that they have not studied recently.
+OSSU recommends students use Khan Academy for such a review.
+Below are links to topic assessments.
+After taking an assessment, you should have a clear idea what topics to study, and resources on Khan Academy to use.
+- [Arithmetics](https://www.khanacademy.org/math/arithmetic#arithmetic-subject-challenge)
+- [Basic Geometry](https://www.khanacademy.org/math/basic-geo#basic-geo-subject-challenge)
+- [Pre-algebra](https://www.khanacademy.org/math/pre-algebra#pre-algebra-subject-challenge)
+- [High School Math 1](https://www.khanacademy.org/math/math1#math1-subject-challenge)
+- [High School Math 2](https://www.khanacademy.org/math/math2#math2-subject-challenge)
+- [High School Math 3](https://www.khanacademy.org/math/math3#math3-subject-challenge)
+
+(Math 1, 2, 3 covers all of algebra, pre-calculus, high school geometry, trig, stats. It interleaves the order of these topics.)
From 91d88dca4f35b12287413f0896401efb74d84ba0 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sat, 25 Jul 2020 14:24:41 -0500
Subject: [PATCH 300/519] Rearrange order of FAQ questions
---
FAQ.md | 76 +++++++++++++++++++++++++++++-----------------------------
1 file changed, 38 insertions(+), 38 deletions(-)
diff --git a/FAQ.md b/FAQ.md
index c7e753cd9..7740575c0 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -9,16 +9,16 @@ Alternatively, you could [contribute](#CONTRIBUTING.md) an answer yourself.
## Contents
- [Are Coursera courses free to access?](#are-coursera-courses-free-to-access)
-- [Does every resource in the main curriculum have to be free?](#does-every-resource-in-the-main-curriculum-have-to-be-free)
+- [How can I review the math prerequisites?](#how-can-i-review-the-math-prerequisites)
+- [What is a good course to learn a language (C++, Rust, Java, etc)?](#what-is-a-good-course-to-learn-a-particular-language)
+- [Why is the Firebase OSSU app different/broken?](#why-is-the-firebase-ossu-app-different-or-broken)
- [In what order should I take the courses?](#in-what-order-should-i-take-the-courses)
+- [Does every resource in the main curriculum have to be free?](#does-every-resource-in-the-main-curriculum-have-to-be-free)
- [Is it necessary to purchase the Verified Upgrade for edX courses?](#is-it-necessary-to-purchase-the-verified-upgrade-for-edx-courses)
- [Why do you recommend skipping the second half of CS50?](#why-do-you-recommend-skipping-the-second-half-of-cs50)
- [Why doesn't the curriculum cover/ignore topic X?](#why-doesnt-the-curriculum-coverignore-topic-x)
- [Why is the curriculum missing some pre-requisites?](#why-is-the-curriculum-missing-some-pre-requisites)
-- [Why is the Firebase OSSU app different/broken?](#why-is-the-firebase-ossu-app-different-or-broken)
-- [What is a good course to learn the language XXXX?](#what-is-a-good-course-to-learn-a-particular-language)
- [Why require experience with a sizable project before the Software Engineering courses?](#why-require-experience-with-a-sizable-project-before-the-Software-Engineering-courses)
-- [How can I review the math prerequisites?](#how-can-i-review-the-math-prerequisites)
## Questions
@@ -45,15 +45,33 @@ When attempting to enroll in such a course:

-### Does every resource in the main curriculum have to be free?
+### How can I review the math prerequisites?
+Many OSSU students choose to review math topics that they have not studied recently.
+OSSU recommends students use Khan Academy for such a review.
+Below are links to topic assessments.
+After taking an assessment, you should have a clear idea what topics to study, and resources on Khan Academy to use.
-Yes, that is a core goal of OSSU.
+- [Arithmetics](https://www.khanacademy.org/math/arithmetic#arithmetic-subject-challenge)
+- [Basic Geometry](https://www.khanacademy.org/math/basic-geo#basic-geo-subject-challenge)
+- [Pre-algebra](https://www.khanacademy.org/math/pre-algebra#pre-algebra-subject-challenge)
+- [High School Math 1](https://www.khanacademy.org/math/math1#math1-subject-challenge)
+- [High School Math 2](https://www.khanacademy.org/math/math2#math2-subject-challenge)
+- [High School Math 3](https://www.khanacademy.org/math/math3#math3-subject-challenge)
-At the same time, we recognize that education is a resource that requires payment to instructors to make it sustainable in the long term.
-Therefore, we respect the business model of websites like edX, which make their materials free but with some paid add-ons, like official certificates or extra interaction with course instructors.
+(Math 1, 2, 3 covers all of algebra, pre-calculus, high school geometry, trig, stats. It interleaves the order of these topics.)
-So we only require that the *learning materials* of a resource be free to access, not that every possible add-on be free.
-It would be ideal if graded assignments were always free but if we had this requirement, we would have to exclude any resource that doesn't have graded assignments at all.
+### What is a good course to learn a particular language?
+OSSU focuses on finding the best courses to learn computer science topics, and isn’t focused on finding language specific courses. If you are looking to learn a particular language or framework there are two great resources to check.
+1. [Hackr.io](https://hackr.io/) allows users to submit and upvote learning resources for topics such as Python or the Java Spring Framework.
+2. Most languages have a community on reddit. When you find the community’s page, check to see if there is a wiki or sidebar with resources. For example, see [/r/python](https://old.reddit.com/r/Python). Note that the sidebar content can be different depending on whether you use www.reddit.com or old.reddit.com.
+
+### Why is the Firebase OSSU app different or broken?
+
+The OSSU curriculum and ecosystem have been collaboratively built by many individuals. The Firebase app was one such contribution. When it was written, it was with the intention of helping future OSSU students.
+
+Unfortunately, the app has not been updated in many years. It does not reflect updates to the curriculum, it contains links to courses that no longer exist, and it has known bugs that prevent students from logging in.
+
+It is our hope that the creators of the Firebase app can bring the app up to date. Until that time, the firebase app should be considered a deprecated product that is no longer supported.
### In what order should I take the courses?
@@ -64,6 +82,16 @@ You have a few different options:
We have designed the curriculum to work for any of the above three styles.
+### Does every resource in the main curriculum have to be free?
+
+Yes, that is a core goal of OSSU.
+
+At the same time, we recognize that education is a resource that requires payment to instructors to make it sustainable in the long term.
+Therefore, we respect the business model of websites like edX, which make their materials free but with some paid add-ons, like official certificates or extra interaction with course instructors.
+
+So we only require that the *learning materials* of a resource be free to access, not that every possible add-on be free.
+It would be ideal if graded assignments were always free but if we had this requirement, we would have to exclude any resource that doesn't have graded assignments at all.
+
### Is it necessary to purchase the Verified Upgrade for edX courses?
If you just want to watch the videos, it is never necessary for any edX course on our curriculum.
@@ -101,33 +129,5 @@ For those who want to study math pre-requisites, read more [here](#how-can-i-rev
Of course, if you find that the curriculum is missing a pre-requisite for a course that isn't part of a normal high school curriculum, please let us know!
-### Why is the Firebase OSSU app different or broken?
-
-The OSSU curriculum and ecosystem have been collaboratively built by many individuals. The Firebase app was one such contribution. When it was written, it was with the intention of helping future OSSU students.
-
-Unfortunately, the app has not been updated in many years. It does not reflect updates to the curriculum, it contains links to courses that no longer exist, and it has known bugs that prevent students from logging in.
-
-It is our hope that the creators of the Firebase app can bring the app up to date. Until that time, the firebase app should be considered a deprecated product that is no longer supported.
-
-### What is a good course to learn a particular language?
-OSSU focuses on finding the best courses to learn computer science topics, and isn’t focused on finding language specific courses. If you are looking to learn a particular language or framework there are two great resources to check.
-1. [Hackr.io](https://hackr.io/) allows users to submit and upvote learning resources for topics such as Python or the Java Spring Framework.
-2. Most languages have a community on reddit. When you find the community’s page, check to see if there is a wiki or sidebar with resources. For example, see [/r/python](https://old.reddit.com/r/Python). Note that the sidebar content can be different depending on whether you use www.reddit.com or old.reddit.com.
-
### Why require experience with a sizable project before the Software Engineering courses?
Software engineering tries to solve the problem of dealing with large programs. Building a sizable program before taking the SE courses will help you understand what SE is trying to solve. We recommend the Jack-to-VM-code compiler project from the nand2tetris course because it's the first project in the curriculum that is complex enough to see value in a SE course. That said, any sizable project will do and can come from outside of the OSSU curriculum. The idea is that you've done some large enough project where the pieces started to feel unmanageable. This experience will expose pain points and lead to a better understanding of SE.
-
-### How can I review the math prerequisites?
-Many OSSU students choose to review math topics that they have not studied recently.
-OSSU recommends students use Khan Academy for such a review.
-Below are links to topic assessments.
-After taking an assessment, you should have a clear idea what topics to study, and resources on Khan Academy to use.
-
-- [Arithmetics](https://www.khanacademy.org/math/arithmetic#arithmetic-subject-challenge)
-- [Basic Geometry](https://www.khanacademy.org/math/basic-geo#basic-geo-subject-challenge)
-- [Pre-algebra](https://www.khanacademy.org/math/pre-algebra#pre-algebra-subject-challenge)
-- [High School Math 1](https://www.khanacademy.org/math/math1#math1-subject-challenge)
-- [High School Math 2](https://www.khanacademy.org/math/math2#math2-subject-challenge)
-- [High School Math 3](https://www.khanacademy.org/math/math3#math3-subject-challenge)
-
-(Math 1, 2, 3 covers all of algebra, pre-calculus, high school geometry, trig, stats. It interleaves the order of these topics.)
From de5fa40761e4e7b4f9672c6ee6b4eb9083e03bff Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sun, 2 Aug 2020 03:00:48 -0500
Subject: [PATCH 301/519] Simplify Intro to Programming
Resolves #763
---
README.md | 15 ++++-----------
1 file changed, 4 insertions(+), 11 deletions(-)
diff --git a/README.md b/README.md
index 4be3dcb83..5bfd8072d 100644
--- a/README.md
+++ b/README.md
@@ -117,22 +117,15 @@ and is knowledgeable enough now to decide which electives to take.
### Introduction to Programming
-If you've never written a for-loop, or don't know what a string is in programming, start here. Choose one of the two course series below. Either one will give you an introduction to programming that assumes no prior knowledge. You can audit either for free, _in order to do so, click through to the individual courses in the specializations_.
-
-Trying to decide between them?
-
-_Python for Everybody_ will introduce you to a popular language and will quickly move to practical programming tasks - using web APIs and databases. This will give you a taste of what many professional developers do.
-
-_Fundamentals of Computing_ will also start by introducing you to Python. It then moves on to give an introduction to academic Computer Science topics, like sorting and recursion. This will give you a taste of what the following courses will be like. (Students who complete _Fundamentals of Computing_ can skip Intro to Computer Science and begin Introduction to CS Tools.)
+If you've never written a for-loop, or don't know what a string is in programming, start here.
**Topics covered**:
`simple programs`
`simple data structures`
-Courses | Effort | Prerequisites
-:-- | :--: | :--:
-[Python for Everybody](https://www.py4e.com/) | 58 hours | none
-[Fundamentals of Computing](https://www.coursera.org/specializations/computer-fundamentals) | 138 hours | high school mathematics
+Courses | Duration | Effort | Prerequisites
+:-- | :--: | :--: | :--:
+[Python for Everybody](https://www.py4e.com/) | 14 weeks | 3 hours/week | none
### Introduction to Computer Science
From cbaae0a31c9f94159c5d901d2fdf08b42695d5ec Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sun, 16 Aug 2020 00:45:53 -0500
Subject: [PATCH 302/519] Raise duration estimate to match Coursera's estimate
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 5bfd8072d..86950b064 100644
--- a/README.md
+++ b/README.md
@@ -125,7 +125,7 @@ If you've never written a for-loop, or don't know what a string is in programmin
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Python for Everybody](https://www.py4e.com/) | 14 weeks | 3 hours/week | none
+[Python for Everybody](https://www.py4e.com/) | 34 weeks | 3 hours/week | none
### Introduction to Computer Science
From c2c0ef656d23348181fe1f41c3e62161868fdd01 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sun, 16 Aug 2020 00:53:37 -0500
Subject: [PATCH 303/519] Course listing should match course title
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 86950b064..e91add8fc 100644
--- a/README.md
+++ b/README.md
@@ -210,7 +210,7 @@ Courses | Duration | Effort | Prerequisites
#### Probability
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Harvard Stat110](https://projects.iq.harvard.edu/stat110/home) | 24 weeks | 12 hours/week | [Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/)
+[Probability](https://projects.iq.harvard.edu/stat110/home) | 24 weeks | 12 hours/week | [Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/)
### Core Math
In addition to their math elective, students must complete the following course on discrete mathematics.
From 6b7f68be6d8e5d203fe677b428bf22046b122ba5 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sun, 16 Aug 2020 00:26:26 -0500
Subject: [PATCH 304/519] Update .gitignore
---
.gitignore | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/.gitignore b/.gitignore
index 9e6fe6d95..b24cf9b6a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
.idea
*.swp
-*.swo
\ No newline at end of file
+*.swo
+.direnv/
+.envrc
From 16c2cd9e8a29f7cd78397d34022a5f8549a27e38 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sun, 16 Aug 2020 04:30:54 -0500
Subject: [PATCH 305/519] Use Stanford Database courses
Stanford Database courses had long been part of the OSSU curriculum. When Stanford pulled down their platform Lagunita, OSSU had to find a new offering. With the Stanford material back on edX, OSSU should return to this high quality offering.
Resolves #718
Resolves #709
---
README.md | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index e91add8fc..1ac23ce1d 100644
--- a/README.md
+++ b/README.md
@@ -318,7 +318,9 @@ Courses | Duration | Effort | Prerequisites
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Relational Database Systems](https://www.coursera.org/learn/relational-database)| 6 weeks | 3 hours/week | -
+[Relational Databases and SQL](https://www.edx.org/course/databases-5-sql)| 2 weeks | 10 hours/week | core programming
+[Databases: Modeling and Theory](https://www.edx.org/course/modeling-and-theory)| 2 weeks | 10 hours/week | [Relational Databases and SQL](https://www.edx.org/course/databases-5-sql)
+[Databases: Semistructured Data](https://www.edx.org/course/semistructured-data)| 2 weeks | 10 hours/week | core programming
[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
[Software Engineering: Introduction](https://www.edx.org/course/software-engineering-introduction-ubcx-softeng1x) | 6 weeks | 8-10 hours/week | Core Programming, and a [sizable project](FAQ.md#why-require-experience-with-a-sizable-project-before-the-Software-Engineering-courses)
From c6b2e818742a38f530a8c0d84ff5f791b85b210b Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sun, 16 Aug 2020 00:23:46 -0500
Subject: [PATCH 306/519] Change chat from Gitter to Discord
---
README.md | 128 +++++++++++++++++++++++++++---------------------------
1 file changed, 64 insertions(+), 64 deletions(-)
diff --git a/README.md b/README.md
index 1ac23ce1d..e4e8c3893 100644
--- a/README.md
+++ b/README.md
@@ -76,7 +76,7 @@ just remember that you can't purchase success!
# Community
-- We have a chat room! This should be your first stop to talk with other OSSU students. Why don't you introduce yourself right now? [Join the chat in Gitter](https://gitter.im/open-source-society/computer-science) [](https://gitter.im/open-source-society/computer-science?utm_campaign=pr-badge&utm_content=badge&utm_medium=badge&utm_source=badge)
+- We have a discord server! This should be your first stop to talk with other OSSU students. Why don't you introduce yourself right now? [Join the CS channel in OSSU Discord](https://discord.gg/5pUhfpX)
- You can also interact through [GitHub issues](https://github.com/ossu/computer-science/issues). If there is a problem with a course, or a change needs to be made to the curriculum, this is the place to start the conversation. Read more [here](CONTRIBUTING.md).
- Add **Open Source Society University** to your [Linkedin](https://www.linkedin.com/school/11272443/) profile!
- Note: There is an unmaintained and deprecated firebase app that you might find when searching OSSU. You can safely ignore it. Read more in the [FAQ](./FAQ.md#why-is-the-firebase-ossu-app-different-or-broken).
@@ -123,9 +123,9 @@ If you've never written a for-loop, or don't know what a string is in programmin
`simple programs`
`simple data structures`
-Courses | Duration | Effort | Prerequisites
-:-- | :--: | :--: | :--:
-[Python for Everybody](https://www.py4e.com/) | 34 weeks | 3 hours/week | none
+Courses | Duration | Effort | Prerequisites | Discussion
+:-- | :--: | :--: | :--: | :--:
+[Python for Everybody](https://www.py4e.com/) | 34 weeks | 3 hours/week | none | [chat](https://discord.gg/syA242Z)
### Introduction to Computer Science
@@ -137,9 +137,9 @@ This course will introduce you to the world of computer science. Students who ha
`basic data structures and algorithms`
`and more`
-Courses | Duration | Effort | Prerequisites
-:-- | :--: | :--: | :--:
-[Introduction to Computer Science and Programming using Python](https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x-10) ([alt](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/)) | 9 weeks | 15 hours/week | [high school algebra](https://www.khanacademy.org/math/algebra-home)
+Courses | Duration | Effort | Prerequisites | Discussion
+:-- | :--: | :--: | :--: | :--:
+[Introduction to Computer Science and Programming using Python](https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x-10) ([alt](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/)) | 9 weeks | 15 hours/week | [high school algebra](https://www.khanacademy.org/math/algebra-home) | [chat](https://discord.gg/jvchSm9)
### Introduction to CS Tools
Understanding theory is important, but you will also be expected to create programs. There are a number of tools that are widely used to make that process easier. Learn them now to ease your future work writing programs.
@@ -151,9 +151,9 @@ Understanding theory is important, but you will also be expected to create progr
`version control`
`and more`
-Courses | Duration | Effort | Prerequisites
-:-- | :--: | :--: | :--:
-[The Missing Semester of Your CS Education](https://missing.csail.mit.edu/) | 2 weeks | 12 hours/week | -
+Courses | Duration | Effort | Prerequisites | Discussion
+:-- | :--: | :--: | :--: | :--:
+[The Missing Semester of Your CS Education](https://missing.csail.mit.edu/) | 2 weeks | 12 hours/week | - | [chat](https://discord.gg/5FvKycS)
## Core CS
@@ -178,39 +178,39 @@ All coursework under Core CS is **required**, unless otherwise indicated.
The How to Code courses are based on the textbook [How to Design Programs](https://htdp.org/2003-09-26/). The First Edition is available for free online and includes problem sets and solutions. Students are encouraged to do these assignments.
-Courses | Duration | Effort | Prerequisites
-:-- | :--: | :--: | :--:
-[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
-[Programming Languages, Part A](https://www.coursera.org/learn/programming-languages) | 5 weeks | 4-8 hours/week | How to Code ([Hear instructor](https://www.coursera.org/lecture/programming-languages/recommended-background-k1yuh))
-[Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 4-8 hours/week | Programming Languages, Part A
-[Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 4-8 hours/week | Programming Languages, Part B
+Courses | Duration | Effort | Prerequisites | Discussion
+:-- | :--: | :--: | :--: | :--:
+[How to Code - Simple Data](https://www.edx.org/course/how-code-simple-data-ubcx-htc1x) | 7 weeks | 8-10 hours/week | none | [chat](https://discord.gg/RfqAmGJ)
+[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 | [chat](https://discord.gg/kczJzpm)
+[Programming Languages, Part A](https://www.coursera.org/learn/programming-languages) | 5 weeks | 4-8 hours/week | How to Code ([Hear instructor](https://www.coursera.org/lecture/programming-languages/recommended-background-k1yuh)) | [chat](https://discord.gg/8BkJtXN)
+[Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 4-8 hours/week | Programming Languages, Part A | [chat](https://discord.gg/EeA7VR9)
+[Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 4-8 hours/week | Programming Languages, Part B | [chat](https://discord.gg/8EZUVbA)
### Math Electives
**Students must choose one of the following topics**: calculus, linear algebra, logic, or probability.
#### Calculus
-Courses | Duration | Effort | Prerequisites
-:-- | :--: | :--: | :--:
-[Calculus 1A: Differentiation](https://www.edx.org/course/calculus-1a-differentiation) | 13 weeks | 6-10 hours/week | [pre-calculus](https://www.futurelearn.com/courses/precalculus)
-[Calculus 1B: Integration](https://www.edx.org/course/calculus-1b-integration) | 13 weeks | 5-10 hours/week | Calculus 1A
-[Calculus 1C: Coordinate Systems & Infinite Series](https://www.edx.org/course/calculus-1c-coordinate-systems-infinite-series) | 6 weeks | 5-10 hours/week | Calculus 1B
+Courses | Duration | Effort | Prerequisites | Discussion
+:-- | :--: | :--: | :--: | :--:
+[Calculus 1A: Differentiation](https://www.edx.org/course/calculus-1a-differentiation) | 13 weeks | 6-10 hours/week | [pre-calculus](https://www.futurelearn.com/courses/precalculus) | [chat](https://discord.gg/mPCt45F)
+[Calculus 1B: Integration](https://www.edx.org/course/calculus-1b-integration) | 13 weeks | 5-10 hours/week | Calculus 1A | [chat](https://discord.gg/sddAsZg)
+[Calculus 1C: Coordinate Systems & Infinite Series](https://www.edx.org/course/calculus-1c-coordinate-systems-infinite-series) | 6 weeks | 5-10 hours/week | Calculus 1B | [chat](https://discord.gg/FNEcNNq)
#### Linear Algebra
-Courses | Duration | Effort | Prerequisites
-:-- | :--: | :--: | :--:
-[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | [pre-calculus](https://www.futurelearn.com/courses/precalculus)
-[Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | 14 weeks | 12 hours/week | Essence of Linear Algebra
+Courses | Duration | Effort | Prerequisites | Discussion
+:-- | :--: | :--: | :--: | :--:
+[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | [pre-calculus](https://www.futurelearn.com/courses/precalculus) | [chat](https://discord.gg/m6wHbP6)
+[Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | 14 weeks | 12 hours/week | Essence of Linear Algebra | [chat](https://discord.gg/k7nSWJH)
#### Logic
-Courses | Duration | Effort | Prerequisites
-:-- | :--: | :--: | :--:
-[Introduction to Logic](https://www.coursera.org/learn/logic-introduction) | 10 weeks | 4-8 hours/week | [set theory](https://www.youtube.com/playlist?list=PL5KkMZvBpo5AH_5GpxMiryJT6Dkj32H6N)
+Courses | Duration | Effort | Prerequisites | Discussion
+:-- | :--: | :--: | :--: | :--:
+[Introduction to Logic](https://www.coursera.org/learn/logic-introduction) | 10 weeks | 4-8 hours/week | [set theory](https://www.youtube.com/playlist?list=PL5KkMZvBpo5AH_5GpxMiryJT6Dkj32H6N) | [chat](https://discord.gg/MbM2Gg5)
#### Probability
-Courses | Duration | Effort | Prerequisites
-:-- | :--: | :--: | :--:
-[Probability](https://projects.iq.harvard.edu/stat110/home) | 24 weeks | 12 hours/week | [Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/)
+Courses | Duration | Effort | Prerequisites | Discussion
+:-- | :--: | :--: | :--: | :--:
+[Probability](https://projects.iq.harvard.edu/stat110/home) | 24 weeks | 12 hours/week | [Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/) | [chat](https://discord.gg/UVjs9BU)
### Core Math
In addition to their math elective, students must complete the following course on discrete mathematics.
@@ -224,8 +224,8 @@ In addition to their math elective, students must complete the following course
`and more`
Courses | Duration | Effort | Notes | Prerequisites
-:-- | :--: | :--: | :--: | :--:
-[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 | An alternate version with solutions to the problem sets is [here](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2005/assignments/). Students struggling can consider the [Discrete Mathematics Specialization](https://www.coursera.org/specializations/discrete-mathematics) first. It is more interactive but less comprehensive, and costs money to unlock full interactivity. | Calculus 1C
+:-- | :--: | :--: | :--: | :--: | :--:
+[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 | An alternate version with solutions to the problem sets is [here](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2005/assignments/). Students struggling can consider the [Discrete Mathematics Specialization](https://www.coursera.org/specializations/discrete-mathematics) first. It is more interactive but less comprehensive, and costs money to unlock full interactivity. | Calculus 1C | [chat](https://discord.gg/EuTzNbF)
### Core systems
@@ -246,12 +246,12 @@ Courses | Duration | Effort | Notes | Prerequisites
`and more`
Courses | Duration | Effort | Additional Text / Assignments| 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 | After the sections on C, skip to the next course. [Why?](FAQ.md#why-do-you-recommend-skipping-the-second-half-of-cs50) | introductory programming
-[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 | - | C-like programming language
-[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | - | one of [these programming languages](https://user-images.githubusercontent.com/2046800/35426340-f6ce6358-026a-11e8-8bbb-4e95ac36b1d7.png), From Nand to Tetris Part I
-[Introduction to Computer Networking](https://www.youtube.com/playlist?list=PLEAYkSg4uSQ2dr0XO_Nwa5OcdEcaaELSG)| 8 weeks | 4–12 hours/week | [Assignment 1](https://github.com/PrincetonUniversity/COS461-Public/tree/master/assignments/assignment1)
[Assignment 2](https://www.scs.stanford.edu/10au-cs144/lab/reliable/reliable.html)
[Assignment 3](https://nptel.ac.in/content/storage2/courses/106105080/pdf/M2L7.pdf)
[Assignment 4](http://www-net.cs.umass.edu/wireshark-labs/Wireshark_TCP_v7.0.pdf) | algebra, probability, basic CS
-[Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/Classes/537/Spring2018/) | 10-12 weeks | 6 hours/week | - | algorithms
+:-- | :--: | :--: | :--: | :--: | :--:
+[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 | After the sections on C, skip to the next course. [Why?](FAQ.md#why-do-you-recommend-skipping-the-second-half-of-cs50) | introductory programming | [chat](https://discord.gg/NruSj5Q)
+[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 | - | C-like programming language | [chat](https://discord.gg/vxB2DRV)
+[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | - | one of [these programming languages](https://user-images.githubusercontent.com/2046800/35426340-f6ce6358-026a-11e8-8bbb-4e95ac36b1d7.png), From Nand to Tetris Part I | [chat](https://discord.gg/AsUXcPu)
+[Introduction to Computer Networking](https://www.youtube.com/playlist?list=PLEAYkSg4uSQ2dr0XO_Nwa5OcdEcaaELSG)| 8 weeks | 4–12 hours/week | [Assignment 1](https://github.com/PrincetonUniversity/COS461-Public/tree/master/assignments/assignment1)
[Assignment 2](https://www.scs.stanford.edu/10au-cs144/lab/reliable/reliable.html)
[Assignment 3](https://nptel.ac.in/content/storage2/courses/106105080/pdf/M2L7.pdf)
[Assignment 4](http://www-net.cs.umass.edu/wireshark-labs/Wireshark_TCP_v7.0.pdf) | algebra, probability, basic CS | [chat](https://discord.gg/MJ9YXyV)
+[Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/Classes/537/Spring2018/) | 10-12 weeks | 6 hours/week | - | algorithms | [chat](https://discord.gg/wZNgpep)
### Core theory
@@ -268,12 +268,12 @@ Courses | Duration | Effort | Additional Text / Assignments| Prerequisites
`NP-completeness`
`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 | any programming language, Mathematics for Computer Science
-[Graph Search, Shortest Paths, and Data Structures](https://www.coursera.org/learn/algorithms-graphs-data-structures) | 4 weeks | 4-8 hours/week | Divide and Conquer, Sorting and Searching, and Randomized Algorithms
-[Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming](https://www.coursera.org/learn/algorithms-greedy) | 4 weeks | 4-8 hours/week | Graph Search, Shortest Paths, and Data Structures
-[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 | Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming
+Courses | Duration | Effort | Prerequisites | Discussion
+:-- | :--: | :--: | :--: | :--:
+[Divide and Conquer, Sorting and Searching, and Randomized Algorithms](https://www.coursera.org/learn/algorithms-divide-conquer) | 4 weeks | 4-8 hours/week | any programming language, Mathematics for Computer Science | [chat](https://discord.gg/mKRS7tY)
+[Graph Search, Shortest Paths, and Data Structures](https://www.coursera.org/learn/algorithms-graphs-data-structures) | 4 weeks | 4-8 hours/week | Divide and Conquer, Sorting and Searching, and Randomized Algorithms | [chat](https://discord.gg/Qstqe4t)
+[Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming](https://www.coursera.org/learn/algorithms-greedy) | 4 weeks | 4-8 hours/week | Graph Search, Shortest Paths, and Data Structures | [chat](https://discord.gg/dWVvjuz)
+[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 | Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming | [chat](https://discord.gg/dYuY78u)
### Core Security
**Topics covered**
@@ -287,17 +287,17 @@ Courses | Duration | Effort | Prerequisites
Note: **_These courses are provisionally recommended_**. There is an open [Request For Comment](https://github.com/ossu/computer-science/issues/639) on security course selection. Contributors are encouraged to compare the various courses in the RFC and offer feedback.
-Courses | Duration | Effort | Prerequisites
-:-- | :--: | :--: | :--:
-[Information Security: Context and Introduction](https://www.coursera.org/learn/information-security-data) | 5 weeks | 3 hours/week | -
-[Principles of Secure Coding](https://www.coursera.org/learn/secure-coding-principles)| 4 weeks | 4 hours/week | -
-[Identifying Security Vulnerabilities](https://www.coursera.org/learn/identifying-security-vulnerabilities) | 4 weeks | 4 hours/week | -
+Courses | Duration | Effort | Prerequisites | Discussion
+:-- | :--: | :--: | :--: | :--:
+[Information Security: Context and Introduction](https://www.coursera.org/learn/information-security-data) | 5 weeks | 3 hours/week | - | [chat](https://discord.gg/8h6Rz8g)
+[Principles of Secure Coding](https://www.coursera.org/learn/secure-coding-principles)| 4 weeks | 4 hours/week | - | [chat](https://discord.gg/5gMdeSK)
+[Identifying Security Vulnerabilities](https://www.coursera.org/learn/identifying-security-vulnerabilities) | 4 weeks | 4 hours/week | - | [chat](https://discord.gg/V78MjUS)
Choose **one** of the following:
-Courses | Duration | Effort | Prerequisites
-:-- | :--: | :--: | :--:
-[Identifying Security Vulnerabilities in C/C++Programming](https://www.coursera.org/learn/identifying-security-vulnerabilities-c-programming) | 4 weeks | 5 hours/week | -
-[Exploiting and Securing Vulnerabilities in Java Applications](https://www.coursera.org/learn/exploiting-securing-vulnerabilities-java-applications) | 4 weeks | 5 hours/week | -
+Courses | Duration | Effort | Prerequisites | Discussion
+:-- | :--: | :--: | :--: | :--:
+[Identifying Security Vulnerabilities in C/C++Programming](https://www.coursera.org/learn/identifying-security-vulnerabilities-c-programming) | 4 weeks | 5 hours/week | - | [chat](https://discord.gg/Vbxce7A)
+[Exploiting and Securing Vulnerabilities in Java Applications](https://www.coursera.org/learn/exploiting-securing-vulnerabilities-java-applications) | 4 weeks | 5 hours/week | - | [chat](https://discord.gg/QxC22rR)
### Core applications
@@ -316,15 +316,15 @@ Courses | Duration | Effort | Prerequisites
`raytracing`
`and more`
-Courses | Duration | Effort | Prerequisites
-:-- | :--: | :--: | :--:
-[Relational Databases and SQL](https://www.edx.org/course/databases-5-sql)| 2 weeks | 10 hours/week | core programming
-[Databases: Modeling and Theory](https://www.edx.org/course/modeling-and-theory)| 2 weeks | 10 hours/week | [Relational Databases and SQL](https://www.edx.org/course/databases-5-sql)
-[Databases: Semistructured Data](https://www.edx.org/course/semistructured-data)| 2 weeks | 10 hours/week | core programming
-[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
-[Software Engineering: Introduction](https://www.edx.org/course/software-engineering-introduction-ubcx-softeng1x) | 6 weeks | 8-10 hours/week | Core Programming, and a [sizable project](FAQ.md#why-require-experience-with-a-sizable-project-before-the-Software-Engineering-courses)
-[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
+Courses | Duration | Effort | Prerequisites | Discussion
+:-- | :--: | :--: | :--: | :--:
+[Relational Databases and SQL](https://www.edx.org/course/databases-5-sql)| 2 weeks | 10 hours/week | core programming | [chat](https://discord.gg/P8SPPyF)
+[Databases: Modeling and Theory](https://www.edx.org/course/modeling-and-theory)| 2 weeks | 10 hours/week | [Relational Databases and SQL](https://www.edx.org/course/databases-5-sql) | [chat](https://discord.gg/pMFqNf4)
+[Databases: Semistructured Data](https://www.edx.org/course/semistructured-data)| 2 weeks | 10 hours/week | core programming | [chat](https://discord.gg/duCJ3GN)
+[Machine Learning](https://www.coursera.org/learn/machine-learning)| 11 weeks | 4-6 hours/week | linear algebra | [chat](https://discord.gg/NcXHDjy)
+[Computer Graphics](https://www.edx.org/course/computer-graphics-uc-san-diegox-cse167x)| 6 weeks | 12 hours/week | C++ or Java, linear algebra | [chat](https://discord.gg/68WqMNV)
+[Software Engineering: Introduction](https://www.edx.org/course/software-engineering-introduction-ubcx-softeng1x) | 6 weeks | 8-10 hours/week | Core Programming, and a [sizable project](FAQ.md#why-require-experience-with-a-sizable-project-before-the-Software-Engineering-courses) | [chat](https://discord.gg/5Qtcwtz)
+[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 | [chat](https://discord.gg/2FAujEZ)
## Advanced CS
From 522aa346da4d564068e5de99a757a116471ce925 Mon Sep 17 00:00:00 2001
From: Josh Hanson
Date: Sun, 16 Aug 2020 20:09:33 -0400
Subject: [PATCH 307/519] Add 'Discussion' header to Core Math and Core Systems
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index e4e8c3893..2f9f3b880 100644
--- a/README.md
+++ b/README.md
@@ -223,7 +223,7 @@ In addition to their math elective, students must complete the following course
`discrete probability`
`and more`
-Courses | Duration | Effort | Notes | Prerequisites
+Courses | Duration | Effort | Notes | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--: | :--:
[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 | An alternate version with solutions to the problem sets is [here](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2005/assignments/). Students struggling can consider the [Discrete Mathematics Specialization](https://www.coursera.org/specializations/discrete-mathematics) first. It is more interactive but less comprehensive, and costs money to unlock full interactivity. | Calculus 1C | [chat](https://discord.gg/EuTzNbF)
@@ -245,7 +245,7 @@ Courses | Duration | Effort | Notes | Prerequisites
`network protocols`
`and more`
-Courses | Duration | Effort | Additional Text / Assignments| Prerequisites
+Courses | Duration | Effort | Additional Text / Assignments| Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--: | :--:
[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 | After the sections on C, skip to the next course. [Why?](FAQ.md#why-do-you-recommend-skipping-the-second-half-of-cs50) | introductory programming | [chat](https://discord.gg/NruSj5Q)
[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 | - | C-like programming language | [chat](https://discord.gg/vxB2DRV)
From f38818729d564d7cf967554846bfb89e961e17c3 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sun, 23 Aug 2020 14:16:56 -0500
Subject: [PATCH 308/519] Re-add newsletter link
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index 2f9f3b880..a6deca817 100644
--- a/README.md
+++ b/README.md
@@ -78,6 +78,7 @@ just remember that you can't purchase success!
- We have a discord server! This should be your first stop to talk with other OSSU students. Why don't you introduce yourself right now? [Join the CS channel in OSSU Discord](https://discord.gg/5pUhfpX)
- You can also interact through [GitHub issues](https://github.com/ossu/computer-science/issues). If there is a problem with a course, or a change needs to be made to the curriculum, this is the place to start the conversation. Read more [here](CONTRIBUTING.md).
+- Subscribe to our [newsletter](https://tinyletter.com/ossu).
- Add **Open Source Society University** to your [Linkedin](https://www.linkedin.com/school/11272443/) profile!
- Note: There is an unmaintained and deprecated firebase app that you might find when searching OSSU. You can safely ignore it. Read more in the [FAQ](./FAQ.md#why-is-the-firebase-ossu-app-different-or-broken).
From 0046dac1afd90e0a73c1df104105d86098174959 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sun, 30 Aug 2020 00:49:10 -0500
Subject: [PATCH 309/519] Remove unnecessary coursework from Advanced Systems.
Resolves #772
---
README.md | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/README.md b/README.md
index a6deca817..e767bf60d 100644
--- a/README.md
+++ b/README.md
@@ -380,9 +380,7 @@ 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)1 | 7 weeks | 8-10 hours/week | [calculus](https://www.khanacademy.org/math/calculus-1), [basic mechanics](https://www.khanacademy.org/science/physics)
-[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) | 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 | [Nand2Tetris II](https://www.coursera.org/learn/nand2tetris2)
[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
From 2536c513e86d5c8777eab57ebc562092c1e92c35 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Thu, 3 Sep 2020 19:14:48 -0500
Subject: [PATCH 310/519] Delete reference to cohorts repo.
Cohorts repo was closed after an RFC.
Resolves #780
---
README.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/README.md b/README.md
index e767bf60d..7b282cc1a 100644
--- a/README.md
+++ b/README.md
@@ -62,7 +62,6 @@ Decide how much or how little to spend based on your own time and budget;
just remember that you can't purchase success!
**Process**. Students can work through the curriculum alone or in groups, in order or out of order.
-- For grouping up, please use the [cohorts repository](https://github.com/ossu/cohorts) to find or create a cohort suited to you.
- We recommend doing all courses in Core CS, only skipping a course when you are certain that you've already learned the material previously.
- For simplicity, we recommend working through courses (especially Core CS) in order from top to bottom, as they have already been [topologically sorted](https://en.wikipedia.org/wiki/Topological_sorting) by their prerequisites.
- Courses in Advanced CS are electives. Choose one subject (e.g. Advanced programming) you want to become an expert in and take all the courses under that heading. You can also create your own custom subject, but we recommend getting validation from the community on the subject you choose.
From 077d18bf650cf9b9ae7da130e3d075f6086ef063 Mon Sep 17 00:00:00 2001
From: spamegg
Date: Thu, 3 Sep 2020 12:05:47 +0300
Subject: [PATCH 311/519] Removed redundant note from Advanced Systems
The note was referring to Electricity & Magnetism classes, which were removed.
---
README.md | 6 ------
1 file changed, 6 deletions(-)
diff --git a/README.md b/README.md
index 7b282cc1a..f9ca4ff65 100644
--- a/README.md
+++ b/README.md
@@ -383,12 +383,6 @@ Courses | Duration | Effort | Prerequisites
[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
-**1 Note**:
-These courses assume knowledge of basic physics.
-([Why?](FAQ.md#why-is-the-curriculum-missing-some-pre-requisites))
-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)
-
### Advanced theory
**Topics covered**:
From 9743f25839ca144b38a08ac76054cdf1855d7f4e Mon Sep 17 00:00:00 2001
From: attackgnome
Date: Fri, 4 Sep 2020 09:45:25 -0600
Subject: [PATCH 312/519] Update HELP.md
A server admin will have to enable the discord widget in the settings for the discord server
---
HELP.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/HELP.md b/HELP.md
index ddf09a8b4..a37e6527e 100644
--- a/HELP.md
+++ b/HELP.md
@@ -2,7 +2,7 @@
## Check the FAQ!
Please check our [Frequently Asked Questions](https://github.com/ossu/computer-science/blob/master/FAQ.md) to see if your question has been addressed.
## Ask in the chat room
-OSSU uses Gitter for conversations. [Gitter](https://gitter.im/open-source-society/computer-science) is an online chat service, similar to Discord or IRC where you can chat with other students and get help. [](https://gitter.im/open-source-society/computer-science?utm_campaign=pr-badge&utm_content=badge&utm_medium=badge&utm_source=badge)
+OSSU uses discord for conversations. [discord](https://discord.gg/5pUhfpX) is an online chat service, similar to gitter or IRC where you can chat with other students and get help. [](https://discord.gg/5pUhfpX)
### Specific problems
If you need help successfully completing the content of a course or are having general technical difficulties, first reach out to the resources provided by the course (e.g. the course forum on Coursera, edX, etc). If you need additional help after that, make a post on gitter. **In your post, mention what steps you have already taken to try and solve the problem**.
### General problems
From 30f43d8ef1ae44aef8cbb98d0c03840a64cc56dc Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Fri, 11 Sep 2020 13:02:53 -0500
Subject: [PATCH 313/519] Update help.md
[#173862703]
Authored-by: Waciuma Wanjohi
---
HELP.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/HELP.md b/HELP.md
index a37e6527e..bf5f954a3 100644
--- a/HELP.md
+++ b/HELP.md
@@ -1,9 +1,9 @@
# Getting help
## Check the FAQ!
-Please check our [Frequently Asked Questions](https://github.com/ossu/computer-science/blob/master/FAQ.md) to see if your question has been addressed.
+Please check our [Frequently Asked Questions](FAQ.md) to see if your question has been addressed.
## Ask in the chat room
-OSSU uses discord for conversations. [discord](https://discord.gg/5pUhfpX) is an online chat service, similar to gitter or IRC where you can chat with other students and get help. [](https://discord.gg/5pUhfpX)
+Join the OSSU [Discord server](https://discord.gg/5pUhfpX)! Discord is an online chat service, similar to Slack or IRC where you can chat with other students and get help.
### Specific problems
-If you need help successfully completing the content of a course or are having general technical difficulties, first reach out to the resources provided by the course (e.g. the course forum on Coursera, edX, etc). If you need additional help after that, make a post on gitter. **In your post, mention what steps you have already taken to try and solve the problem**.
+If you need help successfully completing the content of a course or are having general technical difficulties, first reach out to the resources provided by the course (e.g. the course forum on Coursera, edX, etc). If you need additional help after that, post in Discord. **In your post, mention what steps you have already taken to try and solve the problem**.
### General problems
-If you have general problems with the program not specific to any course, such as preferring textbook-style learning over MOOCs, gitter is a good place to reach out to people who may have great suggestions.
+If you have general problems with the program not specific to any course, such as preferring textbook-style learning over MOOCs, Discord is a good place to reach out to people who may have great suggestions. You might form a working group that makes the next improvement to OSSU CS! Read more about contributing [here](CONTRIBUTING.md).
From bfcd055938d5f5d06877b428afe71ccdec522458 Mon Sep 17 00:00:00 2001
From: spamegg
Date: Mon, 14 Sep 2020 08:52:08 +0300
Subject: [PATCH 314/519] Replaced FutureLearn pre-calculus with Khan Academy
- To be more consistent with our Khan Academy recommendation elsewhere in the curriculum
- also some students expressed confusion with the FutureLearn course
---
README.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index f9ca4ff65..b945300bc 100644
--- a/README.md
+++ b/README.md
@@ -190,9 +190,10 @@ Courses | Duration | Effort | Prerequisites | Discussion
**Students must choose one of the following topics**: calculus, linear algebra, logic, or probability.
#### Calculus
+
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
-[Calculus 1A: Differentiation](https://www.edx.org/course/calculus-1a-differentiation) | 13 weeks | 6-10 hours/week | [pre-calculus](https://www.futurelearn.com/courses/precalculus) | [chat](https://discord.gg/mPCt45F)
+[Calculus 1A: Differentiation](https://www.edx.org/course/calculus-1a-differentiation) | 13 weeks | 6-10 hours/week | [pre-calculus](https://www.khanacademy.org/math/high-school-math) (you only need Mathematics 1, 2, 3) [FAQ](./FAQ.md#how-can-i-review-the-math-prerequisites) | [chat](https://discord.gg/mPCt45F)
[Calculus 1B: Integration](https://www.edx.org/course/calculus-1b-integration) | 13 weeks | 5-10 hours/week | Calculus 1A | [chat](https://discord.gg/sddAsZg)
[Calculus 1C: Coordinate Systems & Infinite Series](https://www.edx.org/course/calculus-1c-coordinate-systems-infinite-series) | 6 weeks | 5-10 hours/week | Calculus 1B | [chat](https://discord.gg/FNEcNNq)
From 60afe095b47719c292fc9105eced4856f31f3e5c Mon Sep 17 00:00:00 2001
From: spamegg
Date: Mon, 14 Sep 2020 11:51:58 +0300
Subject: [PATCH 315/519] Added link to Interactive Exercises from Kurose-Ross
textbook website
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index b945300bc..ad8841529 100644
--- a/README.md
+++ b/README.md
@@ -251,7 +251,7 @@ Courses | Duration | Effort | Additional Text / Assignments| Prerequisites | Dis
[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 | After the sections on C, skip to the next course. [Why?](FAQ.md#why-do-you-recommend-skipping-the-second-half-of-cs50) | introductory programming | [chat](https://discord.gg/NruSj5Q)
[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 | - | C-like programming language | [chat](https://discord.gg/vxB2DRV)
[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | - | one of [these programming languages](https://user-images.githubusercontent.com/2046800/35426340-f6ce6358-026a-11e8-8bbb-4e95ac36b1d7.png), From Nand to Tetris Part I | [chat](https://discord.gg/AsUXcPu)
-[Introduction to Computer Networking](https://www.youtube.com/playlist?list=PLEAYkSg4uSQ2dr0XO_Nwa5OcdEcaaELSG)| 8 weeks | 4–12 hours/week | [Assignment 1](https://github.com/PrincetonUniversity/COS461-Public/tree/master/assignments/assignment1)
[Assignment 2](https://www.scs.stanford.edu/10au-cs144/lab/reliable/reliable.html)
[Assignment 3](https://nptel.ac.in/content/storage2/courses/106105080/pdf/M2L7.pdf)
[Assignment 4](http://www-net.cs.umass.edu/wireshark-labs/Wireshark_TCP_v7.0.pdf) | algebra, probability, basic CS | [chat](https://discord.gg/MJ9YXyV)
+[Introduction to Computer Networking](https://www.youtube.com/playlist?list=PLEAYkSg4uSQ2dr0XO_Nwa5OcdEcaaELSG)| 8 weeks | 4–12 hours/week | [Assignment 1](https://github.com/PrincetonUniversity/COS461-Public/tree/master/assignments/assignment1)
[Assignment 2](https://www.scs.stanford.edu/10au-cs144/lab/reliable/reliable.html)
[Assignment 3](https://nptel.ac.in/content/storage2/courses/106105080/pdf/M2L7.pdf)
[Assignment 4](http://www-net.cs.umass.edu/wireshark-labs/Wireshark_TCP_v7.0.pdf)
[Interactive Problems](https://gaia.cs.umass.edu/kurose_ross/interactive/index.php) | algebra, probability, basic CS | [chat](https://discord.gg/MJ9YXyV)
[Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/Classes/537/Spring2018/) | 10-12 weeks | 6 hours/week | - | algorithms | [chat](https://discord.gg/wZNgpep)
### Core theory
From 8df8f919c6a3d2285dda85e860f376ea85c7324a Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Fri, 11 Sep 2020 13:55:20 -0500
Subject: [PATCH 316/519] Update FAQ language and order
[#173862703]
Authored-by: Waciuma Wanjohi
---
FAQ.md | 62 ++++++++++++++++++++++++----------------------------------
1 file changed, 26 insertions(+), 36 deletions(-)
diff --git a/FAQ.md b/FAQ.md
index 7740575c0..fe46cdf09 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -8,12 +8,12 @@ Alternatively, you could [contribute](#CONTRIBUTING.md) an answer yourself.
## Contents
-- [Are Coursera courses free to access?](#are-coursera-courses-free-to-access)
- [How can I review the math prerequisites?](#how-can-i-review-the-math-prerequisites)
- [What is a good course to learn a language (C++, Rust, Java, etc)?](#what-is-a-good-course-to-learn-a-particular-language)
- [Why is the Firebase OSSU app different/broken?](#why-is-the-firebase-ossu-app-different-or-broken)
- [In what order should I take the courses?](#in-what-order-should-i-take-the-courses)
- [Does every resource in the main curriculum have to be free?](#does-every-resource-in-the-main-curriculum-have-to-be-free)
+- [Are Coursera courses free to access?](#are-coursera-courses-free-to-access)
- [Is it necessary to purchase the Verified Upgrade for edX courses?](#is-it-necessary-to-purchase-the-verified-upgrade-for-edx-courses)
- [Why do you recommend skipping the second half of CS50?](#why-do-you-recommend-skipping-the-second-half-of-cs50)
- [Why doesn't the curriculum cover/ignore topic X?](#why-doesnt-the-curriculum-coverignore-topic-x)
@@ -22,29 +22,6 @@ Alternatively, you could [contribute](#CONTRIBUTING.md) an answer yourself.
## Questions
-### Are Coursera courses free to access?
-
-Some courses that require payment to access probably do exist on Coursera, but we don't put those on our curriculum.
-All Coursera courses that we put on the curriculum must, at minimum, be **free to audit**.
-For some courses, all course features are available for free;
-for others (especially those that are part of a specialization), you may only be able to access the lecture videos.
-(If you find the policies have changed for any courses on our curriculum, please tell us!)
-
-Unfortunately, for some courses, Coursera's interface is [very aggressive](https://darkpatterns.org/) about convincing you that you have to pay.
-
-You may see something like this on the course page:
-
-
-
-When attempting to enroll in such a course:
-- Click the blue "Enroll" or "Enroll Now" button.
-- A pop-up will appear.
-- **Do not click** "Start Free Trial", unless you do want to pay.
-- Find the text that says "Audit this course" at the bottom.
-- Click **Audit**.
-
-
-
### How can I review the math prerequisites?
Many OSSU students choose to review math topics that they have not studied recently.
OSSU recommends students use Khan Academy for such a review.
@@ -90,15 +67,34 @@ At the same time, we recognize that education is a resource that requires paymen
Therefore, we respect the business model of websites like edX, which make their materials free but with some paid add-ons, like official certificates or extra interaction with course instructors.
So we only require that the *learning materials* of a resource be free to access, not that every possible add-on be free.
-It would be ideal if graded assignments were always free but if we had this requirement, we would have to exclude any resource that doesn't have graded assignments at all.
+It would be ideal if graded assignments were always free. In the event that free assessments are not available OSSU looks for alternate assessments to pair with a course.
-### Is it necessary to purchase the Verified Upgrade for edX courses?
+### Are Coursera courses free to access?
+
+Some courses that require payment to access probably do exist on Coursera, but we don't put those on our curriculum.
+All Coursera courses that we put on the curriculum must, at minimum, be **free to audit**.
+For some courses, all course features are available for free;
+for others (especially those that are part of a specialization), you may only be able to access the lecture videos.
+(If you find the policies have changed for any courses on our curriculum, please tell us!)
+
+Unfortunately, for some courses, Coursera's interface is [very aggressive](https://darkpatterns.org/) about convincing you that you have to pay.
+
+You may see something like this on the course page:
-If you just want to watch the videos, it is never necessary for any edX course on our curriculum.
+
+
+When attempting to enroll in such a course:
+- Click the blue "Enroll" or "Enroll Now" button.
+- A pop-up will appear.
+- **Do not click** "Start Free Trial", unless you do want to pay.
+- Find the text that says "Audit this course" at the bottom.
+- Click **Audit**.
+
+
-CS50 doesn't use edX's grading system; it grades all assignments for free.
+### Is it necessary to purchase the Verified Upgrade for edX courses?
-The [Software Development](https://www.edx.org/micromasters/software-development) courses have mostly free quizzes and assignments, but their Final Projects will only be graded by a human if you pay.
+If you just want to watch the videos, it is never necessary for any edX course on our curriculum. Note that a number of edX courses only allow students to audit a course for the estimated number of weeks it takes to complete. Students should not begin a course until they are prepared to focus and complete the course.
### Why do you recommend skipping the second half of CS50?
@@ -110,13 +106,7 @@ That being said, feel free to finish CS50 if you like it and want to.
### Why doesn't the curriculum cover/ignore topic X?
-We have several goals that we have to balance:
-- Ensure students learn the timeless principles of computer science in the best possible way, pedagogically speaking.
-- Ensure students are given sufficient knowledge of today's systems to be employable in the near future.
-- Ensure students are exposed to enough cutting-edge knowledge that they won't be left behind when technology changes, which it always does.
-- Keep the curriculum brief enough that it can be completed in a reasonable amount of time.
-
-Therefore, not everything can be included, but we strive to be eclectic so that students are both employable and well-armed for change.
+You can read more about our curricular guidelines and the qualifications of the guidelines' authors [here](CURRICULAR_GUIDELINES.md). If you find a topic that is required by our guidelines and is not included in the curriculum, we should make a change! Read more about [contributing to a change](CONTRIBUTING.md).
### Why is the curriculum missing some pre-requisites?
From c4e5bfe497f0ed38a7004948943a2195eef9c270 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sun, 13 Sep 2020 01:49:55 -0500
Subject: [PATCH 317/519] Use Discord Widget
[#173862703]
Authored-by: Waciuma Wanjohi
---
HELP.md | 2 +-
README.md | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/HELP.md b/HELP.md
index bf5f954a3..f45250e1f 100644
--- a/HELP.md
+++ b/HELP.md
@@ -2,7 +2,7 @@
## Check the FAQ!
Please check our [Frequently Asked Questions](FAQ.md) to see if your question has been addressed.
## Ask in the chat room
-Join the OSSU [Discord server](https://discord.gg/5pUhfpX)! Discord is an online chat service, similar to Slack or IRC where you can chat with other students and get help.
+[](https://discord.gg/5pUhfpX) Join the OSSU [Discord server](https://discord.gg/5pUhfpX)! Discord is an online chat service, similar to Slack or IRC where you can chat with other students and get help.
### Specific problems
If you need help successfully completing the content of a course or are having general technical difficulties, first reach out to the resources provided by the course (e.g. the course forum on Coursera, edX, etc). If you need additional help after that, post in Discord. **In your post, mention what steps you have already taken to try and solve the problem**.
### General problems
diff --git a/README.md b/README.md
index ad8841529..d2f53afeb 100644
--- a/README.md
+++ b/README.md
@@ -75,7 +75,7 @@ just remember that you can't purchase success!
# Community
-- We have a discord server! This should be your first stop to talk with other OSSU students. Why don't you introduce yourself right now? [Join the CS channel in OSSU Discord](https://discord.gg/5pUhfpX)
+- We have a discord server! [](https://discord.gg/5pUhfpX) This should be your first stop to talk with other OSSU students. Why don't you introduce yourself right now? [Join the CS channel in OSSU Discord](https://discord.gg/5pUhfpX)
- You can also interact through [GitHub issues](https://github.com/ossu/computer-science/issues). If there is a problem with a course, or a change needs to be made to the curriculum, this is the place to start the conversation. Read more [here](CONTRIBUTING.md).
- Subscribe to our [newsletter](https://tinyletter.com/ossu).
- Add **Open Source Society University** to your [Linkedin](https://www.linkedin.com/school/11272443/) profile!
From 2eaff1b7014d5fa2d9ee7f0d09282d7ecb5cb856 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Wed, 16 Sep 2020 00:53:57 -0500
Subject: [PATCH 318/519] Update math prereq columns
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index d2f53afeb..ebf1ccc90 100644
--- a/README.md
+++ b/README.md
@@ -193,14 +193,14 @@ Courses | Duration | Effort | Prerequisites | Discussion
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
-[Calculus 1A: Differentiation](https://www.edx.org/course/calculus-1a-differentiation) | 13 weeks | 6-10 hours/week | [pre-calculus](https://www.khanacademy.org/math/high-school-math) (you only need Mathematics 1, 2, 3) [FAQ](./FAQ.md#how-can-i-review-the-math-prerequisites) | [chat](https://discord.gg/mPCt45F)
+[Calculus 1A: Differentiation](https://www.edx.org/course/calculus-1a-differentiation) | 13 weeks | 6-10 hours/week | [high school math](FAQ.md#how-can-i-review-the-math-prerequisites) | [chat](https://discord.gg/mPCt45F)
[Calculus 1B: Integration](https://www.edx.org/course/calculus-1b-integration) | 13 weeks | 5-10 hours/week | Calculus 1A | [chat](https://discord.gg/sddAsZg)
[Calculus 1C: Coordinate Systems & Infinite Series](https://www.edx.org/course/calculus-1c-coordinate-systems-infinite-series) | 6 weeks | 5-10 hours/week | Calculus 1B | [chat](https://discord.gg/FNEcNNq)
#### Linear Algebra
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
-[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | [pre-calculus](https://www.futurelearn.com/courses/precalculus) | [chat](https://discord.gg/m6wHbP6)
+[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | [high school math](FAQ.md#how-can-i-review-the-math-prerequisites) | [chat](https://discord.gg/m6wHbP6)
[Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | 14 weeks | 12 hours/week | Essence of Linear Algebra | [chat](https://discord.gg/k7nSWJH)
#### Logic
From 5c811fc9daded2e18818c3ce1ad87cd604ff90c4 Mon Sep 17 00:00:00 2001
From: bradleygrant
Date: Tue, 15 Sep 2020 23:17:23 -0600
Subject: [PATCH 319/519] Changed Py4E hours of effort to match OSSU expected
weekly effort levels
---
README.md | 4 ++--
computer-science | 1 +
2 files changed, 3 insertions(+), 2 deletions(-)
create mode 160000 computer-science
diff --git a/README.md b/README.md
index ebf1ccc90..d01cbf0b9 100644
--- a/README.md
+++ b/README.md
@@ -117,7 +117,7 @@ and is knowledgeable enough now to decide which electives to take.
### Introduction to Programming
-If you've never written a for-loop, or don't know what a string is in programming, start here.
+If you've never written a for-loop, or don't know what a string is in programming, start here. This course is self-paced, allowing you to adjust the number of hours you spend per week to meet your needs.
**Topics covered**:
`simple programs`
@@ -125,7 +125,7 @@ If you've never written a for-loop, or don't know what a string is in programmin
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
-[Python for Everybody](https://www.py4e.com/) | 34 weeks | 3 hours/week | none | [chat](https://discord.gg/syA242Z)
+[Python for Everybody](https://www.py4e.com/) | 10 weeks | 10 hours/week | none | [chat](https://discord.gg/syA242Z)
### Introduction to Computer Science
diff --git a/computer-science b/computer-science
new file mode 160000
index 000000000..30f43d8ef
--- /dev/null
+++ b/computer-science
@@ -0,0 +1 @@
+Subproject commit 30f43d8ef1ae44aef8cbb98d0c03840a64cc56dc
From a4146bfdb48a041c1a192604f35823eb36b35e82 Mon Sep 17 00:00:00 2001
From: bradleygrant
Date: Tue, 15 Sep 2020 23:40:38 -0600
Subject: [PATCH 320/519] Removed errant submodule added on prior commit
---
computer-science | 1 -
1 file changed, 1 deletion(-)
delete mode 160000 computer-science
diff --git a/computer-science b/computer-science
deleted file mode 160000
index 30f43d8ef..000000000
--- a/computer-science
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 30f43d8ef1ae44aef8cbb98d0c03840a64cc56dc
From c11f2e31e2b870afbc0ad8e459cd08dc2fd002f8 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Wed, 16 Sep 2020 22:12:06 -0500
Subject: [PATCH 321/519] Prerequisite section mention of high school math
links to FAQ
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index d01cbf0b9..b6ac7da11 100644
--- a/README.md
+++ b/README.md
@@ -108,7 +108,7 @@ just remember that you can't purchase success!
## Prerequisites
-- [Core CS](#core-cs) assumes the student has already taken [high school math](https://www.khanacademy.org/math/high-school-math), including algebra, geometry, and pre-calculus.
+- [Core CS](#core-cs) assumes the student has already taken [high school math](https://github.com/ossu/computer-science/blob/master/FAQ.md#how-can-i-review-the-math-prerequisites), including algebra, geometry, and pre-calculus.
- [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).
From a178aefc61e15657b1aaac5abb0e18cc556d8a93 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sat, 19 Sep 2020 22:39:37 -0500
Subject: [PATCH 322/519] Remove dead link.
Resolves #795
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index b6ac7da11..4a79977ad 100644
--- a/README.md
+++ b/README.md
@@ -353,7 +353,7 @@ If not, or if a student chooses not to take the Capstone, then a separate Final
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[Parallel Programming](https://www.coursera.org/learn/parprog1)| 4 weeks | 6-8 hours/week | Scala programming
-[Compilers](https://www.edx.org/course/compilers) ([alt](https://www.youtube.com/playlist?list=PLDcmCgguL9rxPoVn2ykUFc8TOpLyDU5gx))| 9 weeks | 6-8 hours/week | none
+[Compilers](https://www.edx.org/course/compilers) | 9 weeks | 6-8 hours/week | none
[Introduction to Haskell](https://www.seas.upenn.edu/~cis194/fall16/)| 14 weeks | - | -
[Learn Prolog Now!](http://lpn.swi-prolog.org/lpnpage.php?pageid=top)| 12 weeks | - | -
[Software Debugging](https://www.udacity.com/course/software-debugging--cs259)| 8 weeks | 6 hours/week | Python, object-oriented programming
From 16ee010cfc91fa40b26ff63da6f0f067f37c639b Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sat, 19 Sep 2020 22:46:29 -0500
Subject: [PATCH 323/519] Move the Missing Semester later in curriculum
Resolves #778
---
README.md | 32 ++++++++++++++++----------------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/README.md b/README.md
index 4a79977ad..a4877f5f6 100644
--- a/README.md
+++ b/README.md
@@ -89,10 +89,10 @@ just remember that you can't purchase success!
- [Intro CS](#intro-cs)
- [Introduction to Programming](#introduction-to-programming)
- [Introduction to Computer Science](#introduction-to-computer-science)
- - [Introduction to CS Tools](#introduction-to-cs-tools)
- [Core CS](#core-cs)
- [Core programming](#core-programming)
- [Core math](#core-math)
+ - [CS Tools](#cs-tools)
- [Core systems](#core-systems)
- [Core theory](#core-theory)
- [Core applications](#core-applications)
@@ -141,21 +141,6 @@ Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
[Introduction to Computer Science and Programming using Python](https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x-10) ([alt](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/)) | 9 weeks | 15 hours/week | [high school algebra](https://www.khanacademy.org/math/algebra-home) | [chat](https://discord.gg/jvchSm9)
-### Introduction to CS Tools
-Understanding theory is important, but you will also be expected to create programs. There are a number of tools that are widely used to make that process easier. Learn them now to ease your future work writing programs.
-
-**Topics covered**:
-`terminals and shell scripting`
-`vim`
-`command line environments`
-`version control`
-`and more`
-
-Courses | Duration | Effort | Prerequisites | Discussion
-:-- | :--: | :--: | :--: | :--:
-[The Missing Semester of Your CS Education](https://missing.csail.mit.edu/) | 2 weeks | 12 hours/week | - | [chat](https://discord.gg/5FvKycS)
-
-
## Core CS
All coursework under Core CS is **required**, unless otherwise indicated.
@@ -228,6 +213,21 @@ Courses | Duration | Effort | Notes | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--: | :--:
[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 | An alternate version with solutions to the problem sets is [here](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2005/assignments/). Students struggling can consider the [Discrete Mathematics Specialization](https://www.coursera.org/specializations/discrete-mathematics) first. It is more interactive but less comprehensive, and costs money to unlock full interactivity. | Calculus 1C | [chat](https://discord.gg/EuTzNbF)
+
+### CS Tools
+Understanding theory is important, but you will also be expected to create programs. There are a number of tools that are widely used to make that process easier. Learn them now to ease your future work writing programs.
+
+**Topics covered**:
+`terminals and shell scripting`
+`vim`
+`command line environments`
+`version control`
+`and more`
+
+Courses | Duration | Effort | Prerequisites | Discussion
+:-- | :--: | :--: | :--: | :--:
+[The Missing Semester of Your CS Education](https://missing.csail.mit.edu/) | 2 weeks | 12 hours/week | - | [chat](https://discord.gg/5FvKycS)
+
### Core systems
**Topics covered**:
From 1005ebc96eb3696a1f47ba4a69396fc98d6d49da Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sat, 19 Sep 2020 23:36:39 -0500
Subject: [PATCH 324/519] Clarify that OSSU is not working in partnership with
any org to offer degrees.
---
FAQ.md | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/FAQ.md b/FAQ.md
index fe46cdf09..f219e30cb 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -8,6 +8,7 @@ Alternatively, you could [contribute](#CONTRIBUTING.md) an answer yourself.
## Contents
+- [Does OSSU offer a degree?](#does-ossu-offer-a-degree)
- [How can I review the math prerequisites?](#how-can-i-review-the-math-prerequisites)
- [What is a good course to learn a language (C++, Rust, Java, etc)?](#what-is-a-good-course-to-learn-a-particular-language)
- [Why is the Firebase OSSU app different/broken?](#why-is-the-firebase-ossu-app-different-or-broken)
@@ -22,6 +23,9 @@ Alternatively, you could [contribute](#CONTRIBUTING.md) an answer yourself.
## Questions
+### Does OSSU offer a degree?
+No. OSSU creates guides to resources that will empower you to learn the curriculum of an undergraduate degree. Individuals who used to be involved in OSSU may be working with other organizations to offer degrees, but Open Source Society University is not involved in those efforts.
+
### How can I review the math prerequisites?
Many OSSU students choose to review math topics that they have not studied recently.
OSSU recommends students use Khan Academy for such a review.
From fe0fc125e2300b104bb4856f5276c04eabf78bfb Mon Sep 17 00:00:00 2001
From: silential
Date: Sun, 27 Sep 2020 15:58:32 -0700
Subject: [PATCH 325/519] Fixed Advanced Systems dead links
---
README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index a4877f5f6..fc11e8d88 100644
--- a/README.md
+++ b/README.md
@@ -380,9 +380,9 @@ Courses | Duration | Effort | Prerequisites
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[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 | [Nand2Tetris II](https://www.coursera.org/learn/nand2tetris2)
-[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
+[Computation Structures 1: Digital Circuits](https://www.edx.org/course/computation-structures-part-1-digital-circuits) | 10 weeks | 6 hours/week | [Nand2Tetris II](https://www.coursera.org/learn/nand2tetris2)
+[Computation Structures 2: Computer Architecture](https://www.edx.org/course/computation-structures-2-computer-architecture-2) | 10 weeks | 6 hours/week | Computation Structures 1
+[Computation Structures 3: Computer Organization](https://www.edx.org/course/computation-structures-3-computer-organization-2) | 10 weeks | 6 hours/week | Computation Structures 2
### Advanced theory
From 166b2a744fdb75192358fd4f4b3202fb6be5dc2c Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Mon, 5 Oct 2020 19:10:36 -0500
Subject: [PATCH 326/519] Match recommended calc to course listed prereqs
https://www.edx.org/course/introduction-to-probability
'Familiarity with U.S. high school level algebra concepts; Single-variable calculus: familiarity with matrices, derivatives and integrals.'
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index fc11e8d88..0094d99a4 100644
--- a/README.md
+++ b/README.md
@@ -196,7 +196,7 @@ Courses | Duration | Effort | Prerequisites | Discussion
#### Probability
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
-[Probability](https://projects.iq.harvard.edu/stat110/home) | 24 weeks | 12 hours/week | [Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/) | [chat](https://discord.gg/UVjs9BU)
+[Probability](https://projects.iq.harvard.edu/stat110/home) | 24 weeks | 12 hours/week | [Differentiation and Integration](https://www.edx.org/course/calculus-1b-integration) | [chat](https://discord.gg/UVjs9BU)
### Core Math
In addition to their math elective, students must complete the following course on discrete mathematics.
From f3e6b8608c05b6c2c21384de2c5dcca43f336ed0 Mon Sep 17 00:00:00 2001
From: Uniminin <42061747+Uniminin@users.noreply.github.com>
Date: Sun, 22 Nov 2020 19:32:41 +0600
Subject: [PATCH 327/519] replace dead link
Fix for [computer-science/issues/825](https://github.com/ossu/computer-science/issues/825)
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 0094d99a4..aac956b81 100644
--- a/README.md
+++ b/README.md
@@ -355,7 +355,7 @@ Courses | Duration | Effort | Prerequisites
[Parallel Programming](https://www.coursera.org/learn/parprog1)| 4 weeks | 6-8 hours/week | Scala programming
[Compilers](https://www.edx.org/course/compilers) | 9 weeks | 6-8 hours/week | none
[Introduction to Haskell](https://www.seas.upenn.edu/~cis194/fall16/)| 14 weeks | - | -
-[Learn Prolog Now!](http://lpn.swi-prolog.org/lpnpage.php?pageid=top)| 12 weeks | - | -
+[Learn Prolog Now!](http://www.learnprolognow.org/lpnpage.php?pageid=online)| 12 weeks | - | -
[Software Debugging](https://www.udacity.com/course/software-debugging--cs259)| 8 weeks | 6 hours/week | Python, object-oriented programming
[Software Testing](https://www.udacity.com/course/software-testing--cs258) | 4 weeks | 6 hours/week | Python, programming experience
[Software Architecture & Design](https://www.udacity.com/course/software-architecture-design--ud821)| 8 weeks | 6 hours/week | software engineering in Java
From a92b5077b4b0796b680d2a41472c594351ad3f35 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Mon, 30 Nov 2020 05:02:49 -0600
Subject: [PATCH 328/519] Update Newsletter Address
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index aac956b81..487f3788c 100644
--- a/README.md
+++ b/README.md
@@ -77,7 +77,7 @@ just remember that you can't purchase success!
- We have a discord server! [](https://discord.gg/5pUhfpX) This should be your first stop to talk with other OSSU students. Why don't you introduce yourself right now? [Join the CS channel in OSSU Discord](https://discord.gg/5pUhfpX)
- You can also interact through [GitHub issues](https://github.com/ossu/computer-science/issues). If there is a problem with a course, or a change needs to be made to the curriculum, this is the place to start the conversation. Read more [here](CONTRIBUTING.md).
-- Subscribe to our [newsletter](https://tinyletter.com/ossu).
+- Subscribe to our [newsletter](https://tinyletter.com/OpenSourceSocietyUniversity).
- Add **Open Source Society University** to your [Linkedin](https://www.linkedin.com/school/11272443/) profile!
- Note: There is an unmaintained and deprecated firebase app that you might find when searching OSSU. You can safely ignore it. Read more in the [FAQ](./FAQ.md#why-is-the-firebase-ossu-app-different-or-broken).
From f4ea0ce7f32339eeaba5ba5c423e9708b5a6c3e8 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Fri, 4 Dec 2020 17:04:36 -0600
Subject: [PATCH 329/519] Add link to completion estimate chart
Discord user crokei26#1613 created an initial version of this great resource. A huge thanks to them!
---
README.md | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 487f3788c..88dc9266a 100644
--- a/README.md
+++ b/README.md
@@ -50,10 +50,7 @@ they belong in [extras/courses](extras/courses.md) or [extras/readings](extras/r
- *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
-**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 are specified so that you can design a logical but non-linear progression
-based on the class schedules and your own life plans.
+**Duration**. It is possible to finish within about 2 years if you plan carefully and devote roughly 20 hours/week to your studies. Learners can use [this spreadsheet](https://docs.google.com/spreadsheets/d/1bkUU90y4rKYQHwY5AR2iX6iiPTrPEsYs75GkCAkrgm4/edit#gid=1428855662) to estimate their end date. If you make a personal copy you can enter your actual course completion dates in the `Curriculum Data` sheet and get updated completion estimates.
**Cost**. All or nearly all course material 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).
From b7732e02fa0f1d9a16b4273fb31c50baadd6877c Mon Sep 17 00:00:00 2001
From: spamegg
Date: Fri, 11 Dec 2020 21:15:13 +0300
Subject: [PATCH 330/519] Removed Formal Concept Analysis (fixes #818)
- fixes #818
- removed `CUDA` and `GPU programming` from topics (left over from before)
---
README.md | 4 ----
1 file changed, 4 deletions(-)
diff --git a/README.md b/README.md
index 88dc9266a..ba0a722c9 100644
--- a/README.md
+++ b/README.md
@@ -339,8 +339,6 @@ If not, or if a student chooses not to take the Capstone, then a separate Final
**Topics covered**:
`debugging theory and practice`
`goal-oriented programming`
-`GPU programming`
-`CUDA`
`parallel computing`
`object-oriented analysis and design`
`UML`
@@ -396,7 +394,6 @@ Courses | Duration | Effort | Prerequisites
`propositional logic`
`relational logic`
`Herbrand logic`
-`concept lattices`
`game trees`
`and more`
@@ -404,7 +401,6 @@ Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[Theory of Computation](http://aduni.org/courses/theory/index.php?view=cw) ([Lectures](https://www.youtube.com/playlist?list=PLTke5lHMAdSNmi57H0DOTzClHPK6UwSTN)) | 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 | 3 hours/week | mathematical thinking, probability, calculus
### Advanced applications
From 4362ea8ebadfb2100bcad8d327422fe9e446a8e3 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sun, 13 Dec 2020 16:02:15 -0600
Subject: [PATCH 331/519] Direct Py4E students directly to the lessons
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index ba0a722c9..7e5a83cae 100644
--- a/README.md
+++ b/README.md
@@ -122,7 +122,7 @@ If you've never written a for-loop, or don't know what a string is in programmin
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
-[Python for Everybody](https://www.py4e.com/) | 10 weeks | 10 hours/week | none | [chat](https://discord.gg/syA242Z)
+[Python for Everybody](https://www.py4e.com/lessons) | 10 weeks | 10 hours/week | none | [chat](https://discord.gg/syA242Z)
### Introduction to Computer Science
From b13ed89fd35add16ff11f3877049920c231cf738 Mon Sep 17 00:00:00 2001
From: Alaharon123 <34926441+Alaharon123@users.noreply.github.com>
Date: Fri, 18 Dec 2020 13:51:45 -0500
Subject: [PATCH 332/519] Switch Math for CS from OCW to OLL
Implement #832
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 7e5a83cae..d1b04c93a 100644
--- a/README.md
+++ b/README.md
@@ -208,7 +208,7 @@ In addition to their math elective, students must complete the following course
Courses | Duration | Effort | Notes | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--: | :--:
-[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 | An alternate version with solutions to the problem sets is [here](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2005/assignments/). Students struggling can consider the [Discrete Mathematics Specialization](https://www.coursera.org/specializations/discrete-mathematics) first. It is more interactive but less comprehensive, and costs money to unlock full interactivity. | Calculus 1C | [chat](https://discord.gg/EuTzNbF)
+[Mathematics for Computer Science](https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about) ([alt](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 | An alternate version with solutions to the problem sets is [here](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2005/assignments/). Students struggling can consider the [Discrete Mathematics Specialization](https://www.coursera.org/specializations/discrete-mathematics) first. It is more interactive but less comprehensive, and costs money to unlock full interactivity. | Calculus 1C | [chat](https://discord.gg/EuTzNbF)
### CS Tools
From 0b2f86e33e63d3d3149546a0080cf84eab41580c Mon Sep 17 00:00:00 2001
From: Uniminin <42061747+Uniminin@users.noreply.github.com>
Date: Thu, 17 Dec 2020 19:31:29 +0600
Subject: [PATCH 333/519] add two new books on systems
---
extras/readings.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/extras/readings.md b/extras/readings.md
index 2d1f6eca6..812f2d303 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -48,6 +48,8 @@ Name | Author(s)
[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
+[Operating Systems Design and Implementation](https://www.amazon.com/Operating-Systems-Design-Implementation-3rd/dp/0131429388) | Andrew S. Tanenbaum, Albert S. Woodhull
+[Principles of Compiler Design](https://www.amazon.com/Principles-Compiler-Addison-Wesley-information-processing/dp/0201000229) | Alfred Aho, Jeffrey Ullman
[Distributed Systems Reading Group](http://dsrg.pdos.csail.mit.edu/papers/) | Various
[System Design: Design large-scale systems](https://github.com/donnemartin/system-design-primer) | Various
From 33a03e70c823618b94324138d5d1dece42b0c9bd Mon Sep 17 00:00:00 2001
From: Alaharon123 <34926441+Alaharon123@users.noreply.github.com>
Date: Sun, 20 Dec 2020 22:20:01 -0500
Subject: [PATCH 334/519] Add section to FAQ about alts
---
FAQ.md | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/FAQ.md b/FAQ.md
index f219e30cb..be02bcbd2 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -16,6 +16,7 @@ Alternatively, you could [contribute](#CONTRIBUTING.md) an answer yourself.
- [Does every resource in the main curriculum have to be free?](#does-every-resource-in-the-main-curriculum-have-to-be-free)
- [Are Coursera courses free to access?](#are-coursera-courses-free-to-access)
- [Is it necessary to purchase the Verified Upgrade for edX courses?](#is-it-necessary-to-purchase-the-verified-upgrade-for-edx-courses)
+- [What are the alt links?](#what-are-the-alt-links)
- [Why do you recommend skipping the second half of CS50?](#why-do-you-recommend-skipping-the-second-half-of-cs50)
- [Why doesn't the curriculum cover/ignore topic X?](#why-doesnt-the-curriculum-coverignore-topic-x)
- [Why is the curriculum missing some pre-requisites?](#why-is-the-curriculum-missing-some-pre-requisites)
@@ -100,6 +101,10 @@ When attempting to enroll in such a course:
If you just want to watch the videos, it is never necessary for any edX course on our curriculum. Note that a number of edX courses only allow students to audit a course for the estimated number of weeks it takes to complete. Students should not begin a course until they are prepared to focus and complete the course.
+### What are the alt links?
+
+Alternative hosts for the material. Sometimes a course is on multiple platforms that are reasonably similar in quality so we have an alt or two linked in case the main one isn't being offered at the time or you prefer the other one. Both are just as good, go with whichever you prefer or whichever is available when you want to take the course.
+
### Why do you recommend skipping the second half of CS50?
The strongest and most useful part of CS50 is the part where they teach C.
From e94c974ad7dc04888142f9fbd2f793d34efd576b Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sun, 20 Dec 2020 21:38:42 -0600
Subject: [PATCH 335/519] Sharpen FAQ answer language
---
FAQ.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/FAQ.md b/FAQ.md
index be02bcbd2..d25b144bd 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -103,7 +103,7 @@ If you just want to watch the videos, it is never necessary for any edX course o
### What are the alt links?
-Alternative hosts for the material. Sometimes a course is on multiple platforms that are reasonably similar in quality so we have an alt or two linked in case the main one isn't being offered at the time or you prefer the other one. Both are just as good, go with whichever you prefer or whichever is available when you want to take the course.
+Sometimes a course is on multiple platforms that are reasonably similar in quality so we have an alt or two linked in case the main one isn't being offered at the time or you prefer the other one. Both are just as good, go with whichever you prefer or whichever is available when you want to take the course.
### Why do you recommend skipping the second half of CS50?
From 1d5b3198d61b21694af16c7d0f948e32ced568f2 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Tue, 29 Dec 2020 14:27:01 -0600
Subject: [PATCH 336/519] Remove direct link to issues
We often get issues opened that are empty, with no text or description of a problem. This may be because learners follow the link from the Community section, and post in order to interact. By removing the link (but keeping the link to the contributing instructions) we can hopefully direct new learners in how to interact productively.
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index d1b04c93a..b0b13da44 100644
--- a/README.md
+++ b/README.md
@@ -73,7 +73,7 @@ just remember that you can't purchase success!
# Community
- We have a discord server! [](https://discord.gg/5pUhfpX) This should be your first stop to talk with other OSSU students. Why don't you introduce yourself right now? [Join the CS channel in OSSU Discord](https://discord.gg/5pUhfpX)
-- You can also interact through [GitHub issues](https://github.com/ossu/computer-science/issues). If there is a problem with a course, or a change needs to be made to the curriculum, this is the place to start the conversation. Read more [here](CONTRIBUTING.md).
+- You can also interact through GitHub issues. If there is a problem with a course, or a change needs to be made to the curriculum, this is the place to start the conversation. Read more [here](CONTRIBUTING.md).
- Subscribe to our [newsletter](https://tinyletter.com/OpenSourceSocietyUniversity).
- Add **Open Source Society University** to your [Linkedin](https://www.linkedin.com/school/11272443/) profile!
- Note: There is an unmaintained and deprecated firebase app that you might find when searching OSSU. You can safely ignore it. Read more in the [FAQ](./FAQ.md#why-is-the-firebase-ossu-app-different-or-broken).
From d4c50dc1535a670e37a2825dbb5906f84cb57ff4 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sat, 2 Jan 2021 20:46:56 -0600
Subject: [PATCH 337/519] Move CS50 to Courses/Extras
Resolves #833
---
FAQ.md | 9 ---------
README.md | 3 +--
extras/courses.md | 1 +
3 files changed, 2 insertions(+), 11 deletions(-)
diff --git a/FAQ.md b/FAQ.md
index d25b144bd..4b65b7c4e 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -17,7 +17,6 @@ Alternatively, you could [contribute](#CONTRIBUTING.md) an answer yourself.
- [Are Coursera courses free to access?](#are-coursera-courses-free-to-access)
- [Is it necessary to purchase the Verified Upgrade for edX courses?](#is-it-necessary-to-purchase-the-verified-upgrade-for-edx-courses)
- [What are the alt links?](#what-are-the-alt-links)
-- [Why do you recommend skipping the second half of CS50?](#why-do-you-recommend-skipping-the-second-half-of-cs50)
- [Why doesn't the curriculum cover/ignore topic X?](#why-doesnt-the-curriculum-coverignore-topic-x)
- [Why is the curriculum missing some pre-requisites?](#why-is-the-curriculum-missing-some-pre-requisites)
- [Why require experience with a sizable project before the Software Engineering courses?](#why-require-experience-with-a-sizable-project-before-the-Software-Engineering-courses)
@@ -105,14 +104,6 @@ If you just want to watch the videos, it is never necessary for any edX course o
Sometimes a course is on multiple platforms that are reasonably similar in quality so we have an alt or two linked in case the main one isn't being offered at the time or you prefer the other one. Both are just as good, go with whichever you prefer or whichever is available when you want to take the course.
-### Why do you recommend skipping the second half of CS50?
-
-The strongest and most useful part of CS50 is the part where they teach C.
-We are retaining this in the curriculum for now because it is one of the few chances the student has to play with manual memory management in a (relatively) low-level language.
-By learning C, students will also have a much easier time getting through the following course, Nand2Tetris.
-
-That being said, feel free to finish CS50 if you like it and want to.
-
### Why doesn't the curriculum cover/ignore topic X?
You can read more about our curricular guidelines and the qualifications of the guidelines' authors [here](CURRICULAR_GUIDELINES.md). If you find a topic that is required by our guidelines and is not included in the curriculum, we should make a change! Read more about [contributing to a change](CONTRIBUTING.md).
diff --git a/README.md b/README.md
index b0b13da44..1fd71c82f 100644
--- a/README.md
+++ b/README.md
@@ -245,11 +245,10 @@ Courses | Duration | Effort | Prerequisites | Discussion
Courses | Duration | Effort | Additional Text / Assignments| Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--: | :--:
-[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 | After the sections on C, skip to the next course. [Why?](FAQ.md#why-do-you-recommend-skipping-the-second-half-of-cs50) | introductory programming | [chat](https://discord.gg/NruSj5Q)
[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 | - | C-like programming language | [chat](https://discord.gg/vxB2DRV)
[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | - | one of [these programming languages](https://user-images.githubusercontent.com/2046800/35426340-f6ce6358-026a-11e8-8bbb-4e95ac36b1d7.png), From Nand to Tetris Part I | [chat](https://discord.gg/AsUXcPu)
+[Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/Classes/537/Spring2018/) | 10-12 weeks | 6 hours/week | - | algorithms, [familiarity with C](https://hackr.io/tutorials/learn-c?sort=upvotes&type_tags%5B%5D=1) is useful | [chat](https://discord.gg/wZNgpep)
[Introduction to Computer Networking](https://www.youtube.com/playlist?list=PLEAYkSg4uSQ2dr0XO_Nwa5OcdEcaaELSG)| 8 weeks | 4–12 hours/week | [Assignment 1](https://github.com/PrincetonUniversity/COS461-Public/tree/master/assignments/assignment1)
[Assignment 2](https://www.scs.stanford.edu/10au-cs144/lab/reliable/reliable.html)
[Assignment 3](https://nptel.ac.in/content/storage2/courses/106105080/pdf/M2L7.pdf)
[Assignment 4](http://www-net.cs.umass.edu/wireshark-labs/Wireshark_TCP_v7.0.pdf)
[Interactive Problems](https://gaia.cs.umass.edu/kurose_ross/interactive/index.php) | algebra, probability, basic CS | [chat](https://discord.gg/MJ9YXyV)
-[Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/Classes/537/Spring2018/) | 10-12 weeks | 6 hours/week | - | algorithms | [chat](https://discord.gg/wZNgpep)
### Core theory
diff --git a/extras/courses.md b/extras/courses.md
index a0556bbe1..46243a4bf 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -9,6 +9,7 @@ or that there was an alternative that fit better into the curriculum.
Courses | Duration | Effort
:-- | :--: | :--:
[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 - CS50](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x#!) ([alt](https://cs50.harvard.edu/)) | 12 weeks | 10-20 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)| - | -
From 645917ac90d4d4076bb7de20c0ff1b26eebd8cf6 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Tue, 5 Jan 2021 22:25:19 -0600
Subject: [PATCH 338/519] Remove prereq not mentioned by course creators
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 1fd71c82f..b7c1cb027 100644
--- a/README.md
+++ b/README.md
@@ -316,7 +316,7 @@ Courses | Duration | Effort | Prerequisites | Discussion
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
[Relational Databases and SQL](https://www.edx.org/course/databases-5-sql)| 2 weeks | 10 hours/week | core programming | [chat](https://discord.gg/P8SPPyF)
-[Databases: Modeling and Theory](https://www.edx.org/course/modeling-and-theory)| 2 weeks | 10 hours/week | [Relational Databases and SQL](https://www.edx.org/course/databases-5-sql) | [chat](https://discord.gg/pMFqNf4)
+[Databases: Modeling and Theory](https://www.edx.org/course/modeling-and-theory)| 2 weeks | 10 hours/week | core programming | [chat](https://discord.gg/pMFqNf4)
[Databases: Semistructured Data](https://www.edx.org/course/semistructured-data)| 2 weeks | 10 hours/week | core programming | [chat](https://discord.gg/duCJ3GN)
[Machine Learning](https://www.coursera.org/learn/machine-learning)| 11 weeks | 4-6 hours/week | linear algebra | [chat](https://discord.gg/NcXHDjy)
[Computer Graphics](https://www.edx.org/course/computer-graphics-uc-san-diegox-cse167x)| 6 weeks | 12 hours/week | C++ or Java, linear algebra | [chat](https://discord.gg/68WqMNV)
From 0ef1801cddb6fe91467ab8c4d37a771ff02ca351 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sun, 17 Jan 2021 18:09:04 -0600
Subject: [PATCH 339/519] Remove topic that is not covered in the section
---
README.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/README.md b/README.md
index b7c1cb027..819057dda 100644
--- a/README.md
+++ b/README.md
@@ -150,7 +150,6 @@ All coursework under Core CS is **required**, unless otherwise indicated.
`common design patterns`
`unit testing`
`object-oriented design`
-`Java`
`static typing`
`dynamic typing`
`ML-family languages (via Standard ML)`
From 03ad94e0d365569fe17d66d4cea224d3137c2e4d Mon Sep 17 00:00:00 2001
From: Silent <64616976+Silential@users.noreply.github.com>
Date: Sun, 17 Jan 2021 22:15:07 -0800
Subject: [PATCH 340/519] changed the discord invites
Changed the 2 invite links (one inside the svg) to direct to the #welcome discord channel. Also changed some relevant language.
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 819057dda..322c8c159 100644
--- a/README.md
+++ b/README.md
@@ -72,7 +72,7 @@ just remember that you can't purchase success!
# Community
-- We have a discord server! [](https://discord.gg/5pUhfpX) This should be your first stop to talk with other OSSU students. Why don't you introduce yourself right now? [Join the CS channel in OSSU Discord](https://discord.gg/5pUhfpX)
+- We have a discord server! [](https://discord.gg/wuytwK5s9h) This should be your first stop to talk with other OSSU students. Why don't you introduce yourself right now? [Join the OSSU Discord](https://discord.gg/wuytwK5s9h)
- You can also interact through GitHub issues. If there is a problem with a course, or a change needs to be made to the curriculum, this is the place to start the conversation. Read more [here](CONTRIBUTING.md).
- Subscribe to our [newsletter](https://tinyletter.com/OpenSourceSocietyUniversity).
- Add **Open Source Society University** to your [Linkedin](https://www.linkedin.com/school/11272443/) profile!
From 2eaf5636cce24da02eae0e3849dc0c371cd37b18 Mon Sep 17 00:00:00 2001
From: Tyler Miller
Date: Tue, 26 Jan 2021 13:58:49 -0500
Subject: [PATCH 341/519] Update Game Design specialization
Bump to new version
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 322c8c159..a4874f5b8 100644
--- a/README.md
+++ b/README.md
@@ -418,7 +418,7 @@ Courses | Duration | Effort | Prerequisites
[Fullstack Open](https://fullstackopen.com/en) | 12 weeks | 6 hours/week | programming
[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/week | One year programming experience
-[Game Design and Development (Specialization)](https://www.coursera.org/specializations/game-development) | 6 months | 5 hours/week | programming, interactive design
+[Game Design and Development with Unity 2020 (Specialization)](https://www.coursera.org/specializations/game-design-and-development) | 6 months | 5 hours/week | programming, interactive design
## Final project
From 759d4251b6ae9d6042638be4fda7c19ade77481e Mon Sep 17 00:00:00 2001
From: Tanya Nevskaya
Date: Sun, 14 Feb 2021 20:44:38 +0300
Subject: [PATCH 342/519] Include edX financial aid information
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index a4874f5b8..229255c7e 100644
--- a/README.md
+++ b/README.md
@@ -53,7 +53,7 @@ they belong in [extras/courses](extras/courses.md) or [extras/readings](extras/r
**Duration**. It is possible to finish within about 2 years if you plan carefully and devote roughly 20 hours/week to your studies. Learners can use [this spreadsheet](https://docs.google.com/spreadsheets/d/1bkUU90y4rKYQHwY5AR2iX6iiPTrPEsYs75GkCAkrgm4/edit#gid=1428855662) to estimate their end date. If you make a personal copy you can enter your actual course completion dates in the `Curriculum Data` sheet and get updated completion estimates.
**Cost**. All or nearly all course material 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).
+Note that both [Coursera](https://learner.coursera.help/hc/en-us/articles/209819033-Apply-for-Financial-Aid) and [edX](https://courses.edx.org/financial-assistance/) offer 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!
From d6a491b33cbffac3efc933904a1bed4e54e58576 Mon Sep 17 00:00:00 2001
From: Hanqiu Jiang
Date: Mon, 8 Feb 2021 22:26:48 +0100
Subject: [PATCH 343/519] feat: Change order of database courses
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 229255c7e..aae380819 100644
--- a/README.md
+++ b/README.md
@@ -314,8 +314,8 @@ Courses | Duration | Effort | Prerequisites | Discussion
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
-[Relational Databases and SQL](https://www.edx.org/course/databases-5-sql)| 2 weeks | 10 hours/week | core programming | [chat](https://discord.gg/P8SPPyF)
[Databases: Modeling and Theory](https://www.edx.org/course/modeling-and-theory)| 2 weeks | 10 hours/week | core programming | [chat](https://discord.gg/pMFqNf4)
+[Databases: Relational Databases and SQL](https://www.edx.org/course/databases-5-sql)| 2 weeks | 10 hours/week | core programming | [chat](https://discord.gg/P8SPPyF)
[Databases: Semistructured Data](https://www.edx.org/course/semistructured-data)| 2 weeks | 10 hours/week | core programming | [chat](https://discord.gg/duCJ3GN)
[Machine Learning](https://www.coursera.org/learn/machine-learning)| 11 weeks | 4-6 hours/week | linear algebra | [chat](https://discord.gg/NcXHDjy)
[Computer Graphics](https://www.edx.org/course/computer-graphics-uc-san-diegox-cse167x)| 6 weeks | 12 hours/week | C++ or Java, linear algebra | [chat](https://discord.gg/68WqMNV)
From 29d11d62e39178410855545d19b96a3c49dc864e Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Wed, 17 Feb 2021 02:33:14 -0600
Subject: [PATCH 344/519] Update issue templates
---
.../request-for-comment-template.md | 28 +++++++++++++++++++
1 file changed, 28 insertions(+)
create mode 100644 .github/ISSUE_TEMPLATE/request-for-comment-template.md
diff --git a/.github/ISSUE_TEMPLATE/request-for-comment-template.md b/.github/ISSUE_TEMPLATE/request-for-comment-template.md
new file mode 100644
index 000000000..bef0a7e12
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/request-for-comment-template.md
@@ -0,0 +1,28 @@
+---
+name: Request for Comment Template
+about: Template for creating an RFC to modify the curriculum
+title: 'RFC: '
+labels: ''
+assignees: ''
+
+---
+
+**Problem:**
+Give a 1 sentence description of a problem with the current OSSU Curriculum. Successful critiques of the curriculum will point out ways that OSSU is failing to uphold [our curricular guidelines](https://github.com/ossu/computer-science/blob/master/CURRICULAR_GUIDELINES.md). Examples are:
+
+* OSSU lists course X as required when the course's topics are elective in our curricular guidelines.
+* OSSU does not having a course to cover required topic X from our curricular guidelines.
+* OSSU lists courses X, Y and Z that cover the same topics when fewer courses could suffice.
+* OSSU recommends course X to teach a topic, but there exists a higher quality course that covers the same material.
+
+**Duration:**
+This should most often be 1 month from the date of posting.
+
+**Background:**
+Give an in depth description of the problem. Describe a solution to the problem. Describe the advantages and disadvantages of this solution. This section should be a few paragraphs.
+
+**Proposal:**
+Give a bullet point list of changes that are being proposed. These can link to a Pull Request.
+
+**Alternatives:**
+Give a bullet point list of alternative ways to address the problem.
From cd62dc334dfe779ff85c449cd0a91145cb59a040 Mon Sep 17 00:00:00 2001
From: licjon <67080615+licjon@users.noreply.github.com>
Date: Wed, 3 Mar 2021 14:38:06 -0500
Subject: [PATCH 345/519] Changed link to Effective Thinking Through
Mathematics course in extras (issue #870) (#871)
* Changed link to Effective Thinking Through Mathematics course in extras
* Delete .DS_Store
Co-authored-by: Jonathan Hustad
Co-authored-by: waciumawanjohi
---
extras/courses.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/extras/courses.md b/extras/courses.md
index 46243a4bf..3186d5b7f 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -28,7 +28,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
+[Effective Thinking Through Mathematics](https://learning.edx.org/course/course-v1:UTAustinX+UT.9.10x+3T2016/home) | 4 weeks | 2 hours/week
[Introduction to Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 hours/week
[High School Math](https://www.khanacademy.org/math/high-school-math) | - | -
[Precalculus](https://www.futurelearn.com/courses/precalculus) | 5 weeks | 6 hours/week
From 2045c7d4c0814e8881bad2f66112a13f181764fc Mon Sep 17 00:00:00 2001
From: spamegg <4255997+spamegg1@users.noreply.github.com>
Date: Tue, 9 Mar 2021 20:09:48 +0300
Subject: [PATCH 346/519] updated Prolog link, added PDF version (fixes #868)
(#873)
* updated Prolog link, added PDF version
* updated Prolog link, added PDF version
- removed `Text` column, added footnote instead
* updated Prolog link, added PDF version
- parentheses
* updated Prolog link, added PDF version
- added link to book source code
---
README.md | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index aae380819..5453d7769 100644
--- a/README.md
+++ b/README.md
@@ -344,15 +344,17 @@ If not, or if a student chooses not to take the Capstone, then a separate Final
`and more`
Courses | Duration | Effort | Prerequisites
-:-- | :--: | :--: | :--:
+:-- | :--: | :--: | :--:
[Parallel Programming](https://www.coursera.org/learn/parprog1)| 4 weeks | 6-8 hours/week | Scala programming
[Compilers](https://www.edx.org/course/compilers) | 9 weeks | 6-8 hours/week | none
[Introduction to Haskell](https://www.seas.upenn.edu/~cis194/fall16/)| 14 weeks | - | -
-[Learn Prolog Now!](http://www.learnprolognow.org/lpnpage.php?pageid=online)| 12 weeks | - | -
+[Learn Prolog Now!](https://www.let.rug.nl/bos/lpn//lpnpage.php?pageid=online) ([alt](https://github.com/ossu/computer-science/files/6085884/lpn.pdf))*| 12 weeks | - | -
[Software Debugging](https://www.udacity.com/course/software-debugging--cs259)| 8 weeks | 6 hours/week | Python, object-oriented programming
[Software Testing](https://www.udacity.com/course/software-testing--cs258) | 4 weeks | 6 hours/week | Python, programming experience
[Software Architecture & Design](https://www.udacity.com/course/software-architecture-design--ud821)| 8 weeks | 6 hours/week | software engineering in Java
+(*) book by Blackburn, Bos, Striegnitz (compiled from [source](https://github.com/LearnPrologNow/lpn), redistributed under [CC license](http://creativecommons.org/licenses/by-sa/4.0/))
+
### Advanced systems
**Topics covered**:
From 6b6cd0c5bdbc503f24230c3b991eaaef52f9a87f Mon Sep 17 00:00:00 2001
From: Henrick Kakutalua
Date: Wed, 24 Mar 2021 19:46:07 +0100
Subject: [PATCH 347/519] Updated links to both HtC Simple and Complex Data
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 5453d7769..45acbd8fb 100644
--- a/README.md
+++ b/README.md
@@ -161,8 +161,8 @@ The How to Code courses are based on the textbook [How to Design Programs](https
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
-[How to Code - Simple Data](https://www.edx.org/course/how-code-simple-data-ubcx-htc1x) | 7 weeks | 8-10 hours/week | none | [chat](https://discord.gg/RfqAmGJ)
-[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 | [chat](https://discord.gg/kczJzpm)
+[How to Code - Simple Data](https://www.edx.org/course/how-to-code-simple-data) | 7 weeks | 8-10 hours/week | none | [chat](https://discord.gg/RfqAmGJ)
+[How to Code - Complex Data](https://www.edx.org/course/how-to-code-complex-data) | 6 weeks | 8-10 hours/week | How to Code: Simple Data | [chat](https://discord.gg/kczJzpm)
[Programming Languages, Part A](https://www.coursera.org/learn/programming-languages) | 5 weeks | 4-8 hours/week | How to Code ([Hear instructor](https://www.coursera.org/lecture/programming-languages/recommended-background-k1yuh)) | [chat](https://discord.gg/8BkJtXN)
[Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 4-8 hours/week | Programming Languages, Part A | [chat](https://discord.gg/EeA7VR9)
[Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 4-8 hours/week | Programming Languages, Part B | [chat](https://discord.gg/8EZUVbA)
From 33faf4f6dfa7906697c8b66a39d6d19cc023fe53 Mon Sep 17 00:00:00 2001
From: Silent <64616976+Silential@users.noreply.github.com>
Date: Thu, 25 Mar 2021 23:06:38 -0700
Subject: [PATCH 348/519] Added alt link to ocw version of 6.002 in extra
courses (#885)
* added OCW alt link for 6.002 in extra courses
* fixed parenthesis
---
extras/courses.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/extras/courses.md b/extras/courses.md
index 3186d5b7f..c7d98dae1 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -8,7 +8,7 @@ or that there was an alternative that fit better into the curriculum.
Courses | Duration | Effort
:-- | :--: | :--:
-[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 Computational Thinking and Data Science](https://www.edx.org/course/introduction-computational-thinking-data-mitx-6-00-2x-2#!)([alt](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0002-introduction-to-computational-thinking-and-data-science-fall-2016/))| 10 weeks | 15 hours/week
[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
[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 | -
From 835c2c101d7c27ac8beb93dfb8af9aab22a85565 Mon Sep 17 00:00:00 2001
From: Elahi-cs <67738959+Elahi-cs@users.noreply.github.com>
Date: Wed, 31 Mar 2021 19:33:38 +0200
Subject: [PATCH 349/519] Update books' editions
* Updated the links for books that have a newer edition. I have included the authors' home page for the book where possible.
* Updated some titles to reflect the linked edition. I have maintained the original format (``2e`` for the books in the ``Programming`` section ``(2nd Edition)`` for the books in the other sections). Unifying the format could be something to consider.
---
extras/readings.md | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/extras/readings.md b/extras/readings.md
index 812f2d303..669032649 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -11,16 +11,16 @@ Or, if you are struggling in one of the courses, perhaps reading a book on the s
Name | Author(s)
:-- | :--:
-[Introduction to Computation and Programming Using Python 2e](https://www.amazon.com/Introduction-Computation-Programming-Using-Python/dp/0262529629/) | John V. Guttag
+[Introduction to Computation and Programming Using Python 3e](https://mitpress.mit.edu/books/introduction-computation-and-programming-using-python-third-edition) | John V. Guttag
[Think Python 2e](http://greenteapress.com/wp/think-python-2e/) | Allen B. Downey
-[How to Design Programs](https://www.htdp.org/) | Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi
-[Structure and Interpretation of Computer Programs](https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book.html) | Hal Abelson, Jerry Sussman, Julie Sussman
+[How to Design Programs 2e](https://www.htdp.org/) | Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi
+[Structure and Interpretation of Computer Programs 2e](https://mitpress.mit.edu/sites/default/files/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
[Code Complete 2e](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 Pragmatic Programmer 2e](https://pragprog.com/titles/tpp20/the-pragmatic-programmer-20th-anniversary-edition/) | Andrew Hunt, David Thomas
[Programming Languages: Application and Interpretation](http://cs.brown.edu/~sk/Publications/Books/ProgLangs/) | Shriram Krishnamurthi
[Programming and Programming Languages](https://papl.cs.brown.edu/2018/) | Shriram Krishnamurthi, Benjamin S. Lerner, Joe Gibbs Politz
[Competitive Programming](https://cpbook.net/) | Steven Halim, Felix Halim
@@ -35,7 +35,7 @@ Name | Author(s)
[Discrete Mathematics: An Open Introduction](http://discrete.openmathbooks.org/dmoi/) | Oscar Levin
[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
+[Introduction to Linear Algebra (5th Edition)](https://math.mit.edu/~gs/linearalgebra/) | Gilbert Strang
## Systems
@@ -44,9 +44,9 @@ Name | Author(s)
[But How Do It Know?](http://www.buthowdoitknow.com/) | J. Clark Scott
[Computer Systems: A Programmer's Perspective (3rd Edition)](http://csapp.cs.cmu.edu/) | Randal E. Bryant, David R. O'Hallaron
[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 Organization and Design: The Hardware/Software Interface (6th Edition)](https://www.amazon.com/Computer-Organization-Design-MIPS-Architecture/dp/0128201096/) | 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
+[Computer Networking: A Top-Down Approach (8th Edition)](https://gaia.cs.umass.edu/kurose_ross/index.html) | James F Kurose, Keith W Ross
[Distributed Systems: Principles and Paradigms](https://www.amazon.com/Distributed-Systems-Principles-Andrew-Tanenbaum/dp/153028175X) | Andrew Tanenbaum
[Operating Systems Design and Implementation](https://www.amazon.com/Operating-Systems-Design-Implementation-3rd/dp/0131429388) | Andrew S. Tanenbaum, Albert S. Woodhull
[Principles of Compiler Design](https://www.amazon.com/Principles-Compiler-Addison-Wesley-information-processing/dp/0201000229) | Alfred Aho, Jeffrey Ullman
@@ -58,9 +58,9 @@ Name | Author(s)
Name | Author(s)
:-- | :--:
[Introduction to Computing: Explorations in Language, Logic, and Machines](http://www.computingbook.org/) | David Evans
-[Introduction to the Theory of Computation](https://www.amazon.com/Introduction-Theory-Computation-Michael-Sipser/dp/113318779X) | Michael Sipser
+[Introduction to the Theory of Computation (3rd Edition)](https://www.amazon.com/Introduction-Theory-Computation-Michael-Sipser/dp/113318779X) | Michael Sipser
[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
+[The Algorithm Design Manual (3rd Edition)](https://www.algorist.com/) | Steven Skiena
[Category Theory: A Gentle Introduction](http://www.logicmatters.net/resources/pdfs/GentleIntro.pdf) | Peter Smith
[Category Theory for Programmers: The Preface](https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/) | Bartosz Milewski
[An Introduction to Information Retrieval](https://nlp.stanford.edu/IR-book/pdf/irbookonlinereading.pdf) | Christopher D. Manning, Prabhakar Raghavan, Hinrich Schütze
@@ -70,10 +70,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
-[Database Management Systems](https://www.amazon.com/gp/product/0072465638) | Raghu Ramakrishnan, Johannes Gehrke
+[Readings in Database Systems (5th Edition)](http://www.redbook.io/) | Peter Bailis, Joseph M. Hellerstein, Michael Stonebraker, editors
+[Database Management Systems (3rd Edition)](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
+[Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World (3rd Edition)](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)
[An Introduction to Statistical Learning](https://www-bcf.usc.edu/~gareth/ISL/) | Gareth James, Daniela Witten, Trevor Hastie and Robert Tibshirani
[Deep Learning](http://www.deeplearningbook.org/) | Ian Goodfellow, Yoshua Bengio and Aaron Courville
From 08456ba4716c3b658b06e0b3637c53c47e43df8d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Josip=20=C4=86avar?=
Date: Fri, 2 Apr 2021 21:20:13 +0200
Subject: [PATCH 350/519] More realistic estimate for OS course
Hi,
I am currently taking this course and I am about half way into it. I already have a CS degree and I've been working as a developer for ~8 years.
The course is very interesting and comprehensive.
If you want to do this course properly, I think 6 hours per week for this course is bare minimum:
- There are ~3 hours of lectures each week
- The original course is split into 14 weeks
- Each chapter has homework at the end of it
- Homeworks are not very difficult, but some of them require significant amount of work
- Projects require significant amount of work
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 45acbd8fb..79ddb6bb4 100644
--- a/README.md
+++ b/README.md
@@ -246,7 +246,7 @@ Courses | Duration | Effort | Additional Text / Assignments| Prerequisites | Dis
:-- | :--: | :--: | :--: | :--: | :--:
[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 | - | C-like programming language | [chat](https://discord.gg/vxB2DRV)
[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | - | one of [these programming languages](https://user-images.githubusercontent.com/2046800/35426340-f6ce6358-026a-11e8-8bbb-4e95ac36b1d7.png), From Nand to Tetris Part I | [chat](https://discord.gg/AsUXcPu)
-[Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/Classes/537/Spring2018/) | 10-12 weeks | 6 hours/week | - | algorithms, [familiarity with C](https://hackr.io/tutorials/learn-c?sort=upvotes&type_tags%5B%5D=1) is useful | [chat](https://discord.gg/wZNgpep)
+[Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/Classes/537/Spring2018/) | 10-12 weeks | 6-10 hours/week | - | algorithms, [familiarity with C](https://hackr.io/tutorials/learn-c?sort=upvotes&type_tags%5B%5D=1) is useful | [chat](https://discord.gg/wZNgpep)
[Introduction to Computer Networking](https://www.youtube.com/playlist?list=PLEAYkSg4uSQ2dr0XO_Nwa5OcdEcaaELSG)| 8 weeks | 4–12 hours/week | [Assignment 1](https://github.com/PrincetonUniversity/COS461-Public/tree/master/assignments/assignment1)
[Assignment 2](https://www.scs.stanford.edu/10au-cs144/lab/reliable/reliable.html)
[Assignment 3](https://nptel.ac.in/content/storage2/courses/106105080/pdf/M2L7.pdf)
[Assignment 4](http://www-net.cs.umass.edu/wireshark-labs/Wireshark_TCP_v7.0.pdf)
[Interactive Problems](https://gaia.cs.umass.edu/kurose_ross/interactive/index.php) | algebra, probability, basic CS | [chat](https://discord.gg/MJ9YXyV)
### Core theory
From 0eb368579732753e55a9e87243a44c82809cda7a Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sat, 24 Apr 2021 01:52:07 -0500
Subject: [PATCH 351/519] Update other_curricula.md
Add new curriculum (writing started Summer 2019)
See more: https://github.com/functionalCS
---
extras/other_curricula.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/extras/other_curricula.md b/extras/other_curricula.md
index 32c5431c7..2840ba409 100644
--- a/extras/other_curricula.md
+++ b/extras/other_curricula.md
@@ -6,6 +6,7 @@ OSSU is one of a few efforts to inform learners how they can pursue computer sci
- [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/)
- [P1xt](https://github.com/P1xt/p1xt-guides)
+- [Functional CS](https://functionalcs.github.io/curriculum/)
What differentiates OSSU? OSSU is dedicated to how an individual can learn the undergraduate CS curriculum. This is why we use the [CS2013](../CURRICULAR_GUIDELINES.md) as our curricular guidelines. These guidelines are written by the two foremost professional organizations in computing.
From 84fea11d4e0192481d6a4997413aab49be0888d2 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Mon, 10 May 2021 19:34:35 -0500
Subject: [PATCH 352/519] Reflects locked down CS Timeline Spreadsheet
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 79ddb6bb4..9e9f899de 100644
--- a/README.md
+++ b/README.md
@@ -50,7 +50,7 @@ they belong in [extras/courses](extras/courses.md) or [extras/readings](extras/r
- *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
-**Duration**. It is possible to finish within about 2 years if you plan carefully and devote roughly 20 hours/week to your studies. Learners can use [this spreadsheet](https://docs.google.com/spreadsheets/d/1bkUU90y4rKYQHwY5AR2iX6iiPTrPEsYs75GkCAkrgm4/edit#gid=1428855662) to estimate their end date. If you make a personal copy you can enter your actual course completion dates in the `Curriculum Data` sheet and get updated completion estimates.
+**Duration**. It is possible to finish within about 2 years if you plan carefully and devote roughly 20 hours/week to your studies. Learners can use [this spreadsheet](https://docs.google.com/spreadsheets/d/1bkUU90y4rKYQHwY5AR2iX6iiPTrPEsYs75GkCAkrgm4/edit#gid=1428855662) to estimate their end date. Make a copy and input your start date and expected hours per week in the `Timeline` sheet. As you work through courses you can enter your actual course completion dates in the `Curriculum Data` sheet and get updated completion estimates.
**Cost**. All or nearly all course material is available for free. However, some courses may charge money for assignments/tests/projects to be graded.
Note that both [Coursera](https://learner.coursera.help/hc/en-us/articles/209819033-Apply-for-Financial-Aid) and [edX](https://courses.edx.org/financial-assistance/) offer financial aid.
From 3395f9a939b2732b274ebf4a69e0094facc1d626 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Wed, 16 Jun 2021 11:30:12 -0500
Subject: [PATCH 353/519] Spreadsheet link prompts users to make a personal
copy
---
README.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 9e9f899de..1e2b98e96 100644
--- a/README.md
+++ b/README.md
@@ -50,7 +50,8 @@ they belong in [extras/courses](extras/courses.md) or [extras/readings](extras/r
- *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
-**Duration**. It is possible to finish within about 2 years if you plan carefully and devote roughly 20 hours/week to your studies. Learners can use [this spreadsheet](https://docs.google.com/spreadsheets/d/1bkUU90y4rKYQHwY5AR2iX6iiPTrPEsYs75GkCAkrgm4/edit#gid=1428855662) to estimate their end date. Make a copy and input your start date and expected hours per week in the `Timeline` sheet. As you work through courses you can enter your actual course completion dates in the `Curriculum Data` sheet and get updated completion estimates.
+**Duration**. It is possible to finish within about 2 years if you plan carefully and devote roughly 20 hours/week to your studies. Learners can use [this spread
+](https://docs.google.com/spreadsheets/d/1bkUU90y4rKYQHwY5AR2iX6iiPTrPEsYs75GkCAkrgm4/copy) to estimate their end date. Make a copy and input your start date and expected hours per week in the `Timeline` sheet. As you work through courses you can enter your actual course completion dates in the `Curriculum Data` sheet and get updated completion estimates.
**Cost**. All or nearly all course material is available for free. However, some courses may charge money for assignments/tests/projects to be graded.
Note that both [Coursera](https://learner.coursera.help/hc/en-us/articles/209819033-Apply-for-Financial-Aid) and [edX](https://courses.edx.org/financial-assistance/) offer financial aid.
From 36b4f1570d2e67931c37e4f88f1f4e4e68a8579a Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Fri, 25 Jun 2021 20:23:48 -0500
Subject: [PATCH 354/519] Remove course that is no longer offered
Resolves #907
---
extras/courses.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/extras/courses.md b/extras/courses.md
index c7d98dae1..bdfa1a11c 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -78,7 +78,6 @@ Courses | Duration | Effort
[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
-[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
## Tools
From 20a9ba51e3f68ee8ba99255be426ecf665f88a6a Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sat, 17 Jul 2021 04:40:15 -0400
Subject: [PATCH 355/519] Make Calculus Required
closes #841
---
README.md | 39 ++++++++++++---------------------------
1 file changed, 12 insertions(+), 27 deletions(-)
diff --git a/README.md b/README.md
index 1e2b98e96..266c120c8 100644
--- a/README.md
+++ b/README.md
@@ -99,6 +99,7 @@ just remember that you can't purchase success!
- [Advanced programming](#advanced-programming)
- [Advanced systems](#advanced-systems)
- [Advanced theory](#advanced-theory)
+ - [Advanced math](#advanced-math)
- [Advanced applications](#advanced-applications)
- [Final project](#final-project)
@@ -168,33 +169,6 @@ Courses | Duration | Effort | Prerequisites | Discussion
[Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 4-8 hours/week | Programming Languages, Part A | [chat](https://discord.gg/EeA7VR9)
[Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 4-8 hours/week | Programming Languages, Part B | [chat](https://discord.gg/8EZUVbA)
-### Math Electives
-**Students must choose one of the following topics**: calculus, linear algebra, logic, or probability.
-
-#### Calculus
-
-Courses | Duration | Effort | Prerequisites | Discussion
-:-- | :--: | :--: | :--: | :--:
-[Calculus 1A: Differentiation](https://www.edx.org/course/calculus-1a-differentiation) | 13 weeks | 6-10 hours/week | [high school math](FAQ.md#how-can-i-review-the-math-prerequisites) | [chat](https://discord.gg/mPCt45F)
-[Calculus 1B: Integration](https://www.edx.org/course/calculus-1b-integration) | 13 weeks | 5-10 hours/week | Calculus 1A | [chat](https://discord.gg/sddAsZg)
-[Calculus 1C: Coordinate Systems & Infinite Series](https://www.edx.org/course/calculus-1c-coordinate-systems-infinite-series) | 6 weeks | 5-10 hours/week | Calculus 1B | [chat](https://discord.gg/FNEcNNq)
-
-#### Linear Algebra
-Courses | Duration | Effort | Prerequisites | Discussion
-:-- | :--: | :--: | :--: | :--:
-[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | [high school math](FAQ.md#how-can-i-review-the-math-prerequisites) | [chat](https://discord.gg/m6wHbP6)
-[Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | 14 weeks | 12 hours/week | Essence of Linear Algebra | [chat](https://discord.gg/k7nSWJH)
-
-#### Logic
-Courses | Duration | Effort | Prerequisites | Discussion
-:-- | :--: | :--: | :--: | :--:
-[Introduction to Logic](https://www.coursera.org/learn/logic-introduction) | 10 weeks | 4-8 hours/week | [set theory](https://www.youtube.com/playlist?list=PL5KkMZvBpo5AH_5GpxMiryJT6Dkj32H6N) | [chat](https://discord.gg/MbM2Gg5)
-
-#### Probability
-Courses | Duration | Effort | Prerequisites | Discussion
-:-- | :--: | :--: | :--: | :--:
-[Probability](https://projects.iq.harvard.edu/stat110/home) | 24 weeks | 12 hours/week | [Differentiation and Integration](https://www.edx.org/course/calculus-1b-integration) | [chat](https://discord.gg/UVjs9BU)
-
### Core Math
In addition to their math elective, students must complete the following course on discrete mathematics.
@@ -208,6 +182,9 @@ In addition to their math elective, students must complete the following course
Courses | Duration | Effort | Notes | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--: | :--:
+[Calculus 1A: Differentiation](https://www.edx.org/course/calculus-1a-differentiation) | 13 weeks | 6-10 hours/week | [high school math](FAQ.md#how-can-i-review-the-math-prerequisites) | [chat](https://discord.gg/mPCt45F)
+[Calculus 1B: Integration](https://www.edx.org/course/calculus-1b-integration) | 13 weeks | 5-10 hours/week | Calculus 1A | [chat](https://discord.gg/sddAsZg)
+[Calculus 1C: Coordinate Systems & Infinite Series](https://www.edx.org/course/calculus-1c-coordinate-systems-infinite-series) | 6 weeks | 5-10 hours/week | Calculus 1B | [chat](https://discord.gg/FNEcNNq)
[Mathematics for Computer Science](https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about) ([alt](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 | An alternate version with solutions to the problem sets is [here](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2005/assignments/). Students struggling can consider the [Discrete Mathematics Specialization](https://www.coursera.org/specializations/discrete-mathematics) first. It is more interactive but less comprehensive, and costs money to unlock full interactivity. | Calculus 1C | [chat](https://discord.gg/EuTzNbF)
@@ -404,6 +381,14 @@ Courses | Duration | Effort | Prerequisites
[Computational Geometry](https://www.edx.org/course/computational-geometry-tsinghuax-70240183x) | 16 weeks | 8 hours/week | algorithms, C++
[Game Theory](https://www.coursera.org/learn/game-theory-1) | 8 weeks | 3 hours/week | mathematical thinking, probability, calculus
+### Advanced math
+Courses | Duration | Effort | Prerequisites | Discussion
+:-- | :--: | :--: | :--: | :--:
+[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | [high school math](FAQ.md#how-can-i-review-the-math-prerequisites) | [chat](https://discord.gg/m6wHbP6)
+[Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | 14 weeks | 12 hours/week | Essence of Linear Algebra | [chat](https://discord.gg/k7nSWJH)
+[Introduction to Logic](https://www.coursera.org/learn/logic-introduction) | 10 weeks | 4-8 hours/week | [set theory](https://www.youtube.com/playlist?list=PL5KkMZvBpo5AH_5GpxMiryJT6Dkj32H6N) | [chat](https://discord.gg/MbM2Gg5)
+[Probability](https://projects.iq.harvard.edu/stat110/home) | 24 weeks | 12 hours/week | [Differentiation and Integration](https://www.edx.org/course/calculus-1b-integration) | [chat](https://discord.gg/UVjs9BU)
+
### Advanced applications
These Coursera Specializations all end with a Capstone project.
From 80ac876827213627dd3accac53697ab08d2fdd4f Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sat, 17 Jul 2021 05:11:58 -0400
Subject: [PATCH 356/519] Change calculus recommendation to OLL and OCW
Resolves #838, #886
---
README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 266c120c8..b3777e964 100644
--- a/README.md
+++ b/README.md
@@ -182,9 +182,9 @@ In addition to their math elective, students must complete the following course
Courses | Duration | Effort | Notes | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--: | :--:
-[Calculus 1A: Differentiation](https://www.edx.org/course/calculus-1a-differentiation) | 13 weeks | 6-10 hours/week | [high school math](FAQ.md#how-can-i-review-the-math-prerequisites) | [chat](https://discord.gg/mPCt45F)
-[Calculus 1B: Integration](https://www.edx.org/course/calculus-1b-integration) | 13 weeks | 5-10 hours/week | Calculus 1A | [chat](https://discord.gg/sddAsZg)
-[Calculus 1C: Coordinate Systems & Infinite Series](https://www.edx.org/course/calculus-1c-coordinate-systems-infinite-series) | 6 weeks | 5-10 hours/week | Calculus 1B | [chat](https://discord.gg/FNEcNNq)
+[Calculus 1A: Differentiation](https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.1x+2T2019/about) ([alt](https://ocw.mit.edu/courses/mathematics/18-01sc-single-variable-calculus-fall-2010/index.htm)) | 13 weeks | 6-10 hours/week | The alternate covers this and the following 2 courses | [high school math](FAQ.md#how-can-i-review-the-math-prerequisites) | [chat](https://discord.gg/mPCt45F)
+[Calculus 1B: Integration](https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.2x+3T2019/about) | 13 weeks | 5-10 hours/week | - | Calculus 1A | [chat](https://discord.gg/sddAsZg)
+[Calculus 1C: Coordinate Systems & Infinite Series](https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.3x+1T2020/about) | 6 weeks | 5-10 hours/week | - | Calculus 1B | [chat](https://discord.gg/FNEcNNq)
[Mathematics for Computer Science](https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about) ([alt](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 | An alternate version with solutions to the problem sets is [here](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2005/assignments/). Students struggling can consider the [Discrete Mathematics Specialization](https://www.coursera.org/specializations/discrete-mathematics) first. It is more interactive but less comprehensive, and costs money to unlock full interactivity. | Calculus 1C | [chat](https://discord.gg/EuTzNbF)
From ef25ae7ee6af4181e07e9269ef04f7208ddc3045 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sat, 17 Jul 2021 05:38:40 -0400
Subject: [PATCH 357/519] Change Networking course to Kurose-Ross
Resolves #887
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index b3777e964..2d6f596a4 100644
--- a/README.md
+++ b/README.md
@@ -225,7 +225,7 @@ Courses | Duration | Effort | Additional Text / Assignments| Prerequisites | Dis
[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 | - | C-like programming language | [chat](https://discord.gg/vxB2DRV)
[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | - | one of [these programming languages](https://user-images.githubusercontent.com/2046800/35426340-f6ce6358-026a-11e8-8bbb-4e95ac36b1d7.png), From Nand to Tetris Part I | [chat](https://discord.gg/AsUXcPu)
[Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/Classes/537/Spring2018/) | 10-12 weeks | 6-10 hours/week | - | algorithms, [familiarity with C](https://hackr.io/tutorials/learn-c?sort=upvotes&type_tags%5B%5D=1) is useful | [chat](https://discord.gg/wZNgpep)
-[Introduction to Computer Networking](https://www.youtube.com/playlist?list=PLEAYkSg4uSQ2dr0XO_Nwa5OcdEcaaELSG)| 8 weeks | 4–12 hours/week | [Assignment 1](https://github.com/PrincetonUniversity/COS461-Public/tree/master/assignments/assignment1)
[Assignment 2](https://www.scs.stanford.edu/10au-cs144/lab/reliable/reliable.html)
[Assignment 3](https://nptel.ac.in/content/storage2/courses/106105080/pdf/M2L7.pdf)
[Assignment 4](http://www-net.cs.umass.edu/wireshark-labs/Wireshark_TCP_v7.0.pdf)
[Interactive Problems](https://gaia.cs.umass.edu/kurose_ross/interactive/index.php) | algebra, probability, basic CS | [chat](https://discord.gg/MJ9YXyV)
+[Computer Networking: a Top-Down Approach](http://gaia.cs.umass.edu/kurose_ross/online_lectures.htm)| 8 weeks | 4–12 hours/week | [Wireshark Labs](http://gaia.cs.umass.edu/kurose_ross/wireshark.htm) | algebra, probability, basic CS | [chat](https://discord.gg/MJ9YXyV)
### Core theory
From 167de29fe1f4fd096793b8e5e3aef6724895fd41 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sat, 17 Jul 2021 05:54:31 -0400
Subject: [PATCH 358/519] Evaluation section update
Change language to encourage students to be proactive in seeking feedback for projects.
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 2d6f596a4..92e9d6c70 100644
--- a/README.md
+++ b/README.md
@@ -436,10 +436,10 @@ Put the OSSU-CS badge in the README of your repository!
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.
+Solicit feedback from your OSSU peers.
You will not be "graded" in the traditional sense — everyone has their own measurements for what they consider a success.
The purpose of the evaluation is to act as your first announcement to the world that you are a computer scientist
-and to get experience listening to feedback — both positive and negative — and taking it in stride.
+and to get experience listening to feedback — both positive and negative.
The final project evaluation has a second purpose: to evaluate whether OSSU,
through its community and curriculum, is successful in its mission to guide independent learners in obtaining a world-class computer science education.
From 38080e02749c1ba96388590b17b7222d68039df7 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sat, 17 Jul 2021 06:14:59 -0400
Subject: [PATCH 359/519] Advanced Applications subsumed by Project
Clarifies that the advanced application list is a subset of a larger, unspecified, set of adequate options.
Advanced Applications was listed as a precursor and possible replacement for the final project. This merges the two and specifies that students may choose another avenue for creating a capstone project.
Resolves #830
---
README.md | 54 +++++++++++++++++++-----------------------------------
1 file changed, 19 insertions(+), 35 deletions(-)
diff --git a/README.md b/README.md
index 92e9d6c70..2bd4082ef 100644
--- a/README.md
+++ b/README.md
@@ -100,7 +100,6 @@ just remember that you can't purchase success!
- [Advanced systems](#advanced-systems)
- [Advanced theory](#advanced-theory)
- [Advanced math](#advanced-math)
- - [Advanced applications](#advanced-applications)
- [Final project](#final-project)
---
@@ -306,10 +305,6 @@ After completing **every required course** in Core CS, students should choose a
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.
-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**:
@@ -389,52 +384,41 @@ Courses | Duration | Effort | Prerequisites | Discussion
[Introduction to Logic](https://www.coursera.org/learn/logic-introduction) | 10 weeks | 4-8 hours/week | [set theory](https://www.youtube.com/playlist?list=PL5KkMZvBpo5AH_5GpxMiryJT6Dkj32H6N) | [chat](https://discord.gg/MbM2Gg5)
[Probability](https://projects.iq.harvard.edu/stat110/home) | 24 weeks | 12 hours/week | [Differentiation and Integration](https://www.edx.org/course/calculus-1b-integration) | [chat](https://discord.gg/UVjs9BU)
-### Advanced applications
+## Final project
+
+OSS University is project-focused.
+The assignments and exams for each course are to prepare you to use your knowledge to solve real-world problems.
-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.
+After you've gotten through all of Core CS and the parts of Advanced CS relevant to you, you should think about a problem that you can solve using the knowledge you've acquired.
+Not only does real project work look great on a resume, but the project will also validate and consolidate your knowledge.
+You can create something entirely new, or you can find an existing project that needs help via websites like
+[CodeTriage](https://www.codetriage.com/)
+or
+[First Timers Only](http://www.firsttimersonly.com/).
+Students who would like more guidance in creating a project may choose to use a series of project oriented courses. Here is a sample of options (many more are available, at this point you should be capable of identifying a series that is interesting and relevant to you):
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
+[Fullstack Open](https://fullstackopen.com/en) | 12 weeks | 6 hours/week | programming
[Modern Robotics (Specialization)](https://www.coursera.org/specializations/modernrobotics) | 26 weeks | 2-5 hours/week | freshman-level physics, linear algebra, calculus, [linear ordinary differential equations](https://www.khanacademy.org/math/differential-equations)
[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
-[Fullstack Open](https://fullstackopen.com/en) | 12 weeks | 6 hours/week | programming
[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/week | One year programming experience
[Game Design and Development with Unity 2020 (Specialization)](https://www.coursera.org/specializations/game-design-and-development) | 6 months | 5 hours/week | programming, interactive design
-## 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, but the project will also *validate* and *consolidate* your knowledge.
-You can create something entirely new, or you can find an existing project that needs help via websites like
-[CodeTriage](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.
-In some cases, it may not be permitted;
-do **not** violate your course's Honor Code!
+### Evaluation
-Put the OSSU-CS badge in the README of your repository!
+Upon completing your final project:
+- Submit your project's information to [PROJECTS](PROJECTS.md) via a pull request.
+- Put the OSSU-CS badge in the README of your repository!
[](https://github.com/ossu/computer-science)
-- Markdown: `[](https://github.com/ossu/computer-science)`
-- HTML: `
`
-
-### Evaluation
-
-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.
+ - Markdown: `[](https://github.com/ossu/computer-science)`
+ - HTML: `
`
+- Use our [community](#community) channels to announce it to your fellow students.
Solicit feedback from your OSSU peers.
You will not be "graded" in the traditional sense — everyone has their own measurements for what they consider a success.
From e840a85e833b04ee872a47cab8efc75b469c06e5 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sat, 17 Jul 2021 06:45:06 -0400
Subject: [PATCH 360/519] Update core math blurb
Resolves #921
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 2bd4082ef..5717a684c 100644
--- a/README.md
+++ b/README.md
@@ -169,7 +169,7 @@ Courses | Duration | Effort | Prerequisites | Discussion
[Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 4-8 hours/week | Programming Languages, Part B | [chat](https://discord.gg/8EZUVbA)
### Core Math
-In addition to their math elective, students must complete the following course on discrete mathematics.
+Discrete math (Math for CS) is a prerequisite and closely related to the study of algorithms and data structures. Calculus both prepares students for discrete math and helps students develop mathematical maturity.
**Topics covered**:
`discrete mathematics`
From 7479fe192d810316a7ba5962b797267725448486 Mon Sep 17 00:00:00 2001
From: Kye Davey
Date: Wed, 21 Jul 2021 13:21:19 +1000
Subject: [PATCH 361/519] Removed Project with Dead Link
1. Removed Binary Machine project as repository link results is dead.
2. Fixed link to applications block.
---
PROJECTS.md | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/PROJECTS.md b/PROJECTS.md
index 7c5af33a6..cebbfd9d8 100644
--- a/PROJECTS.md
+++ b/PROJECTS.md
@@ -10,12 +10,11 @@ For more project ideas, check the [Mega Project List](https://github.com/karan/P
- [Math](#math)
- [Systems](#systems)
- [Theory](#theory)
-- [Applications](#applications)
+- [Applications](#application)
## Introduction to Computer Science
Project Title | Description | Author(s) | Repository
:-- | :-- | :--: | :--
-Binary Machine | Convert decimal numbers to binary | [Eric Douglas](https://github.com/ericdouglas) | [binary-machine](https://github.com/ericdouglas/binary-machine)
StalkHub | Stalk Github beautifully | [Aman Roy](https://github.com/aman-roy) | [StalkHub](https://github.com/aman-roy/StalkHub)
Webliza | ELIZA in python with web interface | [Vipin Kumar](https://github.com/VipinindKumar) | [Webliza](https://github.com/VipinindKumar/Webliza)
@@ -39,4 +38,4 @@ Project Title | Description | Author(s) | Repository
## Application
Project Title | Description | Author(s) | Repository
:-- | :-- | :--: | :--
-Observatory | Interactively displays temperatures and deviations all around the world from 1975 to 2015 | [spamegg](https://github.com/spamegg1) | [ScalaCapstone](https://github.com/spamegg1/ScalaCapstone)
\ No newline at end of file
+Observatory | Interactively displays temperatures and deviations all around the world from 1975 to 2015 | [spamegg](https://github.com/spamegg1) | [ScalaCapstone](https://github.com/spamegg1/ScalaCapstone)
From e466566735a5d1fbf284576680c2020c0d08deed Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Fri, 23 Jul 2021 00:34:35 -0400
Subject: [PATCH 362/519] Update Team
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 5717a684c..3251ac356 100644
--- a/README.md
+++ b/README.md
@@ -486,6 +486,6 @@ You can change the status of your board to be *public* or *private*.
# Team
* **[Eric Douglas](https://github.com/ericdouglas)**: founder of OSSU
-* **[hanjiexi](https://github.com/hanjiexi)**: lead technical maintainer
-* **[waciumawanjohi](https://github.com/waciumawanjohi)**: lead academic maintainer
+* **[Josh Hanson](https://github.com/joshmhanson)**: lead technical maintainer
+* **[Waciuma Wanjohi](https://github.com/waciumawanjohi)**: lead academic maintainer
* **[Contributors](https://github.com/ossu/computer-science/graphs/contributors)**
From 2d6ab0964ff0bf892d5c395d7d347c212e4d75d2 Mon Sep 17 00:00:00 2001
From: Dody2 <44237371+Dody2@users.noreply.github.com>
Date: Wed, 28 Jul 2021 00:41:17 +0200
Subject: [PATCH 363/519] extras/courses: Add Introduction to Computational
Thinking by MIT
As noted here #912 adding this course to The Math section
---
extras/courses.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/extras/courses.md b/extras/courses.md
index bdfa1a11c..fc490cbeb 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -35,6 +35,7 @@ Courses | Duration | Effort
[Advanced Precalculus](https://www.futurelearn.com/courses/advanced-precalculus) | 4 weeks | 5 hours/week
[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) | - | -
+[Introduction to Computational Thinking](https://computationalthinking.mit.edu/Spring21/#introduction_to_computational_thinking) | - | -
[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 | [Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/index.htm)
From 08bc81f862ed30eecfae541e315d24cfa66af10f Mon Sep 17 00:00:00 2001
From: Elahi-cs <67738959+Elahi-cs@users.noreply.github.com>
Date: Sun, 9 May 2021 11:31:59 +0200
Subject: [PATCH 364/519] Add Algorithms by Sedgewick
Add Algorithms by Robert Sedgewick on the basis that it's a freely available book from a reputable institution (it's the textbook for the Princeton Coursera courses). That being said, I haven't had the chance of reading the book so I can't personally comment on its quality.
---
extras/readings.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/extras/readings.md b/extras/readings.md
index 669032649..434b549a0 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -61,6 +61,7 @@ Name | Author(s)
[Introduction to the Theory of Computation (3rd Edition)](https://www.amazon.com/Introduction-Theory-Computation-Michael-Sipser/dp/113318779X) | Michael Sipser
[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 (3rd Edition)](https://www.algorist.com/) | Steven Skiena
+[Algorithms (4th Edition)](https://algs4.cs.princeton.edu/home/) | Robert Sedgewick
[Category Theory: A Gentle Introduction](http://www.logicmatters.net/resources/pdfs/GentleIntro.pdf) | Peter Smith
[Category Theory for Programmers: The Preface](https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/) | Bartosz Milewski
[An Introduction to Information Retrieval](https://nlp.stanford.edu/IR-book/pdf/irbookonlinereading.pdf) | Christopher D. Manning, Prabhakar Raghavan, Hinrich Schütze
From 382189ea8a23cc29318c936f5a708a88423a531c Mon Sep 17 00:00:00 2001
From: riceeatingmachine <50071043+riceeatingmachine@users.noreply.github.com>
Date: Thu, 16 Sep 2021 08:13:11 +0530
Subject: [PATCH 365/519] Commit for RFC at issue #933 (#945)
* Commit for RFC at issue #933
Added by error
Co-authored-by: Harsh
---
README.md | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 3251ac356..ddb1b7507 100644
--- a/README.md
+++ b/README.md
@@ -167,6 +167,9 @@ Courses | Duration | Effort | Prerequisites | Discussion
[Programming Languages, Part A](https://www.coursera.org/learn/programming-languages) | 5 weeks | 4-8 hours/week | How to Code ([Hear instructor](https://www.coursera.org/lecture/programming-languages/recommended-background-k1yuh)) | [chat](https://discord.gg/8BkJtXN)
[Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 4-8 hours/week | Programming Languages, Part A | [chat](https://discord.gg/EeA7VR9)
[Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 4-8 hours/week | Programming Languages, Part B | [chat](https://discord.gg/8EZUVbA)
+[Object-Oriented Design](https://www.coursera.org/learn/object-oriented-design) | 4 weeks | 4 hours/week | [Basic Java](https://www.youtube.com/watch?v=GoXwIVyNvX0)
+[Design Patterns](https://www.coursera.org/learn/design-patterns) | 4 weeks | 4 hours/week | Object-Oriented Design
+[Software Architecture](https://www.coursera.org/learn/software-architecture) | 4 weeks | 2-5 hours/week | Design Patterns
### Core Math
Discrete math (Math for CS) is a prerequisite and closely related to the study of algorithms and data structures. Calculus both prepares students for discrete math and helps students develop mathematical maturity.
@@ -267,6 +270,7 @@ Courses | Duration | Effort | Prerequisites | Discussion
[Identifying Security Vulnerabilities](https://www.coursera.org/learn/identifying-security-vulnerabilities) | 4 weeks | 4 hours/week | - | [chat](https://discord.gg/V78MjUS)
Choose **one** of the following:
+
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
[Identifying Security Vulnerabilities in C/C++Programming](https://www.coursera.org/learn/identifying-security-vulnerabilities-c-programming) | 4 weeks | 5 hours/week | - | [chat](https://discord.gg/Vbxce7A)
@@ -297,7 +301,6 @@ Courses | Duration | Effort | Prerequisites | Discussion
[Machine Learning](https://www.coursera.org/learn/machine-learning)| 11 weeks | 4-6 hours/week | linear algebra | [chat](https://discord.gg/NcXHDjy)
[Computer Graphics](https://www.edx.org/course/computer-graphics-uc-san-diegox-cse167x)| 6 weeks | 12 hours/week | C++ or Java, linear algebra | [chat](https://discord.gg/68WqMNV)
[Software Engineering: Introduction](https://www.edx.org/course/software-engineering-introduction-ubcx-softeng1x) | 6 weeks | 8-10 hours/week | Core Programming, and a [sizable project](FAQ.md#why-require-experience-with-a-sizable-project-before-the-Software-Engineering-courses) | [chat](https://discord.gg/5Qtcwtz)
-[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 | [chat](https://discord.gg/2FAujEZ)
## Advanced CS
@@ -324,7 +327,6 @@ Courses | Duration | Effort | Prerequisites
[Learn Prolog Now!](https://www.let.rug.nl/bos/lpn//lpnpage.php?pageid=online) ([alt](https://github.com/ossu/computer-science/files/6085884/lpn.pdf))*| 12 weeks | - | -
[Software Debugging](https://www.udacity.com/course/software-debugging--cs259)| 8 weeks | 6 hours/week | Python, object-oriented programming
[Software Testing](https://www.udacity.com/course/software-testing--cs258) | 4 weeks | 6 hours/week | Python, programming experience
-[Software Architecture & Design](https://www.udacity.com/course/software-architecture-design--ud821)| 8 weeks | 6 hours/week | software engineering in Java
(*) book by Blackburn, Bos, Striegnitz (compiled from [source](https://github.com/LearnPrologNow/lpn), redistributed under [CC license](http://creativecommons.org/licenses/by-sa/4.0/))
@@ -397,6 +399,7 @@ or
[First Timers Only](http://www.firsttimersonly.com/).
Students who would like more guidance in creating a project may choose to use a series of project oriented courses. Here is a sample of options (many more are available, at this point you should be capable of identifying a series that is interesting and relevant to you):
+
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[Fullstack Open](https://fullstackopen.com/en) | 12 weeks | 6 hours/week | programming
From ae7c84eb8d60fabc8e349e93dbb5f503dc5f8563 Mon Sep 17 00:00:00 2001
From: azzsal
Date: Fri, 1 Oct 2021 23:45:40 +0300
Subject: [PATCH 366/519] Add The Linux Command Line book to Tools section in
extra readings
---
extras/readings.md | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/extras/readings.md b/extras/readings.md
index 434b549a0..e7e04f971 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -84,3 +84,10 @@ Name | Author(s)
[Compiler Construction](https://inf.ethz.ch/personal/wirth/CompilerConstruction/index.html) | Niklaus Wirth
[The Mythical Man-Month](https://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/) | Fred Brooks, Jr.
[Physically Based Rendering: From Theory To Implementation](http://www.pbr-book.org/) | Matt Pharr, Wenzel Jakob, and Greg Humphreys
+
+
+## Tools
+
+Name | Author(s)
+:-- | :--:
+[The Linux Command Line](https://linuxcommand.org/tlcl.php) | by William Shotts
From 078c966ea3920ae630eebb40f463df18b818860c Mon Sep 17 00:00:00 2001
From: Alaharon123 <34926441+Alaharon123@users.noreply.github.com>
Date: Sat, 9 Oct 2021 06:19:35 +0000
Subject: [PATCH 367/519] Switch 3b1b Linear Algebra from pre to corequisite
(#927)
Switch 3b1b Essence of Linear Algebra from prerequisite of MIT Linear Algebra to corequisite
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index ddb1b7507..494d65648 100644
--- a/README.md
+++ b/README.md
@@ -382,7 +382,7 @@ Courses | Duration | Effort | Prerequisites
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | [high school math](FAQ.md#how-can-i-review-the-math-prerequisites) | [chat](https://discord.gg/m6wHbP6)
-[Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | 14 weeks | 12 hours/week | Essence of Linear Algebra | [chat](https://discord.gg/k7nSWJH)
+[Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | 14 weeks | 12 hours/week | corequisite: Essence of Linear Algebra | [chat](https://discord.gg/k7nSWJH)
[Introduction to Logic](https://www.coursera.org/learn/logic-introduction) | 10 weeks | 4-8 hours/week | [set theory](https://www.youtube.com/playlist?list=PL5KkMZvBpo5AH_5GpxMiryJT6Dkj32H6N) | [chat](https://discord.gg/MbM2Gg5)
[Probability](https://projects.iq.harvard.edu/stat110/home) | 24 weeks | 12 hours/week | [Differentiation and Integration](https://www.edx.org/course/calculus-1b-integration) | [chat](https://discord.gg/UVjs9BU)
From 3501cac7ebb15f563f2705ccc20ab379f0ba27bc Mon Sep 17 00:00:00 2001
From: Rodi
Date: Sat, 9 Oct 2021 09:22:21 +0300
Subject: [PATCH 368/519] Add interesting/useful reading resources (#941)
---
extras/readings.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/extras/readings.md b/extras/readings.md
index 434b549a0..1ff7471a2 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -24,6 +24,7 @@ Name | Author(s)
[Programming Languages: Application and Interpretation](http://cs.brown.edu/~sk/Publications/Books/ProgLangs/) | Shriram Krishnamurthi
[Programming and Programming Languages](https://papl.cs.brown.edu/2018/) | Shriram Krishnamurthi, Benjamin S. Lerner, Joe Gibbs Politz
[Competitive Programming](https://cpbook.net/) | Steven Halim, Felix Halim
+[Introduction to computing in Java](https://introcs.cs.princeton.edu/java/home/) | Robert Sedgewick, Kevin Wayne
## Math
@@ -65,6 +66,7 @@ Name | Author(s)
[Category Theory: A Gentle Introduction](http://www.logicmatters.net/resources/pdfs/GentleIntro.pdf) | Peter Smith
[Category Theory for Programmers: The Preface](https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/) | Bartosz Milewski
[An Introduction to Information Retrieval](https://nlp.stanford.edu/IR-book/pdf/irbookonlinereading.pdf) | Christopher D. Manning, Prabhakar Raghavan, Hinrich Schütze
+[Computer Science: An interdisciplinary approach](https://introcs.cs.princeton.edu/java/cs/) | Robert Sedgewick, Kevin Wayne
## Applications
From 4d80e4c3deff17b9d826e58038a8b898d27741eb Mon Sep 17 00:00:00 2001
From: NadaTElwazane
Date: Sun, 10 Oct 2021 04:24:08 +0200
Subject: [PATCH 369/519] fix: updated Computation Structures 1,2 & 3 links
(#953)
---
README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 494d65648..abce4a8f4 100644
--- a/README.md
+++ b/README.md
@@ -350,9 +350,9 @@ Courses | Duration | Effort | Prerequisites
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Computation Structures 1: Digital Circuits](https://www.edx.org/course/computation-structures-part-1-digital-circuits) | 10 weeks | 6 hours/week | [Nand2Tetris II](https://www.coursera.org/learn/nand2tetris2)
-[Computation Structures 2: Computer Architecture](https://www.edx.org/course/computation-structures-2-computer-architecture-2) | 10 weeks | 6 hours/week | Computation Structures 1
-[Computation Structures 3: Computer Organization](https://www.edx.org/course/computation-structures-3-computer-organization-2) | 10 weeks | 6 hours/week | Computation Structures 2
+[Computation Structures 1: Digital Circuits](https://learning.edx.org/course/course-v1:MITx+6.004.1x_3+3T2016) | 10 weeks | 6 hours/week | [Nand2Tetris II](https://www.coursera.org/learn/nand2tetris2)
+[Computation Structures 2: Computer Architecture](https://learning.edx.org/course/course-v1:MITx+6.004.2x+3T2015) | 10 weeks | 6 hours/week | Computation Structures 1
+[Computation Structures 3: Computer Organization](https://learning.edx.org/course/course-v1:MITx+6.004.3x_2+1T2017) | 10 weeks | 6 hours/week | Computation Structures 2
### Advanced theory
From 03f7d2fc1cf0fdb82270f4dd98d24bd1913d4eb1 Mon Sep 17 00:00:00 2001
From: Guilherme Marz Vazzolla <53506039+saerosV@users.noreply.github.com>
Date: Fri, 15 Oct 2021 17:17:53 -0300
Subject: [PATCH 370/519] Add books, fix formatting
---
extras/readings.md | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/extras/readings.md b/extras/readings.md
index 1ff7471a2..be4cd8aa3 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -35,8 +35,9 @@ Name | Author(s)
[Discrete Mathematics with Applications (4th Edition)](http://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp/dp/0495391328/) | Susanna S. Epp
[Discrete Mathematics: An Open Introduction](http://discrete.openmathbooks.org/dmoi/) | Oscar Levin
[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
+[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 (5th Edition)](https://math.mit.edu/~gs/linearalgebra/) | Gilbert Strang
+[The Art of Linear Algebra](https://github.com/kenjihiranabe/The-Art-of-Linear-Algebra) | Kenji Hiranabe, Gilbert Strang
## Systems
@@ -50,6 +51,7 @@ Name | Author(s)
[Computer Networking: A Top-Down Approach (8th Edition)](https://gaia.cs.umass.edu/kurose_ross/index.html) | James F Kurose, Keith W Ross
[Distributed Systems: Principles and Paradigms](https://www.amazon.com/Distributed-Systems-Principles-Andrew-Tanenbaum/dp/153028175X) | Andrew Tanenbaum
[Operating Systems Design and Implementation](https://www.amazon.com/Operating-Systems-Design-Implementation-3rd/dp/0131429388) | Andrew S. Tanenbaum, Albert S. Woodhull
+[Crafting Interpreters](https://www.craftinginterpreters.com/contents.html) | Robert Nystrom
[Principles of Compiler Design](https://www.amazon.com/Principles-Compiler-Addison-Wesley-information-processing/dp/0201000229) | Alfred Aho, Jeffrey Ullman
[Distributed Systems Reading Group](http://dsrg.pdos.csail.mit.edu/papers/) | Various
[System Design: Design large-scale systems](https://github.com/donnemartin/system-design-primer) | Various
@@ -78,7 +80,7 @@ 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 (3rd Edition)](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)
-[An Introduction to Statistical Learning](https://www-bcf.usc.edu/~gareth/ISL/) | Gareth James, Daniela Witten, Trevor Hastie and Robert Tibshirani
+[An Introduction to Statistical Learning](https://www-bcf.usc.edu/~gareth/ISL/) | Gareth James, Daniela Witten, Trevor Hastie and Robert Tibshirani
[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
From af2a18854da3260051d2dd1316589d99d3cd600b Mon Sep 17 00:00:00 2001
From: aayushsinha0706 <84586770+aayushsinha0706@users.noreply.github.com>
Date: Sun, 7 Nov 2021 01:17:39 +0530
Subject: [PATCH 371/519] Add Ethics Course
Ethics being a very important education in field of computer science. CS 2013 Says, while technical issues are central to the computing curriculum, they do not constitute a complete educational program in the field. Students must also be exposed to the larger societal context of computing to develop an understanding of the relevant social, ethical, legal and professional issues. This need to incorporate the study of these non-technical issues into the ACM curriculum was formally recognized in 1991.
---
README.md | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/README.md b/README.md
index abce4a8f4..53f512af3 100644
--- a/README.md
+++ b/README.md
@@ -302,6 +302,22 @@ Courses | Duration | Effort | Prerequisites | Discussion
[Computer Graphics](https://www.edx.org/course/computer-graphics-uc-san-diegox-cse167x)| 6 weeks | 12 hours/week | C++ or Java, linear algebra | [chat](https://discord.gg/68WqMNV)
[Software Engineering: Introduction](https://www.edx.org/course/software-engineering-introduction-ubcx-softeng1x) | 6 weeks | 8-10 hours/week | Core Programming, and a [sizable project](FAQ.md#why-require-experience-with-a-sizable-project-before-the-Software-Engineering-courses) | [chat](https://discord.gg/5Qtcwtz)
+### Core Ethics
+
+**Topics covered**:
+`Social Context`
+`Analytical Tools`
+`Professional Ethics`
+`Intellectual Property`
+`Privacy and Civil Liberties`
+`and more`
+
+Courses | Duration | Effort | Prerequisites | Discussion
+:-- | :--: | :--: | :--: | :--:
+[Ethics, Technology and Engineering](https://www.coursera.org/learn/ethics-technology-engineering)| 9 weeks | 2 hours/week | - | [chat](https://discord.gg/pMFqNf4)
+[Intellectual Property Law in Digital Age](https://www.coursera.org/learn/intellectual-property-law-in-digital-age)| 4 weeks | 2 hours/week | - | [chat](https://discord.gg/P8SPPyF)
+[Data Privacy Fundamentals](https://www.coursera.org/learn/northeastern-data-privacy)| 3 weeks | 3 hours/week | - | [chat](https://discord.gg/duCJ3GN)
+
## Advanced CS
After completing **every required course** in Core CS, students should choose a subset of courses from Advanced CS based on interest.
From 2b10d09f065748817f637972dff059326d702b63 Mon Sep 17 00:00:00 2001
From: aayushsinha0706 <84586770+aayushsinha0706@users.noreply.github.com>
Date: Sun, 7 Nov 2021 01:23:19 +0530
Subject: [PATCH 372/519] Update README.md
---
README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 53f512af3..160eb5be0 100644
--- a/README.md
+++ b/README.md
@@ -314,9 +314,9 @@ Courses | Duration | Effort | Prerequisites | Discussion
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
-[Ethics, Technology and Engineering](https://www.coursera.org/learn/ethics-technology-engineering)| 9 weeks | 2 hours/week | - | [chat](https://discord.gg/pMFqNf4)
-[Intellectual Property Law in Digital Age](https://www.coursera.org/learn/intellectual-property-law-in-digital-age)| 4 weeks | 2 hours/week | - | [chat](https://discord.gg/P8SPPyF)
-[Data Privacy Fundamentals](https://www.coursera.org/learn/northeastern-data-privacy)| 3 weeks | 3 hours/week | - | [chat](https://discord.gg/duCJ3GN)
+[Ethics, Technology and Engineering](https://www.coursera.org/learn/ethics-technology-engineering)| 9 weeks | 2 hours/week | none | [chat](https://discord.gg/pMFqNf4)
+[Intellectual Property Law in Digital Age](https://www.coursera.org/learn/intellectual-property-law-in-digital-age)| 4 weeks | 2 hours/week | none | [chat](https://discord.gg/P8SPPyF)
+[Data Privacy Fundamentals](https://www.coursera.org/learn/northeastern-data-privacy)| 3 weeks | 3 hours/week | none | [chat](https://discord.gg/duCJ3GN)
## Advanced CS
From 6638554c3b67aa0f33b80664c0091ec3601195f2 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sat, 6 Nov 2021 16:53:13 -0400
Subject: [PATCH 373/519] Update Ethics Course Discord Links
---
README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 160eb5be0..a7b89e39f 100644
--- a/README.md
+++ b/README.md
@@ -314,9 +314,9 @@ Courses | Duration | Effort | Prerequisites | Discussion
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
-[Ethics, Technology and Engineering](https://www.coursera.org/learn/ethics-technology-engineering)| 9 weeks | 2 hours/week | none | [chat](https://discord.gg/pMFqNf4)
-[Intellectual Property Law in Digital Age](https://www.coursera.org/learn/intellectual-property-law-in-digital-age)| 4 weeks | 2 hours/week | none | [chat](https://discord.gg/P8SPPyF)
-[Data Privacy Fundamentals](https://www.coursera.org/learn/northeastern-data-privacy)| 3 weeks | 3 hours/week | none | [chat](https://discord.gg/duCJ3GN)
+[Ethics, Technology and Engineering](https://www.coursera.org/learn/ethics-technology-engineering)| 9 weeks | 2 hours/week | none | [chat](https://discord.gg/6ttjPmzZbe)
+[Intellectual Property Law in Digital Age](https://www.coursera.org/learn/intellectual-property-law-in-digital-age)| 4 weeks | 2 hours/week | none | [chat](https://discord.gg/YbuERswpAK)
+[Data Privacy Fundamentals](https://www.coursera.org/learn/northeastern-data-privacy)| 3 weeks | 3 hours/week | none | [chat](https://discord.gg/64J34ajNBd)
## Advanced CS
From 1b586d4c77a2b9baade26644fadba0bdfe78fc8f Mon Sep 17 00:00:00 2001
From: Guilherme Marz Vazzolla <53506039+saerosV@users.noreply.github.com>
Date: Fri, 3 Dec 2021 15:49:28 -0300
Subject: [PATCH 374/519] Fix link formatting
---
extras/readings.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/extras/readings.md b/extras/readings.md
index be4cd8aa3..11ce85788 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -31,7 +31,7 @@ Name | Author(s)
Name | Author(s)
:-- | :--:
[Calculus Made Easy](http://www.gutenberg.org/ebooks/33283) | Silvanus P. Thompson
-[Ximera](https://ximera.osu.edu/): Interactive Calculus Textbooks | [Ximera team](https://ximera.osu.edu/about/team)
+[Ximera: Interactive Calculus Textbooks](https://ximera.osu.edu/) | [Ximera team](https://ximera.osu.edu/about/team)
[Discrete Mathematics with Applications (4th Edition)](http://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp/dp/0495391328/) | Susanna S. Epp
[Discrete Mathematics: An Open Introduction](http://discrete.openmathbooks.org/dmoi/) | Oscar Levin
[Applied Discrete Structures](http://faculty.uml.edu/klevasseur/ads2/) | Alan Doerr, Ken Levasseur
From 163e029ad4ac1a94635cf5043dc7fd7bbcdb6761 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nico=20Schl=C3=B6mer?=
Date: Mon, 6 Dec 2021 22:19:49 +0100
Subject: [PATCH 375/519] fix some links
---
README.md | 30 +++++++++++++++---------------
1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/README.md b/README.md
index a7b89e39f..4cf651cfb 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-
+
Open Source Society University
@@ -54,7 +54,7 @@ they belong in [extras/courses](extras/courses.md) or [extras/readings](extras/r
](https://docs.google.com/spreadsheets/d/1bkUU90y4rKYQHwY5AR2iX6iiPTrPEsYs75GkCAkrgm4/copy) to estimate their end date. Make a copy and input your start date and expected hours per week in the `Timeline` sheet. As you work through courses you can enter your actual course completion dates in the `Curriculum Data` sheet and get updated completion estimates.
**Cost**. All or nearly all course material is available for free. However, some courses may charge money for assignments/tests/projects to be graded.
-Note that both [Coursera](https://learner.coursera.help/hc/en-us/articles/209819033-Apply-for-Financial-Aid) and [edX](https://courses.edx.org/financial-assistance/) offer financial aid.
+Note that both [Coursera](https://www.coursera.support/s/article/209819033-Apply-for-Financial-Aid-or-a-Scholarship?language=en_US) and [edX](https://courses.edx.org/financial-assistance/) offer 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!
@@ -137,7 +137,7 @@ This course will introduce you to the world of computer science. Students who ha
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
-[Introduction to Computer Science and Programming using Python](https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x-10) ([alt](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/)) | 9 weeks | 15 hours/week | [high school algebra](https://www.khanacademy.org/math/algebra-home) | [chat](https://discord.gg/jvchSm9)
+[Introduction to Computer Science and Programming using Python](https://www.edx.org/course/introduction-to-computer-science-and-programming-7) ([alt](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/)) | 9 weeks | 15 hours/week | [high school algebra](https://www.khanacademy.org/math/algebra-home) | [chat](https://discord.gg/jvchSm9)
## Core CS
@@ -224,10 +224,10 @@ Courses | Duration | Effort | Prerequisites | Discussion
Courses | Duration | Effort | Additional Text / Assignments| Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--: | :--:
-[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 | - | C-like programming language | [chat](https://discord.gg/vxB2DRV)
+[Build a Modern Computer from First Principles: From Nand to Tetris](https://www.coursera.org/learn/build-a-computer) ([alt](https://www.nand2tetris.org/)) | 6 weeks | 7-13 hours/week | - | C-like programming language | [chat](https://discord.gg/vxB2DRV)
[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | - | one of [these programming languages](https://user-images.githubusercontent.com/2046800/35426340-f6ce6358-026a-11e8-8bbb-4e95ac36b1d7.png), From Nand to Tetris Part I | [chat](https://discord.gg/AsUXcPu)
-[Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/Classes/537/Spring2018/) | 10-12 weeks | 6-10 hours/week | - | algorithms, [familiarity with C](https://hackr.io/tutorials/learn-c?sort=upvotes&type_tags%5B%5D=1) is useful | [chat](https://discord.gg/wZNgpep)
-[Computer Networking: a Top-Down Approach](http://gaia.cs.umass.edu/kurose_ross/online_lectures.htm)| 8 weeks | 4–12 hours/week | [Wireshark Labs](http://gaia.cs.umass.edu/kurose_ross/wireshark.htm) | algebra, probability, basic CS | [chat](https://discord.gg/MJ9YXyV)
+[Operating Systems: Three Easy Pieces](https://pages.cs.wisc.edu/~remzi/Classes/537/Spring2018/) | 10-12 weeks | 6-10 hours/week | - | algorithms, [familiarity with C](https://hackr.io/tutorials/learn-c?sort=upvotes&type_tags%5B%5D=1) is useful | [chat](https://discord.gg/wZNgpep)
+[Computer Networking: a Top-Down Approach](http://gaia.cs.umass.edu/kurose_ross/online_lectures.htm)| 8 weeks | 4–12 hours/week | [Wireshark Labs](http://gaia.cs.umass.edu/kurose_ross/wireshark.php) | algebra, probability, basic CS | [chat](https://discord.gg/MJ9YXyV)
### Core theory
@@ -299,8 +299,8 @@ Courses | Duration | Effort | Prerequisites | Discussion
[Databases: Relational Databases and SQL](https://www.edx.org/course/databases-5-sql)| 2 weeks | 10 hours/week | core programming | [chat](https://discord.gg/P8SPPyF)
[Databases: Semistructured Data](https://www.edx.org/course/semistructured-data)| 2 weeks | 10 hours/week | core programming | [chat](https://discord.gg/duCJ3GN)
[Machine Learning](https://www.coursera.org/learn/machine-learning)| 11 weeks | 4-6 hours/week | linear algebra | [chat](https://discord.gg/NcXHDjy)
-[Computer Graphics](https://www.edx.org/course/computer-graphics-uc-san-diegox-cse167x)| 6 weeks | 12 hours/week | C++ or Java, linear algebra | [chat](https://discord.gg/68WqMNV)
-[Software Engineering: Introduction](https://www.edx.org/course/software-engineering-introduction-ubcx-softeng1x) | 6 weeks | 8-10 hours/week | Core Programming, and a [sizable project](FAQ.md#why-require-experience-with-a-sizable-project-before-the-Software-Engineering-courses) | [chat](https://discord.gg/5Qtcwtz)
+[Computer Graphics](https://www.edx.org/course/computer-graphics-2)| 6 weeks | 12 hours/week | C++ or Java, linear algebra | [chat](https://discord.gg/68WqMNV)
+[Software Engineering: Introduction](https://www.edx.org/course/software-engineering-introduction) | 6 weeks | 8-10 hours/week | Core Programming, and a [sizable project](FAQ.md#why-require-experience-with-a-sizable-project-before-the-Software-Engineering-courses) | [chat](https://discord.gg/5Qtcwtz)
### Core Ethics
@@ -337,14 +337,14 @@ But students should take *every* course that is relevant to the field they inten
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Parallel Programming](https://www.coursera.org/learn/parprog1)| 4 weeks | 6-8 hours/week | Scala programming
+[Parallel Programming](https://www.coursera.org/learn/scala-parallel-programming)| 4 weeks | 6-8 hours/week | Scala programming
[Compilers](https://www.edx.org/course/compilers) | 9 weeks | 6-8 hours/week | none
[Introduction to Haskell](https://www.seas.upenn.edu/~cis194/fall16/)| 14 weeks | - | -
[Learn Prolog Now!](https://www.let.rug.nl/bos/lpn//lpnpage.php?pageid=online) ([alt](https://github.com/ossu/computer-science/files/6085884/lpn.pdf))*| 12 weeks | - | -
[Software Debugging](https://www.udacity.com/course/software-debugging--cs259)| 8 weeks | 6 hours/week | Python, object-oriented programming
[Software Testing](https://www.udacity.com/course/software-testing--cs258) | 4 weeks | 6 hours/week | Python, programming experience
-(*) book by Blackburn, Bos, Striegnitz (compiled from [source](https://github.com/LearnPrologNow/lpn), redistributed under [CC license](http://creativecommons.org/licenses/by-sa/4.0/))
+(*) book by Blackburn, Bos, Striegnitz (compiled from [source](https://github.com/LearnPrologNow/lpn), redistributed under [CC license](https://creativecommons.org/licenses/by-sa/4.0/))
### Advanced systems
@@ -391,7 +391,7 @@ Courses | Duration | Effort | Prerequisites
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
[Theory of Computation](http://aduni.org/courses/theory/index.php?view=cw) ([Lectures](https://www.youtube.com/playlist?list=PLTke5lHMAdSNmi57H0DOTzClHPK6UwSTN)) | 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++
+[Computational Geometry](https://www.edx.org/course/computational-geometry) | 16 weeks | 8 hours/week | algorithms, C++
[Game Theory](https://www.coursera.org/learn/game-theory-1) | 8 weeks | 3 hours/week | mathematical thinking, probability, calculus
### Advanced math
@@ -412,13 +412,13 @@ Not only does real project work look great on a resume, but the project will als
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/).
+[First Timers Only](https://www.firsttimersonly.com/).
Students who would like more guidance in creating a project may choose to use a series of project oriented courses. Here is a sample of options (many more are available, at this point you should be capable of identifying a series that is interesting and relevant to you):
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Fullstack Open](https://fullstackopen.com/en) | 12 weeks | 6 hours/week | programming
+[Fullstack Open](https://fullstackopen.com/en/) | 12 weeks | 6 hours/week | programming
[Modern Robotics (Specialization)](https://www.coursera.org/specializations/modernrobotics) | 26 weeks | 2-5 hours/week | freshman-level physics, linear algebra, calculus, [linear ordinary differential equations](https://www.khanacademy.org/math/differential-equations)
[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
@@ -470,11 +470,11 @@ What is next for you? The possibilities are boundless and overlapping:
- 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 [meetup.com](https://www.meetup.com/)).
- Pay attention to emerging technologies in the world of software development:
- + Explore the **actor model** through [Elixir](http://elixir-lang.org/), a new functional programming language for the web based on the battle-tested Erlang Virtual Machine!
+ + Explore the **actor model** through [Elixir](https://elixir-lang.org/), a new functional programming language for the web based on the battle-tested Erlang Virtual Machine!
+ Explore **borrowing and lifetimes** through [Rust](https://www.rust-lang.org/), a systems language which achieves memory- and thread-safety without a garbage collector!
+ Explore **dependent type systems** through [Idris](https://www.idris-lang.org/), a new Haskell-inspired language with unprecedented support for type-driven development.
-
+
# Code of conduct
[OSSU's code of conduct](https://github.com/ossu/code-of-conduct).
From 5076f8ea044e5e457a563ad92371dcff91caa89b Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Tue, 7 Dec 2021 20:55:39 -0500
Subject: [PATCH 376/519] extras/books recommends Linear Algebra for Everyone
closes #910
---
extras/readings.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/extras/readings.md b/extras/readings.md
index be4cd8aa3..325af679f 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -36,7 +36,7 @@ Name | Author(s)
[Discrete Mathematics: An Open Introduction](http://discrete.openmathbooks.org/dmoi/) | Oscar Levin
[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 (5th Edition)](https://math.mit.edu/~gs/linearalgebra/) | Gilbert Strang
+[Linear Algebra for Everyone](https://math.mit.edu/~gs/everyone/) | Gilbert Strang
[The Art of Linear Algebra](https://github.com/kenjihiranabe/The-Art-of-Linear-Algebra) | Kenji Hiranabe, Gilbert Strang
## Systems
From 6d769214282e10cc67053145a568615480e04f94 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Tue, 7 Dec 2021 22:02:29 -0500
Subject: [PATCH 377/519] Add puzzles-practice to extras
Closes #783
---
extras/puzzles-practice-plods.md | 49 ++++++++++++++++++++++++++++++++
1 file changed, 49 insertions(+)
create mode 100644 extras/puzzles-practice-plods.md
diff --git a/extras/puzzles-practice-plods.md b/extras/puzzles-practice-plods.md
new file mode 100644
index 000000000..28f6d1af5
--- /dev/null
+++ b/extras/puzzles-practice-plods.md
@@ -0,0 +1,49 @@
+# Computer Science - Puzzles, Practice and Plods
+
+**Some OSSUnians value sites that allow them to practice coding problems disconnected from a course.**
+
+> Solving "textbook" problems is easy because we've been prepped for them by the course. Solving a "real world" example is much more difficult because there is no hand-holding.
+
+[link](https://github.com/ossu/computer-science/issues/783#issuecomment-694187743)
+
+> So give us a problem where the parameters are laid out in x,y fashion, and we'll be able to code for it. But confront us with another problem, and it might stump us since we're still not practiced with thinking algorithmically or what have you.
+
+[link](https://github.com/ossu/computer-science/issues/783#issuecomment-694176898)
+
+**Others feel that its important not to get distracted by anxieties and puzzles.**
+
+> Consider this a love letter to all the beginners out there.
+
+> I think that when you are still in the beginner stages, it FEELS like you do not have enough competence to contributing to a project.
+ It FEELS like taking classes, doing programming assignments etc. are not good enough in your eyes to be considered worthy of a "project".
+ They feel too small and insignificant. You're not quite satisfied.
+ (Part of the reason might be that early stuff is too easy for you, and you haven't taken a course that kicked your ass and wiped the floor with you yet.)
+ Since this is online learning and there is nobody/nothing holding you back, the natural tendency is to spread wide and try to do many things all at once, get distracted.
+ I'VE BEEN THERE, trust me.
+ And naturally you are in a rush to become competent as fast as possible.
+ You keep thinking, "when will I be ready to do something BIG?" And you don't want to wait.
+ Similar to how children always seem like they are in a hurry to grow up and start imitating adults.
+ The dissatisfaction and the impatience make for an uncomfortable combination.
+ Let's call this: beginner's mind.
+
+> The fact is, you have to be patient.
+ I would argue that early on in your studies, arguably, is NOT when it is most critical for you to contribute to a project...
+
+> I would recommend the slow, steady and patient approach of OSSU over the distracted, all over the place style of learning lots of others use, with various uncoordinated resources on the internet.
+ Looking for a project? How about THE NEXT COURSE?
+
+> So I think that the problem is not really a problem, but a need to adjust expectations.
+ I would recommend a shift in thinking, away from beginner's mind.
+ Think long term, so that those small, insignificant exercises and programming assignments in each course should feel like they are crucial parts of your biggest, long-term project: YOU
+
+[link](https://github.com/ossu/computer-science/issues/783#issuecomment-690023645)
+
+So OSSUnian, read the above and then consider how much time you wish to put into these resources:
+- [Exercism](https://exercism.io/)
+- [LeetCode](https://leetcode.com/)
+- [HackerRank](https://www.hackerrank.com/)
+- [CodeWars](https://www.codewars.com/)
+- [100+ Python Coding Problems with Solutions](https://github.com/ProgrammingHero1/100-plus-python-coding-problems-with-solutions)
+- [Rosalind](http://rosalind.info/problems/locations/)
+- [Advent of Code](https://adventofcode.com/)
+- [GitHub projects for beginners](https://github.com/MunGell/awesome-for-beginners) - Projects that are specifically geared towards beginners to GitHub. Possibly intermediate to advanced coding issues to be solved.
From a8d652472814c56c340913641e8fb44d8d652256 Mon Sep 17 00:00:00 2001
From: Dion Rigatos
Date: Fri, 10 Dec 2021 20:27:16 +0200
Subject: [PATCH 378/519] Added Intro to Numerical Analysis
Added Introduction to Numerical Analysis by HSE, a CS2013 Elective Course.
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index 4cf651cfb..4c4dc7706 100644
--- a/README.md
+++ b/README.md
@@ -399,6 +399,7 @@ Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | [high school math](FAQ.md#how-can-i-review-the-math-prerequisites) | [chat](https://discord.gg/m6wHbP6)
[Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | 14 weeks | 12 hours/week | corequisite: Essence of Linear Algebra | [chat](https://discord.gg/k7nSWJH)
+[Introduction to Numerical Analysis](https://www.coursera.org/learn/intro-to-numerical-analysis) | 7 weeks | 3-4 hours/week | [Mathematics for Computer Science](https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about), Optional: [Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | [chat](https://discord.gg/FNEcNNq)
[Introduction to Logic](https://www.coursera.org/learn/logic-introduction) | 10 weeks | 4-8 hours/week | [set theory](https://www.youtube.com/playlist?list=PL5KkMZvBpo5AH_5GpxMiryJT6Dkj32H6N) | [chat](https://discord.gg/MbM2Gg5)
[Probability](https://projects.iq.harvard.edu/stat110/home) | 24 weeks | 12 hours/week | [Differentiation and Integration](https://www.edx.org/course/calculus-1b-integration) | [chat](https://discord.gg/UVjs9BU)
From 314a3844253a74b7a0cff2f441b94fdf7f933b3a Mon Sep 17 00:00:00 2001
From: Dion Rigatos
Date: Fri, 10 Dec 2021 21:01:52 +0200
Subject: [PATCH 379/519] Added alternative to Intro to NumAnalysis.
Added MIT18-335J as an alternative to Introduction to Numerical Analysis.
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 4c4dc7706..c120c2e2d 100644
--- a/README.md
+++ b/README.md
@@ -399,7 +399,7 @@ Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | [high school math](FAQ.md#how-can-i-review-the-math-prerequisites) | [chat](https://discord.gg/m6wHbP6)
[Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | 14 weeks | 12 hours/week | corequisite: Essence of Linear Algebra | [chat](https://discord.gg/k7nSWJH)
-[Introduction to Numerical Analysis](https://www.coursera.org/learn/intro-to-numerical-analysis) | 7 weeks | 3-4 hours/week | [Mathematics for Computer Science](https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about), Optional: [Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | [chat](https://discord.gg/FNEcNNq)
+[Introduction to Numerical Analysis](https://www.coursera.org/learn/intro-to-numerical-analysis)([alt](https://ocw.mit.edu/courses/mathematics/18-335j-introduction-to-numerical-methods-spring-2019/index.htm))| 7 weeks | 3-4 hours/week | [Mathematics for Computer Science](https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about), Optional: [Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | [chat](https://discord.gg/FNEcNNq)
[Introduction to Logic](https://www.coursera.org/learn/logic-introduction) | 10 weeks | 4-8 hours/week | [set theory](https://www.youtube.com/playlist?list=PL5KkMZvBpo5AH_5GpxMiryJT6Dkj32H6N) | [chat](https://discord.gg/MbM2Gg5)
[Probability](https://projects.iq.harvard.edu/stat110/home) | 24 weeks | 12 hours/week | [Differentiation and Integration](https://www.edx.org/course/calculus-1b-integration) | [chat](https://discord.gg/UVjs9BU)
From fa898956eb1ae9dcc87b77b56defc79b9fdb8308 Mon Sep 17 00:00:00 2001
From: Matt Rieke
Date: Thu, 27 Jan 2022 21:08:00 -0800
Subject: [PATCH 380/519] Swapped Core security and Core applications links in
the curriculum index to reflect the order of the page. Added a link for Core
ethics to the index. Updated some capitalization.
---
README.md | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index c120c2e2d..b3931826c 100644
--- a/README.md
+++ b/README.md
@@ -93,8 +93,9 @@ just remember that you can't purchase success!
- [CS Tools](#cs-tools)
- [Core systems](#core-systems)
- [Core theory](#core-theory)
- - [Core applications](#core-applications)
- [Core security](#core-security)
+ - [Core applications](#core-applications)
+ - [Core ethics](#core-ethics)
- [Advanced CS](#advanced-cs)
- [Advanced programming](#advanced-programming)
- [Advanced systems](#advanced-systems)
@@ -171,7 +172,7 @@ Courses | Duration | Effort | Prerequisites | Discussion
[Design Patterns](https://www.coursera.org/learn/design-patterns) | 4 weeks | 4 hours/week | Object-Oriented Design
[Software Architecture](https://www.coursera.org/learn/software-architecture) | 4 weeks | 2-5 hours/week | Design Patterns
-### Core Math
+### Core math
Discrete math (Math for CS) is a prerequisite and closely related to the study of algorithms and data structures. Calculus both prepares students for discrete math and helps students develop mathematical maturity.
**Topics covered**:
@@ -251,7 +252,7 @@ Courses | Duration | Effort | Prerequisites | Discussion
[Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming](https://www.coursera.org/learn/algorithms-greedy) | 4 weeks | 4-8 hours/week | Graph Search, Shortest Paths, and Data Structures | [chat](https://discord.gg/dWVvjuz)
[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 | Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming | [chat](https://discord.gg/dYuY78u)
-### Core Security
+### Core security
**Topics covered**
`Confidentiality, Integrity, Availability`
`Secure Design`
@@ -302,7 +303,7 @@ Courses | Duration | Effort | Prerequisites | Discussion
[Computer Graphics](https://www.edx.org/course/computer-graphics-2)| 6 weeks | 12 hours/week | C++ or Java, linear algebra | [chat](https://discord.gg/68WqMNV)
[Software Engineering: Introduction](https://www.edx.org/course/software-engineering-introduction) | 6 weeks | 8-10 hours/week | Core Programming, and a [sizable project](FAQ.md#why-require-experience-with-a-sizable-project-before-the-Software-Engineering-courses) | [chat](https://discord.gg/5Qtcwtz)
-### Core Ethics
+### Core ethics
**Topics covered**:
`Social Context`
From 9e5a70a1bfc0e63b0ca81c5616d572c635398fc7 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Thu, 3 Feb 2022 01:18:31 -0800
Subject: [PATCH 381/519] Add answer on finding courses
---
FAQ.md | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/FAQ.md b/FAQ.md
index 4b65b7c4e..58f0eec99 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -20,6 +20,7 @@ Alternatively, you could [contribute](#CONTRIBUTING.md) an answer yourself.
- [Why doesn't the curriculum cover/ignore topic X?](#why-doesnt-the-curriculum-coverignore-topic-x)
- [Why is the curriculum missing some pre-requisites?](#why-is-the-curriculum-missing-some-pre-requisites)
- [Why require experience with a sizable project before the Software Engineering courses?](#why-require-experience-with-a-sizable-project-before-the-Software-Engineering-courses)
+- [How can I find a course on a particular subject?](#how-can-I-find-a-course-on-a-particular-subject)
## Questions
@@ -121,3 +122,12 @@ Of course, if you find that the curriculum is missing a pre-requisite for a cour
### Why require experience with a sizable project before the Software Engineering courses?
Software engineering tries to solve the problem of dealing with large programs. Building a sizable program before taking the SE courses will help you understand what SE is trying to solve. We recommend the Jack-to-VM-code compiler project from the nand2tetris course because it's the first project in the curriculum that is complex enough to see value in a SE course. That said, any sizable project will do and can come from outside of the OSSU curriculum. The idea is that you've done some large enough project where the pieces started to feel unmanageable. This experience will expose pain points and lead to a better understanding of SE.
+
+### How can I find a course on a particular subject?
+After completing Core CS, learners are ready to pursue computer science
+topics of their own interest. How can one find a course on a given topic?
+For MOOCs an excellent resource is [Class Central](https://www.classcentral.com/).
+For materials from university courses that are online (but not organized)
+into a MOOC, [awesome-courses](https://github.com/prakhar1989/awesome-courses)
+is a good resource. For learning a particular programming language or framework,
+[see this question](#what-is-a-good-course-to-learn-a-particular-language).
From 14c2e0525e00860695198e91c0345eaba5120295 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Thu, 3 Feb 2022 01:45:55 -0800
Subject: [PATCH 382/519] Add cs-video-courses
---
FAQ.md | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/FAQ.md b/FAQ.md
index 58f0eec99..469d42bb7 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -128,6 +128,7 @@ After completing Core CS, learners are ready to pursue computer science
topics of their own interest. How can one find a course on a given topic?
For MOOCs an excellent resource is [Class Central](https://www.classcentral.com/).
For materials from university courses that are online (but not organized)
-into a MOOC, [awesome-courses](https://github.com/prakhar1989/awesome-courses)
-is a good resource. For learning a particular programming language or framework,
+into a MOOC, [awesome-courses](https://github.com/prakhar1989/awesome-courses) and
+[cs-video-courses](https://github.com/Developer-Y/cs-video-courses)
+are good resources. For learning a particular programming language or framework,
[see this question](#what-is-a-good-course-to-learn-a-particular-language).
From 62ee314ffa16545ac1fa989ce4310b75f2e9cf26 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Thu, 3 Feb 2022 01:48:24 -0800
Subject: [PATCH 383/519] Add link to goodreads in FAQ
---
FAQ.md | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/FAQ.md b/FAQ.md
index 469d42bb7..e8852a694 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -130,5 +130,7 @@ For MOOCs an excellent resource is [Class Central](https://www.classcentral.com/
For materials from university courses that are online (but not organized)
into a MOOC, [awesome-courses](https://github.com/prakhar1989/awesome-courses) and
[cs-video-courses](https://github.com/Developer-Y/cs-video-courses)
-are good resources. For learning a particular programming language or framework,
+are good resources. For textbooks, [Goodreads](https://www.goodreads.com/genres/computer-science)
+is a great platform for reader ratings and reviews.
+For learning a particular programming language or framework,
[see this question](#what-is-a-good-course-to-learn-a-particular-language).
From 1fd984c3452aebff218b76dde9d69fbd51917cc6 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sat, 5 Mar 2022 14:13:30 -0800
Subject: [PATCH 384/519] Remove alternate course that is no longer offered.
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index b3931826c..22d1fc5fb 100644
--- a/README.md
+++ b/README.md
@@ -188,7 +188,7 @@ Courses | Duration | Effort | Notes | Prerequisites | Discussion
[Calculus 1A: Differentiation](https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.1x+2T2019/about) ([alt](https://ocw.mit.edu/courses/mathematics/18-01sc-single-variable-calculus-fall-2010/index.htm)) | 13 weeks | 6-10 hours/week | The alternate covers this and the following 2 courses | [high school math](FAQ.md#how-can-i-review-the-math-prerequisites) | [chat](https://discord.gg/mPCt45F)
[Calculus 1B: Integration](https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.2x+3T2019/about) | 13 weeks | 5-10 hours/week | - | Calculus 1A | [chat](https://discord.gg/sddAsZg)
[Calculus 1C: Coordinate Systems & Infinite Series](https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.3x+1T2020/about) | 6 weeks | 5-10 hours/week | - | Calculus 1B | [chat](https://discord.gg/FNEcNNq)
-[Mathematics for Computer Science](https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about) ([alt](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 | An alternate version with solutions to the problem sets is [here](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2005/assignments/). Students struggling can consider the [Discrete Mathematics Specialization](https://www.coursera.org/specializations/discrete-mathematics) first. It is more interactive but less comprehensive, and costs money to unlock full interactivity. | Calculus 1C | [chat](https://discord.gg/EuTzNbF)
+[Mathematics for Computer Science](https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about) ([alt](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 | An alternate version with solutions to the problem sets is [here](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2005/assignments/). | Calculus 1C | [chat](https://discord.gg/EuTzNbF)
### CS Tools
From cc213b20a860308b41f5410e0334b71db45eafa2 Mon Sep 17 00:00:00 2001
From: Aayush SInha <84586770+aayushsinha0706@users.noreply.github.com>
Date: Tue, 8 Mar 2022 01:58:34 +0530
Subject: [PATCH 385/519] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 22d1fc5fb..7d7428f52 100644
--- a/README.md
+++ b/README.md
@@ -316,7 +316,7 @@ Courses | Duration | Effort | Prerequisites | Discussion
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
[Ethics, Technology and Engineering](https://www.coursera.org/learn/ethics-technology-engineering)| 9 weeks | 2 hours/week | none | [chat](https://discord.gg/6ttjPmzZbe)
-[Intellectual Property Law in Digital Age](https://www.coursera.org/learn/intellectual-property-law-in-digital-age)| 4 weeks | 2 hours/week | none | [chat](https://discord.gg/YbuERswpAK)
+[Introduction to Intellectual Property](https://www.coursera.org/learn/introduction-intellectual-property)| 4 weeks | 2 hours/week | none | [chat](https://discord.gg/YbuERswpAK)
[Data Privacy Fundamentals](https://www.coursera.org/learn/northeastern-data-privacy)| 3 weeks | 3 hours/week | none | [chat](https://discord.gg/64J34ajNBd)
## Advanced CS
From d802502f94052afba73903c3bf01cdad33978cce Mon Sep 17 00:00:00 2001
From: Nick Roma
Date: Sun, 20 Mar 2022 19:50:24 +0900
Subject: [PATCH 386/519] Fixes typos
---
README.md | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
index 22d1fc5fb..d5d125e96 100644
--- a/README.md
+++ b/README.md
@@ -38,7 +38,7 @@ but specifically chosen to meet the following criteria.
- Be open for enrollment
- Run regularly (ideally in self-paced format, otherwise running multiple times per year)
- Be of generally high quality in teaching materials and pedagogical principles
-- Match the curricular standards of the [CS 2013](CURRICULAR_GUIDELINES.md): Curriculum Guidelines for Undergraduate Degree Programs in Computer Science
+- Match the curricular standards of the [CS 2013](CURRICULAR_GUIDELINES.md): Curriculum Guidelines for Undergraduate Degree Programs in Computer Science
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,
@@ -95,7 +95,7 @@ just remember that you can't purchase success!
- [Core theory](#core-theory)
- [Core security](#core-security)
- [Core applications](#core-applications)
- - [Core ethics](#core-ethics)
+ - [Core ethics](#core-ethics)
- [Advanced CS](#advanced-cs)
- [Advanced programming](#advanced-programming)
- [Advanced systems](#advanced-systems)
@@ -291,7 +291,7 @@ Courses | Duration | Effort | Prerequisites | Discussion
`supervised learning`
`unsupervised learning`
`OpenGL`
-`raytracing`
+`ray tracing`
`and more`
Courses | Duration | Effort | Prerequisites | Discussion
@@ -337,7 +337,7 @@ But students should take *every* course that is relevant to the field they inten
`and more`
Courses | Duration | Effort | Prerequisites
-:-- | :--: | :--: | :--:
+:-- | :--: | :--: | :--:
[Parallel Programming](https://www.coursera.org/learn/scala-parallel-programming)| 4 weeks | 6-8 hours/week | Scala programming
[Compilers](https://www.edx.org/course/compilers) | 9 weeks | 6-8 hours/week | none
[Introduction to Haskell](https://www.seas.upenn.edu/~cis194/fall16/)| 14 weeks | - | -
@@ -494,9 +494,9 @@ The meaning of each of these labels is:
- `Main Curriculum`: cards with that label represent courses that are listed in our curriculum.
- `Extra Resources`: cards with that label represent courses that were added by the student.
-- `Doing`: cards with that label represent courses the student is current doing.
+- `Doing`: cards with that label represent courses the student is currently 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.
+Those cards should also have the link for at least one project/article built with the knowledge acquired in such a 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*.
From 17b9adfb0e7bf9cf4da96134daee524719c58524 Mon Sep 17 00:00:00 2001
From: Ethan Deng <44384988+ethand605@users.noreply.github.com>
Date: Sun, 27 Mar 2022 17:48:35 -0700
Subject: [PATCH 387/519] Update full stack open hours/week
https://studies.cs.helsinki.fi/stats/courses/fullstackopen
According to the course stats, every part takes at least 15 hours to finish on average.
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index d5d125e96..a10f980f3 100644
--- a/README.md
+++ b/README.md
@@ -420,7 +420,7 @@ Students who would like more guidance in creating a project may choose to use a
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Fullstack Open](https://fullstackopen.com/en/) | 12 weeks | 6 hours/week | programming
+[Fullstack Open](https://fullstackopen.com/en/) | 12 weeks | 15 hours/week | programming
[Modern Robotics (Specialization)](https://www.coursera.org/specializations/modernrobotics) | 26 weeks | 2-5 hours/week | freshman-level physics, linear algebra, calculus, [linear ordinary differential equations](https://www.khanacademy.org/math/differential-equations)
[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 f7a47ce7055c037b36ad3b564746ec43de9dd469 Mon Sep 17 00:00:00 2001
From: spamegg
Date: Tue, 5 Apr 2022 10:20:44 +0300
Subject: [PATCH 388/519] update MathForCS dead alternate link
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index a10f980f3..8a63e56e9 100644
--- a/README.md
+++ b/README.md
@@ -188,7 +188,7 @@ Courses | Duration | Effort | Notes | Prerequisites | Discussion
[Calculus 1A: Differentiation](https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.1x+2T2019/about) ([alt](https://ocw.mit.edu/courses/mathematics/18-01sc-single-variable-calculus-fall-2010/index.htm)) | 13 weeks | 6-10 hours/week | The alternate covers this and the following 2 courses | [high school math](FAQ.md#how-can-i-review-the-math-prerequisites) | [chat](https://discord.gg/mPCt45F)
[Calculus 1B: Integration](https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.2x+3T2019/about) | 13 weeks | 5-10 hours/week | - | Calculus 1A | [chat](https://discord.gg/sddAsZg)
[Calculus 1C: Coordinate Systems & Infinite Series](https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.3x+1T2020/about) | 6 weeks | 5-10 hours/week | - | Calculus 1B | [chat](https://discord.gg/FNEcNNq)
-[Mathematics for Computer Science](https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about) ([alt](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 | An alternate version with solutions to the problem sets is [here](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2005/assignments/). | Calculus 1C | [chat](https://discord.gg/EuTzNbF)
+[Mathematics for Computer Science](https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about) ([alt](https://ocw.mit.edu/courses/6-042j-mathematics-for-computer-science-fall-2010/)) | 13 weeks | 5 hours/week | An alternate version with solutions to the problem sets is [here](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2005/assignments/). | Calculus 1C | [chat](https://discord.gg/EuTzNbF)
### CS Tools
From 5cec4a8b48925271f8b51106b30198278af51b74 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sun, 15 May 2022 13:04:02 -0400
Subject: [PATCH 389/519] Remove note on provisional status
Having closed the [RFC: Add Security Courses](https://github.com/ossu/computer-science/issues/639), it is time to remove the provisional label from the Core Security section.
---
README.md | 2 --
1 file changed, 2 deletions(-)
diff --git a/README.md b/README.md
index c3586d9bf..826658f9d 100644
--- a/README.md
+++ b/README.md
@@ -262,8 +262,6 @@ Courses | Duration | Effort | Prerequisites | Discussion
`Cryptography`
`and more`
-Note: **_These courses are provisionally recommended_**. There is an open [Request For Comment](https://github.com/ossu/computer-science/issues/639) on security course selection. Contributors are encouraged to compare the various courses in the RFC and offer feedback.
-
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
[Information Security: Context and Introduction](https://www.coursera.org/learn/information-security-data) | 5 weeks | 3 hours/week | - | [chat](https://discord.gg/8h6Rz8g)
From 460b241a692034b86303b1a8f668fdfeb36bcf99 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sun, 15 May 2022 14:45:42 -0400
Subject: [PATCH 390/519] Replace Numerical Analysis Course
Resolves #1006
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 826658f9d..081a1b4a7 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@

-Open Source Society University
+Open Source Society University
num
Path to a free self-taught education in Computer Science!
@@ -398,7 +398,7 @@ Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | [high school math](FAQ.md#how-can-i-review-the-math-prerequisites) | [chat](https://discord.gg/m6wHbP6)
[Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | 14 weeks | 12 hours/week | corequisite: Essence of Linear Algebra | [chat](https://discord.gg/k7nSWJH)
-[Introduction to Numerical Analysis](https://www.coursera.org/learn/intro-to-numerical-analysis)([alt](https://ocw.mit.edu/courses/mathematics/18-335j-introduction-to-numerical-methods-spring-2019/index.htm))| 7 weeks | 3-4 hours/week | [Mathematics for Computer Science](https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about), Optional: [Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | [chat](https://discord.gg/FNEcNNq)
+[Introduction to Numerical Methods](https://ocw.mit.edu/courses/mathematics/18-335j-introduction-to-numerical-methods-spring-2019/index.htm))| 14 weeks | 12 hours/week | [Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | [chat](https://discord.gg/FNEcNNq)
[Introduction to Logic](https://www.coursera.org/learn/logic-introduction) | 10 weeks | 4-8 hours/week | [set theory](https://www.youtube.com/playlist?list=PL5KkMZvBpo5AH_5GpxMiryJT6Dkj32H6N) | [chat](https://discord.gg/MbM2Gg5)
[Probability](https://projects.iq.harvard.edu/stat110/home) | 24 weeks | 12 hours/week | [Differentiation and Integration](https://www.edx.org/course/calculus-1b-integration) | [chat](https://discord.gg/UVjs9BU)
From ad3be1fceca51db37c90a0b3457113caa15f8504 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sun, 15 May 2022 14:46:23 -0400
Subject: [PATCH 391/519] Typo fix
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 081a1b4a7..4dfcd97e6 100644
--- a/README.md
+++ b/README.md
@@ -398,7 +398,7 @@ Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | [high school math](FAQ.md#how-can-i-review-the-math-prerequisites) | [chat](https://discord.gg/m6wHbP6)
[Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | 14 weeks | 12 hours/week | corequisite: Essence of Linear Algebra | [chat](https://discord.gg/k7nSWJH)
-[Introduction to Numerical Methods](https://ocw.mit.edu/courses/mathematics/18-335j-introduction-to-numerical-methods-spring-2019/index.htm))| 14 weeks | 12 hours/week | [Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | [chat](https://discord.gg/FNEcNNq)
+[Introduction to Numerical Methods](https://ocw.mit.edu/courses/mathematics/18-335j-introduction-to-numerical-methods-spring-2019/index.htm)| 14 weeks | 12 hours/week | [Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | [chat](https://discord.gg/FNEcNNq)
[Introduction to Logic](https://www.coursera.org/learn/logic-introduction) | 10 weeks | 4-8 hours/week | [set theory](https://www.youtube.com/playlist?list=PL5KkMZvBpo5AH_5GpxMiryJT6Dkj32H6N) | [chat](https://discord.gg/MbM2Gg5)
[Probability](https://projects.iq.harvard.edu/stat110/home) | 24 weeks | 12 hours/week | [Differentiation and Integration](https://www.edx.org/course/calculus-1b-integration) | [chat](https://discord.gg/UVjs9BU)
From 721724363469b3dcc41c9fabbb067f6a0d148c55 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sun, 15 May 2022 20:10:30 -0400
Subject: [PATCH 392/519] Fix typo
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 4dfcd97e6..51f30c311 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@

-Open Source Society University
num
+Open Source Society University
Path to a free self-taught education in Computer Science!
From 4551cef39614fab5aa01b602df4decfc43609225 Mon Sep 17 00:00:00 2001
From: spamegg
Date: Sat, 11 Jun 2022 12:48:11 +0300
Subject: [PATCH 393/519] Math for CS 2010, 2015/2019 solutions
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 51f30c311..04ace2aaa 100644
--- a/README.md
+++ b/README.md
@@ -188,7 +188,7 @@ Courses | Duration | Effort | Notes | Prerequisites | Discussion
[Calculus 1A: Differentiation](https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.1x+2T2019/about) ([alt](https://ocw.mit.edu/courses/mathematics/18-01sc-single-variable-calculus-fall-2010/index.htm)) | 13 weeks | 6-10 hours/week | The alternate covers this and the following 2 courses | [high school math](FAQ.md#how-can-i-review-the-math-prerequisites) | [chat](https://discord.gg/mPCt45F)
[Calculus 1B: Integration](https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.2x+3T2019/about) | 13 weeks | 5-10 hours/week | - | Calculus 1A | [chat](https://discord.gg/sddAsZg)
[Calculus 1C: Coordinate Systems & Infinite Series](https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.3x+1T2020/about) | 6 weeks | 5-10 hours/week | - | Calculus 1B | [chat](https://discord.gg/FNEcNNq)
-[Mathematics for Computer Science](https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about) ([alt](https://ocw.mit.edu/courses/6-042j-mathematics-for-computer-science-fall-2010/)) | 13 weeks | 5 hours/week | An alternate version with solutions to the problem sets is [here](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2005/assignments/). | Calculus 1C | [chat](https://discord.gg/EuTzNbF)
+[Mathematics for Computer Science](https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about) ([alt](https://ocw.mit.edu/courses/6-042j-mathematics-for-computer-science-fall-2010/)) | 13 weeks | 5 hours/week | [2015/2019 solutions](https://github.com/spamegg1/Math-for-CS-solutions) [2010 solutions](https://github.com/frevib/mit-cs-math-6042-fall-2010-problems) [2005 solutions](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2005/assignments/). | Calculus 1C | [chat](https://discord.gg/EuTzNbF)
### CS Tools
From ee63ae2f348866c561b39d3e7586bf8635138285 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sat, 11 Jun 2022 13:27:41 -0400
Subject: [PATCH 394/519] Add DSA Textbook to Extras
Thank you to @hamzakat
Closes #994
---
extras/readings.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/extras/readings.md b/extras/readings.md
index 1885e77a3..1f6d2d83d 100644
--- a/extras/readings.md
+++ b/extras/readings.md
@@ -69,6 +69,7 @@ Name | Author(s)
[Category Theory for Programmers: The Preface](https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/) | Bartosz Milewski
[An Introduction to Information Retrieval](https://nlp.stanford.edu/IR-book/pdf/irbookonlinereading.pdf) | Christopher D. Manning, Prabhakar Raghavan, Hinrich Schütze
[Computer Science: An interdisciplinary approach](https://introcs.cs.princeton.edu/java/cs/) | Robert Sedgewick, Kevin Wayne
+[DSA CS3: Data Structures & Algorithms](https://opendsa-server.cs.vt.edu/OpenDSA/Books/CS3/html/) ([Coursenotes](https://opendsa-server.cs.vt.edu/OpenDSA/Books/CS3notes/html/) - [Slides](https://opendsa-server.cs.vt.edu/OpenDSA/Books/CS3slides/html/)) | The OpenDSA Project (supported by National Science Foundation)
## Applications
From 6d39ae6dcc27e20869231c187072266505cf8eed Mon Sep 17 00:00:00 2001
From: spamegg
Date: Sat, 11 Jun 2022 21:20:06 +0300
Subject: [PATCH 395/519] alternate links for Computation Structures
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 04ace2aaa..5c4305cc6 100644
--- a/README.md
+++ b/README.md
@@ -365,7 +365,7 @@ Courses | Duration | Effort | Prerequisites
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Computation Structures 1: Digital Circuits](https://learning.edx.org/course/course-v1:MITx+6.004.1x_3+3T2016) | 10 weeks | 6 hours/week | [Nand2Tetris II](https://www.coursera.org/learn/nand2tetris2)
+[Computation Structures 1: Digital Circuits](https://learning.edx.org/course/course-v1:MITx+6.004.1x_3+3T2016) [alt1 (all 3 courses)](https://ocw.mit.edu/courses/6-004-computation-structures-spring-2017/) [alt2 (all 3 courses)](https://ocw.mit.edu/courses/6-004-computation-structures-spring-2009/) | 10 weeks | 6 hours/week | [Nand2Tetris II](https://www.coursera.org/learn/nand2tetris2)
[Computation Structures 2: Computer Architecture](https://learning.edx.org/course/course-v1:MITx+6.004.2x+3T2015) | 10 weeks | 6 hours/week | Computation Structures 1
[Computation Structures 3: Computer Organization](https://learning.edx.org/course/course-v1:MITx+6.004.3x_2+1T2017) | 10 weeks | 6 hours/week | Computation Structures 2
From 0f87dc02adb3de34281168cb434f2bca31cfc2f2 Mon Sep 17 00:00:00 2001
From: spamegg
Date: Sat, 11 Jun 2022 21:25:42 +0300
Subject: [PATCH 396/519] alternate links for Computation Structures
improved formatting
---
README.md | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index 5c4305cc6..1237e82a3 100644
--- a/README.md
+++ b/README.md
@@ -363,11 +363,11 @@ Courses | Duration | Effort | Prerequisites
`system call interface`
`and more`
-Courses | Duration | Effort | Prerequisites
-:-- | :--: | :--: | :--:
-[Computation Structures 1: Digital Circuits](https://learning.edx.org/course/course-v1:MITx+6.004.1x_3+3T2016) [alt1 (all 3 courses)](https://ocw.mit.edu/courses/6-004-computation-structures-spring-2017/) [alt2 (all 3 courses)](https://ocw.mit.edu/courses/6-004-computation-structures-spring-2009/) | 10 weeks | 6 hours/week | [Nand2Tetris II](https://www.coursera.org/learn/nand2tetris2)
-[Computation Structures 2: Computer Architecture](https://learning.edx.org/course/course-v1:MITx+6.004.2x+3T2015) | 10 weeks | 6 hours/week | Computation Structures 1
-[Computation Structures 3: Computer Organization](https://learning.edx.org/course/course-v1:MITx+6.004.3x_2+1T2017) | 10 weeks | 6 hours/week | Computation Structures 2
+Courses | Duration | Effort | Prerequisites | Notes
+:-- | :--: | :--: | :--: | :--:
+[Computation Structures 1: Digital Circuits](https://learning.edx.org/course/course-v1:MITx+6.004.1x_3+3T2016) [alt1](https://ocw.mit.edu/courses/6-004-computation-structures-spring-2017/) [alt2 ](https://ocw.mit.edu/courses/6-004-computation-structures-spring-2009/) | 10 weeks | 6 hours/week | [Nand2Tetris II](https://www.coursera.org/learn/nand2tetris2) | Alternate links contain all 3 courses.
+[Computation Structures 2: Computer Architecture](https://learning.edx.org/course/course-v1:MITx+6.004.2x+3T2015) | 10 weeks | 6 hours/week | Computation Structures 1 |
+[Computation Structures 3: Computer Organization](https://learning.edx.org/course/course-v1:MITx+6.004.3x_2+1T2017) | 10 weeks | 6 hours/week | Computation Structures 2 |
### Advanced theory
From 69208efce1a43b3ea2ee93d85e2706ed7ee57581 Mon Sep 17 00:00:00 2001
From: spamegg
Date: Tue, 21 Jun 2022 11:47:39 +0300
Subject: [PATCH 397/519] added OSTEP course page
---
README.md | 2 +-
coursepages/ostep/OSTEP.md | 160 ++++++++++++++++
coursepages/ostep/Project-1B-initial-xv6.md | 35 ++++
coursepages/ostep/Reading-order.md | 13 ++
coursepages/ostep/Scheduling-xv6-lottery.md | 202 ++++++++++++++++++++
coursepages/ostep/vm-xv6-intro.md | 13 ++
6 files changed, 424 insertions(+), 1 deletion(-)
create mode 100644 coursepages/ostep/OSTEP.md
create mode 100644 coursepages/ostep/Project-1B-initial-xv6.md
create mode 100644 coursepages/ostep/Reading-order.md
create mode 100644 coursepages/ostep/Scheduling-xv6-lottery.md
create mode 100644 coursepages/ostep/vm-xv6-intro.md
diff --git a/README.md b/README.md
index 1237e82a3..8a29991c2 100644
--- a/README.md
+++ b/README.md
@@ -227,7 +227,7 @@ Courses | Duration | Effort | Additional Text / Assignments| Prerequisites | Dis
:-- | :--: | :--: | :--: | :--: | :--:
[Build a Modern Computer from First Principles: From Nand to Tetris](https://www.coursera.org/learn/build-a-computer) ([alt](https://www.nand2tetris.org/)) | 6 weeks | 7-13 hours/week | - | C-like programming language | [chat](https://discord.gg/vxB2DRV)
[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | - | one of [these programming languages](https://user-images.githubusercontent.com/2046800/35426340-f6ce6358-026a-11e8-8bbb-4e95ac36b1d7.png), From Nand to Tetris Part I | [chat](https://discord.gg/AsUXcPu)
-[Operating Systems: Three Easy Pieces](https://pages.cs.wisc.edu/~remzi/Classes/537/Spring2018/) | 10-12 weeks | 6-10 hours/week | - | algorithms, [familiarity with C](https://hackr.io/tutorials/learn-c?sort=upvotes&type_tags%5B%5D=1) is useful | [chat](https://discord.gg/wZNgpep)
+[Operating Systems: Three Easy Pieces](coursepages/ostep/OSTEP.md) | 10-12 weeks | 6-10 hours/week | - | algorithms, [familiarity with C](https://hackr.io/tutorials/learn-c?sort=upvotes&type_tags%5B%5D=1) is useful | [chat](https://discord.gg/wZNgpep)
[Computer Networking: a Top-Down Approach](http://gaia.cs.umass.edu/kurose_ross/online_lectures.htm)| 8 weeks | 4–12 hours/week | [Wireshark Labs](http://gaia.cs.umass.edu/kurose_ross/wireshark.php) | algebra, probability, basic CS | [chat](https://discord.gg/MJ9YXyV)
### Core theory
diff --git a/coursepages/ostep/OSTEP.md b/coursepages/ostep/OSTEP.md
new file mode 100644
index 000000000..f5475faf6
--- /dev/null
+++ b/coursepages/ostep/OSTEP.md
@@ -0,0 +1,160 @@
+# Operating Systems: Three Easy Pieces
+
+Credit goes to [palladian](https://github.com/palladian1)
+## Introduction
+
+First, we should be frank: it's really hard to find a good self-contained online course on operating systems. OSTEP is the best course we've found so far, but it does have some issues.
+
+This is the first course in the OSSU curriculum for which you'll need to learn some prerequisites on your own before starting it, in addition to the courses that come before it in the curriculum. You might also run into some issues running the scripts for homework demos and for testing your solutions to the projects (although we hope we've solved most of those by now).
+
+What this means for you is that if you're under a significant time crunch, or you're just not all that interested in systems programming and OS development, there's no shame in skipping this course and coming back to it later. You could also do only a part of the course (e.g. you might choose to skip the homework and/or projects).
+
+That said, if you're able to commit the time required for the prerequisites, we believe the reward is well worth the effort: this course is exciting, interesting, and quite useful for other fields of computer science and programming. One big attraction of this course is the opportunity to see a simplified but fully-functional Unix-like operating system in action and understand the concepts and design decisions that went into it as well as the low-level implementation details.
+
+In order to satisfy OSSU's curricular guidelines, you should either watch all the lecture videos or read chapters 1 through 47 in the textbook (don't worry, the chapters are usually just a few pages long) as well as finish the projects listed below. We also strongly encourage you to do the homework exercises as they're assigned on the course website or in the book chapters; think of these like the "check-your-understanding" questions that pop up in the middle of lecture videos on sites like Coursera or edX.
+
+## Prerequisites
+
+This class requires a lot of experience programming in C. You should finish one of the C books listed in the ***resources below*** *before* starting this course; if you try to learn C at the same time as the course material, you're likely to feel overwhelmed. If you haven't used C before, you should expect to spend a lot of time on this; it's hard to predict how long it might take for each person, but a rough estimate might be 8-10 hours per week for 3-5 weeks. You can always learn C alongside another OSSU course or even redo the exercises for other courses in C to gain practice with it.
+
+You should also finish both parts of Nand2Tetris before starting this course. OSTEP focuses on the real-world x86 and x86_64 architectures, so you'll have to fill in some gaps in order to translate the concepts you learned in Nand2Tetris to a new architecture. You can do that with the x86 resources below, but note that they all assume you know C, so learn that first. This should take around 6-8 hours in total.
+
+## Course Links
+
+* [Course website](https://pages.cs.wisc.edu/~remzi/Classes/537/Spring2018/)
+* [Book](https://pages.cs.wisc.edu/~remzi/OSTEP/)
+* [Lecture videos](https://pages.cs.wisc.edu/~remzi/Classes/537/Spring2018/Discussion/videos.html)
+* [Homework](https://pages.cs.wisc.edu/~remzi/OSTEP/Homework/homework.html)
+* [Homework repo](https://github.com/remzi-arpacidusseau/ostep-homework)
+* [Projects](https://github.com/remzi-arpacidusseau/ostep-projects)
+* [xv6](https://github.com/mit-pdos/xv6-public)
+
+## Roadmap
+
+This course was originally taught as CS 537 at the University of Wisconsin by the author of the OSTEP textbook, so the projects are assigned in the course according to the best times to give UWisconsin students access to on-campus resources like recitation sections and office hours. That means they don't match up perfectly with the material being covered at that time in the lectures or textbook chapters. We recommend doing the course in the following order instead.
+
+[Reading order](readingorder.md)
+
+* Read chapters 1 and 2 of the OSTEP textbook and watch the first half (the introduction) of lecture 1.
+* Do the `initial-utilities` project; it's intended as a litmus test for you to make sure you're comfortable enough with C before taking this class. You can watch discussion 1 for help. If it takes you more than 2 hours to write the code (not counting the discussion time and any time spent debugging), you should consider spending more time learning C before moving on in the course. (If you want more practice, you can do `initial-reverse` too, but it's not required.)
+* Watch lectures 1 through 5 and read chapters 3 through 24 of the OSTEP textbook. We recommend doing the homework assignments as they come up in the course calendar or book chapters.
+* Watch discussion 3 and reread chapter 5, then do the `processes-shell` project.
+* Read the annotated guide to xv6 linked in the resources section below, starting from the beginning and stopping after the `System Calls: Processes` section.
+* Watch discussion 2, then do the `initial-xv6` project.
+* Watch discussion 5, then do the `scheduling-xv6-lottery` project.
+* Watch discussion 7, then do the `vm-xv6-intro` project.
+* Watch lectures 6 through 9 (and optionally, the review lecture) and read chapters 25 through 34; again, you're encouraged to do the homework.
+* Watch discussion 10, then do the `concurency-xv6-threads` project.
+* Watch discussions 11 and 12, then do the `concurrency-mapreduce` project.
+* Watch lectures through 14 (and optionally, the second review lecture) and read chapters 35 through 47; remember to do the homework along with the lectures or chapters.
+* Do the `filesystems-checker` project.
+
+### Running the Projects
+
+This course was originally taught as CS 537 at the University of Wisconsin by the author of the OSTEP textbook, which means that the homework and projects were written with those students as a target audience and designed to be run on UWisconsin lab computers with specific software versions pre-installed for students. We hope this section fixes that so you can run them on other computers, but we haven't tested this on every computer, so if you run into other issues, let us know on the [Discord channel](https://discord.gg/MJ9YXyV) and we'll try to help out.
+
+In order to run the homework and projects on Linux or macOS, you'll need to have all of the following programs installed:
+
+* `gcc`
+* `gas`
+* `ld`
+* `gdb`
+* `make`
+* `objcopy`
+* `objdump`
+* `dd`
+* `python`
+* `perl`
+* `gawk`
+* `expect`
+* `git`
+
+You will also need to install `qemu`, but we recommend using the patched version provided by the xv6 authors; see [this link](https://pdos.csail.mit.edu/6.828/2018/tools.html) for details.
+
+On macOS, you'll need to install a cross-compiler `gcc` suite capable of producing x86 ELF binaries; see the link above for details as well.
+
+On Windows, you can use a Linux virtual machine for the homework and projects. Some of these packages are not yet supported on Apple M1 computers, and virtual machine software has not yet been ported to the new processor architecture; some students have used a VPS to do the homework and projects instead.
+
+Next, clone the `ostep-homework` and `ostep-projects` repositories:
+```sh
+git clone https://github.com/remzi-arpacidusseau/ostep-homework/
+git clone https://github.com/remzi-arpacidusseau/ostep-projects/
+cd ostep-projects
+```
+
+You'll have to clone [the `xv6-public` repository](https://github.com/mit-pdos/xv6-public) into the directory for each xv6-related OSTEP project. You could use the same copy for all the projects, but we recommend using separate copies to avoid previous projects causing bugs for later ones. Run the following commands in *each* of the `initial-xv6`, `scheduling-xv6-lottery`, `vm-xv6-intro`, `concurrency-xv6-threads`, and `filesystems-checker` directories.
+
+```sh
+mkdir src
+git clone https://github.com/mit-pdos/xv6-public src
+```
+
+
+
+Hints and tips for Projects
+
+- `initial-reverse`: the error messages that are needed to pass the tests were wrong! The provided text said `"error: ..."` but the tests expected `"reverse: ..."` so make sure to match the tests' expectations in your code.
+- `processes-shell`: I had to edit `/tests/3.pre` to use `/bin/ls` due to how it's set up on my system, in order to pass all the tests. Alternatively you can add `export PATH="/bin:$PATH"` to your `.profile` or `.bashrc` file.
+- [hints for Project 1B: `initial-xv6`](Project-1B-initial-xv6.md)
+- [hints for `scheduling-xv6-lottery`](scheduling-xv6-lottery.md)
+- [hints for `vm-xv6-intro`](vm-xv6-intro.md)
+
+
+## Resources
+
+### C
+
+Please don't try to learn C from sites like GeeksforGeeks, TutorialsPoint, or Hackr.io (we're not even gonna link to them here). Those are great resources for other languages, but C has way too many pitfalls, and C tutorials online are often filled with dangerous errors and bad coding practices. We looked at many C resources for the recommendations below and unfortunately found *many* bad or unsafe ones; we'll only include the best ones here, so look no further!
+
+We recommend learning C by working through (the entirety of) Jens Gustedt's [*Modern C*](https://modernc.gforge.inria.fr), which is [freely available online](https://hal.inria.fr/hal-02383654/document). This book is relatively short and will bring you up to speed on the C language itself as well as modern coding practices for it. Make sure to do all the exercises in the footnotes!
+
+While the book above is our default recommendation, we also recommend K.N. King's [*C Programming: A Modern Approach*](http://www.knking.com/books/c2/) as a second, more beginner-friendly option. It has some disadvantages: it's much longer (almost 850 pages), it's not available for free (and copies can be hard to find), and it's not quite as recent as *Modern C* (but still relevant nonetheless). That said, it has more exercises if you want extra practice, and the Q&A sections at the end of each chapter are filled with pearls of C wisdom and answers to C FAQs. It also covers almost the entirety of the C language and standard library, so it doubles as a reference book.
+
+CS 50 doesn't quite cover enough C for OSTEP, but if you've already taken CS 50, you can supplement it with the books above.
+
+Additional (***optional***) resources include:
+* [CS 50 Manual Pages](https://manual.cs50.io): a great reference for looking up C library functions; most functions include both the usual manual as well as a beginner-friendly "less comfortable" option (just note that the "less comfortable" version uses `string` as an alias for `char *`.)
+* [comp.lang.c FAQs](c-faq.com): answers to all of your questions about C minutiae.
+* [cdecl](https://cdecl.org): a tool to translate C gibberish into English.
+* [C track on exercism.io](https://exercism.io/tracks/C): additional practice exercises.
+* [Secure Coding Practices in C and C++](https://www.amazon.com/dp/0321822137): if you want to understand why other C resources are so unsafe.
+* [*The C Programming Language*](https://www.amazon.com/dp/0131103628): the original book on C by its creators. Too outdated for OSTEP, but a good read if you manage to find a copy.
+
+### x86 Architecture and Assembly Language
+
+Nand2Tetris has already introduced most of the concepts you'll need to understand systems and computer architectures, so now you just need to port that knowledge to the real-world (32-bit) x86 architecture.
+
+The easiest way to do that is by watching a subset of the lectures from the *Computer Systems: A Programmer's Perspective* course (or reading the matching chapters in the [textbook](https://www.amazon.com/dp/013409266X) of the same name). The lectures you'll need are:
+
+* [Machine-Level Programming I: Basics](https://scs.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=6e410255-3858-4e85-89c7-812c5845d197)
+* [Machine-Level Programming II: Control](https://scs.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=fc93c499-8fc9-4652-9a99-711058054afb)
+* [Machine-Level Programming III: Procedures](https://scs.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=2994255f-923b-4ad4-8fb4-5def7fd802cd)
+* [Machine-Level Programming IV: Data](https://scs.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=03308c94-fc20-40d8-8978-1a9b81c344ed)
+* [Machine-Level Programming V: Advanced Topics](https://scs.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=3f0bf9ca-d640-4798-b91a-73aed656a10a)
+* [Linking](https://scs.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=0aef84fc-a53b-49c6-bb43-14cb2b175249)
+
+Additional (***optional***) resources include:
+* [CPU Registers x86](https://wiki.osdev.org/CPU_Registers_x86): good for looking up specific registers.
+* [*PC Assembly Language*](https://pdos.csail.mit.edu/6.828/readings/pcasm-book.pdf): a short book on x86 assembly.
+* [GCC Inline Assembly HOWTO](https://wwww.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html): a guide to writing assembly code inside a C program.
+* [*Intel 80386 Programmer's Reference Manual*](https://pdos.csail.mit.edu/6.828/2018/readings/i386.pdf): the official (and huge) resourcefrom Intel.
+
+### xv6
+
+You don't need to read anything about xv6 until after you start OSTEP; in fact, we recommend holding off on the xv6-related projects until you've finished the entire section on virtualization. After that, you'll need a guide to walk you through the source code.
+
+The xv6 authors provide a [book](https://pdos.csail.mit.edu/6.828/2018/xv6/book-rev11.pdf) that you can read alongside the source code. There's also a handy line-numbered [PDF version](https://pdos.csail.mit.edu/6.828/2018/xv6/xv6-rev11.pdf) of the code with an index to see exactly where each function or constant gets used.
+
+However, that book glosses over a lot of the details in the code that you might find challenging, including the advanced C features used, the x86 architecture- specific instructions, and the concurrency aspects (if you haven't finished that section of OSTEP before starting the xv6 projects). To solve this problem, we provide an [annotated guide to xv6](https://github.com/palladian1/xv6-annotated) that goes over the entire xv6 code and analyzes it line-by-line with explanations of the C features, hardware specs, and x86 conventions used. That means it's longer than the official xv6 book, so you don't have to read all of it (and you can probably skip the optional sections unless you care about device drivers), but you can use it as a reference if you're scratching your head about some part of the code.
+
+Also [here](https://www.youtube.com/playlist?list=PLbtzT1TYeoMhTPzyTZboW_j7TPAnjv9XB) is an excellent video series walking through much of the xv6 code.
+
+### Miscellaneous
+
+You'll need a general sense of how Makefiles work in order to use the Makefile for xv6. [This tutorial](https://makefiletutorial.com) covers much more than you need; just read the "Getting Started" and "Targets" sections and come back to the rest later if you need to look something up (but you shouldn't have to).
+
+Additional (optional) resources include:
+* [GCC Command Options](https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Invoking-GCC.html#Invoking-GCC): a guide to command-line flags for the GNU C compiler `gcc`.
+* [Linker Scripts](https://sourceware.org/binutils/docs/ld/Scripts.html#Scripts): a guide to writing scripts for the GNU linker `ld`.
+* [OSDev Wiki](https://wiki.osdev.org): a great resource for all kinds of OS concepts and implementation details.
+* [*Linux Kernel Development*](https://www.amazon.com/dp/0672329468): if you want to apply your xv6 knowledge toward contributing to the Linux kernel, this is a great read after OSTEP.
diff --git a/coursepages/ostep/Project-1B-initial-xv6.md b/coursepages/ostep/Project-1B-initial-xv6.md
new file mode 100644
index 000000000..8ef57313d
--- /dev/null
+++ b/coursepages/ostep/Project-1B-initial-xv6.md
@@ -0,0 +1,35 @@
+## Project 1B
+
+### all thanks to [palladian](https://github.com/palladian1)
+
+### Linux Installation
+
+* Make sure you have a compatible compiler toolchain; if you're on Linux, gcc should work perfectly.
+* Install qemu-system-x86 (may be called qemu-system-i386 or qemu-system-x86_64; note that on some distros, qemu is the wrong package).
+* Install Perl.
+* Install gawk.
+* Install expect.
+* Make a src/ directory in the same directory as the project's test script.
+* Clone xv6 github repo and copy the source code in to your src/ directory.
+* Inside src/, run `make qemu-nox` to test whether xv6 is working. Exit xv6 with `Ctrl-a x`; if you forget this, you can also kill the qemu process. It's worth checking `top` or `htop` to make sure qemu isn't running anymore; sometimes it can keep going after you exit and consume a lot of resources.
+* Modify the Makefile to set `CPUS := 1`.
+* Run `make qemu-nox` again to test that xv6 still works.
+
+### Instructions
+
+* Your task is to create a new system call for xv6, `getreadcount()`, that will return the number of `read` syscalls that have previously taken place. Note that the count should be a global count, not a per-process count.
+
+### Suggested Approach
+
+* Download the xv6 source code PDF (it's better organized there than in the code you downloaded). Read the table of contents to understand how sheets, pages, and lines are numbered. Then glance at the cross-references after that so you know how to find parts of the code if you need to.
+* Take a (very) quick look at the portions of the xv6 source code listed under `processes` and `system calls` on the table of contents, as well as `usys.S` in the `user-level` section. Don't worry about understanding it yet; you just need to see where each file is in the PDF so that you can follow along with the discussion video later, since the professor's code has a different directory layout than yours will.
+* Watch the video for discussion 2 on Project P1B, and follow along with your PDF copy of the xv6 code. Annotate it as the professor explains what each part does.
+* Read the background section linked on the project's Github page, annotating the xv6 code PDF.
+* Read through the xv6 PDF one more time, this time to get a general understanding of the `processes` and `system calls` sections, as well as `usys.S` and `user.h` (NOTE: the last one isn't included in the xv6 PDF, so you'll have to look at the actual code you downloaded). Don't worry about understanding every last line of code, just make sure you know where system calls are defined, how they're called, etc.
+* Modify the xv6 source code to add the new `getreadcount()` syscall. You will need to modify several files; I suggest marking your modifications with `// OSTEP project` to make it easy to find them later for debugging.
+* There is one other place you'll have to add code, which isn't included in the xv6 PDF: `user.h`.
+* Once you're done, run the test script. Test 1 runs a function that will make several `read` calls, then calls `getreadcount`. In order for your code to work, you must correctly keep track of the total number of `read` calls made by all processes.
+* If your code passes test 1, congratulations! You're done for now. Don't worry about test 2 until after you've watched the lectures on concurrency.
+* If your code didn't pass test 1, you can compare the expected output in `tests/1.out` with your test's actual output in `tests-out/1.out`. You can also look at `tests-out/1.err` to check for any error messages.
+* You can also test your code by loading up xv6 in your terminal with `make qemu-nox`. Type `ls` to see all files; you should see `test_1` and `test_2`. Run test 1 with `./test_1` to see what it prints out; you can compare that manually with the expected output.
+* Once you've watched the lectures on threads, concurrency, and locks: test 2 checks whether your implementation of `getreadcount` is thread-safe. It probably wasn't before, so in order to fix that, you'll have to add a lock. Then you can run the test script again and check that your code now passes both tests.
diff --git a/coursepages/ostep/Reading-order.md b/coursepages/ostep/Reading-order.md
new file mode 100644
index 000000000..6629725c8
--- /dev/null
+++ b/coursepages/ostep/Reading-order.md
@@ -0,0 +1,13 @@
+### all thanks to [palladian](https://github.com/palladian1)
+
+* Before starting the course: `initial-utilities` (aka, project 1a) and `initial-reverse` (not assigned in class)
+* Chapter 5: `processes-shell` (project 2a)
+* Chapter 6: `initial-xv6` (project 1b, but only worry about test 1)
+* Chapter 9: `scheduling-xv6-lottery` (project 2b)
+* Chapter 24: `vm-xv6-intro` (project 3b)
+* Chapter 28: `initial-xv6` (now pass test 2)
+* Chapter 29: `concurrency-xv6-threads` (project 4b)
+* Chapter 30: `concurrency-mapreduce` (project 4a)
+* Chapter 33: `concurrency-webserver` (not assigned in class)
+* Chapter 42: `filesystems-checker` (project 5a)
+* (there is no 5b, and there are no projects for chapters 43-51)
diff --git a/coursepages/ostep/Scheduling-xv6-lottery.md b/coursepages/ostep/Scheduling-xv6-lottery.md
new file mode 100644
index 000000000..59d02dab3
--- /dev/null
+++ b/coursepages/ostep/Scheduling-xv6-lottery.md
@@ -0,0 +1,202 @@
+## all thanks to [palladian](https://github.com/palladian1)
+
+### General Tips
+
+* Read chapter 9 in the OSTEP book and watch the video for discussion 5. Lottery ticket schedulers aren't discussed in the lectures, so you really do have to read the book for this one.
+
+* In general, you can't use C standard library functions inside the kernel, because the kernel has to initialize before it can execute library binaries.
+
+* The xv6 kernel has a "kernel version" of `printf`; it takes an additional integer argument that tells it whether to print to `stdout` or `stderr`. Note that it can only handle basic format strings like `"%d"` and not more complex ones like `"%6.3g"`; you can deal with this by manually adding spaces instead. It also has another similar function, `cprintf`.
+
+* If you do want to use other library functions that aren't available inside the kernel (pseudo random number generators), you can see how those functions are implemented in P.J. Plauger's book, The Standard C Library, and then implement them yourself.
+
+ ### Implementation
+
+ * You'll have to modify the same files you did in Project 1b in order to add the two new system calls.
+ * In order to understand how processes are created, remember that they start in the `EMBRYO` state before they become `RUNNABLE`--you'll have to find where that happens.
+ * System calls always have argument type `void`, so take a look at how system calls like `kill` and `read` manage to work around that limitation and get arguments (like integers and pointers) from user space. You might have to back a few steps in the chain that executes them.
+ * Make sure you're including `types.h` and `defs.h` wherever you need to access code from other parts of the kernel.
+ * In order to create the xv6 command `ps`, look at how `cat`, `ls`, and `ln` are implemented. Make sure to modify the Makefile to include the source code for your `ps` command.
+
+
+## Spoilers below!
+
+### Solution walk through
+
+- Start from a fresh copy of the `xv6` source code.
+
+- `argint` and `argptr` are important functions. So `syscall`s take no arguments, but in reality, in user code you want to pass arguments to them.
+
+- So the way you do that is the kernel will call the `syscall`, say, `sys_kill()` with no arguments, then `sys_kill` will use `argint()` to get the arguments from the call stack, then pass that to a function `kill(int pid)`.
+
+- So you can see there's a bunch of `extern int sys_whatever` function declarations below that; that means that these functions are defined in another file and should be pulled in from there as function pointers.
+
+- And these `sys_whatever` functions are basically just wrappers for the real `syscall`, which doesn't have the `sys_` at the beginning. So you need to add `sys_settickets` and `sys_getpinfo` to that list of function declarations.
+
+- Then there's an array of function pointers; it's using this old-school C way of initializing arrays where you can do `int arr[] = { [0] 5, [1] 7}`.
+
+- And the names inside the square brackets `SYS_fork`, etc. are defined as preprocessor macros in another header file `syscall.h`.
+
+- So you need to add two more entries in the array with function pointers to `sys_settickets` and `sys_getpinfo`, and then you need to define `SYS_settickets` and `SYS_getpinfo` in the relevant header file.
+
+- So then all these `sys_` wrapper functions are defined in `sysproc.c`.
+
+- So there, you need to create `int sys_settickets(void)` and `int sys_getpinfo(void)`.
+
+- The real `settickets` function will need an int argument, so you need to use `argint` there to grab it from the call stack and pass it to `settickets`; similarly, `getpinfo` will need a pointer, so you'll use `argptr`.
+
+- Also, there's an extra condition in the if statement for `sys_settickets`; that's because you're not allowed to use a number of tickets below 1.
+
+- So then there's some assembly code that needs to run for each of the system calls; luckily, it's just a pre-written macro, so you don't have to write any assembly. that's in `usys.S`.
+
+- So you just add two lines at the bottom to create macros for `SYSCALL(settickets)` and `SYSCALL(getpinfo)`
+
+- Last part for the `syscalls`: you need to declare them in a header file for user code to be able to call them. that's in `user.h`.
+
+- So `struct pstat` will be properly defined in `pstat.h`, but you need to declare it in `user.h` as well so that user code doesn't complain when it sees it.
+
+- Basically, any user code that uses `syscalls` or C (really, `xv6`) standard library functions will have to include `user.h`.
+
+- So, so far, that's everything for the two system calls as far as the OS is concerned; now we just have to actually implement them with the regular functions `settickets` and `getpinfo`, then implement the scheduler and the `ps` program.
+
+- `pstat.h` is not for the scheduler, but for the `ps` program, which will work somewhat like the Linux `ps`. `pstat.h` is just to define the `struct pstat`, but there's no `.c` file to go with it.
+
+- So the scheduler will work by assigning 1 ticket by default to each process when it's created; then processes can set their own tickets using the `settickets` system call.
+
+- so first we need to make sure each process tracks its own tickets, then we need to assign a default of 1 ticket when creating them, then we need to write `settickets`.
+
+- the first part is in `proc.h`: processes are represented as a `struct proc`, so we add a new member for `int tickets`.
+
+- the `int ticks` member is for `ps`; I'll come back to that.
+
+- One other thing to note in `proc.h` is the `enum procstate`: you can see all the possible process states there. `EMBRYO` means it's in the process of creation; so what i did was `grep` for `EMBRYO` to find where the process was created in order to set the default tickets to 1. Turns out it's in `proc.c`.
+
+- Inside `proc.c`, there's a function `allocproc`, which initializes a process.
+
+- There's a process table called `ptable`, and `allocproc` looks through it to find an unused process.
+
+- Then when it does find it, it goes to create it; i added `p->tickets = 1;` there.
+
+- okay so the next change is to fit one of the requirements: child processes need to inherit the number of tickets from their parent process.
+
+- So child processes are created with `fork`, which is in the same file.
+
+- In `fork`, `curproc` is the current process, and `np` is the new process.
+
+- So i set `np->tickets = curproc->tickets`.
+
+- So the scheduler needs to generate a pseudo random number, then it should iterate through the process table with a counter initialized to 0, adding the number of tickets for each process to the counter. once the counter is greater than the pseudo random number, it stops and runs that process.
+
+- So I ended up looking in P.J. Plauger's The Standard C Library, which is just a big book of all the source code for the C library with commentary. It's pretty good; I don't know if it's still written that way though because the book is from the 80s.
+
+- So i just implemented C's `rand` and `srand` functions. `srand` sets a random seed (not so random, as you'll see later), then `rand` turns it into a pseudo random integer.
+
+- There's a bunch of type magic going on there between changes back and forth from integers to unsigned integers; that's to avoid signed integer overflow, which causes undefined behavior. unsigned integer overflow is okay though.
+
+- I only made one change to make it faster, which was to write `& 32767` instead of `% 32768`.
+
+- So you'll see the "random" seed i used: the number of `ticks`, which i think counts the number of timer interrupts so far.
+
+- Which is totally not random at all, since the first time this program gets run, it'll be 0, then 1, then 2, etc.
+
+- So there's some lines about counting `ticks`; that was for `ps`, not the scheduler.
+
+- The main change to make it a lottery scheduler is the counter variable.
+
+- And adding a for loop to count the total number of tickets that have been distributed.
+
+- So then at the very bottom of this file is the implementation of `settickets` and `getpinfo`.
+
+- So after initializing `counter` and `totaltickets`, there's for loop that counts the total numbers of tickets that have gone out to processes.
+
+- Then we get the winning ticket.
+
+- Let's discuss the original source code first. So first you acquire the lock. You'll release it at the very end. But in between, you have a for loop that iterates over all the processes in `ptable`.
+
+- Specifically, it iterates over only the processes in `RUNNABLE` state; if a process isn't `RUNNABLE`, it just `continue`s on to the next one. (This is for the round-robin scheduling mechanism that's already in the code.)
+
+- So now it's gonna switch to the very first `RUNNABLE` process it finds. Like, switching to executing it.
+
+- So first, `c` represents the current CPU. so it sets the current CPU to run the process it found with `c->proc = p;`.
+
+- Then it calls this function, `switchuvm(p)`, which sets up the virtual memory address space for `p`. Then it sets the process's state to `RUNNING`.
+
+- And then `swtch` is where the magic happens: that one swaps out the register contents of the OS and scheduler content with the saved-in-memory register contents of the process `p`.
+
+- So as soon as `swtch` executes, the CPU will continue executing instructions, but now they're the process's instructions. So this scheduler function just hangs there.
+
+- Eventually, when a timer interrupt goes off, the processor will use another `swtch` call but with the arguments reversed to swap the scheduler's register contents from memory into the CPU's registers and save the process's register contents. At which point execution will continue at this exact point.
+
+- So now `switchkvm` will set up the kernel's virtual memory address space.
+
+- These 5 lines are the context switch:
+
+ ```c
+ c->proc = p;
+ switchuvm(p);
+ p->state = RUNNING;
+
+ swtch(&(c->scheduler), p->context);
+ switchkvm();
+ ```
+
+- So then we go on to the next iteration of the inner for loop, which finds the next `RUNNABLE` process and repeats.
+
+- Only once we've executed all the `RUNNABLE` processes do we exit the inner for loop and release the lock.
+
+- Original source code is structured like this (this is pseudocode):
+
+ ```python
+ while (1) {
+ iterate over processes:
+ if not runnable:
+ continue
+ run it
+ ```
+
+- New code is structured like this (this is pseudocode):
+
+ ```python
+ while (1) {
+ count the total tickets allotted to all processes // one for loop here
+ get the winning ticket number
+ iterate over processes: // another for loop here
+ if not runnable:
+ continue
+ add its tickets to counter
+ if counter <= winning ticket number:
+ continue
+ run it
+ ```
+
+- We ignore the tickets of non-RUNNABLE processes.
+
+- So the tickets aren't numbered; each process just has a set amount of tickets, and we just count up until we've passed `n` tickets, where `n` is the winner.
+
+- For example if proc A has 5 tickets and proc B has 7, proc C has 2. if the winning number is 3, then A would run; if it's 8, then B would run; if it's 12, then C would run.
+
+- A winner in 0-4 would be A, 5-11 would be B, and 12-13 would be C.
+
+- So `settickets` is pretty basic: you just acquire a lock, set the tickets for the process, release the lock.
+
+- For `getpinfo` basically it works like this:
+
+- `p` is a pointer a `struct pstat`, as defined in `pstat.h`. each of its members is an array, with one entry per process.
+
+- Check for a null pointer.
+
+- Iterate over the process table and set `proc_i` to the i-th process.
+
+- Set the i-th entry of each member of `p` to the value for this process.
+
+- One last bookkeeping piece: we need to add declarations for `struct pstat` and the `settickets` and `getpinfo` system calls in `defs.h`.
+
+- And then the last file is `ps.c`, which implements the `ps` program, similar to Linux's `ps`. it just calls `getpinfo` to fill a `struct pstat`, then prints out the info for each process in use.
+
+- And then you just modify the Makefile to include `ps.c` in the compilation, and we're done!
+
+- Oh and this is why we needed the ticks in the scheduler: `ps` will print out how long each process has run.
+
+- So it needs to time the number of ticks that it actually executed.
+
+- FINALLY run `make qemu` in the `/src` directory to make sure it's all working.
diff --git a/coursepages/ostep/vm-xv6-intro.md b/coursepages/ostep/vm-xv6-intro.md
new file mode 100644
index 000000000..c86d6355c
--- /dev/null
+++ b/coursepages/ostep/vm-xv6-intro.md
@@ -0,0 +1,13 @@
+Credit goes to [palladian](https://github.com/palladian1)
+
+## Intro To xv6 Virtual Memory
+
+### WARNING:
+
+***The project doesn't match the currently available xv6 source code, which already has this project implemented in it!***
+
+[palladian](https://github.com/palladian1) tracked down a different xv6 source from the Github page of a U of Wisconsin student. We had to edit the `Makefile` to find the QEMU executable correctly. We added `null.c` to the `user` folder (also edited `makefile.mk` there), which demonstrates the lack of memory safety.
+
+Start with the code in [`start.zip`](https://github.com/spamegg1/reviews/raw/master/courses/OSTEP/ostep-projects/vm-xv6-intro/start.zip). Extract it and run `make clean` and `make qemu-nox`. Then inside the xv6 system run `null` to see the lack of safety! If you want to compare the results of `null` with the actual machine code, you can run `objdump -d user/null.o`.
+
+You might have to manually run `make clean` and `make qemu-nox` every time you make a change to the code.
From 8ec3c402502370f9210f0285877ffcafc6ff34ec Mon Sep 17 00:00:00 2001
From: spamegg
Date: Tue, 21 Jun 2022 11:51:27 +0300
Subject: [PATCH 398/519] added OSTEP course page
fixed typo
---
coursepages/ostep/OSTEP.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/coursepages/ostep/OSTEP.md b/coursepages/ostep/OSTEP.md
index f5475faf6..288652bb6 100644
--- a/coursepages/ostep/OSTEP.md
+++ b/coursepages/ostep/OSTEP.md
@@ -96,7 +96,7 @@ git clone https://github.com/mit-pdos/xv6-public src
- `initial-reverse`: the error messages that are needed to pass the tests were wrong! The provided text said `"error: ..."` but the tests expected `"reverse: ..."` so make sure to match the tests' expectations in your code.
- `processes-shell`: I had to edit `/tests/3.pre` to use `/bin/ls` due to how it's set up on my system, in order to pass all the tests. Alternatively you can add `export PATH="/bin:$PATH"` to your `.profile` or `.bashrc` file.
- [hints for Project 1B: `initial-xv6`](Project-1B-initial-xv6.md)
-- [hints for `scheduling-xv6-lottery`](scheduling-xv6-lottery.md)
+- [hints for `scheduling-xv6-lottery`](Scheduling-xv6-lottery.md)
- [hints for `vm-xv6-intro`](vm-xv6-intro.md)
From f44cacd9f91f22a2eefdedd90c1f8b4bcc2d81e8 Mon Sep 17 00:00:00 2001
From: spamegg
Date: Tue, 21 Jun 2022 18:22:21 +0300
Subject: [PATCH 399/519] added OSTEP course page
fixed typos, removed/updated links
---
coursepages/ostep/OSTEP.md | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/coursepages/ostep/OSTEP.md b/coursepages/ostep/OSTEP.md
index 288652bb6..9299fe3cc 100644
--- a/coursepages/ostep/OSTEP.md
+++ b/coursepages/ostep/OSTEP.md
@@ -33,7 +33,7 @@ You should also finish both parts of Nand2Tetris before starting this course. OS
This course was originally taught as CS 537 at the University of Wisconsin by the author of the OSTEP textbook, so the projects are assigned in the course according to the best times to give UWisconsin students access to on-campus resources like recitation sections and office hours. That means they don't match up perfectly with the material being covered at that time in the lectures or textbook chapters. We recommend doing the course in the following order instead.
-[Reading order](readingorder.md)
+[Reading order](Reading-order.md)
* Read chapters 1 and 2 of the OSTEP textbook and watch the first half (the introduction) of lecture 1.
* Do the `initial-utilities` project; it's intended as a litmus test for you to make sure you're comfortable enough with C before taking this class. You can watch discussion 1 for help. If it takes you more than 2 hours to write the code (not counting the discussion time and any time spent debugging), you should consider spending more time learning C before moving on in the course. (If you want more practice, you can do `initial-reverse` too, but it's not required.)
@@ -106,7 +106,7 @@ git clone https://github.com/mit-pdos/xv6-public src
Please don't try to learn C from sites like GeeksforGeeks, TutorialsPoint, or Hackr.io (we're not even gonna link to them here). Those are great resources for other languages, but C has way too many pitfalls, and C tutorials online are often filled with dangerous errors and bad coding practices. We looked at many C resources for the recommendations below and unfortunately found *many* bad or unsafe ones; we'll only include the best ones here, so look no further!
-We recommend learning C by working through (the entirety of) Jens Gustedt's [*Modern C*](https://modernc.gforge.inria.fr), which is [freely available online](https://hal.inria.fr/hal-02383654/document). This book is relatively short and will bring you up to speed on the C language itself as well as modern coding practices for it. Make sure to do all the exercises in the footnotes!
+We recommend learning C by working through (the entirety of) Jens Gustedt's *Modern C*, which is [freely available online](https://hal.inria.fr/hal-02383654/file/ModernC.pdf). This book is relatively short and will bring you up to speed on the C language itself as well as modern coding practices for it. Make sure to do all the exercises in the footnotes!
While the book above is our default recommendation, we also recommend K.N. King's [*C Programming: A Modern Approach*](http://www.knking.com/books/c2/) as a second, more beginner-friendly option. It has some disadvantages: it's much longer (almost 850 pages), it's not available for free (and copies can be hard to find), and it's not quite as recent as *Modern C* (but still relevant nonetheless). That said, it has more exercises if you want extra practice, and the Q&A sections at the end of each chapter are filled with pearls of C wisdom and answers to C FAQs. It also covers almost the entirety of the C language and standard library, so it doubles as a reference book.
@@ -114,7 +114,6 @@ CS 50 doesn't quite cover enough C for OSTEP, but if you've already taken CS 50,
Additional (***optional***) resources include:
* [CS 50 Manual Pages](https://manual.cs50.io): a great reference for looking up C library functions; most functions include both the usual manual as well as a beginner-friendly "less comfortable" option (just note that the "less comfortable" version uses `string` as an alias for `char *`.)
-* [comp.lang.c FAQs](c-faq.com): answers to all of your questions about C minutiae.
* [cdecl](https://cdecl.org): a tool to translate C gibberish into English.
* [C track on exercism.io](https://exercism.io/tracks/C): additional practice exercises.
* [Secure Coding Practices in C and C++](https://www.amazon.com/dp/0321822137): if you want to understand why other C resources are so unsafe.
@@ -135,8 +134,8 @@ The easiest way to do that is by watching a subset of the lectures from the *Com
Additional (***optional***) resources include:
* [CPU Registers x86](https://wiki.osdev.org/CPU_Registers_x86): good for looking up specific registers.
-* [*PC Assembly Language*](https://pdos.csail.mit.edu/6.828/readings/pcasm-book.pdf): a short book on x86 assembly.
-* [GCC Inline Assembly HOWTO](https://wwww.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html): a guide to writing assembly code inside a C program.
+* [*PC Assembly Language*](https://pdos.csail.mit.edu/6.828/2018/readings/pcasm-book.pdf): a short book on x86 assembly.
+* [GCC Inline Assembly HOWTO](https://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html): a guide to writing assembly code inside a C program.
* [*Intel 80386 Programmer's Reference Manual*](https://pdos.csail.mit.edu/6.828/2018/readings/i386.pdf): the official (and huge) resourcefrom Intel.
### xv6
From b19105e7a7a3c1be25bc21ca4a549d1c9c0cb879 Mon Sep 17 00:00:00 2001
From: spamegg
Date: Tue, 21 Jun 2022 18:28:30 +0300
Subject: [PATCH 400/519] added OSTEP course page
updated prerequisites on README
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 8a29991c2..1879c2191 100644
--- a/README.md
+++ b/README.md
@@ -227,7 +227,7 @@ Courses | Duration | Effort | Additional Text / Assignments| Prerequisites | Dis
:-- | :--: | :--: | :--: | :--: | :--:
[Build a Modern Computer from First Principles: From Nand to Tetris](https://www.coursera.org/learn/build-a-computer) ([alt](https://www.nand2tetris.org/)) | 6 weeks | 7-13 hours/week | - | C-like programming language | [chat](https://discord.gg/vxB2DRV)
[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | - | one of [these programming languages](https://user-images.githubusercontent.com/2046800/35426340-f6ce6358-026a-11e8-8bbb-4e95ac36b1d7.png), From Nand to Tetris Part I | [chat](https://discord.gg/AsUXcPu)
-[Operating Systems: Three Easy Pieces](coursepages/ostep/OSTEP.md) | 10-12 weeks | 6-10 hours/week | - | algorithms, [familiarity with C](https://hackr.io/tutorials/learn-c?sort=upvotes&type_tags%5B%5D=1) is useful | [chat](https://discord.gg/wZNgpep)
+[Operating Systems: Three Easy Pieces](coursepages/ostep/OSTEP.md) | 10-12 weeks | 6-10 hours/week | - | strong C programming | [chat](https://discord.gg/wZNgpep)
[Computer Networking: a Top-Down Approach](http://gaia.cs.umass.edu/kurose_ross/online_lectures.htm)| 8 weeks | 4–12 hours/week | [Wireshark Labs](http://gaia.cs.umass.edu/kurose_ross/wireshark.php) | algebra, probability, basic CS | [chat](https://discord.gg/MJ9YXyV)
### Core theory
From 5a2838dc45ef654e43bd95ae3a05d337ed4c4573 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Mon, 4 Jul 2022 16:35:08 -0400
Subject: [PATCH 401/519] Replace discontinued Intro Sec Course
[Information Security: Context and Introduction](https://www.coursera.org/learn/information-security-data) has been discontinued.
Replacing with [Cybersecurity Fundamentals](https://www.edx.org/course/cybersecurity-fundamentals)
Resolves #1041
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 1879c2191..d364b0219 100644
--- a/README.md
+++ b/README.md
@@ -264,7 +264,7 @@ Courses | Duration | Effort | Prerequisites | Discussion
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
-[Information Security: Context and Introduction](https://www.coursera.org/learn/information-security-data) | 5 weeks | 3 hours/week | - | [chat](https://discord.gg/8h6Rz8g)
+[Cybersecurity Fundamentals](https://www.edx.org/course/cybersecurity-fundamentals) | 8 weeks | 10-12 hours/week | - | [chat](https://discord.gg/XdY3AwTFK4)
[Principles of Secure Coding](https://www.coursera.org/learn/secure-coding-principles)| 4 weeks | 4 hours/week | - | [chat](https://discord.gg/5gMdeSK)
[Identifying Security Vulnerabilities](https://www.coursera.org/learn/identifying-security-vulnerabilities) | 4 weeks | 4 hours/week | - | [chat](https://discord.gg/V78MjUS)
From 8fabffc04fbbfa186b532ba0826420f58450f0f8 Mon Sep 17 00:00:00 2001
From: Aayush SInha <84586770+aayushsinha0706@users.noreply.github.com>
Date: Tue, 5 Jul 2022 14:46:59 +0530
Subject: [PATCH 402/519] Update README.md
---
README.md | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/README.md b/README.md
index d364b0219..1befe022f 100644
--- a/README.md
+++ b/README.md
@@ -393,6 +393,24 @@ Courses | Duration | Effort | Prerequisites
[Computational Geometry](https://www.edx.org/course/computational-geometry) | 16 weeks | 8 hours/week | algorithms, C++
[Game Theory](https://www.coursera.org/learn/game-theory-1) | 8 weeks | 3 hours/week | mathematical thinking, probability, calculus
+### Advanced Information Security
+
+Courses | Duration | Effort | Prerequisites
+:-- | :--: | :--: | :--:
+[Web Security Fundamentals](https://www.edx.org/course/web-security-fundamentals) | 5 weeks | 4-6 hours/week | understanding basic web technologies
+[Security Governance & Compliance](https://www.coursera.org/learn/security-governance-compliance) | 3 weeks | 3 hours/week | -
+[Digital Forensics Concepts](https://www.coursera.org/learn/digital-forensics-concepts) | 3 weeks | 2-3 hours/week | Core Security
+[Secure Software Development: Requirements, Design, and Reuse](https://www.edx.org/course/secure-software-development-requirements-design-and-reuse) | 7 weeks | 1-2 hours/week | Core Programming and Core Security
+[Secure Software Development: Implementation](https://www.edx.org/course/secure-software-development-implementation) | 7 weeks | 1-2 hours/week | Secure Software Development: Requirements, Design, and Reuse
+[Secure Software Development: Verification and More Specialized Topics](https://www.edx.org/course/secure-software-development-verification-and-more-specialized-topics) | 7 weeks | 1-2 hours/week | Secure Software Development: Implementation
+
+Students who want to pursue a professional IT security course and examination can go through Systems Security Certified Practitioner (SSCP) examination.
+Read More about SSCP examination here: [Systems Security Certified Practitioner](https://www.isc2.org/Certifications/SSCP). The specialization provided below is a collection of paid courses and prepares you for SSCP examination
+
+Courses | Duration | Effort | Prerequisites
+:-- | :--: | :--: | :--:
+[(ISC)² Systems Security Certified Practitioner (SSCP)](https://www.coursera.org/specializations/sscp-training) | 16 weeks | 8-10 hours/week | Core Programming and Core Security
+
### Advanced math
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
From 72d573add387564356eb7e05f7644f502ccbb351 Mon Sep 17 00:00:00 2001
From: Aayush SInha <84586770+aayushsinha0706@users.noreply.github.com>
Date: Wed, 6 Jul 2022 15:22:08 +0530
Subject: [PATCH 403/519] Update README.md
---
README.md | 7 -------
1 file changed, 7 deletions(-)
diff --git a/README.md b/README.md
index 1befe022f..742525427 100644
--- a/README.md
+++ b/README.md
@@ -404,13 +404,6 @@ Courses | Duration | Effort | Prerequisites
[Secure Software Development: Implementation](https://www.edx.org/course/secure-software-development-implementation) | 7 weeks | 1-2 hours/week | Secure Software Development: Requirements, Design, and Reuse
[Secure Software Development: Verification and More Specialized Topics](https://www.edx.org/course/secure-software-development-verification-and-more-specialized-topics) | 7 weeks | 1-2 hours/week | Secure Software Development: Implementation
-Students who want to pursue a professional IT security course and examination can go through Systems Security Certified Practitioner (SSCP) examination.
-Read More about SSCP examination here: [Systems Security Certified Practitioner](https://www.isc2.org/Certifications/SSCP). The specialization provided below is a collection of paid courses and prepares you for SSCP examination
-
-Courses | Duration | Effort | Prerequisites
-:-- | :--: | :--: | :--:
-[(ISC)² Systems Security Certified Practitioner (SSCP)](https://www.coursera.org/specializations/sscp-training) | 16 weeks | 8-10 hours/week | Core Programming and Core Security
-
### Advanced math
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
From fb24e34607976857380d6d95adf28a6d8c2a7fc1 Mon Sep 17 00:00:00 2001
From: Mikhail Loginov
Date: Fri, 8 Jul 2022 09:43:28 +0300
Subject: [PATCH 404/519] Add information security link to table of contents
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index 742525427..ebb58bd9f 100644
--- a/README.md
+++ b/README.md
@@ -100,6 +100,7 @@ just remember that you can't purchase success!
- [Advanced programming](#advanced-programming)
- [Advanced systems](#advanced-systems)
- [Advanced theory](#advanced-theory)
+ - [Advanced information security](#advanced-information-security)
- [Advanced math](#advanced-math)
- [Final project](#final-project)
From 2e9817a5852e5506e09c89209122e25ed75f2928 Mon Sep 17 00:00:00 2001
From: spamegg
Date: Mon, 11 Jul 2022 18:34:42 +0300
Subject: [PATCH 405/519] hints and tips for OSTEP Project 2A
---
coursepages/ostep/OSTEP.md | 8 ++--
.../ostep/Project-2A-processes-shell.md | 45 +++++++++++++++++++
2 files changed, 48 insertions(+), 5 deletions(-)
create mode 100644 coursepages/ostep/Project-2A-processes-shell.md
diff --git a/coursepages/ostep/OSTEP.md b/coursepages/ostep/OSTEP.md
index 9299fe3cc..305f7de3c 100644
--- a/coursepages/ostep/OSTEP.md
+++ b/coursepages/ostep/OSTEP.md
@@ -89,16 +89,14 @@ mkdir src
git clone https://github.com/mit-pdos/xv6-public src
```
-
-
-Hints and tips for Projects
+### Hints and tips for Projects
- `initial-reverse`: the error messages that are needed to pass the tests were wrong! The provided text said `"error: ..."` but the tests expected `"reverse: ..."` so make sure to match the tests' expectations in your code.
-- `processes-shell`: I had to edit `/tests/3.pre` to use `/bin/ls` due to how it's set up on my system, in order to pass all the tests. Alternatively you can add `export PATH="/bin:$PATH"` to your `.profile` or `.bashrc` file.
+- [hints and tips for `processes-shell`](Project-2A-processes-shell.md)
- [hints for Project 1B: `initial-xv6`](Project-1B-initial-xv6.md)
- [hints for `scheduling-xv6-lottery`](Scheduling-xv6-lottery.md)
- [hints for `vm-xv6-intro`](vm-xv6-intro.md)
-
+
## Resources
diff --git a/coursepages/ostep/Project-2A-processes-shell.md b/coursepages/ostep/Project-2A-processes-shell.md
new file mode 100644
index 000000000..425747087
--- /dev/null
+++ b/coursepages/ostep/Project-2A-processes-shell.md
@@ -0,0 +1,45 @@
+## Project 2A
+### all thanks to [Palladian](https://github.com/palladian1/)
+
+- [x] Interactive mode
+- [x] Batch mode
+- [x] exit
+- [x] cd
+- [x] path
+- [x] Redirection
+- [x] Parallel commands
+
+### Tips
+
+* Watch the video for discussion 3 on the Unix shell.
+* Read chapter 5 in the OSTEP book.
+* Start by implementing a shell that only does one thing: prints the prompt, then exits when you type `exit`. Then add `cd`, then `path`. Then implement the ability to execute commands with `execv`, then add batch mode, then redirection, and finally parallel commands.
+* All of the test scripts will use batch mode and redirection, so until you've got those done, you'll have to test your shell manually.
+* When you implement the `path` command, make sure you can handle both absolute and relative paths (i.e., `path tests` as well as `path /usr/bin`.
+* It's tricky to get the errors down right, so just add error messages wherever it seems reasonable, then run the test scripts and modify your code until you're reporting errors exactly when you're supposed to. If you're running test `i`, you can check `tests/i.err` and `tests/i.rc` to see how many errors your shell should generate and compare to `tests-out/i.err` and `tests-out/i.rc`.
+* If you run into issues with test 3 where the test expects something like `ls: cannot access ...` and your shell ouputs `/bin/ls: cannot access ...` or `/usr/bin/ls: cannot access ...`, try modifying your $PATH environment variable to start with `/bin`. If that doesn't work, just modify `tests/3.err` to match the output your system gives. You can't modify your system's output without messing with the implementation of `ls` and/or `execv`, so it's okay to skip this test as long as it's working in spirit.
+* I had to edit `/tests/3.pre` to use `/bin/ls` due to how it's set up on my system, in order to pass all the tests. Alternatively you can add `export PATH="/bin:$PATH"` to your `.profile` or `.bashrc` file.
+
+### Memory Management Traps and Pitfalls
+
+* This assignment makes it really easy to create pointers to stack variables that will no longer exist once they're out of scope, thus causing a segmentation fault. Make sure that if you set a pointer to point to a string, that string is something you allocated on the heap, and not on the stack.
+
+* That said, if you do use a string on the stack, you can copy it into a heap-allocated string using `strcpy()`, `strncpy()`, `strcat()`, and `strncat()`.
+
+* Only use `strcpy()` and `strcat()` for fixed-size strings and make sure the buffer you're copying into has enough space to hold the string, plus an extra character for `\0`.
+
+* For `strncpy()` and `strncat()`, make sure `n` is large enough to fit the `\0` terminator, or add it manually.
+
+* Watch out for use-after-frees, especially in the implementation of `path`.
+
+* Make sure you free any strings from `getline()` and `strdup()`, but watch out for double-frees, e.g. don't free a substring of a string you already freed.
+
+* Avoid the C library function `strtok()`; it's not thread-safe. Use `strsep()` instead.
+
+* When you use `strsep()`, make sure you keep a copy of the original pointer to the string around so that you can free it later, because `strsep()` will modify the pointer, so if you free that later on, you'll corrupt the page table.
+
+* After calling `strsep(&buf, delim)`, check whether `buf` is `NULL` before dereferencing it.
+* General C coding practice: if you allocate memory for a data structure inside a function, you should free it in the same function. If you allocate memory in a dedicated `create_xxx` function, you should have a corresponding `destroy_xxx` function. That way, you always allocate and free memory at the same function depth, which makes it easier to avoid memory errors.
+* After every call to `malloc`, `calloc`, or `realloc`, check whether the result is `NULL`.
+* Use `calloc` instead of `malloc` if you're creating an array of pointers to avoid creating pointers to garbage values.
+* in `update_path` I had to fix that issue where most of the tests do `path /bin /usr/bin`, but one of them did `path tests`. So i just assumed that if your path starts with a slash, it's an absolute path and you should copy it in as is; if it doesn't, it's a relative path and you should add a ./ at the beginning.
From 182f5935644634150afe9f4071f0ca58ff3a1cdb Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Fri, 15 Jul 2022 22:09:58 -0400
Subject: [PATCH 406/519] Rename intro file in directory to README.md
Users browsing the directory structure will better understand
which file to read first.
---
README.md | 2 +-
coursepages/ostep/{OSTEP.md => README.md} | 0
2 files changed, 1 insertion(+), 1 deletion(-)
rename coursepages/ostep/{OSTEP.md => README.md} (100%)
diff --git a/README.md b/README.md
index ebb58bd9f..2c0c23219 100644
--- a/README.md
+++ b/README.md
@@ -228,7 +228,7 @@ Courses | Duration | Effort | Additional Text / Assignments| Prerequisites | Dis
:-- | :--: | :--: | :--: | :--: | :--:
[Build a Modern Computer from First Principles: From Nand to Tetris](https://www.coursera.org/learn/build-a-computer) ([alt](https://www.nand2tetris.org/)) | 6 weeks | 7-13 hours/week | - | C-like programming language | [chat](https://discord.gg/vxB2DRV)
[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | - | one of [these programming languages](https://user-images.githubusercontent.com/2046800/35426340-f6ce6358-026a-11e8-8bbb-4e95ac36b1d7.png), From Nand to Tetris Part I | [chat](https://discord.gg/AsUXcPu)
-[Operating Systems: Three Easy Pieces](coursepages/ostep/OSTEP.md) | 10-12 weeks | 6-10 hours/week | - | strong C programming | [chat](https://discord.gg/wZNgpep)
+[Operating Systems: Three Easy Pieces](coursepages/ostep/README.md) | 10-12 weeks | 6-10 hours/week | - | strong C programming | [chat](https://discord.gg/wZNgpep)
[Computer Networking: a Top-Down Approach](http://gaia.cs.umass.edu/kurose_ross/online_lectures.htm)| 8 weeks | 4–12 hours/week | [Wireshark Labs](http://gaia.cs.umass.edu/kurose_ross/wireshark.php) | algebra, probability, basic CS | [chat](https://discord.gg/MJ9YXyV)
### Core theory
diff --git a/coursepages/ostep/OSTEP.md b/coursepages/ostep/README.md
similarity index 100%
rename from coursepages/ostep/OSTEP.md
rename to coursepages/ostep/README.md
From d3fa09f619c15345a6899d7c7d0d684f98b76785 Mon Sep 17 00:00:00 2001
From: Eero Pomell
<97628152+Password-and-authentication@users.noreply.github.com>
Date: Sat, 16 Jul 2022 13:08:10 +0300
Subject: [PATCH 407/519] Fix typo
Small typo fix
---
coursepages/ostep/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/coursepages/ostep/README.md b/coursepages/ostep/README.md
index 305f7de3c..f5ec03af0 100644
--- a/coursepages/ostep/README.md
+++ b/coursepages/ostep/README.md
@@ -46,7 +46,7 @@ This course was originally taught as CS 537 at the University of Wisconsin by th
* Watch lectures 6 through 9 (and optionally, the review lecture) and read chapters 25 through 34; again, you're encouraged to do the homework.
* Watch discussion 10, then do the `concurency-xv6-threads` project.
* Watch discussions 11 and 12, then do the `concurrency-mapreduce` project.
-* Watch lectures through 14 (and optionally, the second review lecture) and read chapters 35 through 47; remember to do the homework along with the lectures or chapters.
+* Watch lectures 10 through 14 (and optionally, the second review lecture) and read chapters 35 through 47; remember to do the homework along with the lectures or chapters.
* Do the `filesystems-checker` project.
### Running the Projects
From 8bc44c0030e6f5c1be688b4fccd44a9011a2abd2 Mon Sep 17 00:00:00 2001
From: Justin Kim
Date: Mon, 1 Aug 2022 08:01:41 -0500
Subject: [PATCH 408/519] Update PROJECTS.md
Reword the top description of PROJECTS.md to make it more clear what this section is about.
---
PROJECTS.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/PROJECTS.md b/PROJECTS.md
index cebbfd9d8..e820df166 100644
--- a/PROJECTS.md
+++ b/PROJECTS.md
@@ -1,5 +1,5 @@
# Projects
-> Here, we are providing a list curated by the community of exercises and projects to practice and reinforce the skills we try to master.
+> Here, we are providing a list of projects done by the community for the final projects. You may use these as inspirations for your own final project!
Projects created by OSSU's students for each course of our [**Computer Science**](https://github.com/ossu/computer-science) curriculum.
From 5eca2e0f4f1ec30439c1adbbd163d1e250b1419c Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Wed, 3 Aug 2022 02:02:04 -0400
Subject: [PATCH 409/519] Swap Intro CS from edX to OpenCourseWare
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 2c0c23219..cac4ed6a0 100644
--- a/README.md
+++ b/README.md
@@ -139,7 +139,7 @@ This course will introduce you to the world of computer science. Students who ha
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
-[Introduction to Computer Science and Programming using Python](https://www.edx.org/course/introduction-to-computer-science-and-programming-7) ([alt](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/)) | 9 weeks | 15 hours/week | [high school algebra](https://www.khanacademy.org/math/algebra-home) | [chat](https://discord.gg/jvchSm9)
+[Introduction to Computer Science and Programming using Python](https://ocw.mit.edu/courses/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/) ([alt](https://www.edx.org/course/introduction-to-computer-science-and-programming-7)) | 9 weeks | 15 hours/week | [high school algebra](https://www.khanacademy.org/math/algebra-home) | [chat](https://discord.gg/jvchSm9)
## Core CS
From 4ce598b5318b47b52001b12b4d41edb7e6a1fa7e Mon Sep 17 00:00:00 2001
From: spamegg
Date: Fri, 9 Sep 2022 15:48:26 +0300
Subject: [PATCH 410/519] change Logic course
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index cac4ed6a0..2a9ac70fe 100644
--- a/README.md
+++ b/README.md
@@ -411,7 +411,7 @@ Courses | Duration | Effort | Prerequisites | Discussion
[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | [high school math](FAQ.md#how-can-i-review-the-math-prerequisites) | [chat](https://discord.gg/m6wHbP6)
[Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | 14 weeks | 12 hours/week | corequisite: Essence of Linear Algebra | [chat](https://discord.gg/k7nSWJH)
[Introduction to Numerical Methods](https://ocw.mit.edu/courses/mathematics/18-335j-introduction-to-numerical-methods-spring-2019/index.htm)| 14 weeks | 12 hours/week | [Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | [chat](https://discord.gg/FNEcNNq)
-[Introduction to Logic](https://www.coursera.org/learn/logic-introduction) | 10 weeks | 4-8 hours/week | [set theory](https://www.youtube.com/playlist?list=PL5KkMZvBpo5AH_5GpxMiryJT6Dkj32H6N) | [chat](https://discord.gg/MbM2Gg5)
+[Introduction to Formal Logic](https://forallx.openlogicproject.org/) | 10 weeks | 4-8 hours/week | [set theory](https://www.youtube.com/playlist?list=PL5KkMZvBpo5AH_5GpxMiryJT6Dkj32H6N) | [chat](https://discord.gg/MbM2Gg5)
[Probability](https://projects.iq.harvard.edu/stat110/home) | 24 weeks | 12 hours/week | [Differentiation and Integration](https://www.edx.org/course/calculus-1b-integration) | [chat](https://discord.gg/UVjs9BU)
## Final project
From 59d808400bc7ead7ab0f7916edf54c146e990c5f Mon Sep 17 00:00:00 2001
From: Ariston Lorenzo <4tl0renz0@gmail.com>
Date: Tue, 6 Sep 2022 14:45:22 -0400
Subject: [PATCH 411/519] Update LICENSE copyright year
Signed-off-by: Ariston Lorenzo <4tl0renz0@gmail.com>
---
LICENSE | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/LICENSE b/LICENSE
index 0883b2b3f..e4389659d 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
The MIT License (MIT)
-Copyright (c) 2020 Open Source Society University
+Copyright (c) 2015-2022 Open Source Society University
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
From 7a592ec9e9d2fb846711bd4e05fc35855663fd52 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sun, 2 Oct 2022 08:19:07 -0700
Subject: [PATCH 412/519] Improve links
From a suggestion by @Alaharon123 here:
https://github.com/ossu/computer-science/issues/1078#issuecomment-1264661548
---
README.md | 4 ++--
coursepages/ostep/README.md | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 2a9ac70fe..7465c6760 100644
--- a/README.md
+++ b/README.md
@@ -50,7 +50,7 @@ they belong in [extras/courses](extras/courses.md) or [extras/readings](extras/r
- *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
-**Duration**. It is possible to finish within about 2 years if you plan carefully and devote roughly 20 hours/week to your studies. Learners can use [this spread
+**Duration**. It is possible to finish within about 2 years if you plan carefully and devote roughly 20 hours/week to your studies. Learners can use [this spreadsheet
](https://docs.google.com/spreadsheets/d/1bkUU90y4rKYQHwY5AR2iX6iiPTrPEsYs75GkCAkrgm4/copy) to estimate their end date. Make a copy and input your start date and expected hours per week in the `Timeline` sheet. As you work through courses you can enter your actual course completion dates in the `Curriculum Data` sheet and get updated completion estimates.
**Cost**. All or nearly all course material is available for free. However, some courses may charge money for assignments/tests/projects to be graded.
@@ -228,7 +228,7 @@ Courses | Duration | Effort | Additional Text / Assignments| Prerequisites | Dis
:-- | :--: | :--: | :--: | :--: | :--:
[Build a Modern Computer from First Principles: From Nand to Tetris](https://www.coursera.org/learn/build-a-computer) ([alt](https://www.nand2tetris.org/)) | 6 weeks | 7-13 hours/week | - | C-like programming language | [chat](https://discord.gg/vxB2DRV)
[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | - | one of [these programming languages](https://user-images.githubusercontent.com/2046800/35426340-f6ce6358-026a-11e8-8bbb-4e95ac36b1d7.png), From Nand to Tetris Part I | [chat](https://discord.gg/AsUXcPu)
-[Operating Systems: Three Easy Pieces](coursepages/ostep/README.md) | 10-12 weeks | 6-10 hours/week | - | strong C programming | [chat](https://discord.gg/wZNgpep)
+[Operating Systems: Three Easy Pieces](coursepages/ostep/README.md) | 10-12 weeks | 6-10 hours/week | - | [strong C programming](/coursepages/ostep/README.md#prerequisites) | [chat](https://discord.gg/wZNgpep)
[Computer Networking: a Top-Down Approach](http://gaia.cs.umass.edu/kurose_ross/online_lectures.htm)| 8 weeks | 4–12 hours/week | [Wireshark Labs](http://gaia.cs.umass.edu/kurose_ross/wireshark.php) | algebra, probability, basic CS | [chat](https://discord.gg/MJ9YXyV)
### Core theory
diff --git a/coursepages/ostep/README.md b/coursepages/ostep/README.md
index f5ec03af0..0e931e772 100644
--- a/coursepages/ostep/README.md
+++ b/coursepages/ostep/README.md
@@ -15,7 +15,7 @@ In order to satisfy OSSU's curricular guidelines, you should either watch all th
## Prerequisites
-This class requires a lot of experience programming in C. You should finish one of the C books listed in the ***resources below*** *before* starting this course; if you try to learn C at the same time as the course material, you're likely to feel overwhelmed. If you haven't used C before, you should expect to spend a lot of time on this; it's hard to predict how long it might take for each person, but a rough estimate might be 8-10 hours per week for 3-5 weeks. You can always learn C alongside another OSSU course or even redo the exercises for other courses in C to gain practice with it.
+This class requires a lot of experience programming in C. You should finish one of the C books listed in the [resources below](#c) *before* starting this course; if you try to learn C at the same time as the course material, you're likely to feel overwhelmed. If you haven't used C before, you should expect to spend a lot of time on this; it's hard to predict how long it might take for each person, but a rough estimate might be 8-10 hours per week for 3-5 weeks. You can always learn C alongside another OSSU course or even redo the exercises for other courses in C to gain practice with it.
You should also finish both parts of Nand2Tetris before starting this course. OSTEP focuses on the real-world x86 and x86_64 architectures, so you'll have to fill in some gaps in order to translate the concepts you learned in Nand2Tetris to a new architecture. You can do that with the x86 resources below, but note that they all assume you know C, so learn that first. This should take around 6-8 hours in total.
From c592ade5265ccc91ddd8ad8dcb8b1ddb72fbcbda Mon Sep 17 00:00:00 2001
From: Maheshkumar P <67100964+Maheshkumar-novice@users.noreply.github.com>
Date: Thu, 13 Oct 2022 00:08:22 +0530
Subject: [PATCH 413/519] Update exercism url to point to the current url
---
coursepages/ostep/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/coursepages/ostep/README.md b/coursepages/ostep/README.md
index 0e931e772..40fc07b67 100644
--- a/coursepages/ostep/README.md
+++ b/coursepages/ostep/README.md
@@ -113,7 +113,7 @@ CS 50 doesn't quite cover enough C for OSTEP, but if you've already taken CS 50,
Additional (***optional***) resources include:
* [CS 50 Manual Pages](https://manual.cs50.io): a great reference for looking up C library functions; most functions include both the usual manual as well as a beginner-friendly "less comfortable" option (just note that the "less comfortable" version uses `string` as an alias for `char *`.)
* [cdecl](https://cdecl.org): a tool to translate C gibberish into English.
-* [C track on exercism.io](https://exercism.io/tracks/C): additional practice exercises.
+* [C track on exercism.org](https://exercism.org/tracks/C): additional practice exercises.
* [Secure Coding Practices in C and C++](https://www.amazon.com/dp/0321822137): if you want to understand why other C resources are so unsafe.
* [*The C Programming Language*](https://www.amazon.com/dp/0131103628): the original book on C by its creators. Too outdated for OSTEP, but a good read if you manage to find a copy.
From a5e319f743f3d02ca9981dab9439dc91af6f0c25 Mon Sep 17 00:00:00 2001
From: Roman Bird
Date: Wed, 26 Oct 2022 18:06:34 +0100
Subject: [PATCH 414/519] Add 2011 Berkeley SICP in Scheme to extras
Since the Scheme version remains arguably as/more popular
---
extras/courses.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/extras/courses.md b/extras/courses.md
index fc490cbeb..e8a2e3a86 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -21,7 +21,8 @@ Courses | Duration | Effort
[Object-Oriented Programming with Java](https://java-programming.mooc.fi/)| 14 weeks | 10 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/) | - | -
+[The Structure and Interpretation of Computer Programs (2022, Python)](http://cs61a.org/) | - | -
+[The Structure and Interpretation of Computer Programs (2011, Scheme)](https://romanbird.github.io/sicp/) | - | -
[Introduction to Haskell](https://www.seas.upenn.edu/~cis194/fall16/) | 14 weeks | 4 hours/week
## Math
From d96fa70f75cc1e59a78c2f43b55440e2be23314e Mon Sep 17 00:00:00 2001
From: martin <66410356+MartinOvington@users.noreply.github.com>
Date: Sun, 13 Nov 2022 20:47:36 +0000
Subject: [PATCH 415/519] Update PROJECTS.md
---
PROJECTS.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/PROJECTS.md b/PROJECTS.md
index e820df166..d3fe3f99b 100644
--- a/PROJECTS.md
+++ b/PROJECTS.md
@@ -39,3 +39,4 @@ Project Title | Description | Author(s) | Repository
Project Title | Description | Author(s) | Repository
:-- | :-- | :--: | :--
Observatory | Interactively displays temperatures and deviations all around the world from 1975 to 2015 | [spamegg](https://github.com/spamegg1) | [ScalaCapstone](https://github.com/spamegg1/ScalaCapstone)
+Cloud Project | Analyzing airline traffic data with batch and stream processing using cloud technology | [MartinOvington](https://github.com/MartinOvington) | [CloudCapstone](https://github.com/MartinOvington/cloud-specialization)
From 57c9b09f97d0ebf5b60985397a3a33b73bf2d204 Mon Sep 17 00:00:00 2001
From: martin <66410356+MartinOvington@users.noreply.github.com>
Date: Sun, 13 Nov 2022 20:53:36 +0000
Subject: [PATCH 416/519] Update PROJECTS.md
---
PROJECTS.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/PROJECTS.md b/PROJECTS.md
index d3fe3f99b..3bc92eb52 100644
--- a/PROJECTS.md
+++ b/PROJECTS.md
@@ -39,4 +39,4 @@ Project Title | Description | Author(s) | Repository
Project Title | Description | Author(s) | Repository
:-- | :-- | :--: | :--
Observatory | Interactively displays temperatures and deviations all around the world from 1975 to 2015 | [spamegg](https://github.com/spamegg1) | [ScalaCapstone](https://github.com/spamegg1/ScalaCapstone)
-Cloud Project | Analyzing airline traffic data with batch and stream processing using cloud technology | [MartinOvington](https://github.com/MartinOvington) | [CloudCapstone](https://github.com/MartinOvington/cloud-specialization)
+Cloud Data Processing | Querying airline traffic data with batch and stream processing on cloud services | [MartinOvington](https://github.com/MartinOvington) | [CloudCapstone](https://github.com/MartinOvington/cloud-specialization)
From fa83972ce74fa6dc29328f3eb70a418f1e357277 Mon Sep 17 00:00:00 2001
From: spamegg
Date: Tue, 22 Nov 2022 09:52:08 +0300
Subject: [PATCH 417/519] update How to Design Programs textbook link
---
README.md | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 7465c6760..d522450ea 100644
--- a/README.md
+++ b/README.md
@@ -160,11 +160,9 @@ All coursework under Core CS is **required**, unless otherwise indicated.
`Ruby`
`and more`
-The How to Code courses are based on the textbook [How to Design Programs](https://htdp.org/2003-09-26/). The First Edition is available for free online and includes problem sets and solutions. Students are encouraged to do these assignments.
-
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
-[How to Code - Simple Data](https://www.edx.org/course/how-to-code-simple-data) | 7 weeks | 8-10 hours/week | none | [chat](https://discord.gg/RfqAmGJ)
+[How to Code - Simple Data](https://www.edx.org/course/how-to-code-simple-data) [(textbook)](https://htdp.org/2022-8-7/Book/index.html) | 7 weeks | 8-10 hours/week | none | [chat](https://discord.gg/RfqAmGJ)
[How to Code - Complex Data](https://www.edx.org/course/how-to-code-complex-data) | 6 weeks | 8-10 hours/week | How to Code: Simple Data | [chat](https://discord.gg/kczJzpm)
[Programming Languages, Part A](https://www.coursera.org/learn/programming-languages) | 5 weeks | 4-8 hours/week | How to Code ([Hear instructor](https://www.coursera.org/lecture/programming-languages/recommended-background-k1yuh)) | [chat](https://discord.gg/8BkJtXN)
[Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 4-8 hours/week | Programming Languages, Part A | [chat](https://discord.gg/EeA7VR9)
From 83760770e1cf607d3dee2e1d97f8a2ffa31eb6cf Mon Sep 17 00:00:00 2001
From: Aayush SInha <84586770+aayushsinha0706@users.noreply.github.com>
Date: Wed, 30 Nov 2022 07:34:21 +0530
Subject: [PATCH 418/519] Update courses.md
---
extras/courses.md | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/extras/courses.md b/extras/courses.md
index e8a2e3a86..30af87352 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -34,11 +34,13 @@ Courses | Duration | Effort
[High School Math](https://www.khanacademy.org/math/high-school-math) | - | -
[Precalculus](https://www.futurelearn.com/courses/precalculus) | 5 weeks | 6 hours/week
[Advanced Precalculus](https://www.futurelearn.com/courses/advanced-precalculus) | 4 weeks | 5 hours/week
+[Calculus Applied!](https://www.edx.org/course/calculus-applied) | 10 Weeks | 6hours/week
[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) | - | -
[Introduction to Computational Thinking](https://computationalthinking.mit.edu/Spring21/#introduction_to_computational_thinking) | - | -
[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 | [Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/index.htm)
+[Matrix Methods In Data Analysis, Signal Processing, And Machine Learning](https://ocw.mit.edu/courses/18-065-matrix-methods-in-data-analysis-signal-processing-and-machine-learning-spring-2018/) | - | -
## Systems
@@ -53,6 +55,7 @@ Courses | Duration | Effort
[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
[Computer Networking](https://www.udacity.com/course/computer-networking--ud436) | 12 weeks | 5-8 hours/week
+Distributed Systems - [Playlist](https://www.youtube.com/playlist?list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB), [Course site](http://nil.csail.mit.edu/6.824/2020/), [Self-studying 6.824](https://lieuzhenghong.com/mit_6.824_self_study/) | - | -
## Theory
@@ -69,6 +72,7 @@ Courses | Duration | Effort
[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/) | - | -
+[Design And Analysis Of Algorithms](https://ocw.mit.edu/courses/6-046j-design-and-analysis-of-algorithms-spring-2015/) | - | -
## Applications
From 5ac170206a17f29aae8034cd4981da71645ca3d1 Mon Sep 17 00:00:00 2001
From: Aayush SInha <84586770+aayushsinha0706@users.noreply.github.com>
Date: Wed, 30 Nov 2022 07:49:37 +0530
Subject: [PATCH 419/519] Update courses.md
---
extras/courses.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/extras/courses.md b/extras/courses.md
index 30af87352..ed901d583 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -55,7 +55,7 @@ Courses | Duration | Effort
[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
[Computer Networking](https://www.udacity.com/course/computer-networking--ud436) | 12 weeks | 5-8 hours/week
-Distributed Systems - [Playlist](https://www.youtube.com/playlist?list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB), [Course site](http://nil.csail.mit.edu/6.824/2020/), [Self-studying 6.824](https://lieuzhenghong.com/mit_6.824_self_study/) | - | -
+Distributed Systems - [Playlist](https://www.youtube.com/playlist?list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB), [Course site](http://nil.csail.mit.edu/6.824/2020/schedule.html)), [Self-studying 6.824](https://lieuzhenghong.com/mit_6.824_self_study/) | - | -
## Theory
From bde41056caa4c21ebefc51ed8a7c2009189fe877 Mon Sep 17 00:00:00 2001
From: Aayush SInha <84586770+aayushsinha0706@users.noreply.github.com>
Date: Wed, 30 Nov 2022 07:50:03 +0530
Subject: [PATCH 420/519] Update courses.md
---
extras/courses.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/extras/courses.md b/extras/courses.md
index ed901d583..e80024e86 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -55,7 +55,7 @@ Courses | Duration | Effort
[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
[Computer Networking](https://www.udacity.com/course/computer-networking--ud436) | 12 weeks | 5-8 hours/week
-Distributed Systems - [Playlist](https://www.youtube.com/playlist?list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB), [Course site](http://nil.csail.mit.edu/6.824/2020/schedule.html)), [Self-studying 6.824](https://lieuzhenghong.com/mit_6.824_self_study/) | - | -
+Distributed Systems - [Playlist](https://www.youtube.com/playlist?list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB), [Course site](http://nil.csail.mit.edu/6.824/2020/schedule.html), [Self-studying 6.824](https://lieuzhenghong.com/mit_6.824_self_study/) | - | -
## Theory
From e75a1f12010dbcb52cb01f5136d54f55915d207d Mon Sep 17 00:00:00 2001
From: Aayush SInha <84586770+aayushsinha0706@users.noreply.github.com>
Date: Wed, 30 Nov 2022 07:55:51 +0530
Subject: [PATCH 421/519] Update courses.md
---
extras/courses.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/extras/courses.md b/extras/courses.md
index e80024e86..30a50d9b0 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -55,7 +55,7 @@ Courses | Duration | Effort
[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
[Computer Networking](https://www.udacity.com/course/computer-networking--ud436) | 12 weeks | 5-8 hours/week
-Distributed Systems - [Playlist](https://www.youtube.com/playlist?list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB), [Course site](http://nil.csail.mit.edu/6.824/2020/schedule.html), [Self-studying 6.824](https://lieuzhenghong.com/mit_6.824_self_study/) | - | -
+Distributed Systems - [Playlist](https://www.youtube.com/playlist?list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB), [Course site](http://nil.csail.mit.edu/6.824/2020/schedule.html), [Self-studying 6.824](https://lieuzhenghong.com/mit_6.824_self_study/) [6.824 Discord group for further help](https://discord.gg/KbhkEqpBqC) | - | -
## Theory
From ffa5e057cafaeedba058dcccb3714a0de3ae8929 Mon Sep 17 00:00:00 2001
From: spamegg
Date: Sat, 3 Dec 2022 16:56:52 +0300
Subject: [PATCH 422/519] added resource explaining xv6 code for OSTEP
---
coursepages/ostep/README.md | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/coursepages/ostep/README.md b/coursepages/ostep/README.md
index 40fc07b67..75ca57883 100644
--- a/coursepages/ostep/README.md
+++ b/coursepages/ostep/README.md
@@ -144,7 +144,9 @@ The xv6 authors provide a [book](https://pdos.csail.mit.edu/6.828/2018/xv6/book-
However, that book glosses over a lot of the details in the code that you might find challenging, including the advanced C features used, the x86 architecture- specific instructions, and the concurrency aspects (if you haven't finished that section of OSTEP before starting the xv6 projects). To solve this problem, we provide an [annotated guide to xv6](https://github.com/palladian1/xv6-annotated) that goes over the entire xv6 code and analyzes it line-by-line with explanations of the C features, hardware specs, and x86 conventions used. That means it's longer than the official xv6 book, so you don't have to read all of it (and you can probably skip the optional sections unless you care about device drivers), but you can use it as a reference if you're scratching your head about some part of the code.
-Also [here](https://www.youtube.com/playlist?list=PLbtzT1TYeoMhTPzyTZboW_j7TPAnjv9XB) is an excellent video series walking through much of the xv6 code.
+[Here](https://github.com/YehudaShapira/xv6-explained) is another in-depth explanation of the xv6 code.
+
+Also [here](https://www.youtube.com/playlist?list=PLbtzT1TYeoMhTPzyTZboW_j7TPAnjv9XB) is an excellent video series walking through much of the xv6 code, and
### Miscellaneous
From 94c6cc266401d301dfa5940a2d54e9ad2686d89d Mon Sep 17 00:00:00 2001
From: spamegg
Date: Sat, 3 Dec 2022 16:59:25 +0300
Subject: [PATCH 423/519] added resource explaining xv6 code for OSTEP
fixed typo
---
coursepages/ostep/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/coursepages/ostep/README.md b/coursepages/ostep/README.md
index 75ca57883..d66dc8c27 100644
--- a/coursepages/ostep/README.md
+++ b/coursepages/ostep/README.md
@@ -146,7 +146,7 @@ However, that book glosses over a lot of the details in the code that you might
[Here](https://github.com/YehudaShapira/xv6-explained) is another in-depth explanation of the xv6 code.
-Also [here](https://www.youtube.com/playlist?list=PLbtzT1TYeoMhTPzyTZboW_j7TPAnjv9XB) is an excellent video series walking through much of the xv6 code, and
+Also [here](https://www.youtube.com/playlist?list=PLbtzT1TYeoMhTPzyTZboW_j7TPAnjv9XB) is an excellent video series walking through much of the xv6 code.
### Miscellaneous
From 674e4a92bdfca48269fe2fe1a412067d508ad60f Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sun, 18 Dec 2022 02:28:10 -0500
Subject: [PATCH 424/519] Clarify OSTEP Options
Direct most students to read OSTEP and complete homework.
Direct only students specializing in systems to undertake
the course projects
Resolves #1083
Co-authored-by: Waciuma Wanjohi
Co-authored-by: spamegg
---
coursepages/ostep/README.md | 48 +++++++++++++++++++++++++++----------
1 file changed, 35 insertions(+), 13 deletions(-)
diff --git a/coursepages/ostep/README.md b/coursepages/ostep/README.md
index d66dc8c27..fbd959291 100644
--- a/coursepages/ostep/README.md
+++ b/coursepages/ostep/README.md
@@ -3,23 +3,46 @@
Credit goes to [palladian](https://github.com/palladian1)
## Introduction
-First, we should be frank: it's really hard to find a good self-contained online course on operating systems. OSTEP is the best course we've found so far, but it does have some issues.
+First, we should be frank: it's really hard to find a good self-contained online course on operating systems. OSTEP is the best course we've found so far. We describe below two approaches to the course, a "Base" approach which is suitable for most students, and an "Extended" approach, which is appropriate for students intending to specialize in systems programming.
-This is the first course in the OSSU curriculum for which you'll need to learn some prerequisites on your own before starting it, in addition to the courses that come before it in the curriculum. You might also run into some issues running the scripts for homework demos and for testing your solutions to the projects (although we hope we've solved most of those by now).
+The "base" approach covers all of our operating system curriculum requirements and should take about 80 hours of work.
-What this means for you is that if you're under a significant time crunch, or you're just not all that interested in systems programming and OS development, there's no shame in skipping this course and coming back to it later. You could also do only a part of the course (e.g. you might choose to skip the homework and/or projects).
+The "extended" approach contains all of the work of the base approach and more. It involves learning very serious C and x86 assembly, and delving deep into kernel programming. It takes significantly more time (over 200 hours) and is much more challenging. For those students interested in this area of computing it is also highly rewarding.
+
+## Base Approach
+
+1. Read through the free online textbook Operating Systems: Three Easy Pieces
+2. Complete the homework questions at the end of each chapter. (There is an associated [Github repository](https://github.com/remzi-arpacidusseau/ostep-homework) for the homeworks.)
+
+This should take about 8 weeks, 10 hours/week. That's all you need to do!
+
+You will need a Unix/Linux system, some basic command line tools, and a C compiler (such as GCC or Clang). On Windows, you can install Ubuntu in a virtual machine, or use WSL (Windows Subsystem for Linux). Mac OS is Unix-like, so it should be OK to use.
+
+Question: I see some C code in this book. How much C do I need to know?
+
+Answer: You'll need to read and understand some C code in this book. You'll need basic understanding of arrays, pointers and print formatting. You can consult the free book Modern C by Jen Gustadt. The CS50 Manual pages are also helpful to look up functions. You shouldn't spend too much time on learning C.
+
+The code you'll read is fairly simple and presented in short fragments. The book helps you out quite a bit by manually introducing many C APIs such as the Process API, the Thread API, and so on. You can type, compile and run the code fragments, and read the corresponding explanations. The book explains them in great detail in a conversational style that's fun to read.
+
+You will also write a little bit of C code. Only a minority of the chapters (about 10 out of 50) ask you to write some C code (while the other chapters require you to run provided simulation code and answer questions). These are usually simple, short C programs that imitate the code that was presented in that chapter, with small modifications.
+
+If you are getting stuck on these, please don't spend too much time on them. There is a great solution set here. There is no honor code for this, so you are free to use the solutions. If you find yourself spending too much time, feel free to read and understand the solutions instead. Your main priority should be to gain understanding of operating systems concepts, not to master C coding.
+
+## Extended Approach
+
+If you've chosen this option, then this is the first course in the OSSU curriculum for which you'll need to learn some prerequisites on your own before starting it, in addition to the courses that come before it in the curriculum. You might also run into some issues running the scripts for homework demos and for testing your solutions to the projects (although we hope we've solved most of those by now).
That said, if you're able to commit the time required for the prerequisites, we believe the reward is well worth the effort: this course is exciting, interesting, and quite useful for other fields of computer science and programming. One big attraction of this course is the opportunity to see a simplified but fully-functional Unix-like operating system in action and understand the concepts and design decisions that went into it as well as the low-level implementation details.
-In order to satisfy OSSU's curricular guidelines, you should either watch all the lecture videos or read chapters 1 through 47 in the textbook (don't worry, the chapters are usually just a few pages long) as well as finish the projects listed below. We also strongly encourage you to do the homework exercises as they're assigned on the course website or in the book chapters; think of these like the "check-your-understanding" questions that pop up in the middle of lecture videos on sites like Coursera or edX.
+You should either watch all the lecture videos or read chapters 1 through 47 in the textbook (don't worry, the chapters are usually just a few pages long) as well as finish the projects listed below. We also strongly encourage you to do the homework exercises as they're assigned on the course website or in the book chapters; think of these like the "check-your-understanding" questions that pop up in the middle of lecture videos on sites like Coursera or edX.
-## Prerequisites
+### Prerequisites
This class requires a lot of experience programming in C. You should finish one of the C books listed in the [resources below](#c) *before* starting this course; if you try to learn C at the same time as the course material, you're likely to feel overwhelmed. If you haven't used C before, you should expect to spend a lot of time on this; it's hard to predict how long it might take for each person, but a rough estimate might be 8-10 hours per week for 3-5 weeks. You can always learn C alongside another OSSU course or even redo the exercises for other courses in C to gain practice with it.
You should also finish both parts of Nand2Tetris before starting this course. OSTEP focuses on the real-world x86 and x86_64 architectures, so you'll have to fill in some gaps in order to translate the concepts you learned in Nand2Tetris to a new architecture. You can do that with the x86 resources below, but note that they all assume you know C, so learn that first. This should take around 6-8 hours in total.
-## Course Links
+### Course Links
* [Course website](https://pages.cs.wisc.edu/~remzi/Classes/537/Spring2018/)
* [Book](https://pages.cs.wisc.edu/~remzi/OSTEP/)
@@ -29,7 +52,7 @@ You should also finish both parts of Nand2Tetris before starting this course. OS
* [Projects](https://github.com/remzi-arpacidusseau/ostep-projects)
* [xv6](https://github.com/mit-pdos/xv6-public)
-## Roadmap
+### Roadmap
This course was originally taught as CS 537 at the University of Wisconsin by the author of the OSTEP textbook, so the projects are assigned in the course according to the best times to give UWisconsin students access to on-campus resources like recitation sections and office hours. That means they don't match up perfectly with the material being covered at that time in the lectures or textbook chapters. We recommend doing the course in the following order instead.
@@ -97,10 +120,9 @@ git clone https://github.com/mit-pdos/xv6-public src
- [hints for `scheduling-xv6-lottery`](Scheduling-xv6-lottery.md)
- [hints for `vm-xv6-intro`](vm-xv6-intro.md)
+### Resources
-## Resources
-
-### C
+#### C
Please don't try to learn C from sites like GeeksforGeeks, TutorialsPoint, or Hackr.io (we're not even gonna link to them here). Those are great resources for other languages, but C has way too many pitfalls, and C tutorials online are often filled with dangerous errors and bad coding practices. We looked at many C resources for the recommendations below and unfortunately found *many* bad or unsafe ones; we'll only include the best ones here, so look no further!
@@ -117,7 +139,7 @@ Additional (***optional***) resources include:
* [Secure Coding Practices in C and C++](https://www.amazon.com/dp/0321822137): if you want to understand why other C resources are so unsafe.
* [*The C Programming Language*](https://www.amazon.com/dp/0131103628): the original book on C by its creators. Too outdated for OSTEP, but a good read if you manage to find a copy.
-### x86 Architecture and Assembly Language
+#### x86 Architecture and Assembly Language
Nand2Tetris has already introduced most of the concepts you'll need to understand systems and computer architectures, so now you just need to port that knowledge to the real-world (32-bit) x86 architecture.
@@ -136,7 +158,7 @@ Additional (***optional***) resources include:
* [GCC Inline Assembly HOWTO](https://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html): a guide to writing assembly code inside a C program.
* [*Intel 80386 Programmer's Reference Manual*](https://pdos.csail.mit.edu/6.828/2018/readings/i386.pdf): the official (and huge) resourcefrom Intel.
-### xv6
+#### xv6
You don't need to read anything about xv6 until after you start OSTEP; in fact, we recommend holding off on the xv6-related projects until you've finished the entire section on virtualization. After that, you'll need a guide to walk you through the source code.
@@ -148,7 +170,7 @@ However, that book glosses over a lot of the details in the code that you might
Also [here](https://www.youtube.com/playlist?list=PLbtzT1TYeoMhTPzyTZboW_j7TPAnjv9XB) is an excellent video series walking through much of the xv6 code.
-### Miscellaneous
+#### Miscellaneous
You'll need a general sense of how Makefiles work in order to use the Makefile for xv6. [This tutorial](https://makefiletutorial.com) covers much more than you need; just read the "Getting Started" and "Targets" sections and come back to the rest later if you need to look something up (but you shouldn't have to).
From 73521f1e8a7105d3849e5960a808c78548c6b24f Mon Sep 17 00:00:00 2001
From: spamegg
Date: Sun, 18 Dec 2022 16:09:47 +0300
Subject: [PATCH 425/519] Clarify OSTEP: add missing link, fix prerequisite
---
README.md | 2 +-
coursepages/ostep/README.md | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index d522450ea..578bae7a4 100644
--- a/README.md
+++ b/README.md
@@ -226,7 +226,7 @@ Courses | Duration | Effort | Additional Text / Assignments| Prerequisites | Dis
:-- | :--: | :--: | :--: | :--: | :--:
[Build a Modern Computer from First Principles: From Nand to Tetris](https://www.coursera.org/learn/build-a-computer) ([alt](https://www.nand2tetris.org/)) | 6 weeks | 7-13 hours/week | - | C-like programming language | [chat](https://discord.gg/vxB2DRV)
[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | - | one of [these programming languages](https://user-images.githubusercontent.com/2046800/35426340-f6ce6358-026a-11e8-8bbb-4e95ac36b1d7.png), From Nand to Tetris Part I | [chat](https://discord.gg/AsUXcPu)
-[Operating Systems: Three Easy Pieces](coursepages/ostep/README.md) | 10-12 weeks | 6-10 hours/week | - | [strong C programming](/coursepages/ostep/README.md#prerequisites) | [chat](https://discord.gg/wZNgpep)
+[Operating Systems: Three Easy Pieces](coursepages/ostep/README.md) | 10-12 weeks | 6-10 hours/week | - | Nand to Tetris Part II | [chat](https://discord.gg/wZNgpep)
[Computer Networking: a Top-Down Approach](http://gaia.cs.umass.edu/kurose_ross/online_lectures.htm)| 8 weeks | 4–12 hours/week | [Wireshark Labs](http://gaia.cs.umass.edu/kurose_ross/wireshark.php) | algebra, probability, basic CS | [chat](https://discord.gg/MJ9YXyV)
### Core theory
diff --git a/coursepages/ostep/README.md b/coursepages/ostep/README.md
index fbd959291..aafb9b64e 100644
--- a/coursepages/ostep/README.md
+++ b/coursepages/ostep/README.md
@@ -26,7 +26,7 @@ The code you'll read is fairly simple and presented in short fragments. The book
You will also write a little bit of C code. Only a minority of the chapters (about 10 out of 50) ask you to write some C code (while the other chapters require you to run provided simulation code and answer questions). These are usually simple, short C programs that imitate the code that was presented in that chapter, with small modifications.
-If you are getting stuck on these, please don't spend too much time on them. There is a great solution set here. There is no honor code for this, so you are free to use the solutions. If you find yourself spending too much time, feel free to read and understand the solutions instead. Your main priority should be to gain understanding of operating systems concepts, not to master C coding.
+If you are getting stuck on these, please don't spend too much time on them. There is a great solution set [here](https://github.com/xxyzz/ostep-hw). There is no honor code for this, so you are free to use the solutions. If you find yourself spending too much time, feel free to read and understand the solutions instead. Your main priority should be to gain understanding of operating systems concepts, not to master C coding.
## Extended Approach
From 0c7455cad0a3fc6701c77a7e3b7ee702801a9f54 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sun, 18 Dec 2022 17:48:39 -0500
Subject: [PATCH 426/519] Add structure to links
---
coursepages/ostep/README.md | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/coursepages/ostep/README.md b/coursepages/ostep/README.md
index aafb9b64e..2991b3022 100644
--- a/coursepages/ostep/README.md
+++ b/coursepages/ostep/README.md
@@ -18,9 +18,18 @@ This should take about 8 weeks, 10 hours/week. That's all you need to do!
You will need a Unix/Linux system, some basic command line tools, and a C compiler (such as GCC or Clang). On Windows, you can install Ubuntu in a virtual machine, or use WSL (Windows Subsystem for Linux). Mac OS is Unix-like, so it should be OK to use.
-Question: I see some C code in this book. How much C do I need to know?
+### Course Links
+
+* [Book](https://pages.cs.wisc.edu/~remzi/OSTEP/)
+* [Homework](https://pages.cs.wisc.edu/~remzi/OSTEP/Homework/homework.html)
+* [Homework Source Code Repo](https://github.com/remzi-arpacidusseau/ostep-homework)
+* [Homework Solutions](https://github.com/xxyzz/ostep-hw)
+
+### C
+
+**Question**: I see some C code in this book. How much C do I need to know?
-Answer: You'll need to read and understand some C code in this book. You'll need basic understanding of arrays, pointers and print formatting. You can consult the free book Modern C by Jen Gustadt. The CS50 Manual pages are also helpful to look up functions. You shouldn't spend too much time on learning C.
+**Answer**: You'll need to read and understand some C code in this book. You'll need basic understanding of arrays, pointers and print formatting. You can consult the free book [Modern C](https://hal.inria.fr/hal-02383654/file/ModernC.pdf) by [Jen Gustadt](https://gustedt.gitlabpages.inria.fr/modern-c/). The [CS50 Manual pages](https://manual.cs50.io) are also helpful to look up functions. You shouldn't spend too much time on learning C.
The code you'll read is fairly simple and presented in short fragments. The book helps you out quite a bit by manually introducing many C APIs such as the Process API, the Thread API, and so on. You can type, compile and run the code fragments, and read the corresponding explanations. The book explains them in great detail in a conversational style that's fun to read.
@@ -48,7 +57,8 @@ You should also finish both parts of Nand2Tetris before starting this course. OS
* [Book](https://pages.cs.wisc.edu/~remzi/OSTEP/)
* [Lecture videos](https://pages.cs.wisc.edu/~remzi/Classes/537/Spring2018/Discussion/videos.html)
* [Homework](https://pages.cs.wisc.edu/~remzi/OSTEP/Homework/homework.html)
-* [Homework repo](https://github.com/remzi-arpacidusseau/ostep-homework)
+* [Homework Source Code Repo](https://github.com/remzi-arpacidusseau/ostep-homework)
+* [Homework Solutions](https://github.com/xxyzz/ostep-hw)
* [Projects](https://github.com/remzi-arpacidusseau/ostep-projects)
* [xv6](https://github.com/mit-pdos/xv6-public)
From e735723bf531c94040bf2bcae7584313a9b725f6 Mon Sep 17 00:00:00 2001
From: anantav51 <34206594+anantav51@users.noreply.github.com>
Date: Wed, 11 Jan 2023 18:30:07 +0800
Subject: [PATCH 427/519] Update FAQ.md
---
FAQ.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/FAQ.md b/FAQ.md
index e8852a694..599d995df 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -36,9 +36,9 @@ After taking an assessment, you should have a clear idea what topics to study, a
- [Arithmetics](https://www.khanacademy.org/math/arithmetic#arithmetic-subject-challenge)
- [Basic Geometry](https://www.khanacademy.org/math/basic-geo#basic-geo-subject-challenge)
- [Pre-algebra](https://www.khanacademy.org/math/pre-algebra#pre-algebra-subject-challenge)
-- [High School Math 1](https://www.khanacademy.org/math/math1#math1-subject-challenge)
-- [High School Math 2](https://www.khanacademy.org/math/math2#math2-subject-challenge)
-- [High School Math 3](https://www.khanacademy.org/math/math3#math3-subject-challenge)
+- [Integrated Math 1](https://www.khanacademy.org/math/math1#math1-subject-challenge)
+- [Integrated Math 2](https://www.khanacademy.org/math/math2#math2-subject-challenge)
+- [Integrated Math 3](https://www.khanacademy.org/math/math3#math3-subject-challenge)
(Math 1, 2, 3 covers all of algebra, pre-calculus, high school geometry, trig, stats. It interleaves the order of these topics.)
From 208f0e816ce1e6173a9b3f9bc01306a7c4ffc63d Mon Sep 17 00:00:00 2001
From: Choubs01 <115124294+Choubs01@users.noreply.github.com>
Date: Sun, 15 Jan 2023 13:00:48 +1100
Subject: [PATCH 428/519] Update CONTRIBUTING.md
---
CONTRIBUTING.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index f0e4e5a0b..be27d3e6d 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -7,7 +7,7 @@ If you have specific and substantive criticisms of the curriculum, i.e. problems
OSSU’s curricular guidelines are [here](https://github.com/ossu/computer-science/blob/master/CURRICULAR_GUIDELINES.md). Successful critiques of the curriculum will point out ways that OSSU is failing to uphold these guidelines. Examples are:
* OSSU lists a course as required when the course topics are elective in the curricular guide.
-* OSSU does not having a course to cover required topics from the curricular guide.
+* OSSU not having a course to cover required topics from the curricular guide.
* OSSU lists multiple courses that cover the same topics when fewer courses could suffice.
* OSSU recommends a course to teach a topic, but there exists a higher quality course that covers the same material.
## Other ways to contribute
From 6ab34fd0ee35ee923baaeb210751f141052d7e14 Mon Sep 17 00:00:00 2001
From: anantav51 <34206594+anantav51@users.noreply.github.com>
Date: Sun, 22 Jan 2023 02:09:32 +0800
Subject: [PATCH 429/519] Changed course for Theory of Computation to the one
in openMIT (#1125)
Resolves #1096
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 578bae7a4..6f1f79ce0 100644
--- a/README.md
+++ b/README.md
@@ -388,7 +388,7 @@ Courses | Duration | Effort | Prerequisites | Notes
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Theory of Computation](http://aduni.org/courses/theory/index.php?view=cw) ([Lectures](https://www.youtube.com/playlist?list=PLTke5lHMAdSNmi57H0DOTzClHPK6UwSTN)) | 8 weeks | 10 hours/week | discrete mathematics, logic, algorithms
+[Theory of Computation](https://ocw.mit.edu/courses/18-404j-theory-of-computation-fall-2020/) ([alt](http://aduni.org/courses/theory/index.php?view=cw)) | 13 weeks | 10 hours/week | [Mathematics for Computer Science](https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about), logic, algorithms
[Computational Geometry](https://www.edx.org/course/computational-geometry) | 16 weeks | 8 hours/week | algorithms, C++
[Game Theory](https://www.coursera.org/learn/game-theory-1) | 8 weeks | 3 hours/week | mathematical thinking, probability, calculus
From 15b87ddeee101bb7b5cdc810e24913e8fdc7c7df Mon Sep 17 00:00:00 2001
From: anantav51 <34206594+anantav51@users.noreply.github.com>
Date: Sun, 22 Jan 2023 02:13:31 +0800
Subject: [PATCH 430/519] Reduce time estimate for Probability
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 6f1f79ce0..636c0a03a 100644
--- a/README.md
+++ b/README.md
@@ -409,8 +409,8 @@ Courses | Duration | Effort | Prerequisites | Discussion
[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | [high school math](FAQ.md#how-can-i-review-the-math-prerequisites) | [chat](https://discord.gg/m6wHbP6)
[Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | 14 weeks | 12 hours/week | corequisite: Essence of Linear Algebra | [chat](https://discord.gg/k7nSWJH)
[Introduction to Numerical Methods](https://ocw.mit.edu/courses/mathematics/18-335j-introduction-to-numerical-methods-spring-2019/index.htm)| 14 weeks | 12 hours/week | [Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | [chat](https://discord.gg/FNEcNNq)
-[Introduction to Formal Logic](https://forallx.openlogicproject.org/) | 10 weeks | 4-8 hours/week | [set theory](https://www.youtube.com/playlist?list=PL5KkMZvBpo5AH_5GpxMiryJT6Dkj32H6N) | [chat](https://discord.gg/MbM2Gg5)
-[Probability](https://projects.iq.harvard.edu/stat110/home) | 24 weeks | 12 hours/week | [Differentiation and Integration](https://www.edx.org/course/calculus-1b-integration) | [chat](https://discord.gg/UVjs9BU)
+[Introduction to Formal Logic](https://forallx.openlogicproject.org/) | 10 weeks | 4-8 hours/week | [Set Theory](https://www.youtube.com/playlist?list=PL5KkMZvBpo5AH_5GpxMiryJT6Dkj32H6N) | [chat](https://discord.gg/MbM2Gg5)
+[Probability](https://projects.iq.harvard.edu/stat110/home) | 15 weeks | 5-10 hours/week | [Differentiation and Integration](https://www.edx.org/course/calculus-1b-integration) | [chat](https://discord.gg/UVjs9BU)
## Final project
From 8afefe5fab15bba7de5e78403272b8a6fdfd3776 Mon Sep 17 00:00:00 2001
From: Alaharon123 <34926441+Alaharon123@users.noreply.github.com>
Date: Sun, 5 Feb 2023 21:14:33 -0500
Subject: [PATCH 431/519] Correct link to resources below (#1133)
---
coursepages/ostep/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/coursepages/ostep/README.md b/coursepages/ostep/README.md
index 2991b3022..1b3640342 100644
--- a/coursepages/ostep/README.md
+++ b/coursepages/ostep/README.md
@@ -47,7 +47,7 @@ You should either watch all the lecture videos or read chapters 1 through 47 in
### Prerequisites
-This class requires a lot of experience programming in C. You should finish one of the C books listed in the [resources below](#c) *before* starting this course; if you try to learn C at the same time as the course material, you're likely to feel overwhelmed. If you haven't used C before, you should expect to spend a lot of time on this; it's hard to predict how long it might take for each person, but a rough estimate might be 8-10 hours per week for 3-5 weeks. You can always learn C alongside another OSSU course or even redo the exercises for other courses in C to gain practice with it.
+This class requires a lot of experience programming in C. You should finish one of the C books listed in the [resources below](#c-1) *before* starting this course; if you try to learn C at the same time as the course material, you're likely to feel overwhelmed. If you haven't used C before, you should expect to spend a lot of time on this; it's hard to predict how long it might take for each person, but a rough estimate might be 8-10 hours per week for 3-5 weeks. You can always learn C alongside another OSSU course or even redo the exercises for other courses in C to gain practice with it.
You should also finish both parts of Nand2Tetris before starting this course. OSTEP focuses on the real-world x86 and x86_64 architectures, so you'll have to fill in some gaps in order to translate the concepts you learned in Nand2Tetris to a new architecture. You can do that with the x86 resources below, but note that they all assume you know C, so learn that first. This should take around 6-8 hours in total.
From 2d6398e1348d30766395b7499ee9c96adfaa2428 Mon Sep 17 00:00:00 2001
From: Choubs01 <115124294+Choubs01@users.noreply.github.com>
Date: Tue, 4 Apr 2023 11:36:39 +1000
Subject: [PATCH 432/519] fix core applications machine learning (#1143)
* Fix machine learning in core applications
The machine learning course is only 3 weeks long, not 11. Further, it's a very gentle introductory course. Even the prerequisite of Basic coding is stretching it, but it is as listed on the course page.
* Fix machine learning
Machine learning should link to the entire specialization. The specialization is 11 weeks in all I believe, and they suggest 9 hours per week although that could be scaled down to 4-6 hours if you're just auditing. Also, the prerequisite should be basic coding, linear algebra is not necessary.
Closes #1118
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 636c0a03a..dfd0c57ef 100644
--- a/README.md
+++ b/README.md
@@ -296,7 +296,7 @@ Courses | Duration | Effort | Prerequisites | Discussion
[Databases: Modeling and Theory](https://www.edx.org/course/modeling-and-theory)| 2 weeks | 10 hours/week | core programming | [chat](https://discord.gg/pMFqNf4)
[Databases: Relational Databases and SQL](https://www.edx.org/course/databases-5-sql)| 2 weeks | 10 hours/week | core programming | [chat](https://discord.gg/P8SPPyF)
[Databases: Semistructured Data](https://www.edx.org/course/semistructured-data)| 2 weeks | 10 hours/week | core programming | [chat](https://discord.gg/duCJ3GN)
-[Machine Learning](https://www.coursera.org/learn/machine-learning)| 11 weeks | 4-6 hours/week | linear algebra | [chat](https://discord.gg/NcXHDjy)
+[Machine Learning](https://www.coursera.org/specializations/machine-learning-introduction)| 11 weeks | 9 hours/week | Basic coding | [chat](https://discord.gg/NcXHDjy)
[Computer Graphics](https://www.edx.org/course/computer-graphics-2)| 6 weeks | 12 hours/week | C++ or Java, linear algebra | [chat](https://discord.gg/68WqMNV)
[Software Engineering: Introduction](https://www.edx.org/course/software-engineering-introduction) | 6 weeks | 8-10 hours/week | Core Programming, and a [sizable project](FAQ.md#why-require-experience-with-a-sizable-project-before-the-Software-Engineering-courses) | [chat](https://discord.gg/5Qtcwtz)
From 422810096203d086ff13b15cce4452cdc8aa4a68 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Th=C3=A1i=20H=E1=BB=AFu=20Tr=C3=AD?=
<110210159+thaitri2005@users.noreply.github.com>
Date: Wed, 5 Apr 2023 11:18:41 +0700
Subject: [PATCH 433/519] Add a new project from a student (#1130)
---
PROJECTS.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/PROJECTS.md b/PROJECTS.md
index 3bc92eb52..e168326f9 100644
--- a/PROJECTS.md
+++ b/PROJECTS.md
@@ -17,6 +17,7 @@ Project Title | Description | Author(s) | Repository
:-- | :-- | :--: | :--
StalkHub | Stalk Github beautifully | [Aman Roy](https://github.com/aman-roy) | [StalkHub](https://github.com/aman-roy/StalkHub)
Webliza | ELIZA in python with web interface | [Vipin Kumar](https://github.com/VipinindKumar) | [Webliza](https://github.com/VipinindKumar/Webliza)
+PWControl | A simple password generator and manager | [Thai Huu Tri](https://github.com/thaitri2005) | [PWControl](https://github.com/thaitri2005/PWControl)
## Programming
From c7bcd7f17227deb67527592edca4ae318c907493 Mon Sep 17 00:00:00 2001
From: Rob <39163+robbrit@users.noreply.github.com>
Date: Tue, 4 Apr 2023 22:23:08 -0600
Subject: [PATCH 434/519] Added a PR template for projects. (#1136)
---
.github/PULL_REQUEST_TEMPLATE/project_pr.md | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
create mode 100644 .github/PULL_REQUEST_TEMPLATE/project_pr.md
diff --git a/.github/PULL_REQUEST_TEMPLATE/project_pr.md b/.github/PULL_REQUEST_TEMPLATE/project_pr.md
new file mode 100644
index 000000000..14f3a3f98
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE/project_pr.md
@@ -0,0 +1,21 @@
+# Project Pull Request
+
+This template is for any submissions to our [projects list](https://github.com/ossu/computer-science/blob/master/PROJECTS.md).
+If you're submitting a pull request for any other part of the repo, don't use this
+template.
+
+Before you submit your project, there's a few things to check:
+
+* Have you followed the [code of conduct?](https://github.com/ossu/code-of-conduct)
+* Does this project violate the honor code of one of the courses in OSSU?
+
+If you've followed those two guidelines, then prepare a pull request for the project
+and a post for our Discord. Put the post in the [#projects channel](https://discord.com/channels/744385009028431943/881778556961701909),
+and ensure it contains some details for the community:
+
+* The description of the project.
+* Any courses or resources that were particularly helpful that you'd like to share.
+* Any learnings that you had while doing the project.
+* Questions that you have for the group, or any feedback you'd like to receive.
+
+If that's all good, create the pull request and send over your Discord post. Thanks!
From 74380ad993dadeeed9dcaff500c148fe7e9d9999 Mon Sep 17 00:00:00 2001
From: waciumawanjohi
Date: Sun, 9 Apr 2023 07:34:22 -0400
Subject: [PATCH 435/519] Update CURRICULAR_GUIDELINES.md
Reference the upcoming CS2023
---
CURRICULAR_GUIDELINES.md | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/CURRICULAR_GUIDELINES.md b/CURRICULAR_GUIDELINES.md
index e1598d261..55ab51366 100644
--- a/CURRICULAR_GUIDELINES.md
+++ b/CURRICULAR_GUIDELINES.md
@@ -2,7 +2,9 @@
[Curriculum Guidelines for Undergraduate Programs in Computer Science](https://www.acm.org/binaries/content/assets/education/cs2013_web_final.pdf)
-Our curricular guidelines are from the 2013 report of the Association for Computing Machinery and the Institute of Electrical and Electronics Engineers. This report is the most recent in a series of such reports outlining the expectations of undergraduate degrees in Computer Science. The report outlines critical Knowledge Areas and topics within them. It drills down further to outline specific learning goals, going so far as to outline what concepts a student must be able to explain vs concepts a student must be able to demonstrate using in practice.
+Our curricular guidelines are from the 2013 report of the Association for Computing Machinery and the Institute of Electrical and Electronics Engineers. This report is the most recent in a series of such reports outlining the expectations of undergraduate degrees in Computer Science. The report outlines critical Knowledge Areas and topics within them. It drills down further to outline specific learning goals, going so far as to outline what concepts a student must be able to explain vs concepts a student must be able to demonstrate using in practice.
+
+The CS2023 is currently under development. Track its progress to release [here](https://csed.acm.org/).
## Organizations publishing:
@@ -12,4 +14,4 @@ The Association for Computing Machinery (ACM) is an international learned societ
### Institute of Electrical and Electronics Engineers
-The Institute of Electrical and Electronics Engineers (IEEE) is a professional association formed in 1963 from the amalgamation of the American Institute of Electrical Engineers and the Institute of Radio Engineers. As of 2018, it is the world's largest association of technical professionals with more than 423,000 members in over 160 countries around the world. Its objectives are the educational and technical advancement of electrical and electronic engineering, telecommunications, computer engineering and allied disciplines.
\ No newline at end of file
+The Institute of Electrical and Electronics Engineers (IEEE) is a professional association formed in 1963 from the amalgamation of the American Institute of Electrical Engineers and the Institute of Radio Engineers. As of 2018, it is the world's largest association of technical professionals with more than 423,000 members in over 160 countries around the world. Its objectives are the educational and technical advancement of electrical and electronic engineering, telecommunications, computer engineering and allied disciplines.
From 9976b3b7d0cf8282fd33a9285b5388e912e6adbf Mon Sep 17 00:00:00 2001
From: Ariston Lorenzo
Date: Tue, 25 Apr 2023 22:34:11 -0400
Subject: [PATCH 436/519] Update LICENSE copyright years (#1152)
---
LICENSE | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/LICENSE b/LICENSE
index e4389659d..7c561549d 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
The MIT License (MIT)
-Copyright (c) 2015-2022 Open Source Society University
+Copyright (c) 2015-2023 Open Source Society University
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
From d27b2dfc9a7427fcbaf5c06cd57b9988e0c72a50 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Thu, 4 May 2023 22:28:21 -0400
Subject: [PATCH 437/519] Update course link
Effective Thinking Through Mathematics
---
extras/courses.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/extras/courses.md b/extras/courses.md
index 30a50d9b0..f7410be33 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -29,7 +29,7 @@ Courses | Duration | Effort
Courses | Duration | Effort
:-- | :--: | :--:
-[Effective Thinking Through Mathematics](https://learning.edx.org/course/course-v1:UTAustinX+UT.9.10x+3T2016/home) | 4 weeks | 2 hours/week
+[Effective Thinking Through Mathematics](https://www.edx.org/course/effective-thinking-through-mathematics-2) | 4 weeks | 2 hours/week
[Introduction to Mathematical Thinking](https://www.coursera.org/learn/mathematical-thinking) | 10 weeks | 10 hours/week
[High School Math](https://www.khanacademy.org/math/high-school-math) | - | -
[Precalculus](https://www.futurelearn.com/courses/precalculus) | 5 weeks | 6 hours/week
From 4adea647b3c920a9dff8526a751abd36fc49420e Mon Sep 17 00:00:00 2001
From: Lenox Waciuma Wanjohi
Date: Sat, 26 Aug 2023 02:52:03 -0400
Subject: [PATCH 438/519] Census Announcement
---
README.md | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/README.md b/README.md
index dfd0c57ef..11bf0532c 100644
--- a/README.md
+++ b/README.md
@@ -13,6 +13,11 @@
+# OSSU 2023 Survey
+Hi OSSUnians,
+OSSU is conducting our first census. [Will you take 15 minutes to fill out the survey?](https://docs.google.com/forms/d/e/1FAIpQLSfrON-YAh5nza6R0wpRkkhTOke5v9xSrZ3DXzec8f93KVSXjw/viewform?usp=sf_link)
+Your responses will help us understand your learning context and needs. All responses are anonymous. All responses shape the future of OSSU. The survey will be open for 2 weeks.
+
# Contents
- [Summary](#summary)
From 85ffe64eb4dd1c04e3d4f4b35cbc34eba546726e Mon Sep 17 00:00:00 2001
From: Lenox Waciuma Wanjohi
Date: Sat, 26 Aug 2023 02:55:47 -0400
Subject: [PATCH 439/519] Move census link to top of page
---
README.md | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index 11bf0532c..401c821e7 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,8 @@
+# OSSU 2023 Survey
+Hi OSSUnians,
+OSSU is conducting our first census. [Will you take 15 minutes to fill out the survey?](https://docs.google.com/forms/d/e/1FAIpQLSfrON-YAh5nza6R0wpRkkhTOke5v9xSrZ3DXzec8f93KVSXjw/viewform?usp=sf_link)
+Your responses will help us understand your learning context and needs. All responses are anonymous. All responses shape the future of OSSU. The survey will be open for 2 weeks.
+

Open Source Society University
@@ -13,11 +18,6 @@
-# OSSU 2023 Survey
-Hi OSSUnians,
-OSSU is conducting our first census. [Will you take 15 minutes to fill out the survey?](https://docs.google.com/forms/d/e/1FAIpQLSfrON-YAh5nza6R0wpRkkhTOke5v9xSrZ3DXzec8f93KVSXjw/viewform?usp=sf_link)
-Your responses will help us understand your learning context and needs. All responses are anonymous. All responses shape the future of OSSU. The survey will be open for 2 weeks.
-
# Contents
- [Summary](#summary)
From 7def64305aa24927969e9f289a4b5cbf1ebec371 Mon Sep 17 00:00:00 2001
From: Pulkit Krishna
Date: Mon, 18 Sep 2023 09:33:32 +0530
Subject: [PATCH 440/519] Correct the CS50 alt URL
https://cs50.harvard.edu/ just redirects to Edx. The course is available at https://cs50.harvard.edu/x/
---
extras/courses.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/extras/courses.md b/extras/courses.md
index f7410be33..4eb91a955 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -9,7 +9,7 @@ or that there was an alternative that fit better into the curriculum.
Courses | Duration | Effort
:-- | :--: | :--:
[Introduction to Computational Thinking and Data Science](https://www.edx.org/course/introduction-computational-thinking-data-mitx-6-00-2x-2#!)([alt](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0002-introduction-to-computational-thinking-and-data-science-fall-2016/))| 10 weeks | 15 hours/week
-[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
+[Introduction to Computer Science - CS50](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x#!) ([alt](https://cs50.harvard.edu/x/)) | 12 weeks | 10-20 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)| - | -
From 1119281a1a8443af31a47da9958a8da43386367b Mon Sep 17 00:00:00 2001
From: Lenox Waciuma Wanjohi
Date: Wed, 27 Sep 2023 14:05:10 -0400
Subject: [PATCH 441/519] Remove 2023 Census link
---
README.md | 5 -----
1 file changed, 5 deletions(-)
diff --git a/README.md b/README.md
index 401c821e7..dfd0c57ef 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,3 @@
-# OSSU 2023 Survey
-Hi OSSUnians,
-OSSU is conducting our first census. [Will you take 15 minutes to fill out the survey?](https://docs.google.com/forms/d/e/1FAIpQLSfrON-YAh5nza6R0wpRkkhTOke5v9xSrZ3DXzec8f93KVSXjw/viewform?usp=sf_link)
-Your responses will help us understand your learning context and needs. All responses are anonymous. All responses shape the future of OSSU. The survey will be open for 2 weeks.
-

Open Source Society University
From f7fe84e9105ec1099caa55645517994ed1e26fec Mon Sep 17 00:00:00 2001
From: Pulkit Krishna
Date: Fri, 29 Sep 2023 21:11:39 +0530
Subject: [PATCH 442/519] Add better link for How to Code courses
Add the Systematic Program Design course (which consists of both parts of How to Code) as the main link and move How to Code to to alt.
---
README.md | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index dfd0c57ef..4da726438 100644
--- a/README.md
+++ b/README.md
@@ -162,9 +162,8 @@ All coursework under Core CS is **required**, unless otherwise indicated.
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
-[How to Code - Simple Data](https://www.edx.org/course/how-to-code-simple-data) [(textbook)](https://htdp.org/2022-8-7/Book/index.html) | 7 weeks | 8-10 hours/week | none | [chat](https://discord.gg/RfqAmGJ)
-[How to Code - Complex Data](https://www.edx.org/course/how-to-code-complex-data) | 6 weeks | 8-10 hours/week | How to Code: Simple Data | [chat](https://discord.gg/kczJzpm)
-[Programming Languages, Part A](https://www.coursera.org/learn/programming-languages) | 5 weeks | 4-8 hours/week | How to Code ([Hear instructor](https://www.coursera.org/lecture/programming-languages/recommended-background-k1yuh)) | [chat](https://discord.gg/8BkJtXN)
+[Systematic Program Design](https://learning.edx.org/course/course-v1:UBCx+SPD1x+2T2015) (alt: [part 1](https://www.edx.org/course/how-to-code-simple-data) / [part 2](https://www.edx.org/course/how-to-code-complex-data)) | 13 weeks | 8-10 hours/week | none | chat: [part 1](https://discord.gg/RfqAmGJ) / [part 2](https://discord.gg/kczJzpm)
+[Programming Languages, Part A](https://www.coursera.org/learn/programming-languages) | 5 weeks | 4-8 hours/week | Systematic Program Design ([Hear instructor](https://www.coursera.org/lecture/programming-languages/recommended-background-k1yuh)) | [chat](https://discord.gg/8BkJtXN)
[Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 4-8 hours/week | Programming Languages, Part A | [chat](https://discord.gg/EeA7VR9)
[Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 4-8 hours/week | Programming Languages, Part B | [chat](https://discord.gg/8EZUVbA)
[Object-Oriented Design](https://www.coursera.org/learn/object-oriented-design) | 4 weeks | 4 hours/week | [Basic Java](https://www.youtube.com/watch?v=GoXwIVyNvX0)
From b596a67d22913495dd129071cde3e8ebaeec95cc Mon Sep 17 00:00:00 2001
From: Pulkit Krishna
Date: Sat, 30 Sep 2023 10:41:50 +0530
Subject: [PATCH 443/519] Add backt the HTDP book
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 4da726438..549912873 100644
--- a/README.md
+++ b/README.md
@@ -162,7 +162,7 @@ All coursework under Core CS is **required**, unless otherwise indicated.
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
-[Systematic Program Design](https://learning.edx.org/course/course-v1:UBCx+SPD1x+2T2015) (alt: [part 1](https://www.edx.org/course/how-to-code-simple-data) / [part 2](https://www.edx.org/course/how-to-code-complex-data)) | 13 weeks | 8-10 hours/week | none | chat: [part 1](https://discord.gg/RfqAmGJ) / [part 2](https://discord.gg/kczJzpm)
+[Systematic Program Design](https://learning.edx.org/course/course-v1:UBCx+SPD1x+2T2015) [(textbook)](https://htdp.org/2023-8-14/Book/index.html) (alt: [part 1](https://www.edx.org/course/how-to-code-simple-data) / [part 2](https://www.edx.org/course/how-to-code-complex-data)) | 13 weeks | 8-10 hours/week | none | chat: [part 1](https://discord.gg/RfqAmGJ) / [part 2](https://discord.gg/kczJzpm)
[Programming Languages, Part A](https://www.coursera.org/learn/programming-languages) | 5 weeks | 4-8 hours/week | Systematic Program Design ([Hear instructor](https://www.coursera.org/lecture/programming-languages/recommended-background-k1yuh)) | [chat](https://discord.gg/8BkJtXN)
[Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 4-8 hours/week | Programming Languages, Part A | [chat](https://discord.gg/EeA7VR9)
[Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 4-8 hours/week | Programming Languages, Part B | [chat](https://discord.gg/8EZUVbA)
From f08ea7bc7495e0aa321fb9009c58e4967804e64b Mon Sep 17 00:00:00 2001
From: Pulkit Krishna
Date: Wed, 4 Oct 2023 12:26:01 +0530
Subject: [PATCH 444/519] Add intro-programming course page (#1177)
* Create intro-programming course page (incomplete)
* Complete the intro-prgramming page
* Add intro-programming course page to the README file
* Fix spellings
---
README.md | 2 +-
coursepages/intro-programming/README.md | 88 +++++++++++++++++++++++++
2 files changed, 89 insertions(+), 1 deletion(-)
create mode 100644 coursepages/intro-programming/README.md
diff --git a/README.md b/README.md
index 549912873..960e1f85f 100644
--- a/README.md
+++ b/README.md
@@ -125,7 +125,7 @@ If you've never written a for-loop, or don't know what a string is in programmin
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
-[Python for Everybody](https://www.py4e.com/lessons) | 10 weeks | 10 hours/week | none | [chat](https://discord.gg/syA242Z)
+[Introduction to programming](coursepages/intro-programming/README.md) | 10 weeks | 10 hours/week | none | [chat](https://discord.gg/syA242Z)
### Introduction to Computer Science
diff --git a/coursepages/intro-programming/README.md b/coursepages/intro-programming/README.md
new file mode 100644
index 000000000..78dd7dc62
--- /dev/null
+++ b/coursepages/intro-programming/README.md
@@ -0,0 +1,88 @@
+# Introduction to Programming
+
+If you've never written a for-loop, or don't know what a string is in programming, start here. These courses are self-paced, allowing you to adjust the number of hours you spend per week to meet your needs.
+
+We are currently looking for volunteers to try out both of the following two courses and analyze them in different ways to determine which one is better suited to be included in our curriculum. We suggest that you flip a coin to decide which one to take first, so that you avoid an ordering bias. Once you have completed both courses, please provide your analysis of [this RFC](https://github.com/ossu/computer-science/issues/1164).
+
+If you don't have time or do not want to volunteer, you are required to do **only ONE** of the following courses.
+
+## CS50P: Introduction to Programming with Python
+
+This course has been developed by the CS50 team at Harvard University.
+> An introduction to programming using a language called Python. Learn how to read and write code as well as how to test and "debug" it. Designed for students with or without prior programming experience who'd like to learn Python specifically. Learn about functions, arguments, and return values (oh my!); variables and types; conditionals and Boolean expressions; and loops. Learn how to handle exceptions, find and fix bugs, and write unit tests; use third-party libraries; validate and extract data with regular expressions; model real-world entities with classes, objects, methods, and properties; and read and write files. Hands-on opportunities for lots of practice. Exercises inspired by real-world programming problems. No software required except for a web browser, or you can write code on your own PC or Mac.
+
+**Link**:
+
+**Note**: This course is *different* from CS50 or CS50x. CS50 is not part of the OSSU curriculum. That being said, if you have completed CS50, you can skip this course and move on to the next one.
+
+### Instructions
+
+ - If you want to follow along with the instructor, log in to the [CS50 "codespace"](https://cs50.dev) and watch [this video](https://cs50.harvard.edu/python/2022/shorts/visual_studio_code_for_cs50/) to get started.
+ - Watch each lecture and complete the respective problem set. Read the lecture notes to revise things.
+ - If you are struck somewhere, feel free to ask questions. You can join the OSSU chat for this course here: .
+ - You can also join the CS50 discord server and ask questions there: , but note that it is not affiliated with or maintained by OSSU.
+
+### Course Materials
+
+0. [Functions, Variables](https://cs50.harvard.edu/python/2022/weeks/0/) — [Notes](https://cs50.harvard.edu/python/2022/notes/0/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/0/)
+1. [Conditionals](https://cs50.harvard.edu/python/2022/weeks/1/) — [Notes](https://cs50.harvard.edu/python/2022/notes/1/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/0/)
+2. [Loops](https://cs50.harvard.edu/python/2022/weeks/2/) — [Notes](https://cs50.harvard.edu/python/2022/notes/2/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/0/)
+3. [Exceptions](https://cs50.harvard.edu/python/2022/weeks/3/) — [Notes](https://cs50.harvard.edu/python/2022/notes/3/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/0/)
+4. [Libraries](https://cs50.harvard.edu/python/2022/weeks/4/) — [Notes](https://cs50.harvard.edu/python/2022/notes/4/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/0/)
+5. [Unit Tests](https://cs50.harvard.edu/python/2022/weeks/5/) — [Notes](https://cs50.harvard.edu/python/2022/notes/5/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/0/)
+6. [File I/O](https://cs50.harvard.edu/python/2022/weeks/6/) — [Notes](https://cs50.harvard.edu/python/2022/notes/6/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/0/)
+7. [Regular Expressions](https://cs50.harvard.edu/python/2022/weeks/7/) — [Notes](https://cs50.harvard.edu/python/2022/notes/7/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/0/)
+8. [Object-Oriented Programming](https://cs50.harvard.edu/python/2022/weeks/8/) — [Notes](https://cs50.harvard.edu/python/2022/notes/8/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/0/)
+9. [Et Cetera](https://cs50.harvard.edu/python/2022/weeks/9/) — [Notes](https://cs50.harvard.edu/python/2022/notes/9/) — [Final Project](https://cs50.harvard.edu/python/2022/project/)
+
+## Python for Everyone
+
+This course has been created by Professor Charles Severance from the University of Michigan.
+> Learn to Program and Analyze Data with Python. Develop programs to gather, clean, analyze, and visualize data.
+
+**Link**: https://www.py4e.com/lessons
+
+**Textbook**: [PDF](http://do1.dr-chuck.com/pythonlearn/EN_us/pythonlearn.pdf) / [EPUB](http://do1.dr-chuck.com/pythonlearn/EN_us/pythonlearn.epub) / [HTML](https://www.py4e.com/html3) / [Buy hardcopy](https://www.py4e.com/book)
+
+**Note**: This course is also offered on Coursera, Edx. Those versions require you to pay to get the full version of the course. We suggest doing the course on its website, which is completely free.
+
+### Instructions
+
+- You need to [sign in](https://www.py4e.com/) to the course website using your Google account to access the assignments.
+- Watch all the videos of a lesson and then do its assignments.
+- If you prefer reading books, you can read the HTML version of the chapter related to the lesson linked on the lesson's page, or you can download the whole book in different formats from [this page](https://www.py4e.com/book).
+- If you face any problems, feel free to ask questions. You can join the OSSU chat for this course here: .
+- You only need to complete the course up to the Regular Expressions lesson. The rest of the course is optional.
+
+### Course Materials
+
+1. [Installing Python](https://www.py4e.com/lessons/install)
+2. [Why Program?](https://www.py4e.com/lessons/intro)
+3. [Variables, expressions and statements](https://www.py4e.com/lessons/memory)
+4. [Conditional Execution](https://www.py4e.com/lessons/logic)
+5. [Functions](https://www.py4e.com/lessons/functions)
+6. [Loops and Iterations](https://www.py4e.com/lessons/loops)
+7. [Strings](https://www.py4e.com/lessons/strings)
+8. [Files](https://www.py4e.com/lessons/files)
+9. [Lists](https://www.py4e.com/lessons/lists)
+10. [Dictionaries](https://www.py4e.com/lessons/dictionary)
+11. [Tuples](https://www.py4e.com/lessons/tuples)
+12. [Regular Expressions](https://www.py4e.com/lessons/regex)
+13. [Network Programming](https://www.py4e.com/lessons/network) (Optional)
+14. [Using Web Services](https://www.py4e.com/lessons/servces) (Optional)
+15. [Object-Oriented Programming](https://www.py4e.com/lessons/Objects) (Optional)
+16. [Databases](https://www.py4e.com/lessons/database) (Optional)
+17. [Data Visualization](https://www.py4e.com/lessons/dataviz) (Optional)
+
+### Fixes
+
+1. If you're doing the BeautifulSoup4 lesson, there is an issue with Python 3.10+ that will give you an error referencing the Collections library. We have a fix for you. We don't expect you to understand it, just put this in front of your code in the imports block:
+
+```python
+import collections
+collections.Callable = collections.abc.Callable
+
+from bs4 import BeautifulSoup
+```
+
+Doing this should fix the compatibility issue and allow your code to run.
From 5d91adfc61ff41189b929d4837e10acbf635383d Mon Sep 17 00:00:00 2001
From: Pulkit Krishna
Date: Tue, 10 Oct 2023 09:08:51 +0530
Subject: [PATCH 445/519] Fix the name of the Py4E course
---
coursepages/intro-programming/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/coursepages/intro-programming/README.md b/coursepages/intro-programming/README.md
index 78dd7dc62..29efd72ba 100644
--- a/coursepages/intro-programming/README.md
+++ b/coursepages/intro-programming/README.md
@@ -35,7 +35,7 @@ This course has been developed by the CS50 team at Harvard University.
8. [Object-Oriented Programming](https://cs50.harvard.edu/python/2022/weeks/8/) — [Notes](https://cs50.harvard.edu/python/2022/notes/8/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/0/)
9. [Et Cetera](https://cs50.harvard.edu/python/2022/weeks/9/) — [Notes](https://cs50.harvard.edu/python/2022/notes/9/) — [Final Project](https://cs50.harvard.edu/python/2022/project/)
-## Python for Everyone
+## Python for Everybody
This course has been created by Professor Charles Severance from the University of Michigan.
> Learn to Program and Analyze Data with Python. Develop programs to gather, clean, analyze, and visualize data.
From 763d96e53f74c825c3ee9fdeb88b502b2649a32b Mon Sep 17 00:00:00 2001
From: Lenox Waciuma Wanjohi
Date: Sun, 15 Oct 2023 13:31:03 -0400
Subject: [PATCH 446/519] Add alt for Computer Graphics
Resolves #1140
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 960e1f85f..b50738d49 100644
--- a/README.md
+++ b/README.md
@@ -296,7 +296,7 @@ Courses | Duration | Effort | Prerequisites | Discussion
[Databases: Relational Databases and SQL](https://www.edx.org/course/databases-5-sql)| 2 weeks | 10 hours/week | core programming | [chat](https://discord.gg/P8SPPyF)
[Databases: Semistructured Data](https://www.edx.org/course/semistructured-data)| 2 weeks | 10 hours/week | core programming | [chat](https://discord.gg/duCJ3GN)
[Machine Learning](https://www.coursera.org/specializations/machine-learning-introduction)| 11 weeks | 9 hours/week | Basic coding | [chat](https://discord.gg/NcXHDjy)
-[Computer Graphics](https://www.edx.org/course/computer-graphics-2)| 6 weeks | 12 hours/week | C++ or Java, linear algebra | [chat](https://discord.gg/68WqMNV)
+[Computer Graphics](https://www.edx.org/course/computer-graphics-2) ([alt](https://cseweb.ucsd.edu/~viscomp/classes/cse167/wi22/schedule.html))| 6 weeks | 12 hours/week | C++ or Java, linear algebra | [chat](https://discord.gg/68WqMNV)
[Software Engineering: Introduction](https://www.edx.org/course/software-engineering-introduction) | 6 weeks | 8-10 hours/week | Core Programming, and a [sizable project](FAQ.md#why-require-experience-with-a-sizable-project-before-the-Software-Engineering-courses) | [chat](https://discord.gg/5Qtcwtz)
### Core ethics
From 4a53717f85ddaec8308096f4cb591ec52c8b50e2 Mon Sep 17 00:00:00 2001
From: Lenox Waciuma Wanjohi
Date: Sun, 15 Oct 2023 13:39:43 -0400
Subject: [PATCH 447/519] Update Process
Mention taking courses in parallel.
Resolves #1139
---
README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index b50738d49..a67d3dae6 100644
--- a/README.md
+++ b/README.md
@@ -61,11 +61,11 @@ just remember that you can't purchase success!
**Process**. Students can work through the curriculum alone or in groups, in order or out of order.
- We recommend doing all courses in Core CS, only skipping a course when you are certain that you've already learned the material previously.
-- For simplicity, we recommend working through courses (especially Core CS) in order from top to bottom, as they have already been [topologically sorted](https://en.wikipedia.org/wiki/Topological_sorting) by their prerequisites.
-- Courses in Advanced CS are electives. Choose one subject (e.g. Advanced programming) you want to become an expert in and take all the courses under that heading. You can also create your own custom subject, but we recommend getting validation from the community on the subject you choose.
+- For simplicity, we recommend working through courses (especially Core CS) in order from top to bottom. Some students choose to study multiple courses at a time in order to vary the material they are working on is a day/week. A popular option is to take the math courses in parallel with the introductory courses. Course prerequisites are listed to help you determine if you are prepared for a given course.
+- Courses in Advanced CS are electives. Choose one subject (e.g. Advanced programming) you want to become an expert in and take all the courses under that heading. You can also create your own custom subject; the discord community may provide feedback on your planned subject.
**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!
+*Respect the code of conduct* that you signed in the beginning of each course!
**[How to contribute](CONTRIBUTING.md)**
From 7a630ac06a0399be97316929fc36bebd73c8f4ad Mon Sep 17 00:00:00 2001
From: Pulkit Krishna
Date: Sat, 28 Oct 2023 18:00:58 +0530
Subject: [PATCH 448/519] Fix CS50P pset links
---
coursepages/intro-programming/README.md | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/coursepages/intro-programming/README.md b/coursepages/intro-programming/README.md
index 29efd72ba..ff5d8704b 100644
--- a/coursepages/intro-programming/README.md
+++ b/coursepages/intro-programming/README.md
@@ -19,20 +19,20 @@ This course has been developed by the CS50 team at Harvard University.
- If you want to follow along with the instructor, log in to the [CS50 "codespace"](https://cs50.dev) and watch [this video](https://cs50.harvard.edu/python/2022/shorts/visual_studio_code_for_cs50/) to get started.
- Watch each lecture and complete the respective problem set. Read the lecture notes to revise things.
- - If you are struck somewhere, feel free to ask questions. You can join the OSSU chat for this course here: .
+ - If you are struck somewhere, feel free to ask questions. You can join the OSSU chat for this course here: .
- You can also join the CS50 discord server and ask questions there: , but note that it is not affiliated with or maintained by OSSU.
### Course Materials
0. [Functions, Variables](https://cs50.harvard.edu/python/2022/weeks/0/) — [Notes](https://cs50.harvard.edu/python/2022/notes/0/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/0/)
-1. [Conditionals](https://cs50.harvard.edu/python/2022/weeks/1/) — [Notes](https://cs50.harvard.edu/python/2022/notes/1/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/0/)
-2. [Loops](https://cs50.harvard.edu/python/2022/weeks/2/) — [Notes](https://cs50.harvard.edu/python/2022/notes/2/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/0/)
-3. [Exceptions](https://cs50.harvard.edu/python/2022/weeks/3/) — [Notes](https://cs50.harvard.edu/python/2022/notes/3/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/0/)
-4. [Libraries](https://cs50.harvard.edu/python/2022/weeks/4/) — [Notes](https://cs50.harvard.edu/python/2022/notes/4/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/0/)
-5. [Unit Tests](https://cs50.harvard.edu/python/2022/weeks/5/) — [Notes](https://cs50.harvard.edu/python/2022/notes/5/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/0/)
-6. [File I/O](https://cs50.harvard.edu/python/2022/weeks/6/) — [Notes](https://cs50.harvard.edu/python/2022/notes/6/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/0/)
-7. [Regular Expressions](https://cs50.harvard.edu/python/2022/weeks/7/) — [Notes](https://cs50.harvard.edu/python/2022/notes/7/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/0/)
-8. [Object-Oriented Programming](https://cs50.harvard.edu/python/2022/weeks/8/) — [Notes](https://cs50.harvard.edu/python/2022/notes/8/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/0/)
+1. [Conditionals](https://cs50.harvard.edu/python/2022/weeks/1/) — [Notes](https://cs50.harvard.edu/python/2022/notes/1/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/1/)
+2. [Loops](https://cs50.harvard.edu/python/2022/weeks/2/) — [Notes](https://cs50.harvard.edu/python/2022/notes/2/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/2/)
+3. [Exceptions](https://cs50.harvard.edu/python/2022/weeks/3/) — [Notes](https://cs50.harvard.edu/python/2022/notes/3/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/3/)
+4. [Libraries](https://cs50.harvard.edu/python/2022/weeks/4/) — [Notes](https://cs50.harvard.edu/python/2022/notes/4/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/4/)
+5. [Unit Tests](https://cs50.harvard.edu/python/2022/weeks/5/) — [Notes](https://cs50.harvard.edu/python/2022/notes/5/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/5/)
+6. [File I/O](https://cs50.harvard.edu/python/2022/weeks/6/) — [Notes](https://cs50.harvard.edu/python/2022/notes/6/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/6/)
+7. [Regular Expressions](https://cs50.harvard.edu/python/2022/weeks/7/) — [Notes](https://cs50.harvard.edu/python/2022/notes/7/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/7/)
+8. [Object-Oriented Programming](https://cs50.harvard.edu/python/2022/weeks/8/) — [Notes](https://cs50.harvard.edu/python/2022/notes/8/) — [Problem Set](https://cs50.harvard.edu/python/2022/psets/8/)
9. [Et Cetera](https://cs50.harvard.edu/python/2022/weeks/9/) — [Notes](https://cs50.harvard.edu/python/2022/notes/9/) — [Final Project](https://cs50.harvard.edu/python/2022/project/)
## Python for Everybody
From b25b53a640789de3638b96cbd993c4fa9373fd1d Mon Sep 17 00:00:00 2001
From: zkv
Date: Sun, 29 Oct 2023 16:34:37 +0300
Subject: [PATCH 449/519] Changed typo 'strucked' to 'stucked'
---
coursepages/intro-programming/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/coursepages/intro-programming/README.md b/coursepages/intro-programming/README.md
index ff5d8704b..6d6327747 100644
--- a/coursepages/intro-programming/README.md
+++ b/coursepages/intro-programming/README.md
@@ -19,7 +19,7 @@ This course has been developed by the CS50 team at Harvard University.
- If you want to follow along with the instructor, log in to the [CS50 "codespace"](https://cs50.dev) and watch [this video](https://cs50.harvard.edu/python/2022/shorts/visual_studio_code_for_cs50/) to get started.
- Watch each lecture and complete the respective problem set. Read the lecture notes to revise things.
- - If you are struck somewhere, feel free to ask questions. You can join the OSSU chat for this course here: .
+ - If you are stuck somewhere, feel free to ask questions. You can join the OSSU chat for this course here: .
- You can also join the CS50 discord server and ask questions there: , but note that it is not affiliated with or maintained by OSSU.
### Course Materials
From ed2f6277e35fe0ce21aba03ba46c6af6b88fe391 Mon Sep 17 00:00:00 2001
From: Avishek Sen
Date: Mon, 30 Oct 2023 18:17:07 +0530
Subject: [PATCH 450/519] fix typos
---
coursepages/ostep/Project-2A-processes-shell.md | 2 +-
coursepages/ostep/README.md | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/coursepages/ostep/Project-2A-processes-shell.md b/coursepages/ostep/Project-2A-processes-shell.md
index 425747087..7ff80cf5c 100644
--- a/coursepages/ostep/Project-2A-processes-shell.md
+++ b/coursepages/ostep/Project-2A-processes-shell.md
@@ -17,7 +17,7 @@
* All of the test scripts will use batch mode and redirection, so until you've got those done, you'll have to test your shell manually.
* When you implement the `path` command, make sure you can handle both absolute and relative paths (i.e., `path tests` as well as `path /usr/bin`.
* It's tricky to get the errors down right, so just add error messages wherever it seems reasonable, then run the test scripts and modify your code until you're reporting errors exactly when you're supposed to. If you're running test `i`, you can check `tests/i.err` and `tests/i.rc` to see how many errors your shell should generate and compare to `tests-out/i.err` and `tests-out/i.rc`.
-* If you run into issues with test 3 where the test expects something like `ls: cannot access ...` and your shell ouputs `/bin/ls: cannot access ...` or `/usr/bin/ls: cannot access ...`, try modifying your $PATH environment variable to start with `/bin`. If that doesn't work, just modify `tests/3.err` to match the output your system gives. You can't modify your system's output without messing with the implementation of `ls` and/or `execv`, so it's okay to skip this test as long as it's working in spirit.
+* If you run into issues with test 3 where the test expects something like `ls: cannot access ...` and your shell outputs `/bin/ls: cannot access ...` or `/usr/bin/ls: cannot access ...`, try modifying your $PATH environment variable to start with `/bin`. If that doesn't work, just modify `tests/3.err` to match the output your system gives. You can't modify your system's output without messing with the implementation of `ls` and/or `execv`, so it's okay to skip this test as long as it's working in spirit.
* I had to edit `/tests/3.pre` to use `/bin/ls` due to how it's set up on my system, in order to pass all the tests. Alternatively you can add `export PATH="/bin:$PATH"` to your `.profile` or `.bashrc` file.
### Memory Management Traps and Pitfalls
diff --git a/coursepages/ostep/README.md b/coursepages/ostep/README.md
index 1b3640342..ab1eaf0cd 100644
--- a/coursepages/ostep/README.md
+++ b/coursepages/ostep/README.md
@@ -77,7 +77,7 @@ This course was originally taught as CS 537 at the University of Wisconsin by th
* Watch discussion 5, then do the `scheduling-xv6-lottery` project.
* Watch discussion 7, then do the `vm-xv6-intro` project.
* Watch lectures 6 through 9 (and optionally, the review lecture) and read chapters 25 through 34; again, you're encouraged to do the homework.
-* Watch discussion 10, then do the `concurency-xv6-threads` project.
+* Watch discussion 10, then do the `concurrency-xv6-threads` project.
* Watch discussions 11 and 12, then do the `concurrency-mapreduce` project.
* Watch lectures 10 through 14 (and optionally, the second review lecture) and read chapters 35 through 47; remember to do the homework along with the lectures or chapters.
* Do the `filesystems-checker` project.
From f75272ffb062db8202f7a7b9232018c487b8a448 Mon Sep 17 00:00:00 2001
From: Lenox Waciuma Wanjohi
Date: Tue, 31 Oct 2023 23:26:35 -0400
Subject: [PATCH 451/519] Create CNAME
---
CNAME | 1 +
1 file changed, 1 insertion(+)
create mode 100644 CNAME
diff --git a/CNAME b/CNAME
new file mode 100644
index 000000000..689610131
--- /dev/null
+++ b/CNAME
@@ -0,0 +1 @@
+www.ossu.dev
\ No newline at end of file
From 6ee725cec4bcb3cd0daa1bd7c7c077449f2411bf Mon Sep 17 00:00:00 2001
From: Lenox Waciuma Wanjohi
Date: Thu, 2 Nov 2023 23:28:03 -0400
Subject: [PATCH 452/519] Update CNAME
---
CNAME | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CNAME b/CNAME
index 689610131..982d816af 100644
--- a/CNAME
+++ b/CNAME
@@ -1 +1 @@
-www.ossu.dev
\ No newline at end of file
+cs.ossu.dev
\ No newline at end of file
From 3b61739a686f549c10e61c9daa71e2516a60c287 Mon Sep 17 00:00:00 2001
From: Lenox Waciuma Wanjohi
Date: Fri, 3 Nov 2023 00:02:58 -0400
Subject: [PATCH 453/519] Delete CNAME
---
CNAME | 1 -
1 file changed, 1 deletion(-)
delete mode 100644 CNAME
diff --git a/CNAME b/CNAME
deleted file mode 100644
index 982d816af..000000000
--- a/CNAME
+++ /dev/null
@@ -1 +0,0 @@
-cs.ossu.dev
\ No newline at end of file
From e9ae0f2093108aee5e42af1c965a89d3a45bb989 Mon Sep 17 00:00:00 2001
From: Lenox Waciuma Wanjohi
Date: Fri, 3 Nov 2023 00:06:26 -0400
Subject: [PATCH 454/519] Create CNAME
---
CNAME | 1 +
1 file changed, 1 insertion(+)
create mode 100644 CNAME
diff --git a/CNAME b/CNAME
new file mode 100644
index 000000000..982d816af
--- /dev/null
+++ b/CNAME
@@ -0,0 +1 @@
+cs.ossu.dev
\ No newline at end of file
From 56500c96b10489e57724e1d51d04527fdd2ee1cd Mon Sep 17 00:00:00 2001
From: Lenox Waciuma Wanjohi
Date: Fri, 3 Nov 2023 00:06:56 -0400
Subject: [PATCH 455/519] Delete CNAME
---
CNAME | 1 -
1 file changed, 1 deletion(-)
delete mode 100644 CNAME
diff --git a/CNAME b/CNAME
deleted file mode 100644
index 982d816af..000000000
--- a/CNAME
+++ /dev/null
@@ -1 +0,0 @@
-cs.ossu.dev
\ No newline at end of file
From 26d40358590e08f58776b60456cba91f7d23e098 Mon Sep 17 00:00:00 2001
From: Lenox Waciuma Wanjohi
Date: Fri, 3 Nov 2023 00:34:27 -0400
Subject: [PATCH 456/519] Create CNAME
---
CNAME | 1 +
1 file changed, 1 insertion(+)
create mode 100644 CNAME
diff --git a/CNAME b/CNAME
new file mode 100644
index 000000000..982d816af
--- /dev/null
+++ b/CNAME
@@ -0,0 +1 @@
+cs.ossu.dev
\ No newline at end of file
From 17e6800807aa43bd600efe4bde610b5d62f19560 Mon Sep 17 00:00:00 2001
From: Budi_Ubuntu
Date: Mon, 30 Oct 2023 10:07:10 +0200
Subject: [PATCH 457/519] update Software Engineering: Introduction course
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index a67d3dae6..84a0725bf 100644
--- a/README.md
+++ b/README.md
@@ -297,7 +297,7 @@ Courses | Duration | Effort | Prerequisites | Discussion
[Databases: Semistructured Data](https://www.edx.org/course/semistructured-data)| 2 weeks | 10 hours/week | core programming | [chat](https://discord.gg/duCJ3GN)
[Machine Learning](https://www.coursera.org/specializations/machine-learning-introduction)| 11 weeks | 9 hours/week | Basic coding | [chat](https://discord.gg/NcXHDjy)
[Computer Graphics](https://www.edx.org/course/computer-graphics-2) ([alt](https://cseweb.ucsd.edu/~viscomp/classes/cse167/wi22/schedule.html))| 6 weeks | 12 hours/week | C++ or Java, linear algebra | [chat](https://discord.gg/68WqMNV)
-[Software Engineering: Introduction](https://www.edx.org/course/software-engineering-introduction) | 6 weeks | 8-10 hours/week | Core Programming, and a [sizable project](FAQ.md#why-require-experience-with-a-sizable-project-before-the-Software-Engineering-courses) | [chat](https://discord.gg/5Qtcwtz)
+[Software Engineering: Introduction](https://www.coursera.org/learn/introduction-to-software-engineering) | 4 weeks | 8-10 hours/week | Core Programming, and a [sizable project](FAQ.md#why-require-experience-with-a-sizable-project-before-the-Software-Engineering-courses) | [chat](https://discord.gg/5Qtcwtz)
### Core ethics
From 8ca1e2b153bb0bcfd30d8fb7bd36a868cb65dd6a Mon Sep 17 00:00:00 2001
From: Lenox Waciuma Wanjohi
Date: Mon, 11 Dec 2023 19:13:01 -0500
Subject: [PATCH 458/519] Add whitespace
May address #1191
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index 84a0725bf..1756a130a 100644
--- a/README.md
+++ b/README.md
@@ -403,6 +403,7 @@ Courses | Duration | Effort | Prerequisites
[Secure Software Development: Verification and More Specialized Topics](https://www.edx.org/course/secure-software-development-verification-and-more-specialized-topics) | 7 weeks | 1-2 hours/week | Secure Software Development: Implementation
### Advanced math
+
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
[Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) | - | - | [high school math](FAQ.md#how-can-i-review-the-math-prerequisites) | [chat](https://discord.gg/m6wHbP6)
From 0882b6742d088b6cb1518021c7dfe940ceb17c79 Mon Sep 17 00:00:00 2001
From: Pulkit Krishna
Date: Mon, 1 Jan 2024 10:50:29 +0530
Subject: [PATCH 459/519] Use full word rather than abbreviation for
accessibility (#1194)
* Hopefully fix some confusions regarding alt courses
Mention the full word "alternative" instead of the short form "alt" which may cause confusion to non-native speakers. Also change "/" to "," for the two parts of HTC course.
* Fixed the missing "alt"
---
README.md | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/README.md b/README.md
index 1756a130a..5279dc1c4 100644
--- a/README.md
+++ b/README.md
@@ -139,7 +139,7 @@ This course will introduce you to the world of computer science. Students who ha
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
-[Introduction to Computer Science and Programming using Python](https://ocw.mit.edu/courses/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/) ([alt](https://www.edx.org/course/introduction-to-computer-science-and-programming-7)) | 9 weeks | 15 hours/week | [high school algebra](https://www.khanacademy.org/math/algebra-home) | [chat](https://discord.gg/jvchSm9)
+[Introduction to Computer Science and Programming using Python](https://ocw.mit.edu/courses/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/) ([alternative](https://www.edx.org/course/introduction-to-computer-science-and-programming-7)) | 9 weeks | 15 hours/week | [high school algebra](https://www.khanacademy.org/math/algebra-home) | [chat](https://discord.gg/jvchSm9)
## Core CS
@@ -162,7 +162,7 @@ All coursework under Core CS is **required**, unless otherwise indicated.
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
-[Systematic Program Design](https://learning.edx.org/course/course-v1:UBCx+SPD1x+2T2015) [(textbook)](https://htdp.org/2023-8-14/Book/index.html) (alt: [part 1](https://www.edx.org/course/how-to-code-simple-data) / [part 2](https://www.edx.org/course/how-to-code-complex-data)) | 13 weeks | 8-10 hours/week | none | chat: [part 1](https://discord.gg/RfqAmGJ) / [part 2](https://discord.gg/kczJzpm)
+[Systematic Program Design](https://learning.edx.org/course/course-v1:UBCx+SPD1x+2T2015) [(textbook)](https://htdp.org/2023-8-14/Book/index.html) (alternative: [part 1](https://www.edx.org/course/how-to-code-simple-data), [part 2](https://www.edx.org/course/how-to-code-complex-data)) | 13 weeks | 8-10 hours/week | none | chat: [part 1](https://discord.gg/RfqAmGJ) / [part 2](https://discord.gg/kczJzpm)
[Programming Languages, Part A](https://www.coursera.org/learn/programming-languages) | 5 weeks | 4-8 hours/week | Systematic Program Design ([Hear instructor](https://www.coursera.org/lecture/programming-languages/recommended-background-k1yuh)) | [chat](https://discord.gg/8BkJtXN)
[Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 4-8 hours/week | Programming Languages, Part A | [chat](https://discord.gg/EeA7VR9)
[Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 4-8 hours/week | Programming Languages, Part B | [chat](https://discord.gg/8EZUVbA)
@@ -183,10 +183,10 @@ Discrete math (Math for CS) is a prerequisite and closely related to the study o
Courses | Duration | Effort | Notes | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--: | :--:
-[Calculus 1A: Differentiation](https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.1x+2T2019/about) ([alt](https://ocw.mit.edu/courses/mathematics/18-01sc-single-variable-calculus-fall-2010/index.htm)) | 13 weeks | 6-10 hours/week | The alternate covers this and the following 2 courses | [high school math](FAQ.md#how-can-i-review-the-math-prerequisites) | [chat](https://discord.gg/mPCt45F)
+[Calculus 1A: Differentiation](https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.1x+2T2019/about) ([alternative](https://ocw.mit.edu/courses/mathematics/18-01sc-single-variable-calculus-fall-2010/index.htm)) | 13 weeks | 6-10 hours/week | The alternate covers this and the following 2 courses | [high school math](FAQ.md#how-can-i-review-the-math-prerequisites) | [chat](https://discord.gg/mPCt45F)
[Calculus 1B: Integration](https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.2x+3T2019/about) | 13 weeks | 5-10 hours/week | - | Calculus 1A | [chat](https://discord.gg/sddAsZg)
[Calculus 1C: Coordinate Systems & Infinite Series](https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.3x+1T2020/about) | 6 weeks | 5-10 hours/week | - | Calculus 1B | [chat](https://discord.gg/FNEcNNq)
-[Mathematics for Computer Science](https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about) ([alt](https://ocw.mit.edu/courses/6-042j-mathematics-for-computer-science-fall-2010/)) | 13 weeks | 5 hours/week | [2015/2019 solutions](https://github.com/spamegg1/Math-for-CS-solutions) [2010 solutions](https://github.com/frevib/mit-cs-math-6042-fall-2010-problems) [2005 solutions](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2005/assignments/). | Calculus 1C | [chat](https://discord.gg/EuTzNbF)
+[Mathematics for Computer Science](https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about) ([alternative](https://ocw.mit.edu/courses/6-042j-mathematics-for-computer-science-fall-2010/)) | 13 weeks | 5 hours/week | [2015/2019 solutions](https://github.com/spamegg1/Math-for-CS-solutions) [2010 solutions](https://github.com/frevib/mit-cs-math-6042-fall-2010-problems) [2005 solutions](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2005/assignments/). | Calculus 1C | [chat](https://discord.gg/EuTzNbF)
### CS Tools
@@ -223,7 +223,7 @@ Courses | Duration | Effort | Prerequisites | Discussion
Courses | Duration | Effort | Additional Text / Assignments| Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--: | :--:
-[Build a Modern Computer from First Principles: From Nand to Tetris](https://www.coursera.org/learn/build-a-computer) ([alt](https://www.nand2tetris.org/)) | 6 weeks | 7-13 hours/week | - | C-like programming language | [chat](https://discord.gg/vxB2DRV)
+[Build a Modern Computer from First Principles: From Nand to Tetris](https://www.coursera.org/learn/build-a-computer) ([alternative](https://www.nand2tetris.org/)) | 6 weeks | 7-13 hours/week | - | C-like programming language | [chat](https://discord.gg/vxB2DRV)
[Build a Modern Computer from First Principles: Nand to Tetris Part II ](https://www.coursera.org/learn/nand2tetris2) | 6 weeks | 12-18 hours/week | - | one of [these programming languages](https://user-images.githubusercontent.com/2046800/35426340-f6ce6358-026a-11e8-8bbb-4e95ac36b1d7.png), From Nand to Tetris Part I | [chat](https://discord.gg/AsUXcPu)
[Operating Systems: Three Easy Pieces](coursepages/ostep/README.md) | 10-12 weeks | 6-10 hours/week | - | Nand to Tetris Part II | [chat](https://discord.gg/wZNgpep)
[Computer Networking: a Top-Down Approach](http://gaia.cs.umass.edu/kurose_ross/online_lectures.htm)| 8 weeks | 4–12 hours/week | [Wireshark Labs](http://gaia.cs.umass.edu/kurose_ross/wireshark.php) | algebra, probability, basic CS | [chat](https://discord.gg/MJ9YXyV)
@@ -296,7 +296,7 @@ Courses | Duration | Effort | Prerequisites | Discussion
[Databases: Relational Databases and SQL](https://www.edx.org/course/databases-5-sql)| 2 weeks | 10 hours/week | core programming | [chat](https://discord.gg/P8SPPyF)
[Databases: Semistructured Data](https://www.edx.org/course/semistructured-data)| 2 weeks | 10 hours/week | core programming | [chat](https://discord.gg/duCJ3GN)
[Machine Learning](https://www.coursera.org/specializations/machine-learning-introduction)| 11 weeks | 9 hours/week | Basic coding | [chat](https://discord.gg/NcXHDjy)
-[Computer Graphics](https://www.edx.org/course/computer-graphics-2) ([alt](https://cseweb.ucsd.edu/~viscomp/classes/cse167/wi22/schedule.html))| 6 weeks | 12 hours/week | C++ or Java, linear algebra | [chat](https://discord.gg/68WqMNV)
+[Computer Graphics](https://www.edx.org/course/computer-graphics-2) ([alternative](https://cseweb.ucsd.edu/~viscomp/classes/cse167/wi22/schedule.html))| 6 weeks | 12 hours/week | C++ or Java, linear algebra | [chat](https://discord.gg/68WqMNV)
[Software Engineering: Introduction](https://www.coursera.org/learn/introduction-to-software-engineering) | 4 weeks | 8-10 hours/week | Core Programming, and a [sizable project](FAQ.md#why-require-experience-with-a-sizable-project-before-the-Software-Engineering-courses) | [chat](https://discord.gg/5Qtcwtz)
### Core ethics
@@ -337,7 +337,7 @@ Courses | Duration | Effort | Prerequisites
[Parallel Programming](https://www.coursera.org/learn/scala-parallel-programming)| 4 weeks | 6-8 hours/week | Scala programming
[Compilers](https://www.edx.org/course/compilers) | 9 weeks | 6-8 hours/week | none
[Introduction to Haskell](https://www.seas.upenn.edu/~cis194/fall16/)| 14 weeks | - | -
-[Learn Prolog Now!](https://www.let.rug.nl/bos/lpn//lpnpage.php?pageid=online) ([alt](https://github.com/ossu/computer-science/files/6085884/lpn.pdf))*| 12 weeks | - | -
+[Learn Prolog Now!](https://www.let.rug.nl/bos/lpn//lpnpage.php?pageid=online) ([alternative](https://github.com/ossu/computer-science/files/6085884/lpn.pdf))*| 12 weeks | - | -
[Software Debugging](https://www.udacity.com/course/software-debugging--cs259)| 8 weeks | 6 hours/week | Python, object-oriented programming
[Software Testing](https://www.udacity.com/course/software-testing--cs258) | 4 weeks | 6 hours/week | Python, programming experience
@@ -363,7 +363,7 @@ Courses | Duration | Effort | Prerequisites
Courses | Duration | Effort | Prerequisites | Notes
:-- | :--: | :--: | :--: | :--:
-[Computation Structures 1: Digital Circuits](https://learning.edx.org/course/course-v1:MITx+6.004.1x_3+3T2016) [alt1](https://ocw.mit.edu/courses/6-004-computation-structures-spring-2017/) [alt2 ](https://ocw.mit.edu/courses/6-004-computation-structures-spring-2009/) | 10 weeks | 6 hours/week | [Nand2Tetris II](https://www.coursera.org/learn/nand2tetris2) | Alternate links contain all 3 courses.
+[Computation Structures 1: Digital Circuits](https://learning.edx.org/course/course-v1:MITx+6.004.1x_3+3T2016) [alternative 1](https://ocw.mit.edu/courses/6-004-computation-structures-spring-2017/) [alternative 2](https://ocw.mit.edu/courses/6-004-computation-structures-spring-2009/) | 10 weeks | 6 hours/week | [Nand2Tetris II](https://www.coursera.org/learn/nand2tetris2) | Alternate links contain all 3 courses.
[Computation Structures 2: Computer Architecture](https://learning.edx.org/course/course-v1:MITx+6.004.2x+3T2015) | 10 weeks | 6 hours/week | Computation Structures 1 |
[Computation Structures 3: Computer Organization](https://learning.edx.org/course/course-v1:MITx+6.004.3x_2+1T2017) | 10 weeks | 6 hours/week | Computation Structures 2 |
@@ -387,7 +387,7 @@ Courses | Duration | Effort | Prerequisites | Notes
Courses | Duration | Effort | Prerequisites
:-- | :--: | :--: | :--:
-[Theory of Computation](https://ocw.mit.edu/courses/18-404j-theory-of-computation-fall-2020/) ([alt](http://aduni.org/courses/theory/index.php?view=cw)) | 13 weeks | 10 hours/week | [Mathematics for Computer Science](https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about), logic, algorithms
+[Theory of Computation](https://ocw.mit.edu/courses/18-404j-theory-of-computation-fall-2020/) ([alternative](http://aduni.org/courses/theory/index.php?view=cw)) | 13 weeks | 10 hours/week | [Mathematics for Computer Science](https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about), logic, algorithms
[Computational Geometry](https://www.edx.org/course/computational-geometry) | 16 weeks | 8 hours/week | algorithms, C++
[Game Theory](https://www.coursera.org/learn/game-theory-1) | 8 weeks | 3 hours/week | mathematical thinking, probability, calculus
From 6bbe6e3e481da577998f434829fd53fd2f32f335 Mon Sep 17 00:00:00 2001
From: Lenox Waciuma Wanjohi
Date: Tue, 9 Jan 2024 23:24:43 -0500
Subject: [PATCH 460/519] Replace deleted course with its video playlist
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 5279dc1c4..dbf44e22f 100644
--- a/README.md
+++ b/README.md
@@ -339,7 +339,7 @@ Courses | Duration | Effort | Prerequisites
[Introduction to Haskell](https://www.seas.upenn.edu/~cis194/fall16/)| 14 weeks | - | -
[Learn Prolog Now!](https://www.let.rug.nl/bos/lpn//lpnpage.php?pageid=online) ([alternative](https://github.com/ossu/computer-science/files/6085884/lpn.pdf))*| 12 weeks | - | -
[Software Debugging](https://www.udacity.com/course/software-debugging--cs259)| 8 weeks | 6 hours/week | Python, object-oriented programming
-[Software Testing](https://www.udacity.com/course/software-testing--cs258) | 4 weeks | 6 hours/week | Python, programming experience
+[Software Testing](https://www.youtube.com/playlist?list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) | 4 weeks | 6 hours/week | Python, programming experience
(*) book by Blackburn, Bos, Striegnitz (compiled from [source](https://github.com/LearnPrologNow/lpn), redistributed under [CC license](https://creativecommons.org/licenses/by-sa/4.0/))
From 2ff09dd036eca80cbe5cab58ff0eb7c45af0d07c Mon Sep 17 00:00:00 2001
From: Karim Safan <110535652+karim1safan@users.noreply.github.com>
Date: Sun, 28 Jan 2024 06:26:17 +0200
Subject: [PATCH 461/519] Adding a new URL course for Git and GitHub because
the old link invalid (#1204)
---
extras/courses.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/extras/courses.md b/extras/courses.md
index 4eb91a955..88d845c31 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -90,7 +90,7 @@ Courses | Duration | Effort
Courses | Duration | Effort
:-- | :--: | :--:
-[How to Use Git and GitHub](https://www.udacity.com/course/how-to-use-git-and-github--ud775) | 3 weeks | 2-3 hours/week
+[How to Use Git and GitHub](https://www.udacity.com/blog/2015/06/a-beginners-git-github-tutorial.html) | 3 weeks | 2-3 hours/week
[Kubernetes Certified Application Developer](https://www.udemy.com/course/certified-kubernetes-application-developer/) | 5 weeks | 2 hours/week
From 6aea5acf571c04883234654190be468c5b56f547 Mon Sep 17 00:00:00 2001
From: karim1safan
Date: Mon, 29 Jan 2024 01:36:09 +0200
Subject: [PATCH 462/519] Adding discussions channels
---
README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index dbf44e22f..ad251e510 100644
--- a/README.md
+++ b/README.md
@@ -166,9 +166,9 @@ Courses | Duration | Effort | Prerequisites | Discussion
[Programming Languages, Part A](https://www.coursera.org/learn/programming-languages) | 5 weeks | 4-8 hours/week | Systematic Program Design ([Hear instructor](https://www.coursera.org/lecture/programming-languages/recommended-background-k1yuh)) | [chat](https://discord.gg/8BkJtXN)
[Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 4-8 hours/week | Programming Languages, Part A | [chat](https://discord.gg/EeA7VR9)
[Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 4-8 hours/week | Programming Languages, Part B | [chat](https://discord.gg/8EZUVbA)
-[Object-Oriented Design](https://www.coursera.org/learn/object-oriented-design) | 4 weeks | 4 hours/week | [Basic Java](https://www.youtube.com/watch?v=GoXwIVyNvX0)
-[Design Patterns](https://www.coursera.org/learn/design-patterns) | 4 weeks | 4 hours/week | Object-Oriented Design
-[Software Architecture](https://www.coursera.org/learn/software-architecture) | 4 weeks | 2-5 hours/week | Design Patterns
+[Object-Oriented Design](https://www.coursera.org/learn/object-oriented-design) | 4 weeks | 4 hours/week | [Basic Java](https://www.youtube.com/watch?v=GoXwIVyNvX0) | [chat](https://discord.com/channels/744385009028431943/891411727294562314)
+[Design Patterns](https://www.coursera.org/learn/design-patterns) | 4 weeks | 4 hours/week | Object-Oriented Design | [chat](https://discord.com/channels/744385009028431943/891412022120579103)
+[Software Architecture](https://www.coursera.org/learn/software-architecture) | 4 weeks | 2-5 hours/week | Design Patterns | [chat](https://discord.com/channels/744385009028431943/891412169638432788)
### Core math
Discrete math (Math for CS) is a prerequisite and closely related to the study of algorithms and data structures. Calculus both prepares students for discrete math and helps students develop mathematical maturity.
From a9a6e76a315621332c02704a2d255a9ac849f8d8 Mon Sep 17 00:00:00 2001
From: Pulkit Krishna
Date: Sun, 18 Feb 2024 22:46:58 +0530
Subject: [PATCH 463/519] Remove mentions of outdated materials and add warning
about them (#1212)
* Remove mentions of outdated materials and add warning about them
* Remove the new warning blockquote syntax
Seems like github pages don't support the new warning blockquote syntax
* Update README.md with suggestion from @waciumawanjohi (1)
Co-authored-by: Lenox Waciuma Wanjohi
* Update README.md with suggestion from @waciumawanjohi (2)
Co-authored-by: Lenox Waciuma Wanjohi
* Update README.md with suggestion from @waciumawanjohi (3)
Co-authored-by: Lenox Waciuma Wanjohi
---------
Co-authored-by: Lenox Waciuma Wanjohi
---
README.md | 29 ++++++++---------------------
1 file changed, 8 insertions(+), 21 deletions(-)
diff --git a/README.md b/README.md
index ad251e510..d1baa27b0 100644
--- a/README.md
+++ b/README.md
@@ -52,6 +52,8 @@ they belong in [extras/courses](extras/courses.md) or [extras/readings](extras/r
**Duration**. It is possible to finish within about 2 years if you plan carefully and devote roughly 20 hours/week to your studies. Learners can use [this spreadsheet
](https://docs.google.com/spreadsheets/d/1bkUU90y4rKYQHwY5AR2iX6iiPTrPEsYs75GkCAkrgm4/copy) to estimate their end date. Make a copy and input your start date and expected hours per week in the `Timeline` sheet. As you work through courses you can enter your actual course completion dates in the `Curriculum Data` sheet and get updated completion estimates.
+
+> **Warning:** While the spreadsheet is a useful tool to estimate the time you need to complete this curriculum, it may not be up-to-date with the curriculum. Use the spreadsheet just to estimate the time you need. Use the [OSSU CS website](https://cs.ossu.dev) or [the repo](https://github.com/ossu/computer-science) to see what courses to do.
**Cost**. All or nearly all course material is available for free. However, some courses may charge money for assignments/tests/projects to be graded.
Note that both [Coursera](https://www.coursera.support/s/article/209819033-Apply-for-Financial-Aid-or-a-Scholarship?language=en_US) and [edX](https://courses.edx.org/financial-assistance/) offer financial aid.
@@ -77,7 +79,11 @@ just remember that you can't purchase success!
- You can also interact through GitHub issues. If there is a problem with a course, or a change needs to be made to the curriculum, this is the place to start the conversation. Read more [here](CONTRIBUTING.md).
- Subscribe to our [newsletter](https://tinyletter.com/OpenSourceSocietyUniversity).
- Add **Open Source Society University** to your [Linkedin](https://www.linkedin.com/school/11272443/) profile!
-- Note: There is an unmaintained and deprecated firebase app that you might find when searching OSSU. You can safely ignore it. Read more in the [FAQ](./FAQ.md#why-is-the-firebase-ossu-app-different-or-broken).
+
+> **Warning:** There are a few third-party/deprecated/outdated material that you might find when searching for OSSU. We recommend you to ignore them, and only use the [OSSU CS website](https://cs.ossu.dev) or [OSSU CS Github Repo](https://github.com/ossu/computer-science). Some known outdated materials are:
+> - An unmaintained and deprecated firebase app. Read more in the [FAQ](./FAQ.md#why-is-the-firebase-ossu-app-different-or-broken).
+> - An unmaintained and deprecated trello board
+> - Third-party notion templates
# Curriculum
@@ -491,26 +497,7 @@ What is next for you? The possibilities are boundless and overlapping:
## How to show your progress
-1. Create an account in [Trello](https://trello.com/).
-1. Copy [this](https://trello.com/b/IScNSzsI/ossu-compsci) board to your personal account.
-See how to copy a board [here](https://help.trello.com/article/802-copying-cards-lists-or-boards).
-
-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:
-
-- `Main Curriculum`: cards with that label represent courses that are listed in our curriculum.
-- `Extra Resources`: cards with that label represent courses that were added by the student.
-- `Doing`: cards with that label represent courses the student is currently 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 a 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*.
-
-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*.
+[Fork](https://www.freecodecamp.org/news/how-to-fork-a-github-repository/) the [GitHub repo](https://github.com/ossu/computer-science) into your own GitHub account and put ✅ next to the stuff you've completed as you complete it. This can serve as your [kanban board](https://en.wikipedia.org/wiki/Kanban_board) and will be faster to implement than any other solution (giving you time to spend on the courses).
# Team
From 0a3e95a9afc8de739f86c03ff4c29184d92c5989 Mon Sep 17 00:00:00 2001
From: Pablo Colturi Esteve
Date: Thu, 7 Mar 2024 19:38:29 +0100
Subject: [PATCH 464/519] add final project into PROJECTS.md
---
PROJECTS.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/PROJECTS.md b/PROJECTS.md
index e168326f9..49e27f76a 100644
--- a/PROJECTS.md
+++ b/PROJECTS.md
@@ -41,3 +41,4 @@ Project Title | Description | Author(s) | Repository
:-- | :-- | :--: | :--
Observatory | Interactively displays temperatures and deviations all around the world from 1975 to 2015 | [spamegg](https://github.com/spamegg1) | [ScalaCapstone](https://github.com/spamegg1/ScalaCapstone)
Cloud Data Processing | Querying airline traffic data with batch and stream processing on cloud services | [MartinOvington](https://github.com/MartinOvington) | [CloudCapstone](https://github.com/MartinOvington/cloud-specialization)
+Full Stack Open | Single-page app + microservice displaying and scraping data from GitHub repositories | [pcolt](https://github.com/pcolt/) | [Final Project](https://github.com/pcolt/react-scraper)
From ea0006c68d7f5fc84b09948f1a536a18eda81cce Mon Sep 17 00:00:00 2001
From: Yukai Chou
Date: Wed, 13 Dec 2023 00:56:04 +0800
Subject: [PATCH 465/519] Move space between badges out of link text
---
README.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index d1baa27b0..8b4c2945a 100644
--- a/README.md
+++ b/README.md
@@ -6,11 +6,11 @@
-
-
+
-
-
+
# Contents
From 191b37466a2957ee9c23a04f82be1a57a3b50fde Mon Sep 17 00:00:00 2001
From: Maru
Date: Sat, 3 Feb 2024 15:17:30 +0000
Subject: [PATCH 466/519] fix: quick stupid case corrections for Discord
can I brag about having contributed to ossu yet? :^)
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 8b4c2945a..89d803e70 100644
--- a/README.md
+++ b/README.md
@@ -64,7 +64,7 @@ just remember that you can't purchase success!
**Process**. Students can work through the curriculum alone or in groups, in order or out of order.
- We recommend doing all courses in Core CS, only skipping a course when you are certain that you've already learned the material previously.
- For simplicity, we recommend working through courses (especially Core CS) in order from top to bottom. Some students choose to study multiple courses at a time in order to vary the material they are working on is a day/week. A popular option is to take the math courses in parallel with the introductory courses. Course prerequisites are listed to help you determine if you are prepared for a given course.
-- Courses in Advanced CS are electives. Choose one subject (e.g. Advanced programming) you want to become an expert in and take all the courses under that heading. You can also create your own custom subject; the discord community may provide feedback on your planned subject.
+- Courses in Advanced CS are electives. Choose one subject (e.g. Advanced programming) you want to become an expert in and take all the courses under that heading. You can also create your own custom subject; the Discord community may provide feedback on your planned subject.
**Content policy**. If you plan on showing off some of your coursework publicly, you must share only files that you are allowed to.
*Respect the code of conduct* that you signed in the beginning of each course!
@@ -75,7 +75,7 @@ just remember that you can't purchase success!
# Community
-- We have a discord server! [](https://discord.gg/wuytwK5s9h) This should be your first stop to talk with other OSSU students. Why don't you introduce yourself right now? [Join the OSSU Discord](https://discord.gg/wuytwK5s9h)
+- We have a Discord server! [](https://discord.gg/wuytwK5s9h) This should be your first stop to talk with other OSSU students. Why don't you introduce yourself right now? [Join the OSSU Discord](https://discord.gg/wuytwK5s9h)
- You can also interact through GitHub issues. If there is a problem with a course, or a change needs to be made to the curriculum, this is the place to start the conversation. Read more [here](CONTRIBUTING.md).
- Subscribe to our [newsletter](https://tinyletter.com/OpenSourceSocietyUniversity).
- Add **Open Source Society University** to your [Linkedin](https://www.linkedin.com/school/11272443/) profile!
From 27026f47d266a950dccb2cb4d1802d26f166ac9b Mon Sep 17 00:00:00 2001
From: Pulkit Krishna
Date: Fri, 22 Mar 2024 22:56:22 +0530
Subject: [PATCH 467/519] Mark the Py4E course link as link
The Py4E course link in the intro cs coursepage was not marked as link. While GitHub renders it as link, the GitHub pages website don't. This PR fixes that.
The PR also fixes the CS50P discord invite link, which was expired. This time, I have made a link that never expires, and can be used an unlimited number of times.
---
coursepages/intro-programming/README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/coursepages/intro-programming/README.md b/coursepages/intro-programming/README.md
index 6d6327747..eb011b7cd 100644
--- a/coursepages/intro-programming/README.md
+++ b/coursepages/intro-programming/README.md
@@ -19,7 +19,7 @@ This course has been developed by the CS50 team at Harvard University.
- If you want to follow along with the instructor, log in to the [CS50 "codespace"](https://cs50.dev) and watch [this video](https://cs50.harvard.edu/python/2022/shorts/visual_studio_code_for_cs50/) to get started.
- Watch each lecture and complete the respective problem set. Read the lecture notes to revise things.
- - If you are stuck somewhere, feel free to ask questions. You can join the OSSU chat for this course here: .
+ - If you are stuck somewhere, feel free to ask questions. You can join the OSSU chat for this course here: .
- You can also join the CS50 discord server and ask questions there: , but note that it is not affiliated with or maintained by OSSU.
### Course Materials
@@ -40,7 +40,7 @@ This course has been developed by the CS50 team at Harvard University.
This course has been created by Professor Charles Severance from the University of Michigan.
> Learn to Program and Analyze Data with Python. Develop programs to gather, clean, analyze, and visualize data.
-**Link**: https://www.py4e.com/lessons
+**Link**:
**Textbook**: [PDF](http://do1.dr-chuck.com/pythonlearn/EN_us/pythonlearn.pdf) / [EPUB](http://do1.dr-chuck.com/pythonlearn/EN_us/pythonlearn.epub) / [HTML](https://www.py4e.com/html3) / [Buy hardcopy](https://www.py4e.com/book)
From ee3f793ff4e927fb4abd223250e3e035de38aff6 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Fri, 29 Mar 2024 21:18:57 -0600
Subject: [PATCH 468/519] Update page to use CSS for center alignment
Uses mozilla recommended CSS for centering:
https://developer.mozilla.org/en-US/docs/web/html/element/center
---
README.md | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index 89d803e70..d4885a728 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,10 @@
-
-
-Open Source Society University
-
+
+

+
Open Source Society University
+
Path to a free self-taught education in Computer Science!
-
+
@@ -12,6 +12,7 @@
+
# Contents
From 578962c0f79d30e6635a9a5ef66780a5fa8febe7 Mon Sep 17 00:00:00 2001
From: Waciuma Wanjohi
Date: Sun, 31 Mar 2024 00:05:45 -0600
Subject: [PATCH 469/519] Align with div attribute
Github homepage does not respect the CSS centering
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index d4885a728..443b8b2f0 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-
+
Open Source Society University
From 5976f5ba9759c2bc8c7564bb7b9c99ef5cb0a1a6 Mon Sep 17 00:00:00 2001
From: Pulkit Krishna
Date: Mon, 1 Apr 2024 08:07:56 +0530
Subject: [PATCH 470/519] Add Intro CS coursepage and replace the OCW version
with an archived version on Edx (#1224)
* Create README.md
* Add link to Intro CS course page
* Update README.md
---
README.md | 2 +-
coursepages/intro-cs/README.md | 32 ++++++++++++++++++++++++++++++++
2 files changed, 33 insertions(+), 1 deletion(-)
create mode 100644 coursepages/intro-cs/README.md
diff --git a/README.md b/README.md
index 443b8b2f0..2bfea14d1 100644
--- a/README.md
+++ b/README.md
@@ -146,7 +146,7 @@ This course will introduce you to the world of computer science. Students who ha
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
-[Introduction to Computer Science and Programming using Python](https://ocw.mit.edu/courses/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/) ([alternative](https://www.edx.org/course/introduction-to-computer-science-and-programming-7)) | 9 weeks | 15 hours/week | [high school algebra](https://www.khanacademy.org/math/algebra-home) | [chat](https://discord.gg/jvchSm9)
+[Introduction to Computer Science and Programming using Python](coursepages/intro-cs/README.md) | 9 weeks | 15 hours/week | [high school algebra](https://www.khanacademy.org/math/algebra-home) | [chat](https://discord.gg/jvchSm9)
## Core CS
diff --git a/coursepages/intro-cs/README.md b/coursepages/intro-cs/README.md
new file mode 100644
index 000000000..9b86764dc
--- /dev/null
+++ b/coursepages/intro-cs/README.md
@@ -0,0 +1,32 @@
+# Introduction to Computer Science
+
+This course will introduce you to the world of computer science. Students who have been introduced to programming, either from the courses above or through study elsewhere, should take this course for a flavor of the material to come. If you finish the course wanting more, Computer Science is likely for you!
+
+This course has been developed by MIT and is available from three different places. We recommend you to do it from the archived version on Edx.
+
+> 6.0001 Introduction to Computer Science and Programming in Python is intended for students with little or no programming experience. It aims to provide students with an understanding of the role computation can play in solving problems and to help students, regardless of their major, feel justifiably confident of their ability to write small programs that allow them to accomplish useful goals. The class uses the Python 3.5 programming language.
+
+**Course Link:**
+
+Alternative Links:
+
+-
+- (instructor-paced version, runs three times a year)
+
+## Instructions
+
+**Note:** These instructions are for the archived version of the course on Edx, which we recommend. They don't apply to other versions of the course.
+
+- The course does not have a homepage on Edx, but don't worry about it. Open the [link](https://learning.edx.org/course/course-v1:MITx+6.00.1x+2T2018/home) given above, log in (if you are not logged in) and then enroll in the course.
+- Work through the course as given in the course overview. Watch the videos, do the finger exercises, and then solve the problem sets.
+- You won't be able to submit your responses for the finger exercises, but you can see their answers by clicking on "Show Answer". Check your answers honestly.
+- You won't be able to submit the problem sets on their own page. To submit them, go to the "Sandbox" section (It is the last section. You can find it on the course overview). There, you will be able to submit your work and get it graded.
+- You don't need to install the full Anaconda distribution to do this course. See the notes section below for more information.
+- If you are stuck somewhere, feel free to ask questions. You can join the OSSU chat for this course here: .
+
+## Notes
+
+- You don't need to install the full anaconda package to do this course. You can just download the Spyder IDE from here: . It comes bundles with python as well as some popular scientific python libraries (all the libraries which this course uses are included), but it is not as large or complex as the full anaconda distribution. You don't need to set up python separately or anything.
+- The community has found this resource useful:
+- You won't get any certificate for doing this course. If you really want a certificate, you need to do the [instructor-paced version of this course](https://www.edx.org/course/introduction-to-computer-science-and-programming-7) on Edx. Certificate of an introductory course like this is not very valuable, so unless you are absolutely sure, we recommend you to do the archived version of this course instead.
+- If for some reason you want to do the OCW version of the course, you will find many useful notes and fixes of various problems in our [discord server](https://discord.gg/jvchSm9).
From 7c1be44e8a1e650ee92e86d9ebe30a505a1e51b8 Mon Sep 17 00:00:00 2001
From: mgg143 <77564511+mgg143@users.noreply.github.com>
Date: Mon, 1 Apr 2024 14:13:27 -0700
Subject: [PATCH 471/519] Update courses.md
This change is adding the interactive, open-source, community-led SICP version that was adapted into JavaScript.
This addition seems worthwhile because JavaScript may be a more appealing language to go through SICP with than the original Scheme. In addition, this JavaScript version of SICP was created with the apparent goal of being as close to the original Scheme version as possible:
https://sourceacademy.org/sicpjs/prefaces03
---
extras/courses.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/extras/courses.md b/extras/courses.md
index 88d845c31..9b7538df9 100644
--- a/extras/courses.md
+++ b/extras/courses.md
@@ -22,6 +22,7 @@ Courses | Duration | Effort
[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 (2022, Python)](http://cs61a.org/) | - | -
+[The Structure and Interpretation of Computer Programs (2021, JavaScript)](https://sourceacademy.org/sicpjs/index) | - | -
[The Structure and Interpretation of Computer Programs (2011, Scheme)](https://romanbird.github.io/sicp/) | - | -
[Introduction to Haskell](https://www.seas.upenn.edu/~cis194/fall16/) | 14 weeks | 4 hours/week
From cc14c5671575236e8b92a129a83e8677b44fb2fd Mon Sep 17 00:00:00 2001
From: Pulkit Krishna
Date: Tue, 2 Apr 2024 06:16:39 +0530
Subject: [PATCH 472/519] Add SPD coursepage (#1225)
* Create README.md
* Add files via upload
* Update README.md
* Add files via upload
* Update README.md
* Update README.md
* Update readings.md
* Update README.md
* Update README.md
* Delete coursepages/spd/HTC2X.zip
* Delete coursepages/spd/htc-simple.zip
* Delete coursepages/spd/space-invaders-starter.rkt
* Delete coursepages/spd/ta-solver-starter.rkt
* Update README.md
* Add files via upload
* Add info about eabling automatic parentheses, square brackets and quotes
---
README.md | 2 +-
coursepages/spd/README.md | 96 ++++++++++++++++++
coursepages/spd/automatic-parentheses.png | Bin 0 -> 75340 bytes
coursepages/spd/change-dr-racket-notation.png | Bin 0 -> 106172 bytes
.../spd/space-invaders-instructions.png | Bin 0 -> 127965 bytes
extras/readings.md | 1 +
6 files changed, 98 insertions(+), 1 deletion(-)
create mode 100644 coursepages/spd/README.md
create mode 100644 coursepages/spd/automatic-parentheses.png
create mode 100644 coursepages/spd/change-dr-racket-notation.png
create mode 100644 coursepages/spd/space-invaders-instructions.png
diff --git a/README.md b/README.md
index 2bfea14d1..542d82a35 100644
--- a/README.md
+++ b/README.md
@@ -169,7 +169,7 @@ All coursework under Core CS is **required**, unless otherwise indicated.
Courses | Duration | Effort | Prerequisites | Discussion
:-- | :--: | :--: | :--: | :--:
-[Systematic Program Design](https://learning.edx.org/course/course-v1:UBCx+SPD1x+2T2015) [(textbook)](https://htdp.org/2023-8-14/Book/index.html) (alternative: [part 1](https://www.edx.org/course/how-to-code-simple-data), [part 2](https://www.edx.org/course/how-to-code-complex-data)) | 13 weeks | 8-10 hours/week | none | chat: [part 1](https://discord.gg/RfqAmGJ) / [part 2](https://discord.gg/kczJzpm)
+[Systematic Program Design](coursepages/spd/README.md) | 13 weeks | 8-10 hours/week | none | chat: [part 1](https://discord.gg/RfqAmGJ) / [part 2](https://discord.gg/kczJzpm)
[Programming Languages, Part A](https://www.coursera.org/learn/programming-languages) | 5 weeks | 4-8 hours/week | Systematic Program Design ([Hear instructor](https://www.coursera.org/lecture/programming-languages/recommended-background-k1yuh)) | [chat](https://discord.gg/8BkJtXN)
[Programming Languages, Part B](https://www.coursera.org/learn/programming-languages-part-b) | 3 weeks | 4-8 hours/week | Programming Languages, Part A | [chat](https://discord.gg/EeA7VR9)
[Programming Languages, Part C](https://www.coursera.org/learn/programming-languages-part-c) | 3 weeks | 4-8 hours/week | Programming Languages, Part B | [chat](https://discord.gg/8EZUVbA)
diff --git a/coursepages/spd/README.md b/coursepages/spd/README.md
new file mode 100644
index 000000000..9b37dce83
--- /dev/null
+++ b/coursepages/spd/README.md
@@ -0,0 +1,96 @@
+# Systematic Program Design
+
+This course has been developed by UBC and is available from Edx. We recommend you to do it from the archived version on Edx.
+
+> This programming course takes a unique approach, as it focuses on learning a systematic programming method rather than a programming language. This practical approach will help you channel your creativity so that you can program well in any language.
+
+**Course Link:**
+
+Alternative Links:
+
+- (Up to Week 6A)
+- (Week 6B onwards)
+
+## Instructions
+
+**Note:** These instructions are for the archived version of the course on Edx, which we recommend. They don't apply to other versions of the course.
+
+- The course does not have a homepage on Edx, but don't worry about it. Open the [link](https://learning.edx.org/course/course-v1:UBCx+SPD1x+2T2015) given above, log in (if you are not logged in) and then enroll in the course.
+- Work through Week 1A to Week 6A as given in the course overview. Watch the videos, do the exercises, and then solve the problems from the problem bank.
+- After you complete, Week 6A, do the [space invaders problem](https://github.com/ossu/spd-starters/blob/main/final/space-invaders-starter.rkt). You can find further instructions here: [Space Invaders Instructions](space-invaders-instructions.png). You can watch a sample run of the game [here](https://www.youtube.com/shorts/wUg3psZl7vM).
+- Then, work through Week 6B onwards. Watch the videos, do the exercises, and then solve the problems from the problem bank.
+- After you complete all the modules in the course, do the [TA solver problem](https://github.com/ossu/spd-starters/blob/main/final/ta-solver-starter.rkt). You will find the instructions in the starter file.
+- The problem bank tab has many additional problems. We suggest you to solve all of them to boost your understanding.
+- Some links to starter files in the course are no longer working. You can download the starter files from this github repository: . You can download a zip file of all the starter files using [this link](https://github.com/ossu/spd-starters/archive/refs/heads/main.zip).
+- You won't be able to submit your responses for the exercises, but you can see their answers by clicking on "Show Answer". Check your answers honestly.
+- You won't be able to submit the problem bank problems, but they provide sample solutions. You can match your solution with it.
+- While there are ways to do this course in other IDEs, we suggest you to use Dr. Racket, as configuring the problem starter files for other IDEs is not worth the effort.
+- If you are stuck somewhere, feel free to ask questions. You can join the OSSU chat for this course here:
+ - Chat for discussions up to Week 6A:
+ - Chat for discussions from Week 6B onwards:
+
+## Notes
+
+- Dr. Racket defaults to using the newer notation `#true #false '()`. You can configure Dr. Racket to use the notation used by the course by clicking in menu bar on Language > Choose Language. Then choose the required language (BSL, ISL or other variants). Then click on "Show details" in the bottom left of the window. Then choose `true false empty` in "Constant Style" field. Run your file again to make sure it uses the new configuration.
+
+
+
+- You can enable automatic closing of parentheses, brackets, and quotes. Click on Edit in the Menu Bar > Preferences > Go to Editing Tab > Go to General Editing Sub-tab > Check the "Enable automatic parentheses, square brackets, and quotes" checkbox.
+
+
+
+## FAQ
+
+### This course is boring. Can I skip it?
+
+**No.** This course may seem boring at first, but we suggest working though it. This is a great course, and it will probably change the way you think. Many students who found this course boring at first became a fan of the course by the time they completed it. Be very careful. The early parts (especially the rules about how evaluation works) plays a huge role in understanding how code works and gets executed for the rest of the course.
+
+### Why is this course taught using BSL? Would it not make more sense to teach it in an industry standard language?
+
+This is an intentional choice, and here's why:
+
+1. Lisp is the lingua franca of computer scientists -- by which we mean, PhD algorithm researchers. There are some good and some merely historical reasons for this, but it's a fact of life, so if you want to read white papers you're going to want to read Lisp. BSL is a good introduction, and frankly once you get over the parenthesis hell and once you know any Lisp you know how to read them all.
+
+2. This is the first computer science course in most people's curricula that isn't centered around teaching you how to use a language. Because the point of computer science isn't to teach you a language. Or to teach you to code. Or to teach you to be a fullstack software engineer. Computer Science is a very narrowly-applied applied math with wide-ranging practical usage. But if you strip away all the qualifying language, it's math. Which means it has certain overarching rules that are completely, totally independent of your implementation language.
+
+This course is built in a throwaway student language, specifically so you don't focus on the language and instead focus on what you're doing with the language. We don't care about public static void main or PEP8 style. We want to see ways to structure a program in any language. So we focus not on the things that make Java unique, and not on the things that make Python unique, and instead focus on the things that make code better.
+
+It might seem rough to learn a new language just to take this course, but BSL frees you from having to worry about style linting or runtime issues or code compartmentalization or compiling or coding environment. It's a gift. Take it. The design patterns are hard enough.
+
+### Why there are different course versions, HTC, SPD? Why do you recommend the archived version?
+
+There are two reasons people do these courses:
+
+- The Knowledge
+- The Certificate
+
+OSSU assumes you're in it for the knowledge. You can have that for free. If you're doing it for the knowledge you don't need to submit your homework. You just need to do the homework.
+
+If you want the recognition that you've done the thing, then you're in it for the certificate. You can't have the certificate for free. You have to pay for that.
+
+There's no reason for you to submit homework sets unless you're doing it for the certificate -- If you're doing that, you can't actually get a certificate from the SPD course (because the course is expired) so you're in the wrong place.
+
+If you want a certificate, then you need to take How To Code and you need to pay for it.
+
+But you don't need to pay for anything in OSSU. We suggest you take SPD because the access to the information is better (because the course is expired) and it's more than sufficient for obtaining the knowledge.
+
+TL;DR:
+
+ If you're in it for the knowledge, take SPD -- it's free but inactive
+ If you're in it for the certificate, take and pay for How To Code -- it's still an active course
+
+### Can I do this course is another programming language?
+
+This course has really integrated with the programming languages it uses. We suggest you to use the language specified by the course. While, the concepts you learn from this course are applicable anywhere, trying to do the course with another language is not really sensible, and would just lead to wastage of time.
+
+### Can I use another IDE? I don't like Dr. Racket.
+
+The programs in this course embed pictures and rich-text blocks in the code, which means, the files cannot be opened by other IDEs. While it is possible to prepare the starter files for use with other IDEs, you need Dr. Racket for that, and the time needed to do that can be better utilized in learning the concepts taught by the course.
+
+### How do I test functions which are supposed to output random values?
+
+You can use `check-random` to test those functions. You can [learn more about it here](https://docs.racket-lang.org/htdp-langs/beginner-abbr.html#(form._((lib._lang%2Fhtdp-beginner-abbr..rkt)._check-random))). It is needed for the Space Invaders project.
+
+## Credits
+
+The problem starter files and the space invaders instructions were taken from the course ["Systematic Program Design" on Edx](https://learning.edx.org/course/course-v1:UBCx+SPD1x+2T2015), licensed under [CC BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/) license.
diff --git a/coursepages/spd/automatic-parentheses.png b/coursepages/spd/automatic-parentheses.png
new file mode 100644
index 0000000000000000000000000000000000000000..e2d5209b25f2b4ece7d1d988d57a379e12f65852
GIT binary patch
literal 75340
zcmbsQ1yqz@^!E)9BBCHA-KBsuBHc=;SOLsRz
zJlF91Kll5->%G^#*0Y{#tr48LIOkmF?6dbipYNVf4K*bKJQ_R@2t@GumHb-}2pa;t
z*zey1-idqVJq`SL;P^_<1q32&!Mw13aS_r2Z&JD{ymNK`Xm9S|uJzH?)&ivAY+-5P
zY+-L^;gUSJ%M1cBfnLkYX?YlL&A5Azja=aF?b>rP)8BbY{3mF*B`~$&*JjzBw_5RJ
zSaM+;sqfY(;*Ie+{>p3Yn=0Ks%F->E@y=k?M!gCk`yu=4)yy1Y=R{&+;zSb9g9kn`
z{eu08hso}iR#t5M4wi1%#3cVOF7U7SU~H}5mGz+^At7sTK4@ZV3A{7+fT6zw{}1U9
ziU+g;bI_EBU
zBf_TSF_#uet|?fXyrR=A#vsxuXSP4X%jmYPjh(mT`Y{`j+8t*OMb1qrt9;H_zfc
zRwQz4#D{fOp9phXWOa>pPbG>$_ptZCyf&HJfH_yc@n7eOM{!=)7OH0j3%Tr-R&0FR
zYi>aor;4E`eMyz&Vb7kqQ8M?Ywsr<+&s;)MPiMtes;>>pMJ$l3>h{4$K63@b;tZ|C
z`r3e&rGR_MwSN~ny3aIK|b%pV^VLUkBD2|5uY~dzPs^MlEvM0i&}E`
zmR}Zzolh`#qsR=OzBlY750Bp0nSSUV4Y8tz8|B_<8X1EKneglP{i@`(Yyl(F1>z+FvY-!uCsl7-g6N_!Q`p~2<22&^_IB}1dO5g)jg8_E2}W>q}VS`66ChH;=>%LX=ydnC{x
zy2I;G0LMIi$5d;`;DxJ`Q0585Rm?_Z8~Y+w5Xrk}Q#Zv~!tZ!oRufs!mUs*qrqf0D
z#rBFMC}Fx>;<3ahE%6MD-?cGO>UA0g+En5cpX2$Z%~5$Fp1e{$8Ixm%#I%Tt?U|?~
zagV|5gfy;i)vaGkmR%Q7v2S{v%J?+f4YwsU2hVvCd3PGNHe-89hkbO>&pcInU7oWI
zMdS#S@lmzjE>bRMdZ0oC!dI4&bV)!6m>?B;m$KdP37-;Ad&Js{reDX^Kk$F{yASKO
zn=5)M+Qreh10N&K1H8L2+hg!oYtoD65erQ7fnXA=VI8q9mr?h&Up~6dMsEjk0=PCs
z5)j>joDHs30ZuTmf#pxL;ZXq^kudzeHu`;YJ
zHjiM};PR%axaA>e3}`Bn^1^b=PMC-zWi$KxTXbLuEf2y#O~ihrMayPd&xAjW6l3&8
zHj1sGH14C6OCFJInFf8Z5jTWEnV#W;WS+h#xyc!HV|7Qj3!pU>Tnp&wl*R{&VU`%9TTQWw=
z9Q@vL#?m?9z*7+?Djrvqw`14`N+uZJotUp#@h}y>X&T@}=P0RoyQ+9fINt_id67`8
zi-p&eQ8}ImhP}Ej;iiGS>UNtKiakqlolbfRWH^>%>-Nb=>$fhTcF&F2$+2D>BST73
zS5Hi@%}Ev*y9#lgekwX_5gx`WL^MEYh>D%oT}{hBfw+|M#CB?;6>E~L-e6i9{m6#P
zk&?v~HcXd#8H-Bf@+A=zbf?gqdgjn-G#>%MtR8seU&M<>Yx?9Ch@Fx^dewVPQ_Blf
zm5NB_N{%n9&(gqLH`5?S
zbpzotr~`DN5#ur{ypT_)=`$iL^qYd;=J(@%hyX;T@Qnb((8#!te3%ZxJCtt#O!Lmc
zs264evo9QVL}P0ewZ<0nItGpAa)W=O5(!!r5)=g4OcyLeJIKvY76A*fmlrJRN%%JP
z`uyI+z0T#*y6p-k?r*bwXQs1x`mtPE6XRJ$^(#uMCZnlaBP!#GDk~mhMy##6L&l2a
zHT%iet}ykhYVg2vrzezdPXU+_3%WYHvL$PhSaqc#+!MvToqTI
zN?~K!&dq`L$dqI=HAQ+GHL9p=ODx(*W12PcH00qJ_9-J0g{|Xp$}w>LnB0gZSjHDs
zGBdT$<
zny9G_Lpyw%9zBy~+eFN)APxJ%9zdq`7zZdNHVh+j7EuD{YDtnv3P+TMs~K$az;K{7
zVp1Fi`17h31InAe(Z!8Q{mWQt%BX4GDcO&MnaG!v?xn_61xS2;UP2s*l%fDD=5Ea3
z2Y>Z~1?H_E4p2S^3^wL)I8eD~SyGIx0wQp{uOh_T9uAm7GQQ2U^>j$qqMGOC!rX)x
zT?8%pGt>*Eoo<)1{F4y@G34xLO?ENdu2__xry;Df;CDiIIN(BW{g`A11(l+&5aCZo
zQkV25Wy&aaxmtrPwLa&i%J_8JsMSDTd%!o*U?;*Qv*6rs%lqTx$W#jym45iXI
z;Y|eB=}&hCCx%E=C$KLZ#9AYQe^2Y6#Vwsd?Pi?1&X`WJZCo-$9e;kxda`~BRqW3;4!}T;c_N8;MDWY02eBfpSC+()eHuw
zQ>bsm(&*wp6S6Fi9a;`GG*W398KZE5@WSz7(O~NT0zjewCubtLK%oA^PM6dp-uOh^
z96m~GRBYuC+X4kh`mKo}0@~Eex%>bX%Vew+KJl}hsa&oH@o*-=`J25I5QV^lX}nzR
zt&i96M1Gczm@4aL>t&R$b$53OK;DiKS*RQ>S0-|`D;U5Ki4oXsPW1nuxg6l{(uVT>
zvNt3%eMS=H67bhl)d;Ri9mRgmo6tcb@Uv9G#Q0lHVohGEH-QlE#WNu!a)@N6l6U2Y
zG9;@{#fe3fGi=yYxsbz5)=7wOHLMd4)Ei&%%Ez{gv|tQrBr$1P)S>^%{D4`c$2KV&1{m(%pc`-&-!exDn`(>3EPan!n=)gU~Si>H4-{8=jR`X
zLvY2@w-#f*UpW8Hl#b5fnrw+p?T*Y55E~1@H2zva(l3X?l5?iABvzc4@?$cYt28LD
z?9&(w76JR!gmK&QTH38`E&ryg4hK2BYx#CMLN|S@WTO}heohJhERa}YQQkqAAzSY5
z>nkqW@Bhh;nyZm$IoL2{Bm8a+t-A2Yu%2Sf`DuC(E84))kJn&Y^e)emv5K4fppjCB
zZ63b3`aRi`q!3irbZ1ahnru7a+i$mq_u25Cfek}H
z`R-dh9sN;BMSA>M|5c|`5igJ=#fZ@s5NG1i@I8`vl>vp)Z(FO_Lr+;IO$|$zB}opS
zew5I1JY!1R99DcU3j+O%AB7Yh#Tg8wf&ct?uqEb7QDQvz*~Hx<`{nKIE*ULM8v6*O
z`Q-1uNn&bKFkmZC&VXXI?c>dtraDC;XbZZ>S_6tDG-vj0OltVRrJYVysZlOv&+4uy
zWMuds(W2%ehLftd_CpF~Ys8NoCYz9j1790;m_0>YnarnT{C||=e7QXj68&I5X)9UVf>^?X1|_V5X)dc
zy_n>~XOH=P-upT04*jHf_;zPwnKGDOsyIYMC`&AR73aKnT3?#A{;fuX$s52$d{T)7ZQ(cQis*V%T{crVJj&x)90T(JJGcv{BjV
zj`DDDo?p>?7Fy|(+T9`HM)uU8Jof{rp-$UjvE!nD`|50*xF^n))yKDMx3BiwkYl3z
zX2=?z3!2`2GV2=qp6To*&MReQ%^?-^#%4iebo5uESrce*L0uXlDG3;7yv`T5++ptb
z*O};;m~YgARv*Wze9?qGv10h1o}L@u1sA-Gc~)A4>XEz}>~gn(Y^B4s2v4^TFNaFe
zK@CW}_60&VTD}X?@`l;6G7W(032Q?1pdU&h2TX{utk0r(C6Q8Oz|8=>>}QRX{kwp1Sh_Ax9L
zrF`n}jRz!xX|NpMMvfir$-vAzRfn0wNnGupi`^IGlaY8aDP_N6$Z_k!UHmV9e+7Xe
z^O0?;e6{!Ah3Q5nB-=C6PNHpEMhVJKgJ1e5YXbX0_by^2EH;*E+Os`L)V1=AWf96(
z*U%JqC_4(#K>!qN1=sui2ycO*RrMH)fbQ@m*0Pd6guPKnxLO#D7F_IGzT{}74(SLb&%
zP^+Y_5-&+z{-b>_qI}WNlFhQ;@7~qLvC>@K>Ay%N_60-BOy4AVd8DIjjPl+;dtK_Z
z4t;)qX^Nf{6Xg9v`4=zH&w`T-2cA4G)g9_39y@d%WJ8{}8cBNo*t{!dQfhJFjC8i5
zt}x22*Tntlo4x`2HT4YA-sM|jw!nm7m!+ocPXxc*+doxW)iwUA-supkesf`R`Fveq
z`s(g2xw?2ili+2K+Jyf8E
z6&{1agZvSX^$bcdA1`5dbV0+R%gVxtuJJuk;%l`wiQPIV4*m)&OWK)1m{qUey?p)h
zmON^~?>=nQi|i`0z+5@?3Wb6KPG!zOE~|YC(3RdI&u$8p6lv@vamWj6YYv^dsz=qQ
zJB^5fn!t{ZS3s*@TTPuR=^6bmp8ELu?$3IE0)f5}F)CWWqY4R`W}aLAOD@YWyInj)
zt_L$7qfaYL5JFRfgnQz}hN6yb90pRi=F*}zvC}JoJQ`K6&fYd6{O01)N9mIwnH~CF(*gV>xgP+bF81CySKMF
zI1m4%j$4R_{06-(;&XL8cJl81d#1h=8KSu#$D;+h{nF9VUKAjH*KzEVcXEDM$lZa)
zS$HnJg#&g#K?)xp9v)ar>q}41!(re+-Xr?YL&E;5U51!~=Ig192V+6~wfGLBkBoi&
zw(!S~EG%Q4IHRRGnpm<1Ayqd0$x?)4to1vBC03rx_W$zY1hG77u5>^OPh1i#34a=&
zc6+k$j^R;QsIXn2ri4(-@~yem>FiXkMwaE-nsZtTZ%veE2R97Ibhumvbn(T+bkwXj
zM@6r?3r_qNNHyOd^UNAq2|F}K_K!}r+Xe@ZmpOv>t+qk(UvU=7`v~^VE0jQ>UL;=G
zD!?({KRq`rCf4J6#A8s}0_BUAKL7X1-2Cxmg#(;92p944mAIadyQ*IVuyfAN&i>U3
zefno`;84|NQBwBalB54xd`#K99A0cgW5vf*4`MlHmtxN>=>~b()6A5-
zt925DD>sl5+gEmnD^pWV^Xg;sO*um+em4>ZA-iwosx9YFL`g_~xi3bDEbK+TJiFNR
zPcJMaRtOFjbzS4Y!~#{!dT|Ncjt5+!Pn#`E<`-HGw`3e;RZF1o0(e^l?PA0e
z<;bWgf`s0$Ls{yqPo5~Kj%-Y3;LrNH6TH>b1Z%wuX;upJ|F~)`LC7c_?y?$I&w(&D
zlp21B44szrYl{!5VP*bZdj(aQ=J?X}ak4b0IZ(}dB$qs1*e>_0ssM_XV-Dx}AwdeB
zlT?B6A~asME;4=e!N%jZr7EV?4qu_&9|Je2;)Ph>A)93Tto2FfWExUjtvU%Sk1XE8
z*QD}B?mTaW9pt({yxiI^o%3&x>oxe(V_M$yg6?9EwKRdB0i?kvPL-c9s^}+2Lep}v
zugt=t#KOwL@7_npZB+gc-^81sPFm-=%`jDoRqq|*)Xc?;O=NRNB!*CKBaUgZ+gXPc~RjZZ^h<*B%Mpe7hEVbkqCKFn#b(>+op
z$tF#eGaJVx=!^1euGpR|59Zt*2XDoSQlDNPu=?DA;+HV8tF_I;Wx&s%!7c6SyYM-=
z=`{4^6l=&so)@-S=lG8>$72@fxjv)nfoiK$0}aDUavQdUVG1#YCs9;Us|T@@-=5uL
zw^MTY1vYdPwoI6{cl&7Qh{R_#K_{zWQ15G@0~s0TG+v%(eIzx^;Q#jlAAF7YDw`=Fs5CW
z0~V)RzB=}owX-6*_${%qn>P4W*WcGopQSscSGIE=3PLs#zPrZ)yapDnIc2&ErFwH=
z`XeTiam01aM~C9z;NW|WON_Xd+DeK)%lZ-Z(#lHC|2lSv*WYg)JH_EJp&Zw^@Ra!3
z(rUFm?A64E!HQ$T`p712OK=veTiTllgoJ^8w}4#B(uO{)Qz3aMjS%E~ctAXwjw}A;
zG1Ky9fzx~k*qlA-OYgnmaOlfk1P#*$<4u5xkL3T%PZu+C)$WOllU;$ITv$iZ&mNqz
zy6UoECLc(^14s6b1~*8J5I!fCH>&?nrVRFYIfBI;i&3H;|RUuAUkH!
z(l(T8ks>bJ4$tM{@tx;5lm=QM0>4lMyoZ0X1sA&R<#@s_P)XSUA@%f@H@E~l>z4n*
zFt(6figT~Iu)hwKx&=27NTB@=w`IA5{47O5PDomxLE^T&(7m5+JRAl|-TrX3WGEe`
zGnQPxmgAbsyUCIfZw7dUZ>6ZMG0YF43m#2wx)-_ERor#@hoq
zxK+Tr*5NtZ#j~n{6{_Bma#)E|h4ylw;%VjxHgm-YJpu+T-%0(SK3I|4;Ab%fr^^5@
zbAcH4My{J`H)U{aEG2yyjus0;bZ-)d+xG+(n?%33UEdLSWqC!~R?MH+eEhp*e1fDR
zHo9S9yc=}ebV|b(uDCCImd6HKM>?~e|7V^RbcwRzX1P%v0M)CMq#UlJ256eR0wu(f
zs#Xr7ljSjjiN9AM=(
zDk4}H{X;nga{rAe$g7rbGOZ8%>5h=DhM7%7YPa^3IYc}`Ot5l4>sch@gmQV=<_9H
zou}6RNjx_n=TCeip79k6bhz64($qANh7B{?v@i=CjXxg|LIL`$9ZQl4k{XW?e{=Q0
zSv&m4OxXfTE`!2?aR;Lb4wF&11Pp;rX6>n(?Jy7sI^tw!T_(zKJ4-AT*<&Y)QB0GT
zD->juo~FFnSIW7?P;pNyJV16z_$>iCFf1Lxemt28>
z`-lGjurBjI>7t8oC*eMNyZPhYWOA#Nv<|EW4?49FWgpZ-vM8xfOsLKC7Dee5Mw(d_S_G
zExNy&a<%~FD>QAzyNf&461QZ2cHxCCytP-O=$5kDog(F#<9eVAXgQKYbJ1pwBlB65
zS^QX7JYMRKmM&p{J@4d(*OF7k2o&)R$PSuKiA47;i`w6oOCoLqdv!_4D=1
zzPp`po0^&xTF<|@{Ip%qZ{9)dy7Lz&oq;YiUg%SF=YMOr?)Jz28^SjoJELu>(!PfWeX`wriG$DYy7r!1zmynCQ5SY`y!os1wX%dk
zW=ec~*kqXv)}3C~rT@DY0JN~UxfuFXv(RS5;Fap@#)VdgpZ|%gEIh|3;~i+Ml-D{ovF$Hp-IdI)bnAV}aVN|@M2`3x+TEA?e&v2tYJqY<%x2pX^Vmw_=z>9bia
zQqo5L_z{?v#^Q5*zFHX@74)U$?qhcL#eyh*EYOP=FNo(-v7C8Ve(FWvI>plAO|P>2
z(Yq+X%OiXnd{mTX*a|AO;3i%PUI9x%>l{13=)GQkBRmt>r+G*%{1B41k@`A{?aaHv
z{=^B|8W`EE^nRms9b--l3#R)$g8fX7MX9XRQW}8?aXi`5J3BxB?X=kDVcyjIck(t)
zbOd-A@%4}BH-KyO1<`D-o{9pHZ(Vi*Nc7@d8qaD-oi+NEFQdgHvAQR|0x?s5Z|9Ov
z*DnYh%DB#>-`u*H+zYpz$>3S3YMJ|~spgzoljm>qG(J+Mo=rW2{t*x$|9$4-l*V)6
zY;e@Ny6S2-7$alG-tL-GD@eCBV=;;Yx*pL-f+x5{Sb;v1wAXGu18
z4Z1CSG^4GxPvk!l7JQspUGA=hyGGSIGv5ml)1FYE|93&_8eKp;MlUJL_&;5Cu3Z>Y
zx>qPV3L~9`=FCRc;c$sbF-0>LBn*me15c5L$-J*~sYMlJ^6c_^au!TSo#a}!
zeb2}BL<|Q|Ha`F!v|Fb;nrE08tPS3|Fb?Z>`GwQwkK1P*$GQ4;ItTFzh5eK&V%>D<
z35CDEtxBB_o;c`LKeq4_bmPWu0U-u#f|rMk`e}{O*s%883}wCHs%pVrK)qvMP+VM6
zz?smqSu2iAaXGIO!T4*NjtNK|*w8{)eZ}5xkz9LzU)g=GCXRlUyM02`lS4*^XtNq8
zcfPx6)XsAc0VenRf>|!)y9KY=L800brv^h934S=^d>&cMfm%{UtQ5%d@ODA7y#&3t
z9fS+sAl@h>Wl0Qg9sI8k1ibSdg!@CXy1livIX7xrf6;Hf;l+%cL|Y1JI8^<^z)ouf
zNFO8&^4e)PZ>=+Jqc!0;04P0yXqRP^)_4+wcJps5JwkGM9gI%Bs~K{LwQIAZJU=Pr
z;On
zt2W*Lq^K&r50FVSGj&v-leUH&kJxyXvE5981v%~u6cw!v)=E4go#cvJxjNV^5Zxbp
zP;+shymxr`QcaEU-a`(le)E`(v+i99rUu4Hl1L2M^EyRM`R$m%*kq(}Iy*aUs6cxy
zKidaU+FU|DorXE>9i-%*Jpb%sHmp*zX%6&jHM9+33iKM~8z*ZzHU-tYio3?{h!1eP
ziv{K9pGJGO({?%r(_;nQ8N}y2Sd)Dg9>^;yGCg@h9=F<;lcPP`LDIbcuY=^It~E_Y
zivpUjQol$bGCsANrx*0aZM&Nca^PX{aVnFi?q(kMh_7mtmy@#zmLxH6R<`i3G01wh
zMhx`+bhfr~BNxH>ClxzDIDabpw=(C`b+TmN9kEjTAsQk$ebCyPwPB41i4vS%$#uqB
z=&E=iOPB9x10up}Znao{gJv`~sw8$v@n2FQc;(DH+TaRqmJgmC$`||A@Hpg|ZU5a$={>Y7QaMbJ9A@_-tZmzE!RZUq&^E`>_
z?PkM`s@*;S=2?kA8&zf)h%A%Sd84=82j(v}1zgvNy}709>T0)b(dK>5?7+G%w!s>|
zG5USE!o6-N%}SO}Z;ROL%-Y;rRF`2sT~N3?k{9Z|yAGulchwl(NgS~WhQr}Bif`XO
zTIorEOL?C#J$_8q%t)ngS)-d$=W!JIV7we6QFp##aCy;P@UF~D=qn+8p!dZ|5&Q;7
z?v6HwDASc9nkLIWIh}QYheN}fzC2jmuRt1Mk;zP+PbZ3vmu@e|Ge|UQ$qTCL8b2xK_
zw)ffFZx{6zCIAiOn6W>k8(<9Zn-j7BJ3fE@B$`$Mw-OZ^-5-m561yln(F~keR;HYh7K)9oc;kEdJj9
zvD_H1(LjYdBf3Ae4`6Tl8m8vb7C&lh_!J
zcy=jvxt9*#OS!qkJ;%X`75(_^;$%ArplW#@E>9@x4vH^|jU}$-WkUc`ZJbz5xX#BcS;kD0?%EOvx~W#wuLbYX23oHjfhIhlFqU}5!P!^
zZqu*r-Un?{rJ1Ujpgz92j~KCmi=j_PCMw^TOw=5da0rSk!md@jdL+LI?bd!vs&@Mg
zII-=ivgR`+54_>2Sh3i-KXWr%bTCFDb{7ftmo2nOCwc8Dh!5spqI<+Goszr3`f@7}F?`#0%e8y^1z--0V2fbVHZ*vn6
zi;~0c?eCvC4=FCK7`OCH^j98Fgsq_eDTSc3S&}(e0_hIwOh4Y^Ci#EV`X;
zQsp?fxm&KUa0k-SMxX$FaG8Mf8Fscwy)?ig_lJi+zEZJT+Vq-zLY*BtrnOi@=(1xZT-&JhSe
zI-~9Hj|(a+bez6`|CP88n}xxDwJflQo6{VZ@=4X
zf_|0xb~@`qbbyZ+3AqL$vFIaE;pXYw_NH^&ptOtYr4$CF1O7|YV~6ipn>rVBzJZkZ{|Q%~DHp{0GOrPlybKR#6gQ3>x3T>0}pC;?zhh1LaIN
zTUwj@qf5yP-~dr$Lw=&`YphrO9p6Xq|9Q-Ab{$ALSU=}mxr6$I)i5lUx#O?2`sKnu
zmL&af)~3vKa1#oyHHS`(lr;D_DtAsAE!+{_I--5!)#z_>GQ3LYD$1Kzl@*}A|@sdz`8;&7SyXPbVR0~
zSX4u*sRtpOO*Um|E~^QSz#1j0a$QFxviBuP5P?F%vopfU1gm|KOK#hLaY7$#laP^N
zG|;_5M}XBW$jte|x3+ADk=lr9hv;7YavvOI?e#tM(fL<`S8v`l&HAGG?YFGYaPKmS
zic&RaRR7pno2n35*c|&dVxs`xac2hhvsGWB9N^{MwkLy~%otz1e-CPEYU(ojf=V;m
z938K<5&^wOm)pI1^-2~H*TWbg;$CFm2$zg
zk{0@6*q5);*^hcT^Ut4u|9%Hmo+j7bzrUyC=va8QKpmh9JFMziPzp>>+ZZ=v^f`;X
zva;EyRR)onJlvV9XFQ$tCIX~85(A7YT)uvWOv!=UpRBBe3o+N2d1)8t%b6m-X2oy@K?+s|x`=f_%Y_xB
zKi6s8Yu#DzDPcROwE<>e66eQ@77HhAE2}o=3Nx0vU;53}QUX9hSW8nQE*BMBj8pBN|s`56{Ynm2!p;6mZ-~Ip0R>bP3pZP
zJ$EFp&;NFddOmxAjr)+hWV%;mE?mFNrV)_vD(3toF0t_rwceZ;JT9UPm!D
zL&i+tSXVnPn@;&)B3S91FR|Os^aB$UlVK#i1$-ppWUE9MviZ~42RJcffq+dG85gH_
zpkKDVC@`2&g|r#UB$)L(rGK3Crm5<1)d|u~QK+B)>Xr33z!5aIZv^S&Bg;)h?PqH;
zmSk4(12WF=9m8ycPmXiY#*WLE&$@cMx&q;F^|(boN`_g{K4xYiEHX;>`41mJ0m)LR
z#ZiNs&o}7$0>{g<6i`6PI(6YY?pP@_HM$rlI5?YJ?}Sdoi*L2xB2M3UCZ+GBzS`?}
zD-;k>B#7vHN(x-6+I?}S+M6aBVcE}hT(fu2YBxW%aA3Z&
zXYHyA2*IKfii$F%)YR0=<+>+8F2)QLtTg^*-CU<$&+HS>?R$_^oB|Z6b$K#U>-i;^
zFSvwonwZE;d#=*ID>i@1KqdST3#&E7lf3Cqzp4Q@1%Q~CSkup>{<8%$Gt;DGe9P0{
zgP(}O$IWSdp)^=nC-`9IXOa&U6cjo-Itp)s;t~>|KoE?1`mjZzI=Zu6$@Rs{ml}LX
z2EU7QtL;_k9{UuoDpb3XshQc{KsLCes|ypv_jck>yU49}aJ+zug1hNqVmodV9$R)uR>$z(;S>6Z~-xRuxsbTV+GMkYXuCC7kcO4D{
zsuPEp;Uol*@PhtLdd~Co%^E~BfW9qq&Y)eEt-u))iZDO67cYXK6(WKq(>G9Ar+HEu
zim(jeiK-?_h_$m|>n=SbE=|CWEl>M@#xc79ejG)aA|pY{)$LizWJ-}Z{u1~AtSEmkIC9$jJO(?RrhoWs0N5`&ab^|
zZmw}fAs1xME{ETN5+oV*M8}V4!_HqB85#4#>qDRb02s0e^Ab|J%%JJiz+e(QeEe-q
z;3vSt25US80l|#u9ZXKM
zQ8A}Iq=FCl#i2~q{h@vtRsn%V28SUOxmt>JgjqXmqW(Acq9L2j@O}B9d#xtUE@yir
ziK6>4zHwm`+F67&Lbkw4os$73&;eA^d{s@@TAUT{3&JI65t;LY0_hzHIG_R1??w?bdV^Xm27|2!Qn94Z&FS&*4kCd~*)L+NHPppXJfWeb
zrDb_1KxED^6mW=bsdCtZznhQWmHUXWhBg2
z4EallLe~zOBp~+j{C;#8rJBLhmBr`EXRug7SyKE%;QE}`%uG6NbpAV-fLZ%*tA2*c
z#go5ElD*bbnFPrmmjXU@AFwU^uK_!7A$jyDP{O{Ne*bv0x)ex0@LKEX4PoIu56>79XDm3HE7J7fZ+h2L(ZE~4}@^o2wKYMvzxeb#5{ygk8DPtqNYp#@3QIh{*
zNwP16fBmw~Lq_R`LHDAs41)xLVxGptszb-AZTB=wNB)b`dLr5+Ll4ov<*J`9_uCn*
z$IA1iR#sQPAq~s?@Xj
z4>hL+r~79=*)cvmWY2NheYZ9wRQS|75z(z1e8pFJ=(0utgVjrn=9|EeX@&0;GFMuv
zmVO!|yh3l@Bq#sds;#ge!Na87Mkv?vcBHCGOI8Z9S<3eUbkBY6>)<2||
zq~g-eZ;H-0AfciP0nX?AS2!XRP#hvS?Kf?NuGw_+?b(a!xg*GJYdR-$G9SGqmp#WtS`TNFz^=~OSENt5L8)`TrynkQ;?54b`JCG6-9aGxt#OhYpY!rY*pGdc
z*{XQj6y{Ecj%lNZBRH?NC_L5O)ZEH0y_U?B;2#>Ug7$}q=BWMf$4Bj^h_!%2CvpSB
zYckbRU?MSmi~iTTObq_H*1BC{!sq)>sh+==jbj()#pN;ZT21&IS~FkG=qJCMJkyTN
zp^^ClbpFP~9=gwxWAg4VpX|O8M4?_|W9p6RLJ@zNonY+Ussh*pOEU|@x|{e%Rqwk;
z^Ixg*T#ptdCem>m6x{*RXaamxcW0e1`aAfbY^kcM>dbXUywrO3vbb(M?XBds)*y1p
zrDx?*JUpa>>+I|aNx+QviRsCf6_B7|PKg6ZI|-E(VO7;?ZhC3wyFgi+>}W9l-s$Pf
zlFVLy=N3ny2wqK0GafL2vr5je{uD<^rc*K2Kd#=mILn}p*#zqB{0^q^J`;8F{T7=OSol!
za83mv+1UM-
zL>6a+c9{hQNqO|2w`;0P{?0Uf)DCA<0%9?Zu&p(G#@oTq+w)cCfa@Nz?k@5N&mxs$SMP}`4AX(V}8KCTE@b^pHqaBDy-e~S2ns}zj
zP5aH8XF5nP+WN}_E+8aou<{e{>k2i*4yHQ+C4sr?+LP%~Y>Qbbe!QgB)mG{%DJQOR
zv3=u3M87S%DL?_(xYx2Dz|2VdiMJBQaZ4^m!1oJ6U@*ng>YbM3F{3PV9YTjh7r-8t
zq_{UEU4bTlXBXaQ^t&ul!bxgPQ6JXAG_upLh
z9D5+@?Be2dG%he4nwy`g^ZNfpU^~}fWn3_NsjnnNuovHG#ozBFt`0CsGfYfS7CPKu
z0VS5YLx^Ai=`S`$vTpf88;N3DO}U14J(>wlP9#2!GW|9}KT}AOG@fXwij9g20#Mq&
z<5mZzlPaoVC?YFUM^wFE3^1|-UJ3}g`N5**K$g0L}MBy!qQlEKSXWfN}}!sr#T;
zuU|KIjUb$s_DF{F^hl+=UHM8b0fJd*b1X4l?at@p<2z8MOnJ0D)b97KWAI|^e-Cjn
zlEpp3HTb7Tr1ZQ*WHN-PgZv7|y#eOohlFjur$?;`TysqTe*2P|%H*j@FYdlW2PAfm
zK)Ks*U=^~#>GvK@R#d>VGBZ8^TKvgamH$6kZofqWZl7g~yEr%>ma+#uE{oa+YVy8kjphe
z#*8-i4Ee=Jksf}tKCWwyQY(_Dc~Uwhma6g!Bay`cM@OzbCVO{)ocxZ7jL8vD)NZB-
zFW;>;_PsDY$_BrycH<#r6blmvgJbzWNM4VYA=Z~u{CC8-jccf;+_zeaMJQM|n{c@O
z%pUYTPQe0A`%P`fo~?aZAaHK5DFd=|B?8u`Pan9f^tLBUd1Em1JkdiQ!C8d5iR4Ac
zUE3)X{hZGskKfg@Zk~QE4WJ-5O8KJ4+i!rLhE5X_69ZRQdK!^N^{m|74>4%nrN6(i
zt$&R5@#DO;j4N7;As41ZQvlVPBrFJ^*ZKb#FD5Gx>H~7;$fK4qWt0W2%2s)wIa!
zfE1lu5A{%)qMi_-I|>DSidSC8{2%8L0KCIcz;5p9y|UJ9Qu1I0e3RB-{0R@gJ~{xN
zFOK^EoMnEd4?scyUG6cv*5wFZ&u&|O%(tNC*>U%atDc
zX(+s`jnSMSHr4olK&c~tD&Rnr-Ti?4*w}j;GK|nADtL_s4yU^ML1txXHfBqExEl3-
zzJD?^7jkljzQ+zQFjlR&{ol0!Jo;oZEEWI17*)Xi`c4*FJ1aZ;K6}&;$Gv}Y;dEdx
z-1{6iG*&;N2rAY`f}wyvhfz}Y1l9Y4{t7Mtw+G6LNjE(+qh6ml7AJ>|yxC
z3P?sDfFSa&$}~<~tB+J&Rl(4fyYAAI6(D4Aa603Q?T*Q{v0Y>DKFrQgzVX2V^tHmB
zlH*tb7vZ|AQ{BDeW1+Ik()A%si8a6ftl@Ar7~4NdGW4TniXw1GaoiYwdPK{A->7=}
zOUn-v>B=S`QSZ#kOaoN^vwBt9$e0xPx}X)}BPif?6hkX=raryhXlAg&!2vSfH;DE<
zSkJL0W`y&J*vZ@PDD)&=h3iTSCL|<$ySd)2=iug$2e27P^ja+2W|a;IVV)_AQ>06g
z_A~a10678>$lCNd8%C$H8v6S^{zqWC5`1CS`=Y78p9s(eFf;<~{Is(ZQz5Zad&&T0
z;4IwSWJwZpU*?2kt^)6+A17Fp`T!Un5H~_F0!{$P|1K_W`q+#+0-9i2roTT-syUFR
zfM0Xeg@_gR6~9K;-(Z2>YQA+m>mZpPs(`!6#FCKGN1UB`yaS+ug2HdVtBY4^YGrWu
z|HT}?ln!fYqP5Ha|9RR=1fqa9inSi#fkM-nf>u8;1pQ&1KQU0MK?2ZD0B&z@b^;t>
z8iy}cy8@vLfJgdc?IKj-AdLU4_u1`}pHa70<
z@5=?9c>qcz8IUFy6%|?kEq!n;9;anVon+Ci`)_j7p-?@=VLaf^pT}D>6-2=H{pv3Z
z3JeMo@L3~(B2EWvRa0
z)-MB5-Oy>Zx?s|^8o2ugr-r%tm)h-3gBrvkKK}P#zi@!sAVAWaYG-AI^7VoK*?QgM
zrU1~LUmF7#2e*8F$186}e&c#Q#qQ1W0-es*bcxHWD<}7U20%}d00ivNWiA~i5k4Y;
zK}dHktcKCG%kK`}c#S9i_2JBEM_(Q2T|g9jl!iH1De#4YmhmaeQ$(KCDNxz!&Npr=
z4D4Ie^#k%($}-UT=C2bjOJkt$il?ls*gA-^9`rBYy?G@J)Gs`;PL`P33M<^>2gy!O
zxS|CZq-{Cw9aR(ET#V_{oh>qfn8cpo05jUmz`>&e0DoemiY?Z7fca58^z-ur1zcYG
z{IMddC$j1mvDP>d^qKQPGv*nbQUhi8xbL_{otHSm!rs6OA_08Zl8vhr9l8x1z3b}g
zvW+CV7!b7dJQkIGYgd+*meDmj>sCr;Y054$g9s~i430A>zb!dql}tO5%vJkuCow`%
zc;-i9`2Yv7NC|51Oj+4F&Wtx8lg8P>SR7QUb{wjacTV-dTd4<
zpcBi>zE$Yc8H_KBuG<&audv4fQ9V1tLRTVeMsgzn=mHRL%-3fqY1Y@*-$b{x_z8K{
zmwk%y&+q9`dD1O~QB8r`ySXz!hZL~=zu0^0s4ClaYaDDuKtxJP0Ricf4iyz?0qK&K
zmTpi{Iz+lfO1it0Zlq%o(%s#^YvGP>pZ)Idobemy&yO+Q*D+YYTF>*`F|T>eIq#<5
zhPE9@9KE-Yy_ot0c)@sRzU@y3Sp(Z43=R^3@tiIJQng~n$cH8$Y{%5xGSKl+P=K=J
zvM$?3=ZQwcKK4YDB#a9}rjCdhx4tt^59dkd(BdqGv?~pYdRUhy>frb_5$V4zQ3b
zG<-s0ew!P-u4g3eksMvC9vDPodl!+$4XwS{$?8n~{Gs(31&yIb)(&0RG#|0Qc}a%y
z_V1jK>P)jsA=Jl!t*``7eUl|3zt`IM7d_yh!c$P|Loph6B^w$VqM@Pr5l1aK7={sW
zt?{9k*StlKgq?1e5p15Eh3&D#Mksd1-A|pio2eBG=Bx@ky@^5`XfpLJH~flQTUZHEoNb}Hs&Vefkmg}05=WjrvfSX
z*VD)6+16}(j@6I_aB=sjsjsHXXUpRk`dkb6aeDCxwWLa83dA0Zi=m2n#)L@fG|CY>
zecVMs!V+=fc4e}Bt*RD)dio4EvP2oH|JETC#cB3)7)#)hp&{)olig#I{yar`JG&9C
zXaUPBQ=~4Jq$Fb8{YlIo0kr3z3q-@Zh(a2-dFi?T9lyD`wt5X}$>GMB(sE%e;80L~
z33)NksBxd@`H=}?>dVM5pH86FYwW+3yZEp^xMD=rY5k{%opH-;J}!qFV|LmPPRBBd
zfCG?s5fqQ|=P*$YQ*r@?%izwDDc`|%Px#4lzNe4hWAM?Sd<9eohK7eoy-0qXGp69l
zCY$N<{65{B+GzHqrFgBdfTw<}GbSi22n0sh7*T
z+*`XU=qiXLJW%Ek%L}=Z;^K8ttzna$IMmEe(=SE_OXo_^8pJWZ9mHKKv@m
ze9xY`)v5#Ab3am_S`RQ#K_bgRlxYR_fQBo-!_I=w)#n19ejow`5=%m&M;SOOt9iQw
zX9t%KKA8P&QEXSK!NY1|JL2VX@ybLI!n80>Dh(U!M(u74@5Y{rX?=BnmYhdSB(E(d
zQu$+2JnrRqgzuU^A&5(8+l1hKFV#hqQl0wYAxaLgZ2rxzFBHA7hcRMiwD*0(+-
z{Wmnp$4dhRt})dVN4vOZv!|j#!B*F0Q=}T<;t2(c7BKWXlcxf`aB{c(>Kg)F0>$zy
z^CV&ruX2&K4l0-pr39T)PAt(;a;y;?mqY?8)iD|C$&9E$(>4wi%Ugk^3l4kB0;G@L
zv*KQ8QUEQXFTTi0%@-F`@9Kuf+vrJEnUqwdveF0+H<8ari{Y<1jjAdoAdE`q;@?a~wO>+hR}XSvzBdpuGrPSC56B8`9j19XPO|^mk(6U&`|Nv!U{>{qJc<
zXH(hDZI9mNe7vDTE~0qfuq6@BgAanSa(jG_*UH%NL
zoAI_PvpjGTuhLWovKnYpKYS^>1B*g0S)`{b&S;rU-&qw97M;U$&CT%Y6@HfoNM43~
z@@H`Gxq#Bsj`_az`M1bP#YJNNP%l?yW&VhL|KE@OzZ>#DA0a-uPYhEE3W9s5Qgw9o
zrBzjpZ-ljK<-Xq9qM+d-U}BmXI3H*-mZFP`FBUgmRkTqZ?qJj#7T&3yp{1prd?|XJ
zT1FPlbfAL(52hzJcIp>XtiHgEWqQ-=XsI?&uD&i*E`31xu`PpM`^EXhNK_8)?F$6N
zf9JjxCP2^O03+}7Cr0ofHHcPMN5?{Vj}*31BB2>?FF);pMlz!GY_WlF*(|x{$5Uiy
z?D9UyA6LZ@UCh!BN;wVXE!+Fu(<#8|&SkNE&DLrSyxIwV_W~^T*Il`Tzi4G-6_J%y
zp1(titc-2U(yywEO9R=Q^7*@!J63PTe=0glgp1o~%f%clMVWoEm^ae4E}t0yFtH#d+9nlQ{GN(=F=M$jY;>H$0|Jn6B=$}bHk*4T(LgM
zs!vbF;ctSlUH>6OG2c@xNb%f%w$=GawWw+mEar7mqF-GVxujWgkC(>J%zfsjrlQDBHGl%S<}G*(7iY%Vvn3uFZ~xdrpd
zm5*#D4&+Ko5$>7UTrPYeM`U)MRVTGscfwj4*m;lW+4MW(;hmfhcd5-A#P!=I>(mKhU09#!$12?^LagUMv^7FBRAc1pb$pdg@sH-Vbf4H0d@=rO%xYyA_Z{b$
zo!fm#1ZbaaM4aupipLyME)7%*_fSbhALSrc#HFG|Ks>Vlw&yt`E-s7Xs*^tPYvoCC
zaFq|`*;CAQ&TY(V2WT6aYVWTfjSS26*(~-p1Mh?@1R6j_Q^mp}bGfcvHvRU7&dva9
zqw$}{99uQrN#dg6HBm;V-px7|LqZYlQN=mN3%4RU_q3h6k4&dzhQd!xhpm*0a&k>q
z%IzE-HFofNWK$%u1FKG}a&O?8
zWQ{o~$L
zSui@_2u`47$kVyFv=j2^FawqKc1Wxp!PBcpq+npMuza%3c8f|P5gagZA#C^Wy{8Zk
zFkkw`XE)dTiC+K1rGh?j7c-Z^WfykNrV?v^8y(0unSaw<{Rej1m2%
zog-VNd@P#e0Ro%X_Qr@%-^IlttBHQ<`+;F$Qc?YxxkJVsCbUs;k-JkK{t3uwWQRGL
zx`k5du%q*{W^SL4n=tOVfKD90ShhO<(E46=c_9J@7~C0ZrZv8BabkW4-|p^P`Xd7a
z1Er>{5pVjspUW2=jV5Je&_nUdp@Ocj2K98z5@AF{xHuK?kV_eKw2aBt>7gBYLK4G&
zu6V&9yj`zYrx}5W0(oJeGY2AR2Dkm>c%-EWk0E+WrYl@eS6@w_BgEXIP-})3c2nr%
zrsl7@6J1a|IW(%Ma(LLqQhN=Z=uu6g7dV(uLOP`+jy8lErO&6h#}^)~*Bnt^{B1
zc0|~Xf4vKzpHEj`HUFJ{u`Pl(PC-6%I#k8<%IoRxET$%`Y*|j(ZKlPRhi!z)1Yb}E
z1&QkG>!+uuxq^J5w-jclbYZ)=xSuO1(EC+-=7f2Zp~+NBjx&0c-
z@6C0@BuEgs78hYEMXY+6=smx}V9Y>EB0H|vPV?Xa^b`<7`U(L8tp2m@&Jnz30!F8K
zks#qg`GB~*)mu>tk|kEhRX#kyvkP0Z9am`2=WfHFxl1Yrz8BB%`8PHzhaX`fx{1Tz
zOF*?`%po9vu>iF;3JCwE5fs8B!x>_t-&JQQ35l4a*;=oy_EX*c5l3XU+(wsu
z8YmXVDE;!~k2r;Fn}&;sqM0HUGu^Jq`_r+4SdZl8sTyTvV@!zCdiskam^8>39UXNc
zA_FF;?ufwMyYG0*thE>NaG@r**wDJyDxX0~nTSrpTfk|o*1*CDx`Pb0Bht(G*XPGh
zIz$`Uxwyg^)l7AOq5z6g_SGw7qkm~cA8wnA^AW4n`b`&36P_?ebxH5zTRAyIuJ-e-
z`YPv-pRlIQ%&OHgO;kgQPx7IZW`48&@|%_xcUVyEyM=yn|
zo$gpXP*H91uSd@*3uXwzAFvi4kuJ&@U;o+a=X|GYWmAQmZp+@nqI3m{4)3rbpQtBK
zfOczmTk7rYjr4dA-YZe#)h>~&uWMk@wYcCcB;a&FO9^>ZBZaYt0Z1>ilT
zB&Fe?zyByOez|PbGpsCFj4{jywOp*UF3GrBb#C8}W~!|6L;cS}V_)u9#T^oT#h!`E
zA3nHo2S&DJ1qjBMlnfFuhSh7ue`F!$#;)pDbu>t&kx^><*EwtW=qCkE)K^td8(Ya=V
z4d&WfQ-eDjjSY*2bhNbO01{vfyCTL0~VKK!+kS?n>JX`*k(38e>2jjBBR!{
znk~KQj74+pXBRK7`6U(<^eWkI&r7dXq*HTqb2Boyx-KL$+Ty^T-o_TwO@1pHUR&d-4Pi2t|Kn}a6ar$G$MPGM
z7#SF5;?557ses$L+76=4n{u(O-^QGCw<<
zjY=dw9A;2gaA`tF%gRdK>`p@8S#p$xofgGEC3&+IVRrRx|9L&7pLP=RO;wiPap!lG
zS(WwJdqlCTAO;b~^qA*0&^FE(7wdPbJM1o^2J=uC{3rbIYIjYTWGcE97Xw-*p`*c8HBNn$ngHw7QO7p&YZ%deRJl(aqH
zhd8)4S?}{{dy%BYm1)nmqvGJ{Q_SS?cW;v=q$ug=dP+^~o%x&(**Ai2&6D9tz7nTD
zJKS@PURn7IG&EhZ~hbN7zKR8lM7~z?|@}=yGKBqkKPSiN(mj
zp-Y~x#%B*n0yc>SV_QzJ_@0iRYAUqLuKjW`ovEmBTAd$r^Ys;%&r+^G+!1lw?qYO*
zUccTbSlN&e5Rmfq>pN;!LBDuumf+yvSKOF0JNadn=W}f!^h?>&tJjDk=o9AKuBD(j
z9d8KEj~bNCgV?5rH7AD`l6Q*k$PP+vSgmn)=zIy6%o6TQB
zSgiW1#}*nd*ci;IFz&GHw9fif6zXB{+B($%!FM(IesIW6dtYyAQ0YcPhp+1-+G*82
zFOB;83%z!HPfV|y_m>X?mERi5s5!Tr`BYdqgjZ@NV!aOM1_@6vcpi{HE!^NY(-)@k
zO})~A-rfb%A7Vq)KujFpk|3J4RQoiYtI3u#2o*pR8{wwlT0U!k`x(q2%aweuYj!YHp
z{GsR#@49*niX0P_ii!#XK*IQps(1PMM>E^ObPe4pDwi4@#Z39*<488Erq|FTK?PKu
zo?#}J+HMDsF^pf8g`O%Bk3m_BBkDj-l^%oWVTEC=VS1YRTjt&TqCaEQT1-&D1#VjY
z)lLTGwvDMq?x>(zlF>5w9ki96C^a%y-+JTtqZr$=`xhQRe$VLmj)Yf`{K10r=4OXm
zb6r4Qkas`u_m9YqOV&(Hmyx8u2w;e!_nualZth`t#7Glebuye73thR0~3i
zpwL+NA!D2JoW0%MWTkvPow#!@^w7-cCI7fca4A~!qw47BX|YCtBPb(3>w8Iff2Q&UxxGx<
zLc#!V_Ps4jI)rjTiD4}9a_=&)mz*$tIzl|Uy?6A*MW(W>d73s~#FiDr`2IJ-JoKOmM-rKFW7$}d1l
z2-FsrK=*z1V7Cdom}BY7mlslKqkg)du}s`j9ke|)+(-jlAtq_0+axKp~-!TV-3?I8pB-qsO+*8-?JE40V&joS89
zI@)S!O%brIVsn^|iR*kkim7}Yxc3E#a<6>M*FKU|SIi4<@XM}Ju~gVwCFXUBu8NQE
zXyiZIS!qSW|J`q)`uL0}uYdiHe_CH>!AR{<-^s5sL3bcQg@cYy|9iSQ2)0eF{S&NP
z*eo|;p+N!3(80+X4q7?&ho+y>@E3g_1W^<1$~gMOs$6?yJmQSpl!eKNIs++$-=`hv
zvD>u0sTwQ}$XS1Xykemx*Rw$r06>58;|8U8tms*e(_xHu{dJ@gGQIh!&D9g|C
zJ&s%~1+^Re6V%FIgCc9bC?M?>2PST5|DWZg&vIw$)eK#>+B0i^hXLz>Jaco^QHPLx
z(+h2kXAY&o42-&slb03MT0&cWmdYqrX;k{n_J7Yb2>8wS7t+Zc@Nt)p*fjc+*0(O#
z1JvtSdn=dp{ktc4MBbBpKoqjMXP1T#awUsPzAZ;T=V~@(Q|FZt^IOw8o14}8ioKuh
zz7FODqdarZgFmmnD8pE)%6Mg&apqQ7-ibxblx>{v((ZMDj0fqifwBeTaA
zTF`OQnDp!%Q*XUGGr{-+PAx{I|5thGd;+>en@t~0B~fgRScdqVIs%5cVnS0hQ>uG)
zq7?1tPI=GX4>DdndGtx17391DHbvb(j9J}VP1>9SWesoq;o4vMz$MGPG|rZOGWXkrL;9sL=N|&n6ZuNq
zkAr-r3>Q;O{LL-jc(P}}q`@5=R9tx_S3&*{!t(5{+>UNtQx~Aw0Yxwp?L^_-a7q>1XG@h5+Y^xbC>KO@#{=
z5#3W+s|~-TvhwViPyKpBjI7l))=m{VW=Q#0$zQKH9_zM8`4S!Fu+W2=E+KvYOfyNo
zLpSukX)DfDbMp(^Y^mtq;`3CDs*h!>@fcM?AxINFe`r~i82=gEP~)-9dkN12;%(mu
zYE7+LIu;o0t@8U4KXiwZ999D8-G*^%qcjGjSe#wN>MC|6_#62;GKmSb3E;cOiu;eq
z$*<;G^wElnrMu*|ZuGt)zbc%oJtzFA{)mv@hS>FB=}xhUep__?2Yo!A){vdPoxrTL
zhUtIjZX3Sp9knzy>2yzna_FYyb`DpODMIp1H7d~8+OVb`geVZ+!j*t`)Y595eEyI-
zHXSA|hv{$~5?`9=J_laW|4h6$?gjqcHn+3%@|il!Y9aljBA_`KTN$0Ej0x3f4fC%z~h
zD&hLU3tgk;qZcmQR5OodOT@2-2BvJL%G%lBL==nFsKY=-rL3%e&uuxEZ+RpS?2O4V
zg4t;H29Nb(6BvLAT+ZCKF;*l1xuYT_Er5gL?JWiSsVh5sQ>F4;P8``yy6aX5dT#08
z`n}c}+D-(}AwZbSkyynt3URrt3-F+49GBNeFPv*czsSDZ30C|2OhJUi>uFC96p#Su
z4^W@|4#=)p9?`Hqx{e#*HDs*kFe%PsHUGmSio+uHyXTPQ91*9jY*!V0xE}pBN*dfR@_lPW*7;X4K@!B7UZC;56+ZLw@&
z;H?N`HYZmRJSJ(B4Pevit=%SLeivnSJ@xIf+FTA*qm5ilXQTzqr<$54F7`(&9c2;u
zdQ)?Ajb(*vz(m?>F33>b7oTW<=z5=u*1Os@Cvg0DcHoiHt%Cs9Q=dLp7n1M$X3aZW
zZIS#@4}x&)Y$n*)!AsKOKqJ|a>#pokE;DS<`REW3&_
z>y!IPJUz2iJ7TdVk>vqB%!954Ni~u!gT>a5DPdha%;EWj1{Lgd?{&R!ns_X|z>KV>IztL$OG&N*Y0}nKK9b}-Or!*s#Gt3_A%{wzrFz#!
z3mZL^JF;{rR9+a*Cc~(xJlM&0{WN5pEOdm4EHAxqsA)+Y6&`XIr7t@5Co~3hF>(>)
z58ZgAtjyymc;X8f-2iMCV`F3DA}@Y7b!kHiwWlM++DucfHZiZmjdx&q?8z0n3RY3Y
zl};QI+-Fd#0XxkVprQobfs@o_v&1xQ1$}yATHfq*-r|=V_AZ;#w#(zyan!E7m%(#+
zhyBeXz<&=H6FO#E=6VeaZ{5CK7nmR%y#hP23oY&$wQ_1Jn}sOhhJ!9rbredi#bP&KzwwRG_EV#4S
zN8vF4vcJ0eeU@7J=FbL+8$Mn(MQ)2b$S2j@-d+#g#(XvV=|VZ9y*0i&a+TS1__Zd=
z8U~KF7^oR8ClA#%DkJB^H9vmBxT^{B9Ve$~lNMQcI#Y8N#y)-C+1c5My*!w*_4Us}
z{43KVi4h$kYfN%;`Li=KT_qbK7RnBH^zw&Hjw>oF4Zz(sq@Q0p6B-4Nl!=Jb3<^j)
z4wEr)E32XLr`Cc}FJFFD8H)er@Gc`GL-g!<8jp>2Lrr|%R#}-PI&R#Y(vVVERArWUt#NYFav@hXQ(?seUTDo|7lEY!q&I?&y!ITk&7JIvPoo;ycgSZwH#Qo2|Bv
z*l#Iqh4o#!bm>)TTuF&0l6nSPZ_R)P*({LLqmz9L=|a!6C;w3|fob}E-r5zp6BonrVp-VKIkk&c;JrL{QV4Sy=!I(o-
zR1{pGR_fvSz~--xa1R%3Ty0tX-X0|wr^(VqEZ`Kb%M|JymsJ**@(n-W)hjHyGrw1J
zgK~b)tY2~9XVLO@I!8TBNKE_)K6U+Sk~D;HOsg&}QFg`gu|*^7+|!N8jZE3`FjOPf
zw^?EL7wJ)^vH~I%_$02d#fn7Ae`{Z?23*TLZ(q1|cgyr=IR|_|zihSUlA;pzqsXLm
zrC&v_w(x0hlxps@*&Uo2l;
zH6qzfm&;lWcM54yQBOzgwDr~PcLG$)th``MpH?^&<|-A!gLu0oaj)WdF&$`EOV}UM
z&n#vxV?$pqQQd_v3v$K4qZa$&L*Cl_@nG7Wqs42c1OB6qtuEd_OpCYr5oWyFeFqso
ze?BIblCZ9NN&bK7m0bPZ!CMC8i@o`RMNMrD(#7?XGcJW(?!@nv_413?2msyntCbcSneN76OWKdn2_#J+?EZyX0U}T)#-+1-G?Ze;J1!Ob-qK{Y2mvjx+
zvBXk8xb1#@l9%t>+)->f%Wgt(by%@pU9>N@Ja9$Nsu0N{uUxB&S{*IN0d6zgJRrw>
zOOKqQr3&Ywt}PvvB!N`Tbm}%%xkn-f5jd1LC+o^2n1rVKsnZ44;7Lj
zs3ylAk8mD?XGs>1UC!GHNKebnZYiLS)7f*~eLHTp
zs^2zfUSNbT4keYFRBfwwKmiTD*n%ELYss3&mn(`
zLi8%yNvFUV$Kmh|jxbJk1v>iN{1q!SiKVC)6-mpEq=E_%$v8EmpgvPsxc2JMb7W_6
zKX+>6?ANu^gXXMs^&j_g0QX8J#{M4q)JY(;DL6Z4!6uO%(!uu!ayj*a+;sJV=xjh0%@DQ}~S(IpgJU4?=E-8*whX+_qy~?F6A`*n(k}_It6F(OmXl&i1yQ
zkb;tF>UijWu;=~Q);O*R${!{;Syz;VR`*Z0DPp!SNYWAI2!5`TkC=Gd{CAs1ot*eEp}#C>t$?SOAz*dz1@V}
zU>F$3a9*4Vl2p>1m%0Bz_4OA`p}!J`{l$-+_l^$gbD(f#>I{9UsO1~liMUbB$r*H0
zD=AR#Px`6hAv;Iw98okhMMUX;E)8B8mHK@=
zL@zJM>4AP=-|#Z#A7UI=yyw2e?W_Ebeto3zS%;^Vv97=Z1jgYwr>qKxM#VI5*4eR2
z#nqV>vpEct`AUoc)bSOp+_)0wyvq#^^8G^&3U>BjgKEd_!CndyfnyC(QL&N-lywA$
zkN?p)vQSGGcqMG#m?biP{)wzoR_`=5znC+A9+?|ysYFOG7X4^;A*f&*OJ}e|q=Cv5
zlT=i*Zk~mGcVl8Egl=$mLJz2=kH981B$F;>n^lRl#Ao~U2`YAy^1m5Q^vW$$9Z19K
zlOD@8>b5UaEYsyeAeg|(NMPS!tkjX(th
zPPgMV03uyWJm@#Wv7L9ER(kg*zW6F7M6QgEya%u&1-
z3$18^qTSx0j}}@mIlGnCDF3cOLODHIJG*Hk^)Y`OIDHCoi?^i#1Z4saicta}RQT7H
z5Di1+=98$+hV*YP7j^XGbZ3{jx3SPuq{dGvJHnMFa!H(Bp_x^2vdi1yj3OQt+cbG!
z>|NT?{L4P#Km9Z4Wj509Wb~$M#N{ufC~=&ib?7Aq1_gF(5+aL+zt@6`vm>RJ#9Vfs
znk>={pL^Pr@^iyN^GsKGjfb{T+nu6V9%x>-IqG9lPnAUcOCzXM(7OaI(O<^Ke~gbg
z1(6_%^A?jrtWIWDj(HgU_r}M68;8Zkb!JJOKDM$d$X|u3?>CmKowt~LpgiBJBS;jo8+7n{MaulH0q%%(FR8V#0CQ9zOvf3fqOM&unlhH6XH
z+efK*SFOl&s18SpPaSTd*0*niB?dwH(NN3_o*poLOK3TzO6w8+s%%M#oUE~8Fctr*
z>e5A1ODFo^>1v}Jf=2SFV~7|9a$rn6gGI!|^w(120+|iSAyB9WgfS1$(1^Jmd?6;S
zFU`d2)$Mra!{1>2g7(7D#r*@MI{vk@%q?J@3JgZ?M72M+vm*d>#2XZbREYEzF>sbs
ze)@|#uG#{>hXzXFju>7|)(9{+r)a16JJ~L>qik$UL8C;dCO8$O{m~DCQV5C|H6#v^
zMk+W$#Vc<85@d7@IY7ik(B|
z#+n?tEtUy@`Md}zkSkWpzurrd@XD75JSv<$*ADW9sRvtNuXlf5kxQqzJk=9o7j%
zrq^EYEM;#TF7`cbyg@;4jDi+KH90jUwEZhS!`1a71nbSX`9%@nO}SkCF4rpGVVz#M
zEZpzo?Hz6XoY%(XsZ96L^i0gvATMxhNh>Q~cmyMdVB?n%k^!h&=-JrKG8-&&dbl9;
zT#t$>$g4}cfoI9v+sD8p{OXjQT<==Oaz^Wv#=%t4bBQ~g$*$E^#v>I_0Z$DT*ynGp
zDqA02)76&$+bjc7%U={1uXy7xz8M<{!(8EA|CuZ?vgxDZs|hd{U^Bqp1#vv+FK~l7
z)MR*nAT6``)xp{_^rdD~?Jc47(%l`gr*}EMJlh^4p*q6sK7Mvr*q?M_DI066=1aXP
z!ropkPotIv%gOp3&^B8wX(1yPt?ej4w>1z7#)UO{htS#o=B%FR6Fd!caTbE2ebrYX
zk;-{}i!Le!nlV?v?^GO4H?WbGF<#XkDJ>)O#Kxw`a$Hi**B%Dw)@-M~qBuJo%Az;q
zqdT6GZc0Xy7D<6zjW<*sjyLZZE+eARq?oiPYeLvFA3vF6=GG(!`sMY(W(XkXq?~nf
zfZR@7E5%4eE?jI15hWjhPeG~|hP*?78jaWX*fl*$6+w6>CM5+qOkP5fh-8m2X&w$S|`zKNl@}X)sVc*T%
zmy~(z6>}wYbFCljux_}mVHW$<9`^ea=0E~A%zHHEIqs37#Hy8`ynF2CaSIoxwKSR-
zPjHW3U0p%SNMbmYnv*kZ{7fJ)$C2EVm>6l}31_v>V{_3^CDvF)2#aHoEfMkRv1=?N
zgn_v{-Q7iOR~?y_*{(?fyRF^8U(?VY<>l*%^1ISng!pug^LVv+`~owJ3!lNlLd8M9
zN>+IWi#8bw9>2n_UejR75mEvhAixnzA?#mfI-8v5a*?n44fgn)YvQf0~ipW>w^+KLt>PE@@x*GknE
zys$j&jSCr!x~((y)}z?A!3+>qwQivu_uOh}I3}Hd@uR{IUkFc~w&fu={pVtwfRO
zxS@kXHf0}^cO)psWOn(PqzbK(rnf&1f3$WYHLHdkoD5YJg>Di
z<-NL=&0uo%ljQIZleCQ_H09;Cj+RVR)*H(oS7A%curt5~SF=ps+nDb29rbt(DPX&!
z^!kvAkC!{$uL~<+X1aNefbY#smM+}0inTd6pn+63JwN}vo7I^P
zX3gih=GcMIoBaPRW%?`BTCaGoP!=WzD8cjc@@W_uIow-ya}{$A4zO<%`-X*W8l7XQ
zRBk|1lsk5`>UuaQhweb2`At~h;^Laq-2a4=ntG|&NdLyUire#*NU_J_3wawn&QBka
zYZ(ZbMsDAFq9-59a=tH;%P=6PfVsK3-z}c25M;K}`0x)z^$qS7NrL9$9|053L#^pI
zHfuvh8C8rY1XK5rcSi>2P;%7T7%JagSgw%uRI`zY{jBMbq8~$G3;oUyA^hHWIGAE
zN`osl$N}vB^cfDGz-MSRKsy4nM6jCx%JzSSk;RQ9Y^QrFn;)y|%{CAaYWAzItZ6m?djsR`OnB?|i#6IG|&EUO@Rm
zS;8|jGgIG67uJ($#F;E`K#9e-|9NZmKgm-jMg;x>OBJw@{)7B|d$>*b@Aya`Q4+2R
zx}1y5G^}5Mit6rRi{4mV|2O73s(tXrJKzW}K{9Sw7`~9ljae`_f;rUkaN7X+XF+W~
zwW1aWN8YiTE-OyWO3L{?e%8oszge#AC;Wfmt(!_KmjD90)G;b({(M!48WY~3`~%h?hYMq7i=DlifeK-I-xGu8ki-YPJtx9_
zZhs}%wlTVhOV+8E4~`pgNlE{$@=x%&-Q{)D*skD`q!dkc)#xGFQc!c~KT%XvYy#Hg
zO;7T22Wd$_rI2;w`HA3lF9I~wQzWDLnqw>DEOw1CLGPUCbn@`*wA0kIdPn}kUkbKc
z`#bffrh0xI@K;>Cin+NGNYUX;bouJlo}^YkdbO$#;NAvV@BS>p%&$G|Hc}z77kV-l
zJ!(3aSv+pj(EVREC@p7H=%w^o(m~&i8v8k8(91pnBiX1=V*&Z<4A-sp^eEwU+ygx<@lS
zjccBS11q@nm|42oZSiH+rdd_bD51wh+~(E$%EtK^4SWwE1Bd1d-1-Y{AAIkn{?Lze
zm4qk2p)y27p>fg^H-FfQ2>FF13Yt1W3;K6~cG;AT9|>>)2U};4Ru8u990%sWT%f(1
zq12#<+`P#Ji9{Fc5`0OyKXg$D6a3+&T#9I296@S}{8HWf-?c;1H(XDRIo47Pm8lEU
z7o(wPdEPo_;*N-l0yeYz1=~5IATRv->YG2k*aPzHrjCS|Om^ldUjQ~pB$@ni=D{=Z
zvrm2h@WGK*XHXnjh@u&3XMqn6v?JzHL~I(ew|yI76#R?ZE=uC|ZG>On`IVD{
zqI;G4?Wr+ddR$cPr(-_tCT)<`=PpeJpc1fHutP%h!-DzVb5GYgvg^@`5zebXhe%>KyFve^TcIgDwYL`x2ecE$G6j2of%CGT!+izpvn
zWi=k5)DB7yZ&&9#0)zhe4v6GPkxhCHNaQAG#VBQ8n&-Ja-}l#>K)Quwi6#
zn_-(&iY1Ved|u}0Jb5Wk(p6aO?9o4UA7&saciNZshKjB>wkSG
z=&vfq{9YynXADre$Xqz7t?}~qn$b8r4Pcv1OK!|Gb|DTZXn;4cZ}srK!|y&8e*%E7
zlh7?s_%XFa?2~HLiKkf5SotF{Q5YmcqV0q6uW{_(wL=}`q1oLT(VIXYb$SU0zv?3z
z4xL^@ko9aZTf9;Ch~7wnDh3hz>*teJr|a7nz~Jv5r(vm$gVaPr9Pv_r6;MU9pOVBP
zf|);Y4jkhKr7q7f>cWelkBzssP2e4vb1hxGM!i>`hv2*S}u#c&a10u7$|?G>>#T37@sRc
zPx;S&LfYl9A!DllivQ?uR8U8sT&>cY|9ubi!+T#Hp$c-i4fuBRAN98=ItHM
zZ(AjXl?{a8UB--{7Yu3f*8XgMbdKn7s)!eA=Jcnr_Vh{7}I-iANa#{@0Z@8r)nC1ZG=
z0n5386AKYolXC;n@j_Sfof|Qyk|iM|2YFbRPkoIW7T+W1wJXb`M-N__S05i6LsmwP
zzymL^0t^?J`nAiS4l4Aezz%8&H67X%S%Uh>AxIb2*S`n4R|cmxo0HH+k}3QJpC~oA
zeWt(GQTr`z@2Y>b2jT78z3+cszGW_v7j=>$W_X>Ja^l0a;-x~>o{US+GEFBTY<#*U)W8V}iw~q3o_&s;~`SS9kS^pRv9pkSB+ZVpS0^6APqG3W(1_e{5
zs#kFszV`FctB)RQ-lGliHlNDAL@IaXVkX297}FWR-zXDJ`X(nva!Ahq+fJ2psUXPU`z63NXY(63x*
ztgE!QopF$Nn3hHhLx3@0r6t$6=TLO0%vbmt@*c1g-|AJPsA4FfiGGoi~WJ7x=!pTu=E-hA%0%C|xz|=i^&W
zp@W#5aQiL%%}sAB)2dP;6p+U%1eXm%xaMGvCdFEo3p!RnBvI|@>BFt{vGVj$O#18S
zSx(P?>97Vm?$V={p@dCcHz2FQL7$bCk*OIuKv&!x*@AN(@NaKT7>b{s^4z#`5zs~`
zN`A@UZf0Wt$jU%l*GBH_yyAkDLO^C>VqLOt?Z)|4d0vqst*&r)Ds-U~h-e6|UtmAO
zMU7GF8qx}L$?+ksx1DVW9@n}PL!3+fLzEo0rJiG}R*yY`++E>$utNl+^u>}Mq
z=DU;FkY`3uG~!U-PBIP&4Mhf;>2-?cme%5q6fumNm44C>OO&ygxPao|d~b-GJCs#)
ziIugflL_T_W?wqX9p4dbyjd$%DAA`?U91W~;SY}U_nVuMoe>5qZw^-N+Er-M)6>=b
zAJEWz2GeCtE1kwfcam6eSlHHVn%tmll*^LP%a=DtO|Q=+h0w7O+<@~JauzfDLY?%d
zu%93=7bEVH^-i5i!nYc`9lF)1gN5}z^%D!6e2WA$GrtpF=3Q~IScks$*c5!G3rHPx
zT|>QPRY~~$PCk=THhHqc5qoM)P0hM`YG#+oi^juwpTIY&%R;oo+Apj49k#DmtwhZF
z?XeeszuPT{+k7(7+M38sYn94=_{JfIC%NSjW~`JNkoo~V<{`ns
z>z%I2H|-VJS=_X_L!7-K>I0Qo^O$RwgzJ$`@1rrtGv^-%;jd_MeZbxb+Dc&Hwd$IV
zJpD;Mp>P!~Tqzdd+vz3mh;F`rxcYd6ZBpHIdAR<|oH5_|Wq+HnmaxKHV2gm{aMpUj015sei6(aouOP>`P0{5M}Aw3y^kz+EIzbn
zE=<2K?N3A`IQK9OPmj8539&H}EhTS{8MEO0PTH+z|7SpY0
zuW{t5CQ2pi8o{b1?_kX<8}E)OwKOEP#y!7huEw`|y_VD)$_iU3y+64uraxreyteYOd1
zT+uC3yW@8yrdn|2$&>Z<&-==M-cQ=`R&QTW^fEDDFYV#8k5dZ^scl8+X=&bY0Mmx7
zB<8&p1YQ0oYao=*Pt^7@X0Zs?z%cvAB0Lz#mX
zGl3!QuLygHtv@MA{@W`wA}{x-Z{x@P$dVF}rcxC$>7Pb3};nh+0Ru
z^C5F;R3i5HW_-LFDwoT#qi^4H_>6MFx2!e!i>u|Gi|!+TdqbGw@u;=wpAR_a@>&zNhb<7glX|yA?9NmX#?h-T3~1*X-vL
z`0XCEN4Eny#UE!gUHUyHonU`ZEsFOhy)U-~<*Fq~q&WQ1Y*GDJ~Bz5-I~j
z*6ga?vLx}vEwP26@_?DZ%9fVv4tr>GM`SJqD&r%oaQE*$+_}ukX1hM=jeEn-PrH5C
z`rVSbl8=wn>z>(m-wNB?&NUPzX4?dC5@u`)9upO-;a%yAYkCKpR$})0TbDmaMTvFy
z>KqC`$0ow>1lyHvv)iy=yRwZWCM-kEBe^(lM>t&_kW_8)fyTRz^Q&s&H(qF7_=qjWk~+%aFsn_!_Ww
zcv`wr@ocs6=I4Glq8Vd&hceAf8hj0a-@vC5JZ3&a
zg#R4BHHo^{pt}-dJ9gj1fR>l7xM$a$h(J)2oMhNm2O+FtcaUT?cGBs}ZLv-8+o=jT
zJ~mlBoUiD=6WXKfY|1?O_X{U67<1(+Zq$y7;+
zuw3B8SF_e#se6P!;K#Qz7$W)%Ld;@#Y$xZ~N<+(Pr`)k`{<>AD+zuCS08x>SyH4889+4<_
z>F9hC>pV8Lx9i5o1CU^upRFgE_>sE0fMeA`=ya;=o8f{7>gwv^Qj)WE&9Y$s4=&eU
zorQB@qj~JFzcV2-OMw%2tyX)RS6tld8*YsiGeN>2AW4Yks*e})`2PL-borXUHu&~P
z@%2lM@*Vd$w^yw_Y7etYco~gqrzWpmd*hXoLVa?yQ;TTzsXjX~gWu+{nSbH2d+&I=
zM~ZO{M4n-=ECzBNJihbL)EA0|y#NyJg%n0@y3&_5wO+E}+dnRjINP%Su88^m{e>u_
zYR)m+@2Qmth%O5?l}F9xoePXe*y`)68lK9?1QEd(u7i6O6?b|n>@BGzOE&lOs;m7s
zH!b@0bzmwyhh&hh1uJ<5bmWe~&bJv+wltD>m5O!Yy;qA4NE85ia=OMmk(0wkiQu*Q
z5}5nGyBqzhjQQsDgS2$N&`p=q(@<*^wMQt2242$V;h|eUg+j}rADu<*&
z;HrmmW>M**-OWu<-QeAhp_`nID(|Y+xD-`neD8rdYgDmu?#PCDah%P{2a_V9VUMp{
zd-~(2&dZ4ExT*=~1w=8EL2FOxE2U=8E=DjkTtOnrcT_*PBNPU0-`HD{iV3nwltOw+@D;WPh!wh{j`xROyZ`?D;ND;f_Jla)?2+
z(3NnN%yhVIy@bwo;Ya0GQ(M=8vW(26mBxzsXn%;k2@++4yg;iDDKAKqyWvA5sWXl8
zB}EdB@M)BJ{{J!em0?wGYr7LrKoJp9Kq&>JLqNJDq(eZuK|s2t!Jtz*Cf(hgA|>73
z-Q9i0ME726@4fbS?R~!UNg`a*&4B9>I#uSAfXgDPeK0
zIx+Ff{&F|4uYLB`GR>&|huggXoMxb46?RBi+PB&|(%ybS2cxrWPXV*sJyCq8_lUr+
zhLEM48eA3&3U(;_j~`Szn}cNuKW%JOhH&vPUdZncHjd+bt$%H9PN$TEnSQzfRa9+e
z0$29rR6nv#<9XJ!(wnz$zqNmS_|Tm}YrzTd@xE-=vUlxgh#KupvIcbEcKX%Tb*+Ls
zDV;iIYpoPu52H5MVzgPW+xz6?@Yjx3}t>T#q&VG{ZWz5e$ByPutP*a
z9|VRW@FnYl8S;6tj=N3az*QG0KPTZp)FSA4%lGFfGdnuv-G7JMTiUZXxx4)-%I=zR
z-lA#H5vY|xYgyISZjlm35eARPluAjPbRCU0O3&&F7J7Y8J)iByZlp?Pw$-Qv*lalM
zF9;+#5APwI3HEdh4_6A8brH#{fI|m(a`$egzExAIcnDTrN9T6dROMb_I6&JL&S!T%
z0n?k_1Sh1nc0(>xQdqgr`&Rg^yyUB=ev7>=W3b-$Q@?qfRB*ns*&I~%7hX8@hBBkE
z^(}X?-$6kkqT%|yi$S2#A4c8CKkVp!*I-LQTsT^6ulUJ9K(&vrAC9oNs>R@Kc2MIF
z9AL$np*azqF|5|N0`;r3RAzHO*n44)C0g@ytm-NqL3**J)deys(&+3~$ROZPYa~Bm
zNY-#Lpak4ZETJ*t{I=zbmKK+UgeS8t1gom;!!wfD-2P5T_a8iA{B}I$LXdu5J~3-l
z`)`W>@Dyj&7A9+hhkj3)msa%*wkj(OmSbIS9TBj+j-KmnABz_3Dlf__*&UGaVX-6$
zU#UVe@Ah=4C@{nlRTCDzbA6$AH_+w{1_Mi&%xGE!mvNM=F>IUibZ@z05R)(ZGiX2%
z{m(!{jv$)KC^S^3Y$79=boZ@;naqduMFy_ice1kP3oBADd4$f7+Kis(qKub1b%@gD
zz2A(wu5@-iWD9YkfCeTB?4PDpP1y7J!%iw^ZvWhp&?8+PDWxNn25k>wIK(EcTbYl>
zht`)a46=;p7mX1#3dfj~jG;7XkpwX^xlmjx-J$U|4hEZkBNottH%L(xLgof!<@I1m
z>O47{H%Yw@;``A-+n-+4bNvUfn^(M=yW1RqGp+$&X?nc%B3YH)sxpdMHP`V_*8XBT
z=V8wsup)D4qM#z4o1KNddy5wF3r*iD7x*;E>y8;DQ-ERp%ZexLV3
zQ|K+JYyNuYu(}KhBl3K+ukJ)dZ`=Eu)#j$Mlez&(uoFV#;lRyrfO8swgeL~J4FB)G
z{8Z;lI+PwE881ugnw99WfKINHnnC%Xq_{;osraJM%}XIaUwh5#Wgql0+q;hfBe>Fb
zE=P{MXfyL=)X7P9piWC>#3`1fPU-JAR!$tCJ`{}5G{|2nRfX3BXPY5AF(}YkJ7@5Z
zXhPcL#t9RJd1f}%^3-+YgO^EgM%h4l%mKP1JvRhXA2lQg>G3F
z+&+K_wtKk6*|vZv?!Q@bsN89);s_7;u@&?c^`QJ*ILeO=2@4}H0&9dki+CzFX_}p!
z{!NEm_|Z~q^Lu)_tz8##9|bY!E^?g9m7Dlj{)oa-SENqxks!!DJI2oPn|Smzv*S#B
zWZh+N!2=m}(?B*;v!G0p_otnv=n@|Qt^}VaGO7^0QTABnzom&SRo8wh4&lFRDcMi|
zGGZ1ZjlxGo2VjxW%R#I#oull?HbU#US#u}6v$APB4{gCZ8Io(=jl*f+${fXPs2e==
zZDgF(d{fo5PFZAl-Y!A<(m5brJzyVpkq3qjoep~;F|~quIn^Da2AL-%O#gL7rU4
zdP<0h3_80OQRhesgT>u{M=rj9fm}A${};$*?8-+q`f!xAI!>G*B}Hcfe<=9N7hY)@
z^=Ay0NVK^M^*tjjL)ofG0|%V{jBbjH(E%__?SwwD+a^166*QY(p~L0A;*_LT69avW
zM8v7iy~WkAJ^$wAbeDC(Rd4SuU}(nyAV@EBA~$)FuJRZoz%Q^;Yl7Y271&wT8T0(l
zn1?w*mITTO*sdb9
z@sbckJAgM-8c=qfY46XHWywSvkkOyo&rR>G*?@6!P}IGGG1a}d5?f@6x^~S%#(F+k
zI9yw_TW&d}v%K&CY>FLt>~PC1Kc?(vjdEkmnN0MSNnQh&S7DjpRe~pPj8r((9Zy4F
zNUjd!o9ej;ZghH7_$RSuuRFpX;Nc(+XT|PUejNG(<#c+M5o{>hgub^U`^QNp#D!yc-_*;!<%4J5N1usp)
zdGdgb8;?j}LR;p(*=QOOgRa>8%q$-WOLBE}oeet}wOpFp-tMksynd4-w|@aV0>xvy
z*t4buQZntxJK49ZMaTNyDHZq7+e|rvuuh@95OSmQ6*}Ou`-Jnz`3w#Fbs3Zw&%ayh
zdI;aak%St-DqDFU4%GUO)(+bUA=SIhILTbcxNIQP4UE;8_Se!~_Ada}Bz(0$$j*LO
z2DtO>o6S86x7=RAH7k`gWEd)Xb;t^`gGTesiT1Iml1<~-0kE*LuSUb?5NdY!bKHqL
z-aR~=HB!Tmjf&!aZk@C2nZyRDaUmg!RvRN;0ZgWI(z1^&muZs|6M08n`G)6M6f6&`
zQjD&b8T4@dTL$fHmO7pUrHZ|<6Cn&lI78?PaI4v$1AY}Bm&YE<@2{*(yvrKw5Q`KC
zM#{$i37m)K)iIZN1YUN~9*-=Qs(
zW&n_b9uhS7_hY!YaKq%JM;&5N3*FqaY(G#A9RZzft4vx?vAzs&go%ia?(hmu1D^8f
zDHA*8Eb#D3bE~Vu*UpzaM|*SIF4s5)B~ku(Y<&q%$bh(s@%DH(hU=062@QXtS1>hc
z&;XE&NB}_8p@RV4FU+Lzsh|7#R!w-b+EkdG_24zwSbv-!HMO*O09*62rKwTY86n;Y
zGjIXnupeRY+1aszij*dx>@UEPb?&ln5*wg(;Br}nco0OvlD2_m%j{KwcF15%C1y)~
zRMs^0`q7|4NyBbA+qMWz$PTzwNH}*OHq&^h16MYfxZNPsrrCIDWugN}omL98i6xwS
z7U?cZTE-{qh=x=;HC2~I!SPlewlM88{3&lJAo2?W`elLBL{^jG8
z80f)weiF`?Qjzyw1HTxm_1IWObu~3v*}ooARL9kAvRJ{vt@s#i!#{e2nJArs&FuW;
zMNXSWJTPXIOUX4GOk>38;^qtf4bl{VboMt$D@;CBUNq$3>@_F}tFncF#@^TZ8dh_D
z_2fDZ%;A7`gTK!=VszA052tfg^K~XCD{MaAXX)$9M76~Gn&3URzZ`R9*MQ2CZ4VQG
zmUwHLH+cEtzTO)kr)gPBkA)3Cs)Lf)>}&A-1hg&HioxU~b7?SSd8~xx{*cP0iDDU=
zf6M$@wQ_9j7f_aiVU3A!R=X`;XGzgKf`1EaNvX)mD;)3TZG0zKH-e!PDbSZ-^VgTN*arX4P{Q?q;?k<2d7Y4e1Z0Vaie
z2|8*}`ZL~fNN#@oCrDFM()FTG|M8US=H8bk*|^x)r