Learning Path for a Computer Science Student

- 9 mins

This article is written for a student pursuing graduation in computer science for a duration of 4 years. It provides a learning path for a good career in software development, which can be either of the following:

This article assumes the following:

In most of the tech companies, an entry-level software engineer role expects the following:

Before we begin, let’s understand how is the graduation course generally structured. A 4-year programme is divided into 8 semesters, with a break of 1–3 months in between. Most of the courses run the class(around 8 hours) 6 days a week, with some half days(4 hours). This also includes the practical implementation part a.k.a Labs related to the courses you take.

Let’s first plan out the time of how and when can you spend your time in following this learning path. We will call this as your additional time. You can spend your time in the following way:

For each day, you can split it into shifts, like morning and evening.

However, this is just an outline and you are free to structure your day/week in whatever way you want to.

Also, for better understanding and be clear with your goals, the semesters are divided into the following categories

Let’s us begin of how you should put additional efforts alongside your semester syllabus to have a better career in software development.

First Semester [Maker]

In this semester, learn HTML, CSS. You should learn how to build static web pages. If you are running out of ideas, of what to build, then start creating static pages of popular and frequently used websites, like Twitter, GitHub, Medium, HackerNews.

Next, you should learn how to use git and GitHub. It’s very important and will be used throughout your entire career in software development. Also, commit all the code that you create during this semester to your GitHub account.

You can learn JavaScript and jQuery if you want to add some interactivity to the pages. This is additional.

You can participate in international challenges like 100 days of code. This gives you a community of like minded people willing to learn and helps you in case you get stuck.

Time: Spend all of your additional time in learning frontend development.

Second Semester[Maker]

In this semester, learn Backend development. You can pick up any language like Javascript, Php, Python, Ruby or Java. The choice of framework is also yours. But the main focus here should be able to create fully functional dynamic apps.

At this point, you can also start participating in hackathons with your fellow peers and learn more about building products in a time restricted manner and working in a team.

Time: Spend all of your additional time in learning backend development

Third Semester[Learner + Maker]

This semester, you should focus on learning data structures and algorithms. You can try competitive programming to learn. It gives you an environment and a community. Or you can learn algorithms by reading and implementing them.

Apart from this, also focus on your web development projects. Keep participating in hackathons and building side projects on ideas that fascinate you.

Time:

Fourth Semester[Exposure]

This semester, start contributing to open source projects on framework/language of your own choice. You can use GitHub trending projects or GSOC past projects to select a project.

Also, you should participate in GSoC. At least, spend some time with an organization, understand their codebase and fix some issues. If you are excited by what they are solving, then write a GSOC proposal on a project idea. This will help you learn more about how to plan out the development, how to manage yourself, and how to be an efficient communicator.

Apart from this, keep sharpening your algorithm skills.

Time:

Fifth Semester [Learner + Maker]

This semester, you need to balance and focus on most of the things you have done until now. Spend some of your time(30%) in refining your algorithm skills. Spend 40% of your time in going deep in maker skills(frontend or backend development or both).

Spend the last 30% in open source stuff. For open source, you can contribute to some projects or publish packages of your own. In fact, one suggestion for this can be to create an open source repo of algorithms in a language of your own choice. This will deepen your knowledge of algorithms, help you learn more about the caveats of a language and help understand how to collaborate and maintain an open source project.

Time:

Sixth Semester[Learner + Maker]

This semester, spend time(50%) in preparing and practising algorithms, the next 40% time in building stuff. In fact, this time can be used to apply to GSoC as well.

At last, spend remaining 10% of your time in learning essentials skills for an interview like resume and portfolio building, and preparing for managerial round interview questions.

Time:

Seventh Semester[Exposure]

This semester, spend entire of your time in preparing for job interviews and securing a job. This will require you to visit each of the skills learned above and balance them.

Time: Spend all of your additional time in this.

Eight Semester[Exposure]

This semester, spend time preparing for interviews if not placed. If you are placed, then you should spend time expanding your overall knowledge about software development. You should learn Test Driven Development and Object-Oriented Programming(if not learned until now). You should learn Deploying applications on cloud providers like AWS or Heroku. You should participate in local meetups of your preferred language and should give a talk. You can also use this time to explore other frontend frameworks like React, Vue or Angular.

Time: Spend all of your additional time in this.

Conclusion

This article suggests a leaning path for a career in software development, which can be followed alongside the curriculum of the college. It is written keeping in mind the experiences and observations of the author, in solving the industry-academia gap.


Special Thanks to Avi Aryan and Pragati Verma for reading draft of this article and suggesting improvements.

Taranjeet Singh

Taranjeet Singh

Engineer turned Product Manager

comments powered by Disqus
rss facebook twitter github youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora