Assemble your own computer science degree

Seriously, there are so many good resources out there these days that it seems we don't really need the formal path anymore. Best of all, they're all low-cost or free. The main challenge with doing something like this instead of the normal university route would be a lack of discipline to follow through on your own, but why not take this chance to build some?

The Basics

Scott H Young did his famous MIT Challenge and documented it pretty well, so it'll be easy enough to follow along.

MIT Challenge - Scott H Young
In 2012, I decided to try to learn MIT’s 4-year undergraduate computer science curriculum in 12 months, without taking any classes. I was successful in passing the final exams for 33 classes and completing the required programming projects. You can view my TEDx Talk regarding the challenge, see link…

FreeCodeCamp is another learning resource that's great if you want to learn JavaScript or Python, alongside other concepts taught in their courses.

freeCodeCamp.org
Learn to Code — For Free

FAQ

Which programming language should I learn?

It depends on the company you want to work for. Generally:

  • Python is good for data analysis and machine learning
  • JavaScript for web development
  • C# or .NET framework is good for larger companies, game development or faster performance over JavaScript, and it's not as hard to wrangle as C.
  • Java is good for legacy systems/large enterprises, or banks. Go has also been gaining popularity.
  • C(++) is good for creating really fast programs, since it's a lower level language. Quantitative trading/embedded systems often use this one.
  • SQL is also easy ish to pick up, and useful for a lot of tasks, especially data analysis related. Take a look at job listings and see what kind of job you can see yourself doing.

What tools should I use?

That again depends on what you want to do. But Visual Studio Code is a good place to get started with. You can also explore language-specific IDEs too later down the line.

Specialisations

Web Development

The Odin Project teaches Ruby (& Ruby on Rails) + JavaScript (nodejs and Reactjs) alongside other basics. Cloud providers covered are Firebase and using Ruby for the back-end.

Your Career in Web Development Starts Here | The Odin Project
The Odin Project empowers aspiring web developers to learn together

Full stack open focuses exclusively on using Javascript for the entire stack, and also talks about getting started with Heroku.

Full stack open 2021
Open online course on JavaScript based modern web development by University of Helsinki and Houston Inc..

Machine Learning/Data

https://www.datacamp.com/ - link's not showing up properly, but it's a great resource. Can't tell if they are related to FreeCodeCamp above.

This course is made by the creators of fastai, and so it focuses mostly on using that (along with fundamentals).

Practical Deep Learning for Coders
Deep Learning for Coders with fastai and PyTorch: AI Applications Without a PhD - the book and the course

TensorFlow's own in-house tutorials teach you how to use... TensorFlow. Rich collection of resources.

Machine learning education | TensorFlow
Start your TensorFlow training by building a foundation in four learning areas: coding, math, ML theory, and how to build an ML project from start to finish.

More math- and theory-heavy, focusing more on the basics instead of any particular machine learning package.

Open Machine Learning Course mlcourse.ai

If you want something that's more like a bootcamp, AI Singapore has a programme that looks pretty good - you can also follow along their field guide. They focus a lot on application, and the network that is built would be valuable.

The AI Apprenticeship Programme (AIAP)® Field Guide | AI Singapore
The AI Apprenticeship Programme (AIAP)®, since its launch in 2018, is on track to train 200 AI Engineers by the end of 2021. To get into (and do well in) the programme, it does not matter the specific…

Extra credit - a playlist on better coding habits for data scientists. These can be good to think about if you want to improve your code quality.

Game Development

I'm not as familiar with this aspect, so I don't have much to say. BitDegree had a few interesting beginner courses on this. If you are interested, I signed up for at least 90 of the courses right when they were first starting out and things were free - let me know if you'd like access to them. They cover other topics too and not just game dev.

Online Game Development Courses: Learn How to Make a Game
Learn how to make a game with these easy to follow online game development courses. Choose your game development courses & evolve your game making skills!

Where should I go for practice?

General

There are many such platforms out there - stick to one and just keep going. I've heard that Kattis focuses more on application with stories and scenarios, and some friends strongly recommend it, though I personally think they are roughly the same - the main purpose is to get you to think like a computer.

Kattis, Kattis
Codewars: Achieve mastery through coding challenge
Codewars is a coding practice site for all programmers where you can learn various programming languages. Join the community and improve your skills in many languages!
LeetCode - The World’s Leading Online Programming Learning Platform
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

Web Development

Not really sure of specific resources; I think freelance projects or building your own websites will generally serve you well. You can also take a look at the open-source code of other people's websites. Also, buying a small server for about $5-$10 a month might be a good investment for you to play around with. You can also look at tools like Wordpress, Shopify, Ghost and so on, and try to figure out how those were built.

Cybersecurity

What is CTF and how to get started!
An introduction to the world of CTF

Machine Learning

Kaggle is like Kattis/LeetCode for machine learning, and is the most well-known. A good place to start. Haven't looked into the others much, but other platforms can be interesting to explore too (for exposure to different kinds of questions).

Kaggle: Your Machine Learning and Data Science Community
Kaggle is the world’s largest data science community with powerful tools and resources to help you achieve your data science goals.
MachineHack
Test & Practise Your Machine Learning Skills.Compete against hundreds of Data Scientists, with our industry curated Hackathons.
Top 25 Machine Learning Hackathons It’s here now for Anyone to move to Data Science!
Kickstart your Data Science Career right now!

Game Development

Again as with web development, I think you'd benefit the most from doing your own projects. Go make something!

Download the latest indie games
itch.io is a simple way to find, download and distribute indie games online. Whether you’re a developer looking to upload your game or just someone looking for something new to play itch.io has you covered.

I want moar

Alright, here you go:

  1. Codecademy - where I learned JavaScript and SQL from ages ago.
  2. Your usual suspects - Coursera, edX, Udacity, and so on.
  3. Youtube has plenty of resources as well - just search what you need to.
  4. Read the documentation of what you're interested in learning, and play around with them to see it in action.
  5. Look for conferences in the field you're interested in, and see if there are recordings/if you can attend something.
  6. Go to your local library, and borrow some books.
  7. https://teachyourselfcs.com/
  8. https://www.afternerd.com/blog/learn-computer-science/
  9. https://www.freecodecamp.org/news/how-to-hack-your-own-cs-degree-for-free/
  10. https://www.mrdbourke.com/aimastersdegree/