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.
FreeCodeCamp is another learning resource that's great if you want to learn JavaScript or Python, alongside other concepts taught in their courses.
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.
Full stack open focuses exclusively on using Javascript for the entire stack, and also talks about getting started with Heroku.
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).
TensorFlow's own in-house tutorials teach you how to use... TensorFlow. Rich collection of resources.
More math- and theory-heavy, focusing more on the basics instead of any particular machine learning package.
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.
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.
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.
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
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).
Game Development
Again as with web development, I think you'd benefit the most from doing your own projects. Go make something!
I want moar
Alright, here you go:
- Codecademy - where I learned JavaScript and SQL from ages ago.
- Your usual suspects - Coursera, edX, Udacity, and so on.
- Youtube has plenty of resources as well - just search what you need to.
- Read the documentation of what you're interested in learning, and play around with them to see it in action.
- Look for conferences in the field you're interested in, and see if there are recordings/if you can attend something.
- Go to your local library, and borrow some books.
- https://teachyourselfcs.com/
- https://www.afternerd.com/blog/learn-computer-science/
- https://www.freecodecamp.org/news/how-to-hack-your-own-cs-degree-for-free/
- https://www.mrdbourke.com/aimastersdegree/