# Complete Step-by-Step Guide On How To Start Coding For Placement Preparation!

Hey readers!

My name is Swapnil Kant and I am from Birla Institute Of Technology Mesra, Ranchi. From my second year of college, I have always been interested in programming and creating something or the other related to technology whenever I get some free time. Although I have never been very proficient in competitive programming. I have an interest in it and while I used to code I enjoy a lot but I am not so proficient at it that I could go for ICPC or any national or international coding competitions also I have never coded in platforms such as CodeChef, SPOJ, and CodeForces.

I interviewed with around **10-20 startups** in search of my summer internship 2020 (off-campus) by sending **more than 50 emails** to many of them.

Finally, in march 2020 I received two offers from **off-campus through** **Linkedin** for my summer internship 2020 in **ixigo.com**** and ****Grappus****, but unfortunately due to covid-19, it couldn't happen.**

I would like to share my learnings with the students who are beginners in coding on how to start to code and prepare for your placements, read all the points mentioned don’t skip any because all need to be followed in the same order! so let’s begin!

**The very first step is to explore your interests**. If you are in your first year of college then don’t worry much you still have time to explore yourself! Know your interest and work on it with full dedication and honesty.

Specifically speaking about programming, so how one can know that he/she is actually very interested in it, ask yourself the questions mentioned below, how many of them have the answer **“Yes”**?

**i. Do you love to solve basic logical problems or puzzles?**

**ii. Do you love to write basic codes or scripts to automate stuff?**

are your answers to the above questions **“Yes”**? if so, you are good to go into programming, if not and you are still interested don’t worry give time to it and you will surely make it! everything is possible if you want to learn.

Now, the very first step is to learn the basics.

**STEP 1. Have a grip on programming language**

Now, discussing the first step which is to learn the basics, here the question comes, how to know what are the basics and where to start from? The answer is simple, for programming you need to have a good grip on any one of the object-oriented programming languages such as C++ or Java (recommended).

Why object-oriented? If you are ultimately aiming for top-tech companies or startups you must be very good at object-oriented language, else you are good to go with any other language as well.

Again, here I would suggest some good programming books for newbies for an in-depth understanding of the language and its syntax

**i. C++ The complete reference, 4th edition programming by Herb Schildt**

if you are going with C++ language make sure you are very well acquainted with the knowledge of pointers, structures, and unions.

For java, you can follow:

**ii. Head First Java by Kathy Sierra & Bert Bates**

if you are going with Java programming language make sure you are very well acquainted with the knowledge of exceptional handling, generics, and multithreading.

After having a good grip in any one of the above programming languages, understand its use case, on how to use the language to create something which could be your very first project! such as creating a simple game or a simple script that would do a specific task! such as I have **some example here**, the project which I have done:

Now, if you could make it happen then, you are just going in the right direction and at the right pace! if not, don’t worry dig a little more into the language you are following and it will happen for sure!. These types of projects will let you understand the libraries and syntax of the languages.

Then the next step here would be, keep practicing some basic questions on programming languages input/output questions which are asked by many companies during placements here:

then, keep testing yourself on how much actually you have understood the language which would help you later to actually code problems involving data structures and solve algorithms.

After the above steps, I believe you now have a good grip on the programming language of your choice and then the next major step would be developing an interest in basic **Problem Solving** along with the important concepts of **Data Structures.**

**STEP 2. Concepts of Problem Solving (Data Structures)**

Now, I would assume that you have a good knowledge of any one of the object-oriented programming language mentioned above in the previous point, so let’s move on to the next important skill which one needs to have to code well is the concept of problem-solving which involves the knowledge of data structures first and then algorithms. For starting with data structures you must first need to have proper theoretical knowledge of all data structures involving **arrays, linked lists, stack, queues, trees, hashmaps, and basics of graphs.**

You may consider some of the books to start with data structures and clear your basics and theoretical knowledge which are:

**i. Data Structures and Algorithms: Concepts — Techniques and Applications by GAV Pai**

**ii. Data Structures and Algorithms Made Easy: Data Structures and Algorithmic Puzzles by Narasimha Karumanchi**

I have seen many of my juniors who are new to programming think that solving straight away questions from the competitive coding websites and then learn from them about the basics of data structures, don’t do this as, it may demotivate you and you may not be much clear about your approach and how to solve it!, frankly speaking, I myself have not done much into competitive coding but have a decent knowledge about it, I have done mostly on data structures and algorithms without much practice on mathematical or logical oriented questions involving game theory and advanced data structures and algorithm concepts.

Although preparing for placements is a bit different from competitive coding in placement preparation coding you will be judged on data structures and algorithms with less on mathematical and logical problems that involve game theory, segmented tree questions, and more! so make sure what you exactly want to go for, however, if you are good at competitive coding it's not always necessary for you to crack all product-based companies coding rounds as one of my seniors was pretty good at competitive coding but according to his less experience in placement oriented coding he wasn't able to crack the coding round of Microsoft, but yes! this may depend on person to person.

Now in the starting please go through **easy questions only** as mentioned in the difficulty level and then, go ahead to read some of the more important articles on concepts of these data structures in **GeeksForGeeks**** and read some standard questions based on these data structures:**

**iii****. Stacks**

**iv****. Queues**

**vii****. Hashing**

**viii****. Strings**

**ix****. Matrix**

After you finish reading the above two books and the articles go to code the problems on data structures and at first try solving the problems involving direct usage of the data structure at **Hackerrank Platform****:**

**iii****. Stacks**

**iv****. Queues**

for graphs, you could go on with **basic knowledge on what is a graph and its traversal DFS and BFS, but I would recommend that only after you have solved a good number of problems on Trees and other data structures to get a better understanding you can go with advanced problems if you really want!**

After the above steps, I believe you now have a good grip on the programming language of your choice and then the next major step would be developing an interest in **Algorithms, which basically involves searching, sorting, and many more!**

**STEP 3. Design and analysis of Algorithms**

Now, one can move to the algorithms section, here a **lot of students make a mistake while starting with algorithms which are not having a proper understanding of how to analyze the algorithms or how to understand these algorithms step by step.**

**Students, please do start with basic algorithms first then followed by complex ones!**

start with learning about analyzing time complexity of the algorithms which you can find the complete article beautifully written in **GeeksForGeeks **website go to the nav-bar where it is written **Tutorials -> Algorithms -> Analysis of Algorithms **and read all the articles mentioned there, however in **step 2 **the book** (Data Structures and Algorithms Made Easy: Data Structures and Algorithmic Puzzles by Narasimha Karumanchi) **would also give you a basic understanding of time complexity analysis of various standard and also help you to analyze the time complexity of codes which you have written on your own as well!!, do read it with full understanding and concentration because this is very important before you go for designing algorithms, however, you may also take help of **YouTube videos of Abdul Bari Sir**** (recommended for beginners) **it has great content for better understanding of algorithms for beginners, although you may **search on Google** for more youtube videos according to your level of understanding, I think this should be enough for the beginning after you are pretty good with the concepts you may move to complex algorithms and problems.

The start with reading some important articles on the topics below will make you have a good understanding of how you can optimize the problem involving in data structures

**i.Searching****: **Here although it is not necessary to go with all types of searching algorithms, get a good grip over some **important algorithms** such as **binary search, linear search, and have a basic understanding of ternary search along with their running time complexities. **However, if you have enough extra time and want to explore more you may go on learning other sorting algorithms as well!

**ii. Sorting****: **Here again, it is not necessary to go with all types of sorting algorithms, get a good grip over some **important algorithms** such as **quicksort, merge sort, selection sort, and insertion sort along with their running time complexities. **However, if you have enough extra time and want to explore more you may go on learning other sorting algorithms as well!

**iii. Pattern Searching****: **Here again it is not necessary to go with all types of pattern searching algorithms, get a good grip over some **important algorithms** such as **Rabin-carp, KMP, Z algorithm, and Manacher’s algorithm along with their running time complexities. **However, if you have enough extra time and want to explore more you may go on learning other sorting algorithms as well!

After having a good understanding and grip over these basic algorithms you would be able to find some change in your style of coding and it would make your thinking skills more easy and efficient and, you would actually realize that now using these algorithms you can decrease the running time of your algorithm and code faster!

Now, its time to move on to some complex algorithms initially read about these algorithms in the **books which I have talked about at the starting of this point **and just read about these algorithms and try to solve the standard problems involving these algorithms:

**i. Greedy Algorithms****: **Initially practice and read about the standard greedy algorithms and try to implement them in your codes and understand when and where it is used!

**ii. Dynamic Programming****: **Initially practice and learn about the concepts involving in DP which are memoizataion top-down structure and bottom-up and overlapping concepts

knowledge of all the above algorithms is good to have in-depth in the starting although once you get acquainted with these algorithms and how to implement them you can explore more on algorithms!

After you have done all the steps mentioned above you are now good to go to practice coding questions from some good interview preparation websites such as:

read about questions asked in various interviews here:

**iii****. CarrerCup**

of course, you could search for more in google search!

Apart from the resources above, some of the companies also ask for puzzles and logical problems which you need to solve in a given time, you may refer to the link below to get a good and sufficient understanding of puzzles asked and how to approach them

For puzzles refer **GeeksForGeeks Puzzles**

**STEP 4. Fundamentals of computer science subjects**

Now, I would assume by now that you have a good grip and understanding of programming language and concepts of data structures and algorithms so, it's time to move forward!

Fundamentals of computer science subjects include the concepts of **computer networks, operating systems, DBMS (Database management systems), and software engineering. **All these subjects are mainly theoretically and are usually present in the **college curriculums** of certain **circuital branches (CSE, ECE) **so make sure you learn the concepts well and know how to use those concepts while you are working on a live project either in your internship or self-assigned projects, if these subjects are not in your course then, don’t worry I have shared some resources to get started! Although, these subjects involve a lot of working algorithms and they are actually used by many companies and so, they ask a majority of questions from these subjects in the **II or III round of technical interview based on the company.**

Make sure you don’t skip any of the algorithms present in these subjects and don’t skip any content as all are important. **Make sure you make notes of all the subjects in your copy and keep it with you to have a quick glance before 4–5 days of your interviews.**

Some important and basic learning tutorials on these subjects are:

**iii****. DBMS**

**STEP 5. Keep some basic and good projects!**

For applying for internships and entry-level jobs do some basic projects and add them to **Github, based on your interest in web development or data science, or machine learning.**

You may check out my GitHub repo to know what kinds of projects I have done **Here**** **although I have done basic projects on the web development part as it is my prime interest, you can do what you like based on your interest there is no restriction, **but make sure you are pretty good with data structures and algorithms if you want to work for tech companies in tech roles!**

Now, I believe you are good to go to apply for internships/entry-level jobs and if you have followed the steps honestly you would definitely secure a good offer.

**At last stay motivated, work hard, and have patience! because good things take some time to happen!**

I hope you would like it, I would be sharing more such articles to share my learnings and experiences!

Till then follow me on medium and this posts a clap if you liked it!

**Keep learning and keep growing and also keep exploring more!**

**All the very best!**

For more interesting and informative articles and tips follow me on **Medium**** and ****Linkedin**