While in Helsinki, I created a roadmap to anchor my computer science and software engineering fundamentals. Here's the plan I'm following to gain a deep understanding of computers — I'm sharing it here for anyone interested to do the same.
Learning Framework
-
You can learn anything. The most complex concepts in the universe are built on top of basic ideas that anyone, anywhere can understand.
-
Move fast, aim high. Set insane goals. You can achieve things much faster than you think. Shorten your expected timeline by 10-50x.
-
Learn backwards. Start with building what you want to build. Try building things, identify knowledge gaps and learn what you need to learn.
Essential Skills
-
Search skills. Learn how to properly find answers to the question you are asking. Master how to Google & craft prompts that get you what you want.
-
Use Unix. If you're on Windows, set up a dual-boot with Linux. Learn the command line - it's your most powerful tool.
Computer Science Fundamentals
-
First Principles. Start from the ground up to truly understand how computers work.
-
Digital Logic. Study transistors, logic gates, and how they form the building blocks of computers. Practice with tools like Verilog.
-
Computer Architecture. Understand CPU design, memory hierarchy, and how instructions are executed at the hardware level.
-
Assembly & Machine Code. Learn how high-level code translates to machine instructions.
-
Compilation. Understand how programming languages are compiled and optimized.
Resources:
Systems Programming (C/C++)
-
Core Concepts. Master variables, control flow, and data types.
-
Memory Management. Understand pointers, stack vs heap, and manual memory handling.
-
Program Structure. Learn about compilation units, linking, and code organization.
-
Edge Cases. Handle integer overflow, floating-point precision, and other low-level concerns.
DSA (Data Structures & Algorithms)
-
Essential Algorithms. Searching, sorting, and graph traversal.
-
Core Data Structures. Implement and understand:
- Arrays and Linked Lists
- Stacks and Queues
- Trees and Graphs
- Hash Tables
- Tries
-
Analyse. Learn Big O notation and algorithm complexity.
(OOP) Object Oriented Programming
- Classes and Objects
- Inheritance and Polymorphism
- Design Patterns
- SOLID
Python
- Be grateful
- Just hack projects
- NumPy, Pandas
- Plotting / Data visualization
- Machine learning basics, sklearn
Networking
- TCP/IP Protocol Suite
- DNS and HTTP
- REST
- Security Basics
Web Development
- Frontend (HTML, CSS, JavaScript, React)
- Backend Frameworks
- Authentication & Authorization
- Database Design
- API Development