Lately, I’ve been thinking a lot about the importance of foundations. The kind that make you not just a competent programmer, but a truly great one. The kind of engineer who understands systems deeply, reasons clearly about problems, and writes code that reflects strong design principles.
That’s why I’ve decided to double down on my technical education. Over the next couple of years, I’ll be revisiting the fundamentals of Computer Science — not because I’ve forgotten them, but because I want to master them at a deeper level.
Why Go Back to the Basics?
I feel like I did a solid job mastering the fundamentals during my undergrad. I had great exposure to algorithms, data structures, and software design. But as time has passed, I’ve realized there are areas I never got to touch — and perhaps a few gaps that I want to fill in.
This isn’t about repeating old material. It’s about going deeper. I want to refine my understanding, close knowledge gaps, and revisit concepts with more maturity and context than I had back in school.
My Learning Roadmap
I’ll start by completing the core programming courses from the Open Source Society University (OSSU) Computer Science curriculum. These courses are designed to mirror a full CS degree — but open source and self-paced — which makes them a perfect fit for this kind of long-term learning journey.
The first course on my list is Systematic Program Design, which is based on the classic book How to Design Programs (HtDP). My plan is to go through both the course and the book in parallel. HtDP focuses on how to think systematically about programming — how to design programs around data, build abstractions cleanly, and reason about your code step-by-step.
Once I finish HtDP and the Systematic Program Design series, I’ll move on to Structure and Interpretation of Computer Programs (SICP). This is another timeless work that dives deep into the theoretical and conceptual foundations of programming. It’s a challenging read, but I know it’s one of those books that changes how you think about code forever.
Along the way, I’ll be interleaving these courses with the topics and resources from TeachYourselfCS.com — a site that curates the best resources for self-taught computer science learners. OSSU provides the structure, and TeachYourselfCS adds the depth. It’s a powerful combination. Structured progression mixed with flexibility to explore core areas like computer architecture, compilers, operating systems, and theory of computation at my own pace.
From there, I’ll continue with the follow-up courses in the OSSU curriculum — covering data structures, algorithms, operating systems, and beyond.
The Bigger Picture
This isn’t just about landing a job or checking boxes on a résumé. I’m taking a long-term view.
I don’t just want a job — I want a thriving career as a software engineer. That means investing in the skills that will still matter decades from now: fundamentals, reasoning, design, and adaptability.
By revisiting the core ideas behind programming and computer science, I’m building a foundation that will support everything else I learn moving forward. Strong fundamentals make you adaptable. They allow you to see patterns others miss and approach problems from first principles.
Looking Ahead
I’ll be documenting this entire journey — through blog posts, notes, and reflections. I want this blog to serve as both a record of my growth and a resource for others walking a similar path.
I’m genuinely excited to get started. Revisiting the fundamentals isn’t about going backward; it’s about laying a stronger foundation to grow higher. My goal is to come out of this process as a more thoughtful, capable, and well-rounded engineer — someone who doesn’t just use tools, but truly understands them.
Resources I’ll Be Using
Here are the main resources I’ll be following as part of this journey:
🎓 OSSU Computer Science Curriculum — an open-source, self-paced path modeled after a full CS degree.
📘 How to Design Programs (HtDP) — a systematic approach to designing programs and learning to think like a computer scientist.
🧠 TeachYourselfCS.com — a curated guide of the best resources to master the core CS topics independently.
🏗 Structure and Interpretation of Computer Programs (SICP) — a legendary text that explores the deep principles of computation and programming.