The goal of this guide is to offer an alternative to people who weren’t accepted to top undergraduate programs but still want to pursue a career in computers.
The internet is a great democratizing force and if you’re willing to publicly share your work you can attract hiring managers and recruiters to you.
You’re just getting started, you don’t know that many things, you haven’t programmed all that much and neither have many of your friends or acquaintances. How do you compete against the high prestige folks?
How do you bootstrap a computer science education?
The new world order
The first thing to keep in mind is that prestige still matters, if you get accepted to a top school you should most definitely attend it if you can afford it. But the second thing to keep in mind is if you don’t get accepted to a top school, then a portfolio is your next best bet.
So how do you build a portfolio?
Typically the way classes are taught in undergraduate is the following
Traditional School Model: Listen to Lecture -> Do Homework -> Listen to Lecture -> Do Homework … -> Do Final -> Pass -> Do more advanced class
But the unschooled model emphasizes cultivating a few interests and going progressively deeper.
Unschooled Model: Read and Listen to many references at once-> Focus on a few topics that interest you -> Summarize them online -> Download relevant OSS projects -> Learn to use them to solve a practical problem -> Pick a Github issue from OSS project and work on it -> Make friends with library maintainers -> Make your own OSS project
Let’s work through an entire example of how a self education in Machine Learning could look like
Read Fast.ai, data science from scratch, 100 page ML book -> Summarize main ideas in a few blog posts -> Download HuggingFace and train it on a custom dataset -> Pick an open issue on their Github and fix it -> Make your own OSS ML project
Once you find a found a few good references everything follows naturally if you’re willing to put in the work. So how do you find good starting references?
The single best way to get good book recommendations is to ask people you admire for their favorite books. For example here are mine which will probably be interesting to anyone studying computer science or machine learning.
I spend quite a bit of time on Twitter looking for experts in niche fields and asking them for their favorite books. People tend to answer this question even if you’re an anon.
If you also show the same people some interesting projects you’ve built they will generally be very receptive because few people take the effort to engage beyond the “Let’s connect or how do I get started”. It’s counterintuitive
Be valuable to people you admire and they will mentor you
The Sovereign Computer Science Undergrad Curriculum
So if you’d like to bootstrap a computer science education here are the main fields you should study and my favorite introductory books for each.
Programming - build a Discord repl.it bot
Systems - Nand2tetris then Architecture of Open Source Applications
Algorithms - Grokking Algorithms
Operating Systems - OS tutorial
Compilers - Crafting Interpreters
Functional Programming - Purely Functional Data Structures
Computer Architecture - Architecture of Consoles
Networking - Beej guide
Machine Learning - 100 page ML book, fast.ai book, data science from scratch
Databases - Designing Data Intensive applications
Graphics - Ray Tracing in one Weekend
Cryptography/Security - Game Hacking and Bitcoin White paper
Physics Programming - Nature of Code
Numerical Computing & Parallel Programming - MIT Scientific ML class
However, make sure to develop your personal preferences and taste as quickly as possible. Learning shouldn’t feel grindy, it should be fun. So if you don’t like a book just get a new one, if you don’t like a topic even after skimming 5 books about it, odds are you’re better off working in some other subfield. Procrastination is information, success means you’re engaged.
So learn to enjoy what you’re doing, learn to code, write, speak and make friends. Make the leap from a sovereign student to a sovereign researcher.
Outro
If you’re looking for self learning peers then make sure to check out or Discord channel https://discord.gg/drmuTjWZrm
If you enjoyed this post you’ll also probably enjoy http://robotoverlordmanual.com/ specifically these chapters
https://marksaroufim.medium.com/how-i-read-technical-books-8b47d26a9e67
https://marksaroufim.medium.com/technical-books-i-%EF%B8%8F-4af8f3ddd205
https://marksaroufim.medium.com/deschooling-society-d1f0a0640ba6
https://marksaroufim.medium.com/how-to-get-a-great-job-68cb69ddfeb1
Acknowledgements
Thank you Peter Crowe for prompting me to write this.
Great post, as always!
One quick comment: I think "check out or Discord" should be "check out our Discord" instead.