forrestknight / open-source-cs Goto Github PK
View Code? Open in Web Editor NEWVideo discussing this curriculum:
Home Page: https://youtu.be/NyOvFSP_IpQ
License: MIT License
Video discussing this curriculum:
Home Page: https://youtu.be/NyOvFSP_IpQ
License: MIT License
In the 'Programming' table, the link to the course 'Programming Languages, Part A' no longer works and instead it redirects to the following link: https://github.com/ForrestKnight/open-source-cs/blob/master/imp.i384100.net/6b13oK
.
Once of the most conceptually clear sets of lectures I have ever seen on linear algebra were created by Gilbert Strang. If you have some time watch the first 1 or 2 and maybe consider whether it would be a good reference for people studying linear algebra.
https://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/
Given the resemblance of the curriculum to college classes, there are textbooks that would go very well with each category of the curriculum. This would allow people the option to go more in depth into the topics. The foundation of computer science doesn't change much over time so the knowledge in the books will remain viable in the future. Another advantage is that it's generally easier to judge the quality of these books, many people already read and reviewed these books on sites like Amazon.
It will also give people alternatives to these classes. While these classes are great, the platforms that host them (edX, Coursera, etc.) might place more restrictions on free users in the future. This was evident when edX limited audit time and put exercises/problem sets for some classes behind a pay wall.
Just for clarification, is there any specific order one should follow while doing the courses?
could you please add a precalculus
Washington and Wisconsin both have top tier public universities that abbreviate as "UW". The README should be updated to specify that it is referring to the University of Washington in Seattle. Both UWs are also highly ranked for Computer Science which furthers confusion.
Also, the other UW has plenty of great coursework that's free. Here's an into to systems: http://pages.cs.wisc.edu/~adilgsm/cs252/Fall2017/index.html
Hey Forrest,
As I mentioned in my PR (#43) UBC's Software Engineering is no longer offered on EDX. However, Berkeley offers a two part course on Software as a Service and Agile Development. I'd be happy to place those classes in UBC's place if you would like. Here's a link to the first course if you'd like to look into it further: https://courses.edx.org/courses/course-v1:BerkeleyX+CS169.1X+2T2018/course/
Really awesome that you're doing this, let me know if there's anything I can do to help!
Introduction to Computer Science & Programming in Python by MIT
It'd be cool to see a semester/term schedule format showing a certain number of courses taken per term.
This example adheres to the pre-reqs presented on the original repo and includes an estimated time completion for the whole degree
(12 weeks)
Course | Duration | Schedule |
---|---|---|
1 Intro to Computer Science | 10 Weeks | M/W |
2 Mathematical Thinking in Computer Science | 6 Weeks | M/W |
3 Calculus 1A: Differentiation | 12 Weeks | T/TH |
4 Java Programming: Solving Problems with Software | 4 Weeks | M/W/F |
[if done with # 4 -> # 5] | ||
5 Java Programming: Arrays, Lists, and Structured Data | 4 Weeks | M/W/F |
Cool off period: up to 3 weeks
(15 weeks)
Course | Duration | Schedule |
---|---|---|
1 Computer Science: Algorithms, Theory, and Machines | 10 Weeks | M/W |
2 Linux Command Line Basics | 1 Week | M/W |
3 UNIX Work Bench | 4 Weeks | M/W |
[if done with # 2 and # 3 -> # 4] | ||
4 Build a Modern Computer from First Principles: From Tetris to NAND | 6 Weeks | M/W |
5 Calculus 1B: Integration | 15 Weeks | T/TH |
6 Object Oriented Programming in Java | 6 Weeks | T/TH |
[if done with # 6 -> # 7] | ||
7 Data Structures and Performance | 6 Weeks | T/TH |
Cool off period: up to 3 weeks
(13 weeks)
Course | Duration | Schedule |
---|---|---|
1 Java Programming: Principles of Software Design | 4 Weeks | M/W/F |
2 Java Programming: Building a Recommendation System | 4 Weeks | M/W/F |
3 Calculus 1C: Coordinate Systems & Infinite Series | 8 Weeks | T/TH |
[if done with # 3 -> # 4] | ||
4 Introduction to Probability and Data | 5 Weeks | T/TH |
5 Algorithms, Part 1 | 6 Weeks | T/TH |
[if done with # 5 -> # 6] | ||
6 Algorithms, Part 2 | 6 Weeks | T/TH |
7 Build a Modern Computer from First Principles: From Tetris to NAND II | 6 Weeks | M/W |
[if done with # 7 -> # 8] | ||
8 Database Management Essentials | 7 Weeks | M/W |
Cool off period: up to 3 weeks
(15 weeks)
Course | Duration | Schedule |
---|---|---|
1 Linear Algebra - Foundations to Frontiers | 15 Weeks | T/TH |
2 Intro to Statistics | 8 Weeks | T/TH |
3 Programming Languages, Part A | 5 Weeks | M/W/F |
[if done with # 3 -> # 4] | ||
4 Programming Languages, Part B | 3 Weeks | M/W/F |
[if done with # 4 -> # 5] | ||
5 Programming Languages, Part C | 3 Weeks | M/W/F |
7 Introduction to Operating Systems | 8 Weeks | T/TH |
[if done with # 7 -> # 8] | ||
8 Software Engineering: Introduction | 6 Weeks | M/W |
Cool off period: up to 3 weeks
(11 weeks)
Course | Duration | Schedule |
---|---|---|
1 Machine Learning | 11 Weeks | M/W |
2 Cryptography 1 | 8 Weeks | T/TH |
Thanks for curating this great resource!
I teach CS1 at the University of Illinois—which is top-ranked for CS in the US. We've recently published all of our CS1 material online here: https://www.learncs.online/. This is a free entirely browser-based course in either Java or Kotlin with some novel features compared with other sites—interactive live coding walkthroughs, code quality and correctness feedback, debugging exercises, a large community of instructors, and so on. There's an overview of our innovations here: https://www.learncs.online/best
Take a look and let me know what you think! I'd be excited if you chose to add this to your list.
You should add up all the weeks to completion from all the courses... useful to students who may want to know how long it takes to complete.
I counted a total of 198 weeks = 3.8 years
Example:
Almost all colleges in India and some other countries focus on C/C++ as the primary programming language. I myself am a student of one of such Institute which focuses on C++ and C as the primary language of choice for beginners. Can anyone contribute or prepare similar list for C++. This will be really helpful for a huge number of students. Thank you all in advance.
While this is an extremely useful resource (in my 7 years experience in learning to code, this is the best free resource I have encountered), you can only really peruse it through GitHub markdown in a slightly jarring, unresponsive table format. Putting this on a responsive, single page website with resources opening in a new tab might make it even better and accessible on any device. I have a React boilerplate, I can invest the time to do this. Thoughts?
Hello people, I am seriously considering taking this path. But I want to discuss with like minded folks about it. Can you make a group or something so I can interact with you guys about how to go with it? Thanks
hey I noticed, when I visited the second link in the readme (Mathematical Thinking in Computer Science) it said "We were not able to find the page you're looking for"
Link to the course "Build a Modern Computer from First Principles: From Nand to Tetris I" is a broken Git link.
Could be changed to the direct link on Coursera: https://www.coursera.org/learn/build-a-computer
Here are a couple of free courses that seems solid:
Does anyone know of something like this playlist only in Portuguese (Brazil) ?
I watched your video, and I get that it's for classes that you need to take for the degree, but maybe you could add classes (like the networking and cybersecurity) but have an * for the section or class to show that it's optional. This would also benefit in those that need to take the pre-cal or algebra like someone else mentioned.
Also I saw that it was a Java based curriculum , maybe have branching sections added for different paths, such as python or c, etc. By having a description under the Section header that links to the path you would rather take.
I really like the idea of the open source degree, but I feel it lacks a bit of diversity in options for the people who want to branch off a bit. I'm not sure if I am looking at it from a different viewpoint or not
Both of these courses use applets which haven't been supported since java version 8 and apparently the code they provide is still buggy when you use version 8. It looks like the the next "Java Programming" course teaches much the same things as the Object Oriented Programming course but without the GUI. Maybe this course should be replaced with another Java course that implements GUI design.
More Universities are using python because of the learning curve for students. We could possibly add alternatives to the programming courses.
When a project is open source, that means anybody can view, use, modify, and distribute your project for any purpose. These permissions are enforced through an open source license. https://opensource.guide/starting-a-project/
As there is currently no license associated with the project, it is not an "Open Science" anything. The term "open source" is being used as clickbait and nothing more. However, this is easy to fix. Open source the project by doing the following:
No matter which stage you decide to open source your project, every project should include the following documentation:
Open source license
README
Contributing guidelines
Code of conduct
https://opensource.guide/starting-a-project/
Here is a list of the licenses that you might choose from: https://help.github.com/articles/licensing-a-repository/
Here is the steps on how to add the license to the repository: https://help.github.com/articles/adding-a-license-to-a-repository/
It's super easy and it will make "Open Source CS" open source.
Pre-Calculus is listed as a pre-requisite, it would be nice if there was a course linked to assist with preparing for Calculus Course[s].
Due to recent events, Coursera no longer offers courses from or related to Russian universities. Thus, the mathematical thinking course is no longer available on the platform.
In the Math portion of the Open-source computer degree, I would add Introduction to Discrete Mathematics from the University of San Diego. Since discrete math does not require any prereq. and it is very crucial for any computer scientist!
Here's the link from coursera: Discrete Math
Forrest I love your vids! Just a suggestion why not add sections like cyber security? Would love to see it!
Assuming that a lot of people who look at this aren't doing a lot of programming and CS work yet, it's unlikely that they know how to use git and/or navigate github. For example, someone not familiar with github wouldn't necessary know to check the issues tab if they need some help. Maybe there could be some PDF or something they can read that can help them get started with those things?
The same could theoretically be said for texteditors/IDEs. The courses tend to explain how to set one up for the course, but there's a lot of conflict between courses on which ones to use. Again, I think it might be helpful for people to get more information on that.
Having links to different programming communities (like discord servers) would also be helpful for a lot of people in my opinion. If you disagree, please leave a reply and let's see if we can come to an agreement!
Some of the courses in the list (e.g. MIT's Calculus 1A: Differentiation) offer a Certification at the end of them. Knowing which ones offer Certification might be useful to some.
Since the beginning of 2019 edX is no longer giving free access to most of their courses, but "audit" access will now expire after a certain amount of time (sometimes as little as 2 days), unless you upgrade to the "verified track", which is of course paid.
How does this affect your "open source" course list? If edX is no longer "open source", this list is significantly shrinked unfortunately. 😞
Once, all courses are passed, would it be possible for you to give us a recommendation in Linked In for successfully graduating or something like that?
GPL? Creative Commons? Something custom?
I don't know which to start with and if I should go one by one or take multiple ones together. And in case taking multiple courses together then I am not sure which to take together either. Maybe if there is a program that orders the courses like a semester to make it clearer and easier for newbies to get started.
I recently finished HarvardX's Introduction to Computer Science (CS50), and after doing a handful of MOOCs it really is the best course I've done, it has a huge and helpful community and the materials are amazing, not to mention the online lectures.
Some people might think using C in an introductory course is just an awful idea (and I did), but in retrospect, it gave me a low-level understanding before python that's incredibly useful, and they sure make it way easier than normal C courses.
I can totally suggest it as a replacement for Intro to CS by UVA.
When I try to enroll on course I only get the option to do a 7-day free trial and then pay 75 bucks a month. I thought it was supposed to be free?
I can't access the course because it says i haven't finished the other course in specialization, which would require that I pay.
Intro to Database Systems: https://15445.courses.cs.cmu.edu
Advanced Database Systems: https://15721.courses.cs.cmu.edu
While I think this is great idea and the courses so far look great, it would be interesting how you would want to accept contributions.
e.g.: I feel like the 'Applications' area could use some more topics like security, computer graphics, embedded systems.
Usually after the basics, students like to dive into topics they're interested in, so that might help.
Great work!
First step
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.