A Computer Science Roadmap


Vestin Hategekimana


October 7, 2023

A Computer Science Roadmap: From Theory to Mastery

Hey there, future coding maestro! Venturing into the vast realm of computer science can seem intimidating. Fear not! This roadmap will guide you through theoretical foundations, essential languages, and core software engineering practices, all while encouraging you to explore further.

Note: It’s clearly an exaggeration to sum up all computer science learning in a single post. In reality, each part deserves its own roadmap. But for the moment we’re content with this because of the structure of our channel. When we get more content on our YouTube channel, we’ll be making a lot of changes to this roadmap. So, don’t see this content as the entirety of what you need to learn, but simply as the beginning of a journey under construction!

1. Theoretical Foundations

Before diving into coding, understanding the basics will serve you well throughout your journey.

  • Algorithms & Data Structures: Learn how algorithms work and why certain data structures are preferred for specific tasks.

2. Introduction to Shell Programming

The command-line interface (CLI) is a powerful tool.


  • Basics of CLI: Navigate directories, manage files, and get comfortable with the terminal.

Terminal playlist

  • Shell Scripting: Automate tasks using bash (or your shell of choice) scripting.
  • Modern Shell: Let’s discover some modern shell and their interesting features. Here we dive into Nushell!

Nushell playlist

3. Python

A versatile language with a gentle learning curve.

  • Python Basics: Variables, loops, conditions, and functions.

Python’s fundamental playlist

  • Advanced Python: Object-oriented programming, list comprehensions, and modules.

  • Python Ecosystem: Libraries like numpy, pandas, and flask to supercharge your projects.

4. Rust

A language focusing on performance and safety.

  • Rust Fundamentals: Understand ownership, borrowing, and lifetimes.

Rust playlist

  • Concurrency in Rust: Explore Rust’s approach to threads and safe concurrent programming.

5. Haskell

Dive into the world of functional programming.

  • Haskell Basics: Grasp the idea of pure functions, immutability, and laziness.

  • Functional Paradigms: Monads, functors, and lambdas.

6. Go (Golang)

Simplicity and efficiency in one package.

  • Go Essentials: Learn the straightforward syntax, Goroutines, and channels.

  • Web with Go: Build robust web applications using Go’s standard library.

7. C++

A high-performance language used in system/software development.

  • C++ Fundamentals: Classes, objects, inheritance, and polymorphism.

  • STL: Dive deep into the Standard Template Library and its offerings.

8. JavaScript

The backbone of the modern web.

  • JavaScript Basics: Understand variables, functions, and DOM manipulation.

  • Modern JavaScript: Explore ES6 and beyond. Asynchronous operations, Promises, and Fetch API.

  • Frameworks: Get to know popular frameworks like React, Vue, and Angular.

9. Software Engineering

Beyond coding, there’s the art of building software.

  • Version Control: Get proficient with Git.

  • Design Patterns: Understand common software design patterns and their applications.

Software engineering playlist

  • Testing: Learn the importance of testing and various methodologies, from unit tests to integration tests.

Clean code playlist

10. Vim

The quintessential text editor.

  • Vim Basics: Understand modes, basic navigation, and editing commands.

Vim playlist

  • Advanced Vim: Buffers, windows, plugins, and custom configurations.

11. Exploring New Programming Languages

Never stop learning!

  • Research: Look for emerging languages and their use cases.

Code news playlist

  • Experiment: Play with sample projects, build simple applications, and test their potential. It doesn’t matter if you’re ignorant to begin with - the most important thing is to discover new things.

Ignorant videos playlist

Final Words

Remember, the world of computer science is vast, and this roadmap is just the beginning. Trust in your ability to learn and grow. Every error, every compiled code, and every successfully deployed application is a step forward.

Happy coding and may your journey through computer science be filled with wonder!