Breaking Stagnation

Share this post

The Sovereign Student

marksaroufim.substack.com

The Sovereign Student

Computer Science Undergrad for Self Learners

Mark Saroufim
Feb 12, 2021
20
1
Share this post

The Sovereign Student

marksaroufim.substack.com

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

Twitter avatar for @HamelHusain
Hamel Husain @HamelHusain
I wanted to find a highly skilled person that I could learn from that was several orders of magnitude better than me. IDK why, but apprenticeship style learning is underrated in the modern age. 🧵👇
Twitter avatar for @marksaroufim
Mark Saroufim @marksaroufim
@HamelHusain @jeremyphoward I'm gonna have to ask you at some point how yours paths ended up crossing - definitely a fav OSS duo
7:42 PM ∙ Jan 14, 2021
98Likes22Retweets

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.

  1. Programming - build a Discord repl.it bot

  2. Systems - Nand2tetris then Architecture of Open Source Applications

  3. Algorithms - Grokking Algorithms

  4. Operating Systems - OS tutorial

  5. Compilers - Crafting Interpreters

  6. Functional Programming - Purely Functional Data Structures

  7. Computer Architecture - Architecture of Consoles

  8. Networking - Beej guide

  9. Machine Learning - 100 page ML book, fast.ai book, data science from scratch

  10. Databases - Designing Data Intensive applications

  11. Graphics - Ray Tracing in one Weekend

  12. Cryptography/Security - Game Hacking and Bitcoin White paper

  13. Physics Programming - Nature of Code

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

Twitter avatar for @marksaroufim
Mark Saroufim @marksaroufim
The sovereign researcher * Great conversation with anyone * Builds their own OSS tools * Never gate-keeps * Gets their blog posts cited * Hosts their own conferences * Financially independent * Helps crackpots flesh out their ideas * Learns anything
4:17 PM ∙ Feb 4, 2021
30Likes3Retweets

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.

1
Share this post

The Sovereign Student

marksaroufim.substack.com
1 Comment
Ajay Uppili Arasanipalai
Writes Ajay’s Newsletter
Mar 9, 2021

Great post, as always!

One quick comment: I think "check out or Discord" should be "check out our Discord" instead.

Expand full comment
Reply
TopNewCommunity

No posts

Ready for more?

© 2023 Mark Saroufim
Privacy ∙ Terms ∙ Collection notice
Start WritingGet the app
Substack is the home for great writing