5 minute read

This document mainly focuses on programming and concepts related to computer science. It is for both types of students - those who are learning to code from scratch and those who are already good at it, and want to apply for Software Development Jobs.

For students who are starting from scratch can start learning at least one programming language, I suggest you start with Python as it is one of the easiest to grasp and there are a ton of projects which you can create using this language. I started learning Python from these resources:

Courses

Basics

When you have got enough understanding of how to write basic programs in Python, I would suggest you to get your concepts cleared on Object Oriented Programming, Data Structures and Algorithms.

Object Oriented Programming Principles

Data Structures & Algorithms

If you want to get an introduction to Computer Science concepts, I would recommend Harvard CS50 Course


Practice

After getting a good understanding of Computer Science, one can improve his/her coding skills in a particular language like Python, Java, or C++.

These links given above will act as a foundation for your coding skills, and now you can move on to practicing programming and creating projects. For practicing coding in general, I would suggest you practice on HackerRank. In HackerRank, I would suggest you to gain an intermediate Language Proficiency in Python and then eventually start to complete the Problem-Solving sections in HackerRank.

Projects

For projects in Python, I would suggest this Sentdex’s YouTube Channel

Creating Projects is a creative field… if you have original ideas, be brave enough to implement them and try them… Unique projects are an eye-catcher for the interviewer… and make you stand out from the rest of the crowd…

To implement projects there are a lot of libraries in Python… Here are some that I have used and know of:

  • PyGame Library - for Game Development
  • NumPy, Matplotlib, Pandas - for Data Science
  • Python OpenCV Library - for Image Processing
  • Scikit Learn, PyTorch, TensorFlow - for Machine Learning (these are advanced libraries… one should have knowledge of ML before implementing these)
  • Django Library - for Web Development
  • Selenium - for Web Automation

Some project topics like Web Development also require knowledge of HTML and CSS… which one can learn side by side with Python.

One needs to have a few good projects in their resume, as some companies only ask questions about the candidate’s projects. These are the avenues where the company judges you on your creativity, problem-solving skills, team working skills, etc.

I don’t want you guys to implement all these libraries… I’m just suggesting that you can use these libraries and read more about them if they are aligned with your interests… For placements advanced projects are not necessary… but can help you stand out from the rest… you can also get placed with simple projects… but then you have to prove to the interviewer that you have a good understanding of fundamental concepts…

Things discussed above can help you land a Dream Level Software Development job with a good package. If you want to go in-depth in CS I would suggest you read further in this document.

IMPORTANT: I know that most of you want to learn topics like Machine Learning, Data Science and Web Development, Android Development, etc. But before studying that I want you all to understand that one should have a clear understanding of programming fundamentals, one cannot directly jump to learning ML, Web Dev, etc. Although projects in these fields are interesting and give the resume a boost, one cannot get into Software Development roles as companies majorly test on the fundamental concepts. One needs to clear the Coding Aptitude first so that you can show off your cool projects in the Interview Rounds. And one more important thing, one should be able to communicate all these skills and projects to the interviewer well, one should be confident, concise, and clear during the interview. Having cool projects but an inability to communicate well may sometimes result in rejection by companies.

If one wants to aim for Super Dream and Elite Companies, he/she should be well versed in the above-given topics and also be specialized in a particular field like Web Development, Application Development, Machine Learning Concepts, etc.

If you know a particular language like Python, I would suggest you learn a core language like Java or C++ now. Some companies say that they only want coders who use Java or C++ only and not Python.

I would suggest you learn Java as there is a huge amount of content available online. I started learning Java from, 30 Days of Code! Playlist

Just like Python, one can practice coding on HackerRank in Java and create projects in Java.

For C++, I can suggest FreeCodeCamp’s C++ Tutorial

To be honest, one need not be well versed in C++ as I have rarely seen a company ask C++ as a necessary skill… you are well off with learning Java.

After studying a core language, one has to improve Data Structures and Algorithms concepts and Problem Solving… I suggest the following resources,

Specialization

Some Dream/Super Dream Companies also require candidates with DBMS Skills. To improve one’s DBMS Concepts I would suggest you read the following PPTs.

One can also learn from GeeksForGeeks, and to get certification in DBMS one can apply for Database Management Essentials by University of Colorado

If one wants to go into Web Development, I would suggest you watch the following video and follow along from the video… Traversy Media - Web Development in 2019 - A Practical Guide

If you want to specialize in Machine Learning I would recommend the following,

If you want to get into Data Science, these are good courses,

These topics are quite daunting, I would not recommend that you should necessarily study these… but these are honestly in my opinion those “standing out points” which may get you placed…

ALL THE BEST GUYS! :thumbsup:

Updated: