How to go about learning programming? It’s really tough, especially in this era where there are so many options to choose from. You could learn computer science via college, boot camps, online courses, reading books, YouTube tutorials; the possibilities are endless! In this post, I will share my How To Learn Computer Science roadmap.

Choosing A Direction, Or Not?

After reading a ton of articles on learning programming and listening to people talk about the best way to do so, many people talk about choosing a direction.

Programming is a broad topic.

There’s web development, app development, data science, hardware programming, robotics, etc. Then within each category, there are a million different sub-niches one can spend their entire lives researching. Front-end web development, back-end, DevOps, iOS development, Android, desktop, machine learning, deep learning, artificial intelligence, etc.

With so many different directions, it’s essential for one to focus on a particular subject so that he or she can reach their goals faster.

For example, someone becoming a full-stack web developer will focus on web development skills like HTML, CSS, Javascript, and others. That person wouldn’t ever touch languages such as Swift and R and learn about app development or data science.

There just isn’t enough time… or is there?

In a blog article I wrote on Medium,  Specialization Is Absolutely Worthless (here’s a friend link that lets you read the article for free), I talked about how one person has enough time to learn everything.

Additionally, because that one person spends his time on multiple different subjects, he will have a significant advantage from the transferrable skills you get by exposing yourself to lots of information.

In the context of computer science, someone can become an expert on web development, app development, and data science at the same time. By learning all three, one will gain exposure to a variety of different concepts and skills that can be used in each different subject.

Just off the top of my head as an inexperienced learner, problem-solving, logical reasoning, programming languages like Python, and various coding practices are all transferrable skills between pretty much all categories in computer science. And I believe there are more, but I will only know after learning.

That being said, it’s much easier for you to focus on one specific subject if you already have a goal in mind. For example, you want to become a data scientist within the next year or start a business focusing on web development.

But for those who want to dabble and dip their feet in the water, don’t choose a direction, just try everything!

My Personal Roadmap

What about me? How am I going about learning programming? What direction am I taking?

To be honest, I’m a dabbler. I’m not trying to get a computer science related job any time soon, I’m not going to university to take computer science, nor am I just going to learn programming for no reason.

I am learning to program because I want to, but also because it opens a whole new world of business ventures up for me.

Lots of my ideas are app and software related. If I’m can’t execute those ideas because I’m limited by tech people, that would suck a lot. But since I’m half a dabbler and have no idea what I’m doing, I will try out a little bit of everything.

Here’s my roadmap:

how to learn computer science roadmap

I made this roadmap so that I start with a general learning of computer science. I decided to go with the CS50 course from Harvardx that you can get on edX because it covers a considerable amount of different topics and that I already bought it 2 years ago and never completed.

Then I will start narrowing myself down into web development and data science because some of my ideas that I have right now will require those two skills. I chose freeCodeCamp and the John Hopkins University Data Science Specialization on Coursera for the two topics, respectively.

It’s important to note that this roadmap is not locked in place.

The one thing I know about the future is that it’s uncertain. Better and more resources will always pop out, I might love one of these subjects so much that I dive even more in-depth, I might not even complete everything, etc.

That’s also why the roadmap is relatively general and very different from other roadmaps that talk very specifically about concepts and programming languages to learn.

When you’re a learner like me, it’s hard to know exactly what you need to know when you jump into a topic like computer science.

CS50x – A Beginner’s CS Course From Harvard

As mentioned above, I bought the CS50x course around two years ago in 2018. However, I never finished the course.

It’s a tough course. This is usually the first computer science course computer science majors will take at Harvard University. Yes, although taking this course doesn’t mean you went to Harvard University, you will be listening to the same lectures as a Harvard student.

I first came across this course when I was reading online articles on Medium. Unfortunately, I forgot which article it was. Still, one person compiled a list of the top online courses to learn computer science.

CS50x was sitting there at number one. It has a ton of credentials and great reviews by students. People have been saying that CS50 was tough, but it really helped them understand and secure the fundamentals of computer science.

It’s time for me to see the course through and learn for real.

The reason I have this course first on my How To Learn Computer Science roadmap is that it covers a large variety of topics.

The course starts off with a lot of computer science concepts that any programmer should understand. Things like algorithms, arrays, data structures, etc.

But it also pushes you into various languages and computer science fields such as Python, SQL, web development, app development, and games.

By starting with this course, hopefully, by the end, I will have a good grasp of my fundamentals as well as some more advanced stuff allowing me to learn everything much faster.

freeCodeCamp Cause It’s Free

freecodecamp logo

freeCodeCamp is an excellent resource for those wanting to go into web development. It’s the best free resource out there!

Just like CS50x, I am not entirely new to freeCodeCamp. I’ve actually had an account with freeCodeCamp for a very long time. But also just like CS50x, I never did anything.

With freeCodeCamp, I intend to build my full-stack web developing skills and start a business building websites for other people while I’m at it.

I already know how to create blogs and e-commerce websites with WordPress and page-builders like ClickFunnels. Having web development skills will expand my capabilities even further, especially as you can do even more with WordPress and ClickFunnels when you know how to code.

Building websites for other people compliment my current abilities as a marketer. I can do Search Engine Optimization (SEO) and understand graphic design, with web development, I can actually create the pretty websites that gets views.

freeCodeCamp isn’t just about creating beautiful looking websites, and neither am I.

If you look at my roadmap, you’ll see that freeCodeCamp covers a ton of subjects like Front End Libraries and Data Visualization. My goal isn’t just to be able to create nice looking websites, but also interactive web apps that can change people’s lives.

As you look at the freeCodeCamp topics, you’ll also notice that some of the things are redundant with the other courses I listed. For example, algorithms and data structures are already covered in CS50.

This is intentional, by learning something a few times over in different contexts improves my understanding and memory of the topic. When I go into those topics in freeCodeCamp, I will have a more robust understanding and learn faster because I discovered it once in CS50.

Moving Into Data Science

While I’m learning with freeCodeCamp, I will also be moving into data science and taking the Data Science Specialization from John Hopkins University on Coursera.

Just like the CS50 course, the Data Science Specialization is taught by accredited professors from John Hopkins University. I won’t be a John Hopkins University student just because I took this course, but I will receive some of the same content other John Hopkins University students receive.

This is a recurring theme, but the reason I chose this specialization was that I already had experience with it. I had already taken the first course out of the ten that are required, so it’s definitely up to me to see it through.

A lot of my business ideas revolve around data science. I also know just how vital data science is in today’s world.

Every aspect of my business can be improved with data science. For example, advertising and productivity.

As I learn data science while learning web development, I will learn how to create web apps that could be seriously profitable and help a ton of businesses and people. But we’ll see what happens.

App Development, You’re Nextphoto of apps

If I’m creating web apps, an obvious next step would be mobile apps.

I can create mobile versions for all the web apps I design, make games, or launch mobile-only apps.

Currently, I don’t have a course or learning strategy in mind. CS50 does touch on the subject, but I will need to find something that pushes me to go deeper.

However, I already have a huge task ahead of me. The three topics I have listed above will take a long time, and I definitely have to consider what else I could be learning.

For example, I could go more in-depth in data science and take on challenges such as artificial intelligence and health-specific data science stuff. Or maybe I want to create games. Or perhaps I want to do VR and AR.

I don’t need to plan out everything. Like I said before, the only thing I’m certain about is uncertainty.

We’ll See Where Life Takes Me

Planning is important. But if you don’t do anything with the plan, it’s just a dream.

One mistake I have made throughout my life is over-planning. I spend so many hours planning precisely what I need to do that I don’t have enough hours for the actual doing part.

It might be good for you to just skip the whole roadmap thing. To learn computer science, just choose a course randomly and start it. See where it takes you.