I'm studying Computer Engineering, 2nd year. What topics should I master in so that it makes me
First of all, let me tell you that you are already separated from the majority of the crowd by taking time and pain to post the ques on Quora. Not many students bother to take this pain. Congrats, you are on the right track to success.
Now that you are in 2nd yr of your course, its the right time to start absorbing the elements of computer science.
First of all, like many students do, leave behind running mastering all programming languages - pick one and master on that - say Java Or C/C++. It is more than sufficient to have hands on experience on others. you cant master all, and never will.
Start learning, Data structures and algorithms — these two courses are essence of CS and to grab 7 digit salary, you got to master on these two. After clearing the standard books, be regular to solve problems on these two areas as long as you live. DS and algorithms are endless ocean - you would never be expert but only grow stronger and stronger. Regularly visit sites like careercup, geeksforgeeks, hackerrank etc and solve problems. Learning DS and Algo takes time and get hold on them more through experience. Dont think by just studying in last three months of placements you would conquer them all - No. Just solve and analyse 1 or 2 problems per week it suffice, but being regular is the key.
Create a github account NOW :
I wont tell you what is github (google it), but do create your github account and write all codes there. It will be one time pain for you to become familiar with github, but once you are comfortable it shall be smooth ride for you. Install windows only for Office and browsing , use Linux for all programming assignments.
Practice practice and practice :
All your batch-mates will read the same books, same exams and probably most of them will fall under same band of scores. So, what separates you from crowd ? Today, in most colleges, students focus only on marks - ask the topper and seldom he shall not be able to write a thread safe program !! Focus on learning through implementation, Whatever concept you learn - think how you would have implemented it if you are asked to implement it in a programming language of your choice. Come up with the data structure - analyse the pros and cons of using it and go ahead, have a working prototype and feel top of the world after seeing the output as expected. This is the way to learn engineering - learn by doing. Mark my word - you shall be able to reason more, know more and would open up your mind to embrace new ideas, new strategy and new solution to the problem.
Which programming language to choose :
I often read students asking what programming languages to choose ? Their want to learn the programming language which is in demand in the IT market. Well, language is just a tool - like you have a gun to fight the battle. Remember learning to operate a gun is not sufficient to win the battle, you ought to know how to plan and fight the battle. Dont run behind which programming language is good or bad in the market, they will keep on changing. I shall personally advice you to use C as your fav programming language and implement academic concepts in it - deadlock, multithreading, Sockts, IPC etc. make demo programs of every concept you learn in C. I fav C because it is a low level language, and it is the programmer responsibility to develop and maintain everything from scratch. Java is a pretty high level language, not very good to practice academic concepts as it hide things. Once you conquer C + OOPs, there is no language in the world which you cannot learn in 1–2 months. low level language is like mother of all.
MOOCs : In this era of internet, ample of online coachings is within your reach. Doing courses online is always beneficial - you have to select the courses with great caution and under proper guidance. Again it is an ocean, doing unnecessary things will only waste your time. As a fresher, i would recommend to stay away from specialized courses - companies do not look for specialized knowledge in freshers, its a piece of cake for working professionals - have your fundamentals solid and firms. If you really want to do MOOCs, pls be assured that it adds value to your general candidature rather than specific. Do generic MOOCs if you want to - like MOOC on cloud computing rather than AWS.
Particular interest :
It might possible you develop particular interest in one particular field - say AI, web development Or Networking. You should work for specialization not before you final year of graduation. Companies visits to recruit trainable candidates who they can mold to work in the area they want. So your specialized knowledge is of no use to them neither they are bothered too much about it. You may not be hired if you have 2 patents in your name yet could not write a mediocre algorithm at the time of interview. If getting job is not preference or you are looking for higher education in the area of your interest, then you may pursue your specialization without any hesitation.
This point is not very valid for privileged students from IITs. They already have ample of opportunities to appear for interviews in companies like Microsoft, Google, Amazon etc. Students from Tier-2,3 colleges are not blessed with such opportunities and they have to put in efforts to ring the bells of such companies. Resumes from Mediocre colleges goes straight away to dustbins and filtered out by their automated tools. It doesnt matter how strong is your candidature, your CV would land in dustbin or would never get attention of human eye if you do not do things right.
You need to sell yourself, and should aloud that YOU with SUCH QUALITIES exists. As i said, advertise yourself. but how ? As i said, create git hub account, have on line presence, gather points and credits on stackover flow by participating in technical discussions, have good repo on hackerrank, write quora :D. I firmly believe, if you have studied well, you are better than 70% of your IIT counterparts. There are hundreds of peoples who have managed to get into such software giants despite being from the product of mediocre institutes.