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 001/104] 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 002/104] 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 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 003/104] 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 004/104] 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 005/104] 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 006/104] 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 007/104] 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 008/104] 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 009/104] 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 010/104] 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 011/104] 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 012/104] 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 013/104] 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 014/104] 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 015/104] 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 016/104] 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 017/104] 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 018/104] 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 019/104] 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 020/104] 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 021/104] 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 022/104] 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 023/104] 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 024/104] 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 025/104] 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 026/104] 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 027/104] 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 028/104] 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 029/104] 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 030/104] 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 031/104] 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 032/104] 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 033/104] 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 034/104] 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 035/104] 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 036/104] 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 037/104] 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 038/104] 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 039/104] 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 040/104] 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 041/104] 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 042/104] 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 043/104] 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 044/104] 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 045/104] 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 046/104] 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 047/104] 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 048/104] 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 049/104] 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 050/104] 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 051/104] 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 052/104] 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 053/104] 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 054/104] 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 055/104] 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 056/104] 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 057/104] 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
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