Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RFC: Make an exception for C #1078

Closed
romanbird opened this issue Oct 1, 2022 · 23 comments
Closed

RFC: Make an exception for C #1078

romanbird opened this issue Oct 1, 2022 · 23 comments

Comments

@romanbird
Copy link
Contributor

Problem:

For Core Systems, a strong understanding of the C Programming Language is expected in a way that is not currently reflected by the curriculum.

Duration:
1 month

Background:
Although OSSU justifiably doesn't favour teaching languages, I think an exception should be made for C due to its key role in the teaching of core systems. Right now, despite being a soft prerequisite for Nand2Tetris and a hard prerequisite for O3EP, C is only implicitly taught. I think making an exception about language courses (spirit of the law etc..) in this instance would lead to a more "complete" curriculum in line with OSSU's original intentions, and minimise the risk of people picking up bad C habits from low quality resources or skipping Core Systems because of a lack of appropriate preparation.

Proposal:

  • At the very least, open a new discussion on the best way that C should be taught.
  • Add the outcome of this discussion to the start of the core systems curriculum as a new course. (alternative given below)

Alternatives:

  • Don't label it a "course", but add a one-off "section" to the Core Systems section explaining the importance of good C preparation and link to this considered resource.
@FaselAhmadwani
Copy link

C should be taught

@waciumawanjohi
Copy link
Member

Unlike the other courses in the curriculum, OSTEP has a course page dedicated to it maintained by OSSU. On that page learners will read:

Prerequisites
This class requires a lot of experience programming in C. You should finish one of the C books listed in the resources below before starting this course...

and

Please don't try to learn C from sites like GeeksforGeeks...

and

We recommend learning C by working through (the entirety of) Jens Gustedt's Modern C, which is freely available online...

and

While the book above is our default recommendation, we also recommend K.N. King's C Programming: A Modern Approach as a second, more beginner-friendly option...

and

Additional (optional) resources include:...

To me, this sounds like a robust preparation guide for OSTEP and C. What do you feel is lacking here?

I will note, I don't agree with your statement that knowing C is a soft prerequisite for Nand2Tetris. For example, from the course's page:

The course prerequisites depend on your objectives. If you wish to build the computer's hardware platform (also known as "Nand to Tetris Part I"), you can do it without any prior knowledge. If you wish to build the computer's software stack (also known as "Nand to Tetris Part II"), you need programming knowledge at the level of a typical Introduction to CS course.

@romanbird
Copy link
Contributor Author

romanbird commented Oct 1, 2022 via email

@waciumawanjohi
Copy link
Member

It’s completely unlike any other prerequisite

Why?

Learning C well carries a significant time investment, one longer than many of the courses already on here

Learners are reasonably interested in knowing the time estimate for courses. I'm would support a re-examination of the time estimate for OSTEP in light of likely needing to do prep work.

The curriculum is meant to reflect the requirements for an undergraduate curriculum in Computer Science. I'm not convinced that requires learning C (but I welcome contributors to use our curricular guidelines to prove the point).

@angle943
Copy link
Contributor

angle943 commented Oct 1, 2022

maybe for Duration and Effort we can have something like 10 - 12 weeks (10+n - 12+m weeks if you don't know C) and such, to make it:

  1. more apparent that if you don't know C, you need to take a course on C before taking the course
  2. give a better estimator for those who are using our Duration and Effort columns to track how long it will take to finish OSSU

@romanbird
Copy link
Contributor Author

maybe for Duration and Effort we can have something like 10 - 12 weeks (10+n - 12+m weeks if you don't know C) and such, to make it:

Yeah something like this is a good idea (I think this could go further though). But its more than just C (like the C covered in CS50), learning C well enough to do a systems course is a significant project and more than a quick bit of pre-reading.

I'm not convinced that requires learning C (but I welcome contributors to use our curricular guidelines to prove the point).

Obviously it doesn't fit, but I think an exception should be made (like the one made for CS Tools for example). Right now we've got a weird middle ground where we say C shouldn't be necessary because of existing principles but then implicitly expect a very high-level understanding of it. C doesn't make sense as part of CS2013 but it does make sense in our adaptation of CS2013.

@waciumawanjohi
Copy link
Member

C doesn't make sense as part of CS2013 but it does make sense in our adaptation of CS2013.

Which in turn is tied to our choice of an operating systems class. OSTEP is the best open OS course that we've identified, but we shouldn't create arbitrary impediments to replacing it with something more suitable in the future, nor should we create artifacts of its inclusion that would outlive its place in the curriculum. Including the material necessary for learning C in the pre-reqs of OSTEP rather than in a separate course in the curriculum, accomplishes these goals.

an exception should be made (like the one made for CS Tools for example)

An important distinction is that familiarity with version control (git), debugging, etc are skills that can aid students both in most future classes as well as in essentially all work that relies on a Computer Science degree. And to be clear,they are part of the core curriculum in CS2013.

But its more than just C (like the C covered in CS50), learning C well enough to do a systems course is a significant project and more than a quick bit of pre-reading.

I'm not sure what this sentence is in reference to. The OSTEP course page reads:

CS 50 doesn't quite cover enough C for OSTEP

As my thumbs up above indicates, I support angle943's duration proposal.

@riceeatingmachine
Copy link
Contributor

Unlike the other courses in the curriculum, OSTEP has a course page dedicated to it maintained by OSSU.

This needs to be made prominent, somehow I never knew it existed.


Otherwise, I am in favor of this proposal, simply because seeing C as a prerequisite to OSTEP helps students plan the time commitment it takes to do OSTEP.

In general, I think for a lot of the courses present, we can offer less rigorous alternatives for people who would otherwise skip that topic altogether considering the utility to length ratio. For example, calculus so far has not proven particularly useful for any of the topics it was listed as a prerequisite in (machine learning and math for cs), so I could have gotten by with 6 weeks on Khan Academy instead of the 26 weeks of MIT's courses.

So, for example, we can say

Operating Systems: OSTEP for high rigor, requires C (read this textbook). 200 hours combined.
Low rigor: this course, 40 hours.

We can do something similar for Core Security too and reduce courseload.

@waciumawanjohi
Copy link
Member

This needs to be made prominent, somehow I never knew it existed.

It's a relatively new change. It's about as prominent as you can get, if you click on the link for OSTEP on the main page it takes you to our course page, not directly to the class.

we can offer less rigorous alternatives for people who would otherwise skip that topic altogether considering the utility to length ratio

In general if there's a low rigor course that actually covers requirements, that should be the recommended Core class and the more in depth course should be in Advanced. RFCs for replacement courses that meet our reqs and lower overall workload are always welcome! (There's a reason that the first line of the OSTEP course page is "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.")

Low rigor: this course, 40 hours.

Heads up, it looks like everything but the first week of that course is behind a paywall.

@Alaharon123
Copy link
Contributor

Suggestion: Make the "strong C programming" text in the prerequisite column also link to the course page so people click on that and see that we have suggestion already for how to get strong C programming rather than being on their own to figure that out before clicking the OSTEP link

waciumawanjohi added a commit that referenced this issue Oct 2, 2022
From a suggestion by @Alaharon123 here:
#1078 (comment)
@waciumawanjohi
Copy link
Member

Suggestion: Make the "strong C programming" text in the prerequisite column also link to the course page so people click on that and see that we have suggestion already for how to get strong C programming rather than being on their own to figure that out before clicking the OSTEP link

That's a non-substantive change that makes a big improvement. Carried out!

(To be clear, that doesn't close this discussion)

@riceeatingmachine
Copy link
Contributor

@waciumawanjohi @spamegg1 @palladian1

I found another course that teaches C that might be more useful to us than the one listed:

https://cs.uwaterloo.ca/~plragde/flaneries/IYMLC/index.html

It's a creative commons book and it's meant for people who already know Racket based on HtDP.

But it does assume that you have programmed in Racket before, perhaps in a course based on How To Design Programs (HtDP)

It uses "C Programming: A Modern Approach" as an optional textbook, which is the recommendation on the OSTEP page.

Not surprisingly, the textbook ("C Programming: A Modern Approach" by K.N. King) that I chose to support the coverage of programming in C in our CS 136 course was not written for students who have had a first course using Racket. It is written in a self-contained manner, assuming students either have had no experience with computing, or have had experience with another imperative language. For students with only Racket experience, some parts will seem too easy, and others somewhat mysterious. The chapters have to be read out of order, which causes further complications.
The next sections list ways to match the King textbook with this material. If you don’t plan to use the book, you can skip it.

This course seems like it "fits" into our curriculum seamlessly as it builds on Racket and HtDP. And it's also shorter than our current recommendation (Modern C).

@waciumawanjohi
Copy link
Member

I found another course that teaches C that might be more useful to us than the one listed:
https://cs.uwaterloo.ca/~plragde/flaneries/IYMLC/index.html

Off to a strong if VERY slow start on Goodreads. The author seems legit. As with any new resource, quality is an important question.

@spamegg1
Copy link
Contributor

spamegg1 commented Oct 2, 2022

@riceeatingmachine That's nice, but really far from sufficient for OSTEP projects. You should take a deep look into xv6 code. It uses a lot more advanced complicated C than the book you linked. There is simply no way around the roadmap laid out by palladian (who used K.N. King by the way). We had to go through some of the code together for hours to figure out what it was doing, because it's straight up written in assembly, or, due to memory limitations, bit-wise arithmetic ("dark magic" in palladian's words).

I'd be fine with adding it to the OSTEP course page under "Additional resources" as: "here's a nice place to start, it's written by the How to Design Programs/How to Code people, uses Racket to teach some of the ideas (which you're familiar with), but it's far from enough, you'll still need to learn more after that."

I'm totally fine with increasing the time estimate. For OSTEP, there is still a TON more to learn after C anyway (learning C is arguably the easier part): how x86 assembly works, how xv6 works, how Makefiles work, how preprocessing and linking work...

Reporting from the active front lines:

I am more and more convinced that Modern C doesn't really cut it either, K.N. King seems absolutely necessary. Some learners on Discord reported difficulty understanding parts of Modern C that's written a bit too tersely and left up to the reader. We had to recommend Modern C because it's free. Requiring a non-free book would be... I don't know. I don't want to deliberately push people toward piracy.

Making an "exception" or making it more "prominent" or whatever is not going to change anything either. We can't do anything about the people who come straight to our Discord and ignore our Github page entirely (or look at a really old fork of someone). I had to direct quite a few learners: "please read this page first, it has everything you need" (even though it's pinned). Some Discord users don't even know what Github is, but somehow heard of OSTEP and decided to do it. 😨 The world is a weird place.

Honestly, I am starting to consider this stupid C/OSTEP problem near unsolvable and I'm starting to get depressed. Maybe someone in the future will make an awesome super cool online operating systems course in Rust that's gentle, self-contained, auto-graded and easily doable. Given the personality types of OS people (and the overall difficulty of the subject) I'm not very hopeful though. OS knowledge is by its nature very arcane, poorly documented, hidden in academic offices, or spread out to wikis, old webpages from the 1990s, and the heads of a few developers who are extremely introverted. Hack the Kernel has graders, but it has low quality lectures, code base is 10x the size of xv6 (around 40000 lines), much much harder and requires a ton of MIPS assembly and quadruple pointers! We're probably stuck with C/OSTEP for a good while.

@riceeatingmachine
Copy link
Contributor

@spamegg1 What do you think of this course? (Just see the topics)

I am more and more convinced that Modern C doesn't really cut it either, K.N. King seems absolutely necessary. Some learners on Discord reported difficulty understanding parts of Modern C that's written a bit too tersely and left up to the reader. We had to recommend Modern C because it's free. Requiring a non-free book would be... I don't know. I don't want to deliberately push people toward piracy.

Regarding this, please check my RFC #1079 I think it might be the way forward.

@riceeatingmachine
Copy link
Contributor

I'm starting to get depressed. Maybe someone in the future will make an awesome super cool online operating systems course in Rust that's gentle, self-contained, auto-graded and easily doable.

The reason I bring up the educative.io course above it because it's made by the Authors of OSTEP (Andrea and Remzi).

From this source:

This course is great for you if you’re new to operating systems, or even if you need to brush up on them. This is one of our more robust courses and will dive deep into the inner workings of an OS. It is extremely detailed and covers essentially everything you would want to know. Everyone from beginners to OS pros will find this course extremely useful.

The downside is as pointed out earlier - it's paid.

@romanbird
Copy link
Contributor Author

I am more and more convinced that Modern C doesn't really cut it either, K.N. King seems absolutely necessary. Some learners on Discord reported difficulty understanding parts of Modern C that's written a bit too tersely and left up to the reader. We had to recommend Modern C because it's free. Requiring a non-free book would be... I don't know. I don't want to deliberately push people toward piracy.

As someone who is fine with using paid books stuff like this is kinda worrying, I was planning to use that book! If something's not sufficient we should know right?

@spamegg1
Copy link
Contributor

spamegg1 commented Oct 2, 2022

If something's not sufficient we should know right?

Don't worry. It's just my opinion, I can be wrong. A few others said Modern C is fine. We can't really know if it's sufficient or not. Very few have completed this course. So it's adventurous territory. We are just doing what we can, to the best of our knowledge. King explains things much better (but it's much longer) so we added it as the best recommendation.

@waciumawanjohi
Copy link
Member

I want to bookmark this somewhere and this thread has become a bit of a discussion about the suitability of OSTEP. Stanford used to have a course CS 110: Principles of Computer Systems. It was a precursor to their CS 140: Operating Systems course, and followed CS 107: Computer Organization & Systems. (So 107 -> 110 -> 140) More recently Stanford has combined 140 and 110 into CS 111.

That history aside, there exists a course site for a summer run of CS 110 and a youtube set of lectures from a Spring run. There are assignment, labs and assessments, where labs and assessments have solution pages.

The class is all C++ based and the prereq course is all C based, so it doesn't solve the issue at the top of this issue. But wanted to point it out here since all the OS interested folks are getting notifications.

@romanbird
Copy link
Contributor Author

I want to bookmark this somewhere and this thread has become a bit of a discussion about the suitability of OSTEP. Stanford used to have a course CS 110: Principles of Computer Systems. It was a precursor to their CS 140: Operating Systems course, and followed CS 107: Computer Organization & Systems. (So 107 -> 110 -> 140) More recently Stanford has combined 140 and 110 into CS 111.

That history aside, there exists a course site for a summer run of CS 110 and a youtube set of lectures from a Spring run. There are assignment, labs and assessments, where labs and assessments have solution pages.

The class is all C++ based and the prereq course is all C based, so it doesn't solve the issue at the top of this issue. But wanted to point it out here since all the OS interested folks are getting notifications.

This looks really cool! I'm gonna put this in for after 3EP so we can see if it's worth adding.

@spamegg1
Copy link
Contributor

spamegg1 commented Oct 7, 2022

@waciumawanjohi I think people are OK with the suitability of OSTEP course/book overall, but not with the OSTEP projects and their prerequisites. To do operating systems programming, there is simply no way around several hundreds of hours of work. There. Just. Isn't. The course you linked seems nice, but you're right it doesn't solve this issue. It looks just as hard and time-consuming as our current option.

(I also think that "the C issue" is a bit related to the reverence C has, and people's desire to see it "represented", but I'll leave that on the side.)

There are many universities whose operating systems courses don't require lab assignments. There are also some whose do. Usually the most prestigious ones (Stanford, MIT, Harvard etc.) I don't believe that lab/programming assignments are necessary to fulfill our curriculum requirements. I've read through CS 2013 guidelines (page 135) and the only part that requires implementing or programming something is "Implement a simple device driver" which is an elective.

If we make OSTEP projects optional, we can side-step this C/x86 issue. That's what I suggested in #1083

@spamegg1
Copy link
Contributor

Learning C well carries a significant time investment, one longer than many of the courses already on here.

Reading the textbook+HW and skipping the projects does not require much C learning. It's the projects that require it.

We currently say on the course page:

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).

I suppose the issue is that nobody reads the course page carefully. Reading is super hard! Everyone just keeps on scrolling.

I wrote a draft to clarify it here: comment This should make it abundantly clear that you don't have to learn much C or do the projects.

@romanbird
Copy link
Contributor Author

Happy with how this resolved 👍

JulianSpring added a commit to JulianSpring/computer-science that referenced this issue May 16, 2024
* Add security courses on a provisional basis.

See ossu#639

* Include link to HtDP book and problem sets

* Update readings.md

* Added link to HW for Intro to Parallel Programming

Intro to Parallel Programming's grader is broken, it's impossible to submit programming assignments. It's also impossible to compile and run the code on your PC, unless you own an nVidia GPU. Thankfully some nice folks on Github created a Google Research Colab page where you can compile and run your homeworks (unfortunately the Final Exam is not available and probably never will be). I understand this uses Google's GPU sharing.

* Remove dead link

* Simplify table of contents

* Fix spelling mistake

* Links to prerequisites courses added

* Move courses to advanced

Change the Haskell course suggestion. A big thank you to @aryzach for prompting the switch.
Move courses to advanced programming. See Issue.
Closes ossu#669

* Move curricular guidelines out of extras.

* Clarify that CS2013 is the curricular guidance for OSSU

Resolves ossu#679

* Add The Missing Semester

Resolves ossu#678

* Replaced Hack the Kernel with OSTEP

Implementing the proposal from issue 690: ossu#690

* Add note to Changelog that curriculum is > v8 and < v9.

Resolves ossu#674

* Replace LAFF with MIT's OCW Scholar Linear Algebra

Resolves ossu#693

* Reflect addition of new Intro section.

* Make note more prominent

* updated Software Engineering prereqs and added relevant FAQ

* Update README.md

* Update link to curricular guidelines

* Remove link to dead domain

* Update link for Compiler Construction

* Change Programming Languages Part A Prereq

Resolves 716

* How to audit the intro to programming courses

Resolves ossu#724

* Updated PROJECTS.md

Finished Specialization, using its Capstone as Final Project

* Update README.md

* Update OS Course Version

Resolves ossu#707

* Update README.md

* Update README.md

Removed LAFF, changed Parallel Programming

* Update courses.md

Moved Intro to Parallel Programming to Extras

* Update readings.md

Removed Sheldon Axler's "Linear Algebra Done Right (FREE)" because it is no longer free after the end of July 2020. It was made free temporarily due to COVID-19.

* Python for Everyone > Python for Everybody

The course, book and website all say everybody instead of everyone. Just a little nit I noticed.

* Switch Python for Everybody link

Students regularly ask in Gitter how to audit Python for Everybody (Py4E). The instructor of Py4E has created a free version on a standalone site. This has been the alternate link. Instead this should be the main link.

* Replace previous Probability course

Added a new probability course called Stat110 from Harvard, and moved the previous one to the extra courses page.

* Update README.md

* Add new question to FAQ

Tighten language on some FAQ answers

* Rearrange order of FAQ questions

* Simplify Intro to Programming

Resolves ossu#763

* Raise duration estimate to match Coursera's estimate

* Course listing should match course title

* Update .gitignore

* Use Stanford Database courses

Stanford Database courses had long been part of the OSSU curriculum. When Stanford pulled down their platform Lagunita, OSSU had to find a new offering. With the Stanford material back on edX, OSSU should return to this high quality offering.

Resolves ossu#718
Resolves ossu#709

* Change chat from Gitter to Discord

* Add 'Discussion' header to Core Math and Core Systems

* Re-add newsletter link

* Remove unnecessary coursework from Advanced Systems.

Resolves ossu#772

* Delete reference to cohorts repo.

Cohorts repo was closed after an RFC.
Resolves ossu#780

* Removed redundant note from Advanced Systems

The note was referring to Electricity & Magnetism classes, which were removed.

* Update HELP.md

A server admin will have to enable the discord widget in the settings for the discord server

* Update help.md

[#173862703]

Authored-by: Waciuma Wanjohi <[email protected]>

* Replaced FutureLearn pre-calculus with Khan Academy

- To be more consistent with our Khan Academy recommendation elsewhere in the curriculum
- also some students expressed confusion with the FutureLearn course

* Added link to Interactive Exercises from Kurose-Ross textbook website

* Update FAQ language and order

[#173862703]

Authored-by: Waciuma Wanjohi <[email protected]>

* Use Discord Widget

[#173862703]

Authored-by: Waciuma Wanjohi <[email protected]>

* Update math prereq columns

* Changed Py4E hours of effort to match OSSU expected weekly effort levels

* Removed errant submodule added on prior commit

* Prerequisite section mention of high school math links to FAQ

* Remove dead link.

Resolves ossu#795

* Move the Missing Semester later in curriculum

Resolves ossu#778

* Clarify that OSSU is not working in partnership with any org to offer degrees.

* Fixed Advanced Systems dead links

* Match recommended calc to course listed prereqs

https://www.edx.org/course/introduction-to-probability

'Familiarity with U.S. high school level algebra concepts; Single-variable calculus: familiarity with matrices, derivatives and integrals.'

* replace dead link

Fix for [computer-science/issues/825](ossu#825)

* Update Newsletter Address

* Add link to completion estimate chart

Discord user crokei26#1613 created an initial version of this great resource. A huge thanks to them!

* Removed Formal Concept Analysis (fixes ossu#818)

- fixes ossu#818
- removed `CUDA` and `GPU programming` from topics (left over from before)

* Direct Py4E students directly to the lessons

* Switch Math for CS from OCW to OLL

Implement ossu#832

* add two new books on systems

* Add section to FAQ about alts

* Sharpen FAQ answer language

* Remove direct link to issues

We often get issues opened that are empty, with no text or description of a problem. This may be because learners follow the link from the Community section, and post in order to interact. By removing the link (but keeping the link to the contributing instructions) we can hopefully direct new learners in how to interact productively.

* Move CS50 to Courses/Extras

Resolves ossu#833

* Remove prereq not mentioned by course creators

* Remove topic that is not covered in the section

* changed the discord invites 

Changed the 2 invite links (one inside the svg) to direct to the #welcome discord channel. Also changed some relevant language.

* Update Game Design specialization

Bump to new version

* Include edX financial aid information

* feat: Change order of database courses

* Update issue templates

* Changed link to Effective Thinking Through Mathematics course in extras (issue ossu#870) (ossu#871)

* Changed link to Effective Thinking Through Mathematics course in extras

* Delete .DS_Store

Co-authored-by: Jonathan Hustad <[email protected]>
Co-authored-by: waciumawanjohi <[email protected]>

* updated Prolog link, added PDF version (fixes ossu#868) (ossu#873)

* updated Prolog link, added PDF version

* updated Prolog link, added PDF version

- removed `Text` column, added footnote instead

* updated Prolog link, added PDF version

- parentheses

* updated Prolog link, added PDF version

- added link to book source code

* Updated links to both HtC Simple and Complex Data

* Added alt link to ocw version of 6.002 in extra courses (ossu#885)

* added OCW alt link for 6.002 in extra courses

* fixed parenthesis

* Update books' editions

* Updated the links for books that have a newer edition. I have included the authors' home page for the book where possible.
* Updated some titles to reflect the linked edition. I have maintained the original format (``2e`` for the books in the ``Programming`` section ``(2nd Edition)`` for the books in the other sections). Unifying the format could be something to consider.

* More realistic estimate for OS course

Hi,

I am currently taking this course and I am about half way into it. I already have a CS degree and I've been working as a developer for ~8 years.

The course is very interesting and comprehensive.
If you want to do this course properly, I think 6 hours per week for this course is bare minimum:
- There are ~3 hours of lectures each week
- The original course is split into 14 weeks
- Each chapter has homework at the end of it
- Homeworks are not very difficult, but some of them require significant amount of work
- Projects require significant amount of work

* Update other_curricula.md

Add new curriculum (writing started Summer 2019)
See more: https://github.com/functionalCS

* Reflects locked down CS Timeline Spreadsheet

* Spreadsheet link prompts users to make a personal copy

* Remove course that is no longer offered

Resolves ossu#907

* Make Calculus Required

closes ossu#841

* Change calculus recommendation to OLL and OCW

Resolves ossu#838, ossu#886

* Change Networking course to Kurose-Ross

Resolves ossu#887

* Evaluation section update

Change language to encourage students to be proactive in seeking feedback for projects.

* Advanced Applications subsumed by Project

Clarifies that the advanced application list is a subset of a larger, unspecified, set of adequate options.
Advanced Applications was listed as a precursor and possible replacement for the final project. This merges the two and specifies that students may choose another avenue for creating a capstone project.

Resolves ossu#830

* Update core math blurb

Resolves ossu#921

* Removed Project with Dead Link

1. Removed Binary Machine project as repository link results is dead.
2. Fixed link to applications block.

* Update Team

* extras/courses: Add Introduction to Computational Thinking by MIT

As noted here ossu#912 adding this course to The Math section

* Add Algorithms by Sedgewick

Add Algorithms by Robert Sedgewick on the basis that it's a freely available book from a reputable institution (it's the textbook for the Princeton Coursera courses). That being said, I haven't had the chance of reading the book so I can't personally comment on its quality.

* Commit for RFC at issue ossu#933 (ossu#945)

* Commit for RFC at issue ossu#933

Added by error

Co-authored-by: Harsh <[email protected]>

* Add The Linux Command Line book to Tools section in extra readings

* Switch 3b1b Linear Algebra from pre to corequisite (ossu#927)

Switch 3b1b Essence of Linear Algebra from prerequisite of MIT Linear Algebra to corequisite

* Add interesting/useful reading resources (ossu#941)

* fix: updated Computation Structures 1,2 & 3 links (ossu#953)

* Add books, fix formatting

* Add Ethics Course

Ethics being a very important education in field of computer science. CS 2013 Says, while technical issues are central to the computing curriculum, they do not constitute a complete educational program in the field. Students must also be exposed to the larger societal context of computing to develop an understanding of the relevant social, ethical, legal and professional issues. This need to incorporate the study of these non-technical issues into the ACM curriculum was formally recognized in 1991.

* Update README.md

* Update Ethics Course Discord Links

* Fix link formatting

* fix some links

* extras/books recommends Linear Algebra for Everyone

closes ossu#910

* Add puzzles-practice to extras

Closes ossu#783

* Added Intro to Numerical Analysis

Added Introduction to Numerical Analysis by HSE, a CS2013 Elective Course.

* Added alternative to Intro to NumAnalysis.

Added MIT18-335J as an alternative to Introduction to Numerical Analysis.

* Swapped Core security and Core applications links in the curriculum index to reflect the order of the page. Added a link for Core ethics to the index. Updated some capitalization.

* Add answer on finding courses

* Add cs-video-courses

* Add link to goodreads in FAQ

* Remove alternate course that is no longer offered.

* Update README.md

* Fixes typos

* Update full stack open hours/week

https://studies.cs.helsinki.fi/stats/courses/fullstackopen
According to the course stats, every part takes at least 15 hours to finish on average.

* update MathForCS dead alternate link

* Remove note on provisional status

Having closed the [RFC: Add Security Courses](ossu#639), it is time to remove the provisional label from the Core Security section.

* Replace Numerical Analysis Course

Resolves ossu#1006

* Typo fix

* Fix typo

* Math for CS 2010, 2015/2019 solutions

* Add DSA Textbook to Extras

Thank you to @hamzakat

Closes ossu#994

* alternate links for Computation Structures

* alternate links for Computation Structures

improved formatting

* added OSTEP course page

* added OSTEP course page

fixed typo

* added OSTEP course page

fixed typos, removed/updated links

* added OSTEP course page

updated prerequisites on README

* Replace discontinued Intro Sec Course

[Information Security: Context and Introduction](https://www.coursera.org/learn/information-security-data) has been discontinued.
Replacing with [Cybersecurity Fundamentals](https://www.edx.org/course/cybersecurity-fundamentals)
Resolves ossu#1041

* Update README.md

* Update README.md

* Add information security link to table of contents

* hints and tips for OSTEP Project 2A

* Rename intro file in directory to README.md

Users browsing the directory structure will better understand
which file to read first.

* Fix typo

Small typo fix

* Update PROJECTS.md

Reword the top description of PROJECTS.md to make it more clear what this section is about.

* Swap Intro CS from edX to OpenCourseWare

* change Logic course

* Update LICENSE copyright year

Signed-off-by: Ariston Lorenzo <[email protected]>

* Improve links

From a suggestion by @Alaharon123 here:
ossu#1078 (comment)

* Update exercism url to point to the current url

* Add 2011 Berkeley SICP in Scheme to extras

Since the Scheme version remains arguably as/more popular

* Update PROJECTS.md

* Update PROJECTS.md

* update How to Design Programs textbook link

* Update courses.md

* Update courses.md

* Update courses.md

* Update courses.md

* added resource explaining xv6 code for OSTEP

* added resource explaining xv6 code for OSTEP

fixed typo

* Clarify OSTEP Options

Direct most students to read OSTEP and complete homework.
Direct only students specializing in systems to undertake
the course projects

Resolves ossu#1083

Co-authored-by: Waciuma Wanjohi <[email protected]>
Co-authored-by: spamegg <[email protected]>

* Clarify OSTEP: add missing link, fix prerequisite

* Add structure to links

* Update FAQ.md

* Update CONTRIBUTING.md

* Changed course for Theory of Computation to the one in openMIT (ossu#1125)

Resolves ossu#1096

* Reduce time estimate for Probability

* Correct link to resources below (ossu#1133)

* fix core applications machine learning (ossu#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 ossu#1118

* Add a new project from a student (ossu#1130)

* Added a PR template for projects. (ossu#1136)

* Update CURRICULAR_GUIDELINES.md

Reference the upcoming CS2023

* Update LICENSE copyright years (ossu#1152)

* Update course link

Effective Thinking Through Mathematics

* Census Announcement

* Move census link to top of page

* Correct the CS50 alt URL

https://cs50.harvard.edu/ just redirects to Edx. The course is available at https://cs50.harvard.edu/x/

* Remove 2023 Census link

* 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.

* Add backt the HTDP book

* Add intro-programming course page (ossu#1177)

* Create intro-programming course page (incomplete)

* Complete the intro-prgramming page

* Add intro-programming course page to the README file

* Fix spellings

* Fix the name of the Py4E course

* Add alt for Computer Graphics

Resolves ossu#1140

* Update Process

Mention taking courses in parallel.

Resolves ossu#1139

* Fix CS50P pset links

* Changed typo 'strucked' to 'stucked'

* fix typos

* Create CNAME

* Update CNAME

* Delete CNAME

* Create CNAME

* Delete CNAME

* Create CNAME

* update Software Engineering: Introduction course

* Add whitespace

May address ossu#1191

* Use full word rather than abbreviation for accessibility (ossu#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"

* Replace deleted course with its video playlist

* Adding a new URL course for Git and GitHub because the old link invalid (ossu#1204)

* Adding discussions channels

* Remove mentions of outdated materials and add warning about them (ossu#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 <[email protected]>

* Update README.md with suggestion from @waciumawanjohi (2)

Co-authored-by: Lenox Waciuma Wanjohi <[email protected]>

* Update README.md with suggestion from @waciumawanjohi (3)

Co-authored-by: Lenox Waciuma Wanjohi <[email protected]>

---------

Co-authored-by: Lenox Waciuma Wanjohi <[email protected]>

* add final project into PROJECTS.md

* Move space between badges out of link text

* fix: quick stupid case corrections for Discord

can I brag about having contributed to ossu yet? :^)

* 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.

* 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

* Align with div attribute

Github homepage does not respect the CSS centering

* Add Intro CS coursepage and replace the OCW version with an archived version on Edx (ossu#1224)

* Create README.md

* Add link to Intro CS course page

* Update README.md

* 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

* Add SPD coursepage (ossu#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

* Remove the newsletter link

The newsletter link does not work anymore. Also, AFAIK, it was not in active use anyway.

* Remove Projects.md

* Move interactive textbook from courses to readings

---------

Signed-off-by: Ariston Lorenzo <[email protected]>
Co-authored-by: Waciuma Wanjohi <[email protected]>
Co-authored-by: waciumawanjohi <[email protected]>
Co-authored-by: spamegg <[email protected]>
Co-authored-by: Aaron Hooper <[email protected]>
Co-authored-by: Manuel Esparza <[email protected]>
Co-authored-by: aryzach <[email protected]>
Co-authored-by: riceeatingmachine <[email protected]>
Co-authored-by: spamegg <[email protected]>
Co-authored-by: Travis Brackett <[email protected]>
Co-authored-by: Cybermise <[email protected]>
Co-authored-by: Cybermise <[email protected]>
Co-authored-by: Josh Hanson <[email protected]>
Co-authored-by: attackgnome <[email protected]>
Co-authored-by: bradleygrant <[email protected]>
Co-authored-by: silential <[email protected]>
Co-authored-by: Uniminin <[email protected]>
Co-authored-by: Alaharon123 <[email protected]>
Co-authored-by: Silent <[email protected]>
Co-authored-by: Tyler Miller <[email protected]>
Co-authored-by: Tanya Nevskaya <[email protected]>
Co-authored-by: Hanqiu Jiang <[email protected]>
Co-authored-by: licjon <[email protected]>
Co-authored-by: Jonathan Hustad <[email protected]>
Co-authored-by: Henrick Kakutalua <[email protected]>
Co-authored-by: Elahi-cs <[email protected]>
Co-authored-by: Josip Ćavar <[email protected]>
Co-authored-by: Kye Davey <[email protected]>
Co-authored-by: Dody2 <[email protected]>
Co-authored-by: Harsh <[email protected]>
Co-authored-by: azzsal <[email protected]>
Co-authored-by: Rodi <[email protected]>
Co-authored-by: NadaTElwazane <[email protected]>
Co-authored-by: Guilherme Marz Vazzolla <[email protected]>
Co-authored-by: aayushsinha0706 <[email protected]>
Co-authored-by: Nico Schlömer <[email protected]>
Co-authored-by: Dion Rigatos <[email protected]>
Co-authored-by: Matt Rieke <[email protected]>
Co-authored-by: Nick Roma <[email protected]>
Co-authored-by: Ethan Deng <[email protected]>
Co-authored-by: Mikhail Loginov <[email protected]>
Co-authored-by: Eero Pomell <[email protected]>
Co-authored-by: Justin Kim <[email protected]>
Co-authored-by: Ariston Lorenzo <[email protected]>
Co-authored-by: Maheshkumar P <[email protected]>
Co-authored-by: Roman Bird <[email protected]>
Co-authored-by: martin <[email protected]>
Co-authored-by: anantav51 <[email protected]>
Co-authored-by: Choubs01 <[email protected]>
Co-authored-by: Thái Hữu Trí <[email protected]>
Co-authored-by: Rob <[email protected]>
Co-authored-by: Ariston Lorenzo <[email protected]>
Co-authored-by: Pulkit Krishna <[email protected]>
Co-authored-by: zkv <[email protected]>
Co-authored-by: Avishek Sen <[email protected]>
Co-authored-by: Budi_Ubuntu <[email protected]>
Co-authored-by: Karim Safan <[email protected]>
Co-authored-by: karim1safan <[email protected]>
Co-authored-by: Pablo Colturi Esteve <[email protected]>
Co-authored-by: Yukai Chou <[email protected]>
Co-authored-by: Maru <[email protected]>
Co-authored-by: mgg143 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants