Computer Programming today has become one of the most important skills in almost all domains. A basic course on Computer Programming fundamentals has been made a part of the curriculum of all colleges across all departments. Basically, every graduating student has to take a “CS101” course which is about the basics of programming.

Unfortunately, the way CS101 is taught in most colleges is not effective. This results in students losing complete interest in Computer Programming. Many students become afraid of Computer Programming and they want to stay away from it for life.

The reality is that Computer Science is easy and anyone can learn it, provided that the learning approach is correct. If you try to memorize things because your teacher told you to do so, then you are sure to lose interest. After a time, memorization becomes irritating. What students should really focus on is the right approach to learn Programming so that they can utilize it for various purposes.

In this roadmap, we have focused primarily on 1st-year college students who are new to programming and also on non-CS students who want to give a shot to it. The roadmap would be organized as follows:

  1. Choosing the Programming Language

  2. Learning the fundamentals of Programming

  3. Interesting Project ideas at the beginner level

  4. Things you can do next

Choosing the Programming Language

A lot of students are always worried about the programming language that they should use to start learning to program. Many in fact, argue on which programming language is the best.

The reality is that at the CS101 level, it hardly matters which programming language you start with. Your focus should not be on specifics of a particular programming language. Rather, you should focus on the most fundamental concepts which are by and large same across various programming languages. The differences are at the advanced level which you can always pick up later.

The most popular programming languages that are taught in various colleges are C, C++, Java, and Python. For instance, at IIT Bombay, C++ is the programming language that is used in CS101. Note that I have italicized the term “used”. It is because nobody really teaches C++. They teach the fundamentals of programming. C++ happens to be the programming language that they’ve chosen to teach the fundamentals. Similarly, at IIT Kanpur, they use C.

In quite a few colleges, Python has started picking up and gaining popularity. In fact, in a large number of online courses, Python is the primary programming language. Java is also popular in many institutes. In fact, as mentioned previously, you could choose either - it hardly matters at this stage.

Learning the fundamentals of Programming

The core objective at the beginner level is to learn the basics of programming and to get good at writing code in a well-known programming language of your choice. The following are some of the most important concepts that you should cover:

  1. Variable

  2. Constant

  3. Operators and computation

  4. If-else statement

  5. Loops - for loop, while loo

  6. Switch/case statement

  7. Function

  8. Classes and Objects

Computer Programming is like swimming - you need to apply it to learn it. You can’t learn to swim by watching someone else swim. You yourself need to dive deep.

For Python, Udacity has a great course on Intro to Python Programming. For Java as well, there is a course on Intro to Java Programming. For C/C++, you can check Udacity’s C++ for Programmers.

Taking one of these fundamental courses and implementing the programs and concepts that are taught is sure to give you a great first-hand experience of programming. In fact, even if you are from a completely non-technical background, these courses are easy to grasp and help you get started in the world of Computer Science and Programming.

Interesting Project ideas at the beginner level

Once you are through with a course on fundamentals of programming, you should certainly try and implement a basic project. It need not be too complicated. The key idea here is to recall all of the learnings of the course and assemble them into a project that you can not only learn from but also showcase on your resume. Here are some sample project ideas:

  1. A quiz game

  2. Student/Employee basic data management portal

  3. Hangman game

  4. Digital clock

The project should ideally be no less than 500 lines of code. Agreed that different programming languages have different syntax and so, the number of lines of code isn’t really a good indicator of the project quality. However, 500 lines is a good benchmark to aim for in any of the above-mentioned languages (C/C++, Java, Python).

You should create a basic document that talks about the concepts that you learned as a part of the project. That will help you to track your learning experience through the online course and also help you showcase on your resume.

Things you can do next

There are a huge number of things that you can do next. Here are some suggestions:

  1. If you are in the 1st year of college and you have vacation time, you can start learning Competitive Programming. SPOJ is a great problem-solving platform where you can apply what you learned in the above courses.

  2. If you are in the 2nd year of college, you might want to consider taking CS courses on Data Structures and Algorithms to further enhance your skills. We have talked about it in the Software Engineer roadmap Phase 2

  3. If you are a working professional who just started learning how to program, you may want to learn other tools and technologies like Web Development, Android Development, etc. We have talked about it in the Software Engineer roadmap.

Your focus should be on 2 things:

  1. Going deeper into what you learn

  2. Learning new concepts

You may want to check our Software Engineer roadmap which is meant to guide people like you in building a successful career in Software Engineering, right from 0 levels.


  1. While the choice of a programming language is important, at this stage, you can choose any and proceed forward

  2. You don’t really have to join an offline class to learn to program. There are tonnes of online courses from which you can learn at your home

  3. Focus on building fundamentals and right concepts

  4. Try and work on a project so that you can showcase on your resume.