1.1 - Complete Computer Science Roadmap - Everything you should know
The task here is to create the ultimate computer science course, going from complete beginner to advanced levels of computer science. This will help you in any computer science program or help you thrive as a software engineer.
This will also act as a foundational course for specializations later on, such as data science, cyber security, cryptography, and a ton of other focuses.
This will genuinely walk you through everything you need to know, but it is not required to be consumed from beginning to end. You can hop in to any lesson and pick up topics you need, so I encourage you to use the playlist to see the full curriculum.
What should you learn?
I split it up in to 20 rough categories you should be familiar with. Consider each of these to be a mini course of its own. All vary in length and depth but you’re looking at about 10 lessons for each of these.
- Foundations and number systems
- Type systems and data modeling
- Data structures and algorithms
- Languages, compilers, and tooling
- Platforms, libraries, and system interfaces
- Program execution and memory
- Functions and programming paradigms
- Client-server architecture and browsers
- Web Application fundamentals
- Development workflows and version control
- Software development lifecycle and operations
- Networking and HTTP
- Communication Protocols
- Security and threats
- Infrastructure and cloud computing
- Databases
- Distributed Systems
- Software architecture and design patterns
- Cryptography
- Concurrency
Where does programming fit in to all of this?
So these are the main conceptual topics and coding will be used throughout them all. Instead of thinking of coding as a dedicated thing you learn outside of this list, think of it instead as a tool that you use to do all of these things.
Because I want to keep this series on the chalkboard, I would recommend also joining software engineering fundamentals, which will give you all of the fundamental programming skills needed to become an advanced software engineer.
This series and that course will be the perfect pair as this will focus a lot more on the theory and ideas while the fundamentals course focuses on applied software engineering.
Beyond this?
There are definitely more categories we could add. I’m not sure if it is a good thing or a bad thing that computer science is pretty much a never ending topic.
Perhaps you focus on embedded programming and drivers. Or, you focus on game development or graphics. Maybe your focus is artificial intelligence and LLMs, or cryptography and blockchain.
We may explore some of these topics in more detail in future lessons, but my goal is to give you a very serious foundation that can be applied to many different industries and get a piece of many different topics.
Specialization vs Generalization
I talk in other videos about how you should specialize and generalize. Learn a lot about everything as your general studies, then, you’ll more naturally be able to find your specialization or focus.