What should I start doing in my second year of a BTech in CSE if I have no knowledge about it?
If you want to pursue your career in software engineering field then its a good time to start practicing programming. Here are a few things that you can do.
Start reading Introduction to Algorithms by Thomas Cormen. Its quite a hefty book and will take time to finish. It will give you a strong foundation on data structures. Don’t worry if you can’t understand all the maths involved. Try to understand the algorithms used.
Practice programming. Start solving programs on paper/white-board. Try to run it manually using paper and a pen. At the start, it might be quite boring and cumbersome but eventually it will help you to write and debug programs comfortably. This is even helpful in programming interviews where you have to write error-free code on paper. GeeksforGeeks | A computer science portal for geeks is one of the best sites to start with. It has a rich set of quality programs. Solve at least 5 programs daily.
Enroll in any course on Coursera | Online Courses From Top Universities. Join for Free It offers multiple courses from various universities across the globe. Choose one or two on the basis of your interest and whatever time you get. The course assignment are not very tough and it hardly needs 3–4 hours of studying a week. A single course is 4–5 weeks long. So, you can comfortably complete 2 courses a month. Also, since you are a student you can enroll in any course of your choice all free of cost :) and can get a certificate issued by the university offering the course which you can share on your linkedin profile.
I would recommend you to create a github account where you can keep your code safe and later you can easily lookup how you solved any problem.
If you follow these guidelines then a year later you will have a strong grasp on data structures and programming. To practice more programming you can signup on various sites like HackerRank, HackerEarth - Programming challenges and Developer jobs, Programming Competition,Programming Contest,Online Computer Programming and there are many more. Signup on any one of these and start practicing. When you solve programs from http://geeksforgeeks.com you know which data structure to use as most of the time the questions are straightforward but these sites describe a real-world problem where you have to find a solution on your own. You have to identify the data structure and the algorithm yourself. Also, these sites have its own set of test data which can evaluate your code and tell if your code passed all tests or if it took more time. Initially this will seem tough but don’t give up. Look up the editorial for solution if you can’t come up with your own solution but firstly spend time to solve the problem.
By the time you will reach in final year read Cracking the Coding Interview by Gayle Laakmaan. This will guide you how to crack interview of companies like Google, Adobe, Amazon etc.
Choose whatever programming language you are interested in. C/C++ is really good to start with.
Don’t worry if you find solving problems difficult in beginning
Author : CSEpracticals
You still have THREE very important years with you. I would say go for competitive coding after clearing basiscs of data structures starting right from pointers, linked lists, stacks, queues, heaps, etc. GeeksForGeeks would help. Learn either C++ or Java for competitive programming. If you are going for C++, learn STL. Java also has similar inbuilt ds. Learn how to use it. With practice you will be able to figure out how which ds to use and when :)
Before jumping into competitive coding you should be well versed with ds. Also, a bit knowing about basic algorithms like merge sort, quick sort, binary search, helps.
Move on to adhoc problems in CodeChef, Spoj, Codeforces. After significant experience in this, move on to dynamic programming.
Don’t lose heart. Initially it will be hard. Try upsolving problems, the problems you coudln’t do during the contest time. Try seeing the solution of others. It helps.
And I think the rest you will figure out when you have reached this stage. Sometimes passion matters and you will proceed only if you are passionate about competitive programming.