Best Resources to Teach Yourself Computer Science
I've been programming professionally for almost 3 years.
But I'm gonna be honest with you.
My computer science (CS) skills are pretty lacking. That's why I've dedicated 2022 to finally learn some core computer science concepts.
But where do I start?
That's what I thought a couple of days ago.
Fortunately, I got S tier research skills and found the best resources on the internet for computer science and figured out why not share them with my dear readers.
PS. This is my initial list if you got any suggestions, feel free to message me on Twitter about them.
A quick disclaimer
I just want to say that all of these resources provide you with a comprehensive list of different courses to take to master different computer science subjects.
None of these resources create their own content, they simply pick the best ones found over the internet. This is why you might see some overlap with the courses chosen.
For example, a popular introduction to computer science course would be Harvard's CS50. You would find this course recommended in almost all the resources below.
Another disclaimer is that all of these resources are free. So please don't get scammed.
Open Source Society University (OSSU)
OSSU which stands for Open Source Society University is an organization that:
Empowers learners to master college curricula through free resources
- Github Page
OSSU essentially provides you with all the courses required to get a bachelors degree in Computer Science.
So you would expect courses such as:
- Data Structures and Algorithms
- Math for Computer Scientists
- Systems Programming
Their computer science path is by far the most popular one on the whole internet, with a whopping 106k stars on GitHub.
But that's not it.
They also provide other paths such as:
- Mathematics
- Data Science
- Bioinformatics
You can check them out here.
Teach Yourself Computer Science
If you are more of a minimalistic person. You simply want a minimal list of recommended resources.
Then Teach Your Self CS is the path for you.
It gives you nine core computer science subjects with their recommended resources.
The resources are given based on the difficulty level.
For example for the programming section, they recommend:
- Standard Recommendation: Structure and Interpretation of Computer Programs (SICP)
- If SICP is too hard, then you can pick up Composing Programs or How to Design Programs.
I personally follow this path for my 2022 computer science plan and I've thoroughly enjoyed it even though I'm not following the recommended order of subjects.
You can check out Teach Yourself CS on their website.
Functional Computer Science
This is also another popular but more "underground" set of resources. I've seen it linked a bunch in Reddit posts and Discord servers.
Nevertheless, it's still a solid list of resources with a focus on functional programming.
So you would expect courses such as:
- Principles of Functional Programming
- CS 3110 Data Structures and Functional Programming
They not only do that but cover most core computer science subjects and a lot of "niche" subjects which you might find interesting.
Niche subjects include:
- Web Programming
- Data Science
- Quantum Computing
- Machine Learning
- Mathematics for Finance
- Finding Jobs
- Software Testing
You can check out the list here.
P1XT Guide
If you want a good balance of theoretical computer science and practical programming then P1XT might be for you.
The nice thing about P1XT is that it's separated into your typical software engineering levels such as Junior, Middle, Senior Engineers.
They have a nice balance of theory and real-world. So you can expect lots of practical projects such as clones of popular web apps.
To be fair, once you get to the intermediate-advanced stage, the content starts to focus a lot more on web development so lots of Javascript and HTML/CSS courses. But nonetheless, they also cover all the core CS subjects.
Check out P1XT here.
The Open Source Computer Science Degree
I was pretty sceptical about this one at first because it was made by a "YouTuber", but it's not a bad list whatsoever.
It's made by a popular programming YouTuber called ForrestKnight. He made a video explaining why he chose the specific course and subjects in his list.
You can check it out here.
As I understood this was inspired by the OSSU computer science resource but is more minimal. There aren't many courses but it still covers a good amount.
The list also contains a lot of Java, so if you ever plan to be a Java developer then this list might be for you.
You can check out the list on GitHub.
Conclusion
Now, you might be feeling a bit overwhelmed by the number of choices you have. But don't worry, just pick one and stick to it.
Most of these lists are pretty similar, they get different once you get to the advanced courses. At that point, it all depends on your interests.
I might have missed some other cool resources, so if you got any and want me to add them to the list, feel free to message me on Twitter and I will get back to you.
Thanks for reading