What should students be really focusing on? Somebody asked me this question recently – Imagine students who are in 2nd or 3rd year of their degree course right now. They’ll spend a few years finishing college, and a few years just learning the ropes at their first job. So it will really be about 5 years before their career really starts. What will the software technology world be like at that time, and what are the skills that students can work on acquiring right now to ensure that they are well positioned to thrive?
Of course, 5 years is a long time, and to quote Neils Bohr, prediction is very difficult, especially about the future. Still I think some general trends are clear, and there are some other timeless skills that are worth looking at. Based on that I’m giving my list below.
But wait!
Let me not bias your thoughts. Before you read my list, skip to the comments section below, and put down your list. Then read my list and critique it again in the comments. Hopefully we can have a good discussion that will benefit students.
So, here’s my list of areas students need to be thinking about:
- The next billion customers: The IT revolution has probably reached a billion people of the world so far. In the next 5 years, it will reach the next billion. These will be a very different set of people. Many of them will be illiterate – so you need to focus on non-text, non-English interfaces – video, animations, voice recognition. Search for “English Seekho” to get an idea of what I mean. Most won’t have money or electricity for computers, so mobile devices will rule – so you need to start playing with mobile platforms like Android. In general, search for the “the next billion” and you’ll find some interesting material put together by the likes of Nokia, and MIT giving you ideas on what to focus on.
- Usability: As IT touches the lives of more and more people, less and less of them will be “computer savvy”, and less and less of them will view computing devices as something that needs to be learnt. Consequently, the products that will succeed, will be the ones that are easy to use. And making something easy to use is rather difficult. It is a sub-discipline of computer science, and there is a lot of theory, and a bunch of well-defined algorithms and practices you can use to make things easy to use. The whole area is called HCI (Human Computer Interaction), and UCD (User Centered Design) is a part of it. It’s an area that you must be familiar with
- Computer Science Fundamentals: This will never go out of fashion, and yes, when I look at students coming out of our colleges, this appears to be a rather neglected area. Far too much emphasis on specific programming languages, and specific “technologies” is a mistake. Whatever the future holds, you will be well served by knowing the basic theory of computer sciences. Learn data-structures and algorithms. If you don’t have a favourite data-structure, and an algorithm that you find beautiful, then your computer science education is incomplete. If, after seeing an algorithm, your first thought is not about the complexity of the algorithm (O(n), O(log n), etc.), then you need to hit your books again. If you’ve only learned Java and C#, and you don’t really understand pointers, heaps, stacks, you will sooner or later be at a disadvantage. Understand the basics. And while you’re at it, also learn mathematics and statistics.
- Presentation skills: This is not a computer science skill, but this is one of the most important skills that computer science students are missing. You must treat presentation as equally important, or more important than your program, design, and algorithms. And you must spend as much time learning presentation (from books, in classes, and in practice) as you spent on programming languages, and computer science subjects. I’m sure you haven’t done that, hence this item in my list. You should know how to write well. Not just papers and documents, but much more importantly, emails, and blog posts, and facebook wall postings, and tweets. You must think about what the user/reader/client wants to know (instead of what you know and want to tell). And of course, you must know how to speak well. How to tell a story instead of listing some arcane facts about your work. How to leave out stuff that you find extremely interesting, but the listener doesn’t.
- Economics: Scott Adams, the creator of Dilbert says: “When you have a working knowledge of economics, it’s like having a mild super power.” Basically, if you understand the fundamentals of economics, you can see and understand what drives people and technologies and success and failure a lot better than people who do not understand it. I hated the fact that I was made to study economics in IIT for my computer science course. It seemed like a complete waste of my time. Now, looking back, I think it was probably the most important course.
What do you think students should be focusing on?
(Note: I’m supposed to be participating in a panel discussion in MIT on Monday, 7th Sept, on this topic. Instead of going there and spewing my gyaan, I thought I would take this opportunity to have a larger discussion on this topic, and your comments will help me do a better job (or go there with a better list), so please leave comments. Thanks.)
(Update: Please note: Many comments on this article are by 12th std. students who want to know how to select an engineering college or branch. In response to all of those, I’ve written an article on how 12th std students should select an engineering college/branch. Please read that article, and ask your doubts there. I will be deleting any comments on this post that are related 12th std choices.)
+1 for Presentation skills and Fundamentals.
+1 for Analytical skills too!
My customised list———
1. What are your interests?
Remember Microsoft and Google founders worked on their interests and not what was hottest thing happening during their time.
2. Its about taking things to the next level.
For example,
Flash back–>’90s : Think of theaters then.
Present –>2009 : Multiplexes nowadays.
Future –> ?? : Megaplexes??
3. If you have thought about doing something “STICK TO YOUR PLAN” no matter what. Things will happen.
Never mind, if you are advancing at a slow speed towards your goal. It is at least better than doing something at lightening speed in the wrong direction.
Thanks a lot Navin. Your list is great. You have truly explained your points well.
your third point is the one i like the best…
not only does it make u a professional but it surely makes u a valuble asset in a particular field of cs.. and its a vast arena so to have a strong knowledge is better served than a little about everything..
Dear Navin,
Thanks for the items in the bullet list, and specifically for including the fourth and the third items (in that order).
* Many junior programmers, and even senior programmers/team leaders/project leaders seem to have unfortunately had no opportunity to learn presentation and writing skills. Additionally, I’ve found it difficult to convince junior programmers that these skills are relevant to their career (perhaps I could have done that if I myself had better communications skills). One of the most useful presentations that I have seen on this topic that I’d like to share (and one that I have revisited on multiple occasions) is by Simon Peyton Jones, and is accessible at http://research.microsoft.com/en-us/um/people/simonpj/papers/giving-a-talk/giving-a-talk-slides.pdf.
* As for your point on unnecessary emphasis on mastering specific languages and technologies, I think that is partly driven by the fact that many companies bucket new employees as “C++/Java/.NET resources” (I have a problem with being thought of as a resource rather than a person, but that’s a topic for another discussion).
As a result, there is a much more emphasis on understanding software development tools, methodologies, and frameworks. This leads to a general mindset where knowing obscure properties of rarely-used features of some programming language or tool is seen as being much more relevant than having at least some familiarity with topics in probability, combinatorics/discrete math, basic number theory, graph theory, etc..
Going beyond what you have mentioned, it would be nice if you (or any other reader) could share ideas on how students can be convinced that these subjects are important.Put another way, how does one respond to statements such as:
“In my job as a Java programmer, I spend 99% looking at and writing Java/JSP boilerplate code. I have access to fast hardware, or work on application programs that make the different between O(n log n) and O(n^2) time irrelevant for all practical purposes. I have libraries that do everything for me. Substantiate your claim that knowing about Fibonacci heaps, or Gaussian elimination, or Student’s T-test is even remotely relevant to me.”
without sounding too philosophical, pedantic, academic, unrealistic, and impractical?
@Harshal, totally agree with your point #3: stick to a plan. Everything non-trivial that someone tries will go through a bad patch, when she’ll feel like giving up. She must get through that phase.
For point #1: follow your interest, I would say that if someone has a passion (something like motorcycles, or guitar, or hindi movie songs) then she should definitely try to do something that combines their profession (i.e. software) with her passion – her best and most long-lasting work will come from that. On the other hand if her “interest” is a general area, like “networking”, or “programming languages”, then I would suggest that she should be open to options and opportunities – such interests can change rapidly with the company you keep.
As for your point #2: while I generally agree with it, I think it is rather difficult to put into practice without experience – so success students have with it will be limited.
@KS, that’s a great question ( “how to convince students that these subjects are important.” ) – unfortunately one that I don’t have a good answer to. So I would definitely be interested in hearing if any reader has any suggestions.
I could, in theory, try to come up with arguments that could be made to the students – but I’d rather hear from someone how has (hopefully successfully) tried it in practice. (“In theory, there shouldn’t be any difference between theory and practice. But in practice, there is.”)
Navin,
I am agree with you on all above five points. Still I can emphasis importance of “Computer Science Fundamentals”. What I observer over the years that students only focus on interviews and written exam. That is fine. That is important but that is not every things. In many companies interviewer ask questions about language. ( Though his intention is to check student’s concepts, logic, attitude.) What we have experienced in IT industry if are Good in logic and concepts, you can learn and mastered in any new language.
Same thing for mathematics and statistics. Many teachers in university are talking about removing “mathematics and statistics” from B.Sc. Comp. and BCA syllabus. They are important in Computer Science. There are many situations where we realise importance of fundamentals.
All good points, here are my thoughts on the subject of getting the basics correct:
1. make a university level rule that you cannot get your degree unless you clear around 8 online programming tests – something similar to MGPT (Machine Graded Programming Test) that NCST had. It was impossible to clear the test unless you have good knowledge of data structures, algorithms and other core computer science concepts.
2. Anyone who can influence hiring decision at their organization should ensure that the candidate is not evaluated on how well he knows the syntax or how well he knows a particular API. Unfortunately, this is “the” trend at least with Indian Software companies.
Point I intend to put across is that it is not entirely the fault of students that they are not focusing on core computer science. We as professionals should take that blame on us for making our industry technology/framework/language oriented rather than striving to make it a real “Engineering” industry.
vivek sir,i didn’t get your point….i mean is industry/technology/framework/language oriented is not a real “engineering industry” ?? what is needed in real engineering industry?? plz reply sir
Nice list. I would like to add a few things for students aspiring to be programmers.
1. Fundamentals (algorithms and data structures… you have already covered this)
2. How to use version control (in fact I think all college programming assignments must be checked into CVS/SVN/GIT by students)
3. How to write clean readable code (clarity of intent, comments, formatting)
4. Writing maintainable code (separation of concerns)
5. How to ask questions on forums
6. How to collaborate with other developers
7. Communication skills (you have already mentioned presentation skills… but I would like to add communication skills for learning how to “make a point articulately”, “written communication… especially writing coherent email”)
8. How to use social media for connecting with the larger development community (I think student assignment submissions should be done through their blogs. This way students can start building a digital portfolio of their skills while they are still in college. Blogs as well as podcasts can be used for assignments and presentations)
I am sure there are many more, but these points come to mind right away.
I would rather see students learning Computer Science fundamentals. Not to say others are not important, but the chances of someone hitting a compiler textbook post studies, are slim. So, while they are at it, they should ensure they have nailed it right. They should also be coding a whole lot.
Presentation skill should be replaced with verbal & written communication skill.
I disagree with suggestions of focussing on billion customers and learning about UI. They are niche areas and can be learnt if someone is interested in entpreneurship or usability.
My list: (apart from computer fundamentals like algorithms etc. which are of course required)
1. Learning ability: As you have rightly said, technology will keep evolving in unforeseen directions. So ‘learning to learn’ is a key skill.
2. Adaptability to new thoughts & ideas.
3. Reading & comprehension: These basic skills are ignored many times, but are crucial in many ways..ability to listen, read, understand & analyze are so fundamental to the software engineering process.
4. Writing/expression: Programming or design requires clarity of thought & expression. If you can’t express your thoughts simply & clearly, chances are it reflects in your code & vice versa.
5. Width of knowledge: (as against only depth in chosen domain)
Along with your mentioned points, Navin, I think, students must be aware of practical world of Software profession.
For that I would suggest, students to go through the blogs like http://www.joelonsoftware.com/ & http://www.paulgraham.com/.
It’s great to learn from the experiences of entrepreneurs like Joel Spolsky & Paul Graham
Besides, I would suggest few good books to read.
1.THE MYTHICAL MAN-MONTH: ESSAYS ON SOFTWARE ENGINEERING / FREDERICK P. BROOKS, JR.
2. Code Complete by Steve McConnel
1. It is important that students develop as ‘T’ individuals, which refers to a dept of knowledge in one field(computer *science* in this case) and .. a broader knowledge of the entire industry..
2. contributing to 1 open-source project.. beginning Third Year.. serves as a very good foundation.
Hi Navin,
You have compiled an excellent list. I’d like to add the following.
1. The current environment has shown that there are tremendous learning opportunities through social (professional) networking sites. Exposure to these sites with the right approach (linked in , Twitter) will help students learn.
2. Learn to use a keyboard. If you are going to use it for the next 30+ years, it is worth spending a few days and saving on a huge amount of time and getting a non-important thing out of the way.
There’s a small list on my site that I compiled a few days ago. Not all suggestions may be applicable in this context though…
http://www.employdex.com/article_0002.aspx
Hi Navin,
The above compiled points take care of the major functional aspects that a sofware engineer requires. I would like to highlight the importance of academics in grooming a personality required to become a software engineer.
Our acdemics, we should agree is more of assignment (theory) based and the evaluation system more of an end result based system. So finally students main worry is the amount of marks they score. While this is fine with the initial years of graduation, towards the end the grooming should be in a way as Nishant rightly said, to create ‘T’ individuals with the academics taking care of the horizontal leg of ‘T’. Think of a system which is scenario based and there is evaluation of the thought process. A system that encourages a self discovery model in which students are decision makers and responsible for the outcomes. This I believe is only possible through an internship/incubation programme that simulates an industry environment for these future professionals as the last leg of their graduation. I would also like to mention that these programmes are already there for the M.Sc. (Comp. Sci.) & MCA students. Then where’s the missing link?? Its the approach of students towards these programmes and somewhere the institutions are not very serious about evaluating these internships. The only way the students can get serious towards the basics that the industry requires is by creating a good evaluation system of these topics which in way can help the industry also in their recruitment process. The product of such a system would probably reduce the difference in the fresher and experienced labels given to IT graduates.
Here is an interesting post by Chris Dixon.
“The only college major that matters”
http://www.cdixon.org/?p=848
Relevant snippet.
“Why is it so much better to learn computer science in college (or before)? Because after college it’s very hard to find the time and discipline to teach yourself coding. On the other hand, it’s pretty easy to pick up business skills, economics and all sorts of other skills on the job or in grad school.”
Of course, this could simply be confirmation bias at my end.
students sshould have
1 good communication skills
good knowledge
they should be in up to date with the position & recent implementation
nice body language
i shold persue all the things that would come in my ways n be updated to all the google basd programms.
Hi,
I m a computer science student in 2nd year. Can u please suggest some courses that i should be persuing now? I have done c c++ but not satisfied with my basics.
Sonia,
Instead of doing a course, I suggest you do an actual project. Find a mentor on techstart.in, or on the PuneStartups mailing list, or write to us at PuneTech, and then just go ahead and do a project. You’ll learn a lot more that way, that by doing a course.
hey sonia do that course in which u have interest if u have more/good knowledge about c,c++ then go to java…
hey in my opinion, besides interest , what other things which matter is the the faculty ,,, courses availiable and while searching on the same…i came across this institute by name of Computer Society of India….what i could find was they have good faculty and vast courses availiable…if you want you can check out the same….
http://bit.ly/cdps21
@Garima, I agree that faculty and courses are very important. But you seem to have misunderstood what Computer Society of India is. It is not an educational institution, and it does not have any facutly or courses. They are just a professional body that organizes events and other such things at various chapters across the country.
Well Student’s need exposure to lots of things
they don’t even know about, which on contrary they should know…
And, student’s themselves should be eager
to know about what they can do apart from
using their brain as a razor head coding machine
for Companies..
So, to make student feel need for thinking like that,
they must be told that go and see out there, be curious about other stuff too….
Reading local publication text’s and big references
will get a good job… but might not give satisfaction..
@Navin,
You are absolutely spot on with all 5 points.
To answer the question of how to convince programmers why they need to know the complexity of an algorithm, you can easily point out that the next platform would/could be a cheap mobile phone with a not-so-fast processor that should convince them.
I would like to add one more thing to your list, learn and master another skill other than computers, be it music, sports, trekking etc. Most programmers are pathetic with other skills, even a hand-man’s job for that matter.
I am not trying to give any gyaan, but these are some of my observations when i am interviewing at my workplace:
1. Resume’s generally quote experience like 2.3 years, what does that mean, why not put hours, seconds and minutes. Apparently this trend is established by head hunters, why dont people break that trend beats me.
2. Candidate’s have zero presentation skills, they have no idea what the problem was that they worked on, they only quote big funda’s like this domain that domain, domain my a$$.
They are usually only looking at boiler-plate code. Presentation is very important. A good quote comes to my mind ” If you cannot convince them, confuse them”
3. They are scared to try out new things, they say things like oh i dont want to change my profile, what profile, no one that i know of was born a Java or C# programmer, hell most good programmers i came across so far have been mechanical engg., chemical engg, accounts people, singers, musicians, they did not know how to work computers to start with, but they were passionate and learnt the basics really well. A famous Edison quote comes to mind : “I have not failed. I’ve just found 10,000 ways that won’t work.”
4. Certifications are good, but they cannot be a replacement for basic knowledge. I asked a Sun Certified Java programmer what the complexity of the algorithm she wrote was and she was stumped.
5. Funny incident i gave a programming assignment to a Java certified candidate with 6.3.2.1.45 yrs exp (lol). to write a string reversal using recursion and she was stumped. Another fresher asked me is Java recursion the same as C,C++, C# recursion. God!!!
Hi Mates,
My brother is completing his final year engg. from Indore , he is very confused about his future , companies like bonti services are coming for campus but asking 12k as deposit amount..I am not very sure about the future of all this,,, will somebody guide me that what he should do to get good placement as in which technology will be in demand in near future and how about doing SAP training is that worthy?
Dear Navin,
I came across this write-up while randomly googling for Computer Science Must Know. And i really feel the 5 -point list you gave is a must but sadly it is rarely implemented and I speak from a very personal experience being exposed to the working of a typical Engineering college myself, and a good one at that.
One very real concern i have is regarding the stress that needs to be placed on what you call the Fundamentals- our professors really work to give us the background and necessity of stuff like Algorithms, What-where-which-data structure-to -use, the necessity of makinf a program/code user/programmer friendly etc
BUT come Internship time/Job Hunt time/Summer training time all this goes to nothing!!!! All that we are worried about is How many languages we know/how many certificates we have/whether we have done an internship with a Fancy Hot-shot company or not. No one really cares as to HOW you get there, as long as you DO get there.
Phew! Sorry for the long comment but this article is really though provoking
Currently I am in a huge conundrum as to HOW to make best use of my Summer break cos everyone around just seems hell bent on getting Stamped by a fancy Summer-training Company.
It would also be fun if for sake of the real confused souls out there ( like me :p) some here could tell WHAT really would help w.r.t
1)learning the tools of the trade( my leaning is towards advanced Java)
2)efficient Summer trainings for knowledge in Computer Science
3)and also how one can start being an active participant in Open Source Software contribution
@Isha, great point. Part of the problem here is that many of the companies that come offering internships or jobs for freshers are looking for specific skills with specific tools or languages. This, I think, is a big mistake, both, for the student as well as for the company. But such is life. If a student insists on only working with companies where importance is given to core knowledge and the fundamentals, it might become difficult to find the right opportunities.
I think, the best thing for a student to do is to put some effort into finding out who is the person or people who will be mentoring you. Make sure that you are in a good company, with good quality mentors around you. Other things will follow automatically.
Also, be active in the local community. Join mailing lists and tech groups and attend local tech events whenever possible. That will vastly improve your chances of getting good projects / work / jobs.
For example, in the case of Pune, here is a list of groups and organizations that you can join.
Hello.
I am Anubhav. I am a class 12 student currently giving my board exams. I have been very good at programing languages like java and C++ at my school level. I hardly practice programming, and rarely Study computer science as a subject. Still when it comes to programming, i rarely make mistakes. I find it very easy. This is tempting me to opt for Computer science and engineering as my future subject. As studying computer is never boring for me and i get engrossed in it while i study it.
Is my decision correct or is my decision immature and i should have a second thought about it.?
If yes, then what are the part time courses i can do in my vacation which can help me in getting my basics in computer science strong.?
Plz help, i need guidance as no one in my house is really educated about computers.
Hi Anubhav ..I gather you are enthusiastic about computer science which is a gr8 thing, but you must understand before choosing it as a career that its not just about programming and you will get to know about many other aspects of it…depends a whole lot on which college you get admitted into.. Apart from IITs, IIIT Hyderabad is perhaps the most ideal place for a CS major.
VIT University also has a good 5 year integrated MS in Software Engineering program (if you are really into just programming). Hope you succeed in your endeavors.
Apart from IIT which other institute provide quality education on computer science and engineering.??
Is SRM,chennai a good option?
Dear Navin, Thank you for your very informative article. I am student of B.Tech(Computer Sciences) in 2nd year. I having working on my fundamentals.
hi
i m a computer science 2nd year student..can someone plz help me with what other exams i should give in order to be distinguished from others and also to gain command over my subject…plz plz help me out.
mail me on:kshiitj_ladia@yahoo.com
Or write in here and i would read it later
thanks
take care
well i am a CSE 2nd year engg. student and was about to have summer training in just couple of months..I wanted to know where should i join should it be MNC or some coaching centre which offer short term certified courses?
Another was i have good presentation skilles ,which career can i possibly be to make full use of it?
Lastly, what should i learn more in CSE which will be still hot after i finally get into industry?
i complete my CSE engg. what i do next?
Hello,
I’m a second-semester software engineering student in Iran University of Science and Technology.
My list as a
1. Learning how to generate ideas
2. Learning how to solve problems
3. Learning algorithms well
3. Being a good programmer
4. Being good with operating systems
5. Knowing things about network very well
7. Learning about AI
6. Doing Research in different fields, AI, algorithms etc.
Hiieee…90 % of my list actually matched with your list. I think I am going in the right direction…but in-spite of making my list…i still had a doubt that whether i should follow this or continue my boring syllabus. But after reading your blog, this gave me confidence of being a better engineer and will surely study in this approach…apart from my syllabus of course.
hay….hiii actually ive just completed my 12th standard this year..! i have decided to join CSE(Computer science engineering).I’m a little scared about the subject and what programming i’ll be facing,so im really perplexed..!
And please tell me how programming will be for a beginner like me n how to master it..
@Srikanth, Don’t worry so much. You’ll do fine. When they’re teaching programming, pay attention in class, and as soon as you’re able to do so, start doing small programming projects by yourself (learn from Google – there are lots of easy-to-follow tutorials…)
but navin sir,its important for me to get interest in programmin how do i get that n start preparing my own programs.HOW DO I GAIN INTEREST IN IT?? any simply methods where i can excel ??
Be sincere in your works and thing about always your profession.you should take it enjoyfully.
be a good friend.take it easy if any fault in my words and forgive me.
@Srikanth, you will get interested in programming once you are able to write some interesting programs. I would suggest waiting for your class to start. Don’t get so worried.
But if you can’t wait, check out my Python Challenges blog. You’ll need to read it in reverse (oldest article first, which is at the bottom of the page).
Hi,im in the beginning of my 3rd year of comp science engineering.So far i just know c,c++ but i’m not a master in it,especially the pointers part.I just had data structure subject in which i really find time complexity chapters(the big O,and theta)very confusing.I’ve read the abv subject from Cormen yet didnt very well get it.I tried video lectures of MIT but it takes a lot of time for me to watch videos courtesy slow connection.Is there any tutorial which would give good notes?
Also i wanted to do a project on topics like data network security,socket programming,mobile applications,operating system or on open source(or any topic you find good) but due to my lack of knowledge i’m simply clueless on how to start.I don’t have any teacher to guide me so can you suggest me good tutorials that would help me from scratch?
@chantel: Go through this link. You will find some good information about data structure book.
http://stackoverflow.com/search?q=data+structure+book
Also, http://stackoverflow.com/ is pretty good site for programming related queries.
Hey guys,
I am a mobile developer and received an email from Forum Nokia, inviting for a workshop to learn how to create Widgets and more about QT.
This workshop is on 16th June in Mumbai and we just have two days for registration. So just wanted to know if any one knows more about this workshop or has attended any such workshop before.
If anyone can share their experiences or thoughts in the same regards?
The link to their website that I received in the email was: http://www.codeofpartnership.com/agenda.html
Thanks in advance..
Hi,
Actually i hav just completed my 2nd year of Comp Sci & Engg …
N still i m confused on what a basis i’ll get a job and what courses should i go for … I hav a little knowledge of C\C++ n right now getting training for JAVA.. U people seemed to be very much knowlegdeble.. can u help/guide me please !!!!!!!!!!!!
Reading above all posts i got little confused.. Can u people tell what things i must be knowing
great article ….
after reading ur article it made me to think once again that what should i do to succeed….
thanks a lot….
helo,
im done wit my intermediate with MPC and lokking forward for doing engineering.I have got interest in computers n all the stuff related to it.So i have planned to do Software engineering.But i hve a doubt whether to do CS or IT?And whats d difference between them and which amnong them has more demand.can u plz help me out….!!!
i have completed second year . i am pursuing btech in computer science and engineering . i can do the c++ programming bt many things are still not clear to me nd now java , dotnet , html ,etc other subjects r coming…..please suggest me wat 2 do .either carry on with the java nd other subjects or i should study c++ more …nd also suggest me wat should i do in these holidays 2 improve my computer skills ????
@Vaibhav, please read the whole article again. Stop focusing on C++/Java etc. Focus on core subjects. Data-structures. Algorithms. And other things mentioned in the article.
@Ravi, you need to decide whether you want to be a manager or a techie. If you want to be a techie, then do an MS. Apply to universities where seniors from your college have successfully gotten admissions. If you want to be a manager, then work for 3/4 years and them apply for an MBA.
i try to focus on these
i have a doubt though i wanna go pg probably mtech in cs or mba dunno
any ideas which is better n where should i apply for
wanna study abroad in cheap
how can do major training in pune free of cost
for engineering student
@chanchlesh, I suggest self-study. Use google. MIT Open Courseware. Wikipedia. Open source projects. Lots of other places where you can learn things for free.
thnks i really feel ur points r gud.i have taken cse(1 year).so i will surely take ur points
navin sir i actually just completed my 12th standard this year, i have decided to join mechanical engineering but i have a Littel bit of interest in CSE
,so i confused to choose which one plz tell me
Hai, Navin sir I am Just completed my 12th standard in IIIT.
My University offers 6 engineering courses. I have interest in CSE.But I am not perfect in python programs,till now I don’t know about java ,c++ and other languages.Can I suppose to choose that stream in engineering.sir please reply me fast….
@Sri, I just wrote a detailed article on how to choose an engineering college/branch. Check it out here.
sri, don’t worried about your languages first you must concentrate on basics than everything will ok don’t choose wrong branch ,if you have any clarification ask any other experts in your field
the comments are so good but there must be some thing that can be more helpfull to everybody
i think they must tell us some easy ways to score good marks
easy ways means some sort of shortcuts
an easy way to learn difficult things
No, @Ameya, there are no easy ways to score good marks. Only hard ways (which include studying from textbooks, or studying from google, or studying from MIT Open Courseware or studying from IITs NPTEL). There are no shortcuts or easy way to learn difficult things. There are only difficult ways (like actually practising, doing projects with industry mentors).
Sadly, life is tough, and it’s not a very forgiving place for lazy people.
Thank you navin sir,
Now I am studying in a Rajiv Gandhi university of Knowledge Technologies which is newly established by our former CM
rajasekhar reddy sir,and K.C.Reddy sir. Here we got 2 degrees
after completion of B.Tech. one is from IT and one is from B.Tech. If I have interest in Computers with out taking the CSE also I will get a degree from IT. Is it necessary to take CSE or shall I move to another stream and to get a grip on another subject. I have confidence that what ever I choose I definitely
do good work in that.But suggest me a good course.
Thank you navin sir,
Now I am studying in a Rajiv Gandhi university of Knowledge Technologies which is newly established by our former CM
rajasekhar reddy sir,and K.C.Reddy sir. Here we got 2 degrees
after completion of B.Tech. one is from IT and one is from B.Tech. If I have interest in Computers with out taking the CSE also I will get a degree from IT. Is it necessary to take CSE or shall I move to another stream and to get a grip on another subject. I have confidence that what ever I choose I definitely
do good work in that.But suggest me a good course.
(Update: Please note: Many comments on this article are by 12th std. students who want to know how to select an engineering college or branch. In response to all of those, I’ve written an article on how 12th std students should select an engineering college/branch. Please read that article, and ask your doubts there. I will be deleting any comments on this post that are related 12th std choices.)
Hello,
My son is in his 7th semester CS and is bogged down by many myths.He thinks he needs to equipped with so many languages and course before he completes his Engg and prepare for job hunt and feels other wise he is left behind due to competition.Pl advice.I have been advicing him just to concentrate on study and project and passout with flying colors and things will fall inline.
Vasant’s son, please listen to your dad. He is right. You are wrong. CS fundamentals and actual work on interesting projects is far more important than learning languages and getting “certifications”.
Dear Navin,
Thanks a lot.I am sure he will surely take your advice possitively.
Thanks for guiding him.
hello sir I have just completed my 1st year,2nd semester in computer science engineering in Rajasthan technical university.Till now all the branches had the same syllabus.I in my 1st semester had computer subject,though i have a good theory knowledge in both c programming and basic computer architecture my practical knowledge according to me is lacking because throughout the semester we used to memorise some selected programs that were to be asked in our practical exams so i really dont know the way a programmer should think when he is assigned a program.My 2nd year is about to begin within 2 weeks and i am just tensed please kindly guide me
i feel shy to say this,im in the 3rd yr of comp sci and i can clearly say that i know nothing.as a victim of circumstances i ended up taking comp sci in a sad coll in orissa with basically no interest in programming.since the exposure and college environment is nill,i basically ended up learning nothing but luckily cleared all my computer related papers.i should worked hard and learned stuff on my own but i just couldnt do it.
i have interest in computer networking but ppl say it isnt what we comp sci guys are supposed to do,so tht leads to further confusion.
all i want to ask is should i go ahead with CCNA courses or should i just brace myself and learn programming languages which i guess is too late now (lol).help me out i feel kinda sick right now.its not tht i dont understand programming but its the lack of interest tht has crippled me to learn more and explore.
Nikhil,
I would suggest that you should do stuff that you enjoy, and as long as you do that sincerely, and don’t give up easily, you will do well
hiii Navin
I like ur 5 points and surely follow them.Currently i am in 7th semester (computer science) ,right now i am preparing for campus placements for TCS,Infosys….
Data structures and system software are my favourite subject in entire engineering.I really want to work with companies which requires their deep knowledge,so could you please suggest me some good options.Also its always been my dream to work with GOOGLE pls help me what should be my strength to work there.
True indeed.I guess its high time that i straighten out things.Thank you Sir,i shall come back for more advice 🙂
because of recession many cs engineer’s had to loose their jobs in that condition also to choose cs engineering is a right decision or not? if yes then what should be our study pattern that we got perfect knowledge and good academic results?
@Resham, The recession did not affect “good” CS engineers who understood the fundamentals and were good at what they do. In that sense, CS continues to be a good field to do a degree from. And what should you do to do do well in CS? That’s exactly the point of this article. Please re-read the article and comments. There’s lots of advice there… (focus on fundamentals, etc..)
1. good communication skills
2. programming skills in of the decent programming language (C/ Java / C++). it is important to write code by hand. so take some puzzles, code those puzzles, consider all possible test cases that the code should handle, run the code, give the test cases as inputs and check if things work as expected
3. data structure and algorithms
4. system administration and development on Linux platform (you will develop ability to see things inside out. e.g. log file to be checked for system errors, PS command etc)
5. object oriented design concepts
hi, naveen
your vision are right,but circumstances
making people to do what is in the trend.
But what harshal told was good for them to follow,i.e (STICK TO YOUR GOAL,INTEREST).
“Patri se hat kar kuch kam loghi soch te hain”
I’m a B.Sc.(Computer Science) graduate. I think basic understanding of the subjects like computer architecture and organisation, data structures, algorithms, operating systems, networks, Object-Oriented Programming, theoretical computer science, compilers, software engineering, etc. is necessary for a student before she starts working.
Further, the student should find out her areas of interest and specialise in those. Then find an appropriate job.
hello sir
i am currently pursuing my btech cse in chennai….my 3rd sem xams gt ovr jus nw n right now i am njoyin my semster holidays………..my parents keep advising me 2 spend d time effectively by doing something dat will be useful for my future….i realise dat dey r right but i am not able 2 plan well……i do have knowledge about c/c++,computer architecture,data structures which was covered in college but i am not that confident…..please suggest some resources to equip myself with knowledge necessary for clear understanding of the topics covered so far so that i can confidently enter my 4th semester which is to begin only ater 1 month…….i will be also garteful 2 you if you can suggest me some sites which provide an insight about programming and other topics essential for a bright future…..i was misguided by many sites…i feel i waste a lot of time finding the best resource…..thanks in advance….
hello
‘m 2nd year 3rd sem engg.student nd yet i know c and c++ but still i found myself as i don’t know anything nd 1 thing i would like 2 say dat i want know how the compiler work nd what happened internally when we write anything in our coading of a program.plz suggest me ,how can i know atleast explanation of those things in precise manner nd any thing which improve my knowledge .
hie , i am arjun ..doing B.E in CS branch 3rd year ..i have learn many basic prog. languages(c c++,java) but i am not satisfied with my basic concept …i just want know that ,wat can i do in CS field otherthan devloping software & other programing concept job…plz rply me on my Email i.d ..i m waiting for your reply thank you …
Pretty good points mentioned above.Well i’m a 2nd year student pursuing btech comp sci+msc maths(now that’s an option in BITS or some IITs)from BITS pilani.I have learnt only C and java thats it. 🙁 Feel very inferior as my other contemporaries are pacing at speed of light knowing lots about their field.One basic question-i aint that great at programming right now but certainly dream to master it someday.How do i sharpen/improve my programming skills?Can you suggest some practice books or something analogous to it.Secondly,i want to do my masters from stanford university.Apart from a good GRE score,what are the other things that i need to keep in mind?Plus can you put some light on google summer of codes.
@nainika, the best way to improve programming skills is by doing programming. There are two ways you can do it: 1. think of some ‘pet’ project of your own and start implementing it. For example think of implementing some web application on google appengine. 2. Do the exercises on coderloop.com. They’re pretty good.
In either of these, do not hesitate to take advice from seniors in industry; even if you don’t know them, you should go ahead and approach them for advice/guidance.
Sir…
I am pursuing b.tech in comp science and currently i am in 7 semester. After reading your article and all the comments that came by, i am confused about where am i heading to. I don’t know whats it gonna be after my grad. i like programming and as far as i think, i am good at management as well. I am confused what should i opt for after this, whether i should do M.tech or MBA or MS whether i should do it from India or from abroad or should i start working. Sir, i am really confused and tensed. I don’t want to end up thinking its too late and i should have started preparing earlier. Sir, pleeease help me….
i am doing my 2nd year b.e. cse.. i like to do some mini projects and paper presentations.. i need some ideas about doing those things.. and also to know which will be the best for me..
sir
i am doing 3rd btech cse….i like 2 know about how the interview will be and what we have in the written test and all.and also i would like to aout miniprojects and i need some ideas on that,like what i have to present in the project
please help me sir…
hello sir,
I would like to take your decision i.e I am studying puc-2.So the next year I have to join B.Tech so i am interested in computer science engineering.So please give me the suggestion whether it is good and also give an account of some detailsd of this group
Sir…
I am pursuing b.e in comp science and currently i am in 6 semester. After reading your article and all the comments that came by, i am confused about where am i heading to. I don’t know whats it gonna be after my grad. i like programming and as far as i think, i am good at management as well. I am confused what should i opt for after this, whether i should do M.tech or MBA or MS whether i should do it from India or from abroad or should i start working. Sir, i am really confused and tensed. I don’t want to end up thinking its too late and i should have started preparing earlier. Sir, pleeease help me….
hie , i am ramesh..doing B.E in CS branch 3rd year ..i have learn many basic prog. languages(c c++,java) but i am not satisfied with my basic concept …i just want know that ,wat can i do in CS field otherthan devloping software & other programing concept job…plz rply me on my Email i.d ..i m waiting for your reply thank you …
english is a most important language and today’s it’s require compulsary so how to improve my english?
Hi,
I am a first year CS student. This blog is very essential and useful to improvise myself in those five things and also to understand what is essential being a successful CS enginner, which we ignore most of the time…..
Hi,
I am a first year CS student. This blog had shown a proper way to move because i was in confusion how to make use of communication skills i had skills. I hope as a CS engineer i update my knowledge. Thanks for giving most useful information.
i am manohar,the 1st year b tech student studeing in vvit .i am watching this website for first time.it contains really important things.i think this will be useful for me.definitely i will try to increase knowledge in those five things which are mentioned above.
thnx sir,
for making me realise by elaborating ur 5 pt dat y our college juit has put in each sem a subject of mba(,i.e. group nd cooperative processes ,managerial economics,etc.),which i thought 2 be a futile subjects.
i had studied +2 of biology-science.Now like to take computer science in engineering.i want to know what are the subjects in this? and Is this branch is easy for a biology student?
no it will be not
you should be best in maths
u hav to work hard
i am a 2nd year B.E student (vtu).
i am really nervous about my future. becuase of this nervousness am not even doing good in my academics, it’s all because i lack my knowledge regarding the subject and the futurisctic goals that i should have, so that it ll get things moving..!! please guide!! help needed!! pls pls pls pls
@Karthik, I’d suggest you stop being nervous, and stop worrying about the future so much. First focus on your current academics. Study, and get good marks. If you can’t make sense of the your textbooks, then use Google to read up on the same topics. Once you’ve figured this out, you can start worrying about futuristic goals.
karthik, don’t nervous about your future it will be ok.. coming to your course, when you are listening to the class try to know how it is useful in real time scenario’s and try to think it in different angle and ask doubts..enjoy the subject ..!
hey Navin, thank you for writing this, i found it really interesting and helpful, i am first year computer science student and i am sure this will be really helpful for me, though i didn’t had my own points but i will copy yours. Thank you again for this and please keep writing more.
Thanks 4 giving such wonderful suggestions to all who r pursuing cse . I hope that what i learn here will prove beneficial for me in coming years
my name is ragamounika.i have completed my intermediate. now iam studying b.tec 1st year. i am taking the group cse. so i want some sugestions from u.i was tensed with my future.now what i have to do? i dont getting any idea.
hello sir,
I am a student of BTECH 2ND year.i always enjoy making programmings in c and c++ languages…and i want to work more on my programming skills..so can you please suggest me some links and other references which can help me in doing so………….
I am going to start my computer science engineering from this year. I want to know what extra courses/projects I can do in my extra time.
Me studyin cse in 2nd year… Yet til ì studyd c and c++ only bt i want to hv mor dept in sub so plz help
Navin Sir…
I will be doing B.E in CSE, my college 1st year is about to start, i’ve started learning C online through video lectures and reading online, please suggest me what should I learn and from where. I also have interest in learning C#. but i’m a bit confused on what will be taught in my college, and what should I learn. like, which languages I should get myself familiarized with after c; c++, python, java?
I’m too eager to learn things that’ll be taught in college right NOW.
Also, please give link to study material online which you think is good.
Thanks a lot.
@AV,
Python might be a good idea. See Why every programmer should learn Python or Ruby.
Also don’t worry so much. Just keep looking for interesting things to study without thinking too much about whether they’ll help your career or not. You’ll find out that most things help in their own way sooner or later. Read the story of Steve Jobs and the Calligraphy class for an inspiring story about this.
hi frnds,
i got seat in cse branch. infew days my classes starts. could u suggest me some important sites useful for me
i think the information provided by you is very useful to me-i think the things you mentioned here are the exacts neefds to a computer science engineer and i am very thankful to you.
1. should have a good score in all exams!
2. should know something in very strong manner!
3. try to bring sharpness!
4. should be very hardworking !
5. always do as hard as possible!
“f, after seeing an algorithm, your first thought is not about the complexity of the algorithm (O(n), O(log n), etc.), then you need to hit your books again”.
BUT what books , will u please tell me.
computer science fundamentals and presentation skills are very much liked topics.
thanx,
NAVIN
i read already this . i want new things, i mean to say give me the different things that are important to a CS engineer.and finally thanks for the information and if u will updated i will be a happy man.i really appreciate u , for providing this much of information about CS.
1.know how to program 2.Learn basic design of computers hardware 3.Be familiar with different OS 4.Be able modify some electronics component.5.Have information on what hackers do.
Sir..
My name is Balaji.I am studying B.E computer science.All people around me says that Programming is an important aspect of a Software Engineer’s life.But I am not interested in Coding. So other than coding what can I do to Shine in the software field…?I have great interest in getting details about mobile products their features etc..So..If there is any other chance for a CSE student other than program coding?
@Balaji,
The bad news is that you have no useful skills right now, since you were supposed to learn programming, but you don’t want to. The good news is that you have clarity on what you like and what you dont. There are many careers/jobs in IT that are not directly about programming. Business Analyst. Project Manager. Just Manager too. You need to find out what each of these roles involves, and start learning the theory and basics of those domains. Your CS degree will be sort-of useful, but you will need to push yourself a little to ensure that you have the skills to excel in that area. Or you could do an MBA and become a generic manager.
Thanks a lot for the article, it was really helpfull but can you help me with how to achieve all the things you have highlighted above as presentation skill, communication skills n all…
dear navin,
I am a 3rd year comp.engg. student. I have studied C,C++ languages + databases related subjects. Earlier you have said to focus on ‘the basics’ of CSE means data structures n algo. etc.
1) Does that mean I should pay more attention to those subjects than the languages?
2)Shouldn’t I concentrate on the basic languages like C,C++,JAVA ?
Or am I supposed to master these languages + to have a good thorough knowledge of the core subjects of CSE like algorithms n etc.?
@Mukul, basic principles of programming, design of programs, data-structures and algorithms are more important than any individual language. But the important thing to realize is that none of those things can be learnt without actually writing programs. (Just learning the “theory” of those topics, without actually using them in programs, is not enough.) Which means, that learn at least one language well – and use that to get a good understanding of the fundamentals.
Thanks Navin and everybody else who has contributed to this discussion! A google search(out of frustration 🙂 ) landed me on this page and i am glad something like this existed. I would like to add my 2 cents to the discussion to help myself learn something through your replies.
Many people here have suggested that the computer science fundamental subjects like Algorithms, Data structures, etc. are a must for any computer science graduate. I have been a Java programmer for about 4 years and have worked for different projects for different US clients. I am teaching Java programming these days. The important part: Never ever in my 4 yrs of experience have I felt the need for in depth study of subjects/topics like algorithms, data structures, graph theory etc. Infact i have always missed not reading enough books on Java and its related technologies and tools.
Don’t you think subjects like data structures, algorithms, graph theory, compiler design etc. are not required for all software projects. I am not sure about the figures, but by what i have experienced, and based on figures on job related websites like http://www.naukri.com and http://www.dice.com, majority of the software projects being developed today are web projects and most of them use tools/frameworks/api related to one technology only (Java/.Net/Ruby etc.). Mastering one particular technology/platform (Java/.Net/C/C++) requires studying and learning soooo… many things. If i were to compile a list of books that a Java fresher programmer must go through before entering the industry, it would easily cross the count of 10!
Keeping in mind the effort that a student has to put in today to become a good Java (or .Net) programmer, isn’t it unfair that we also require the student to learn computer science fundamentals as well, when we know that in most of the projects, he would not be needing those subjects? Isn’t it time that subjects in a computer science degree should be directly related to what is required by the market? Should we have different types of degrees for different skills, say Web Development, Application develoment, System software development etc.? What is more important for a Java programmer: Java and its related technologies completely OR subjects like Algorithm, DS, Graph theory etc? Shouldn’t these subjects be optional? I personally feel that most of the B.Tech C.S courses today force every student to learn atleast 5 different skill sets. Is it really required? Is a .Net programmer required to know compiler design, Networking, DBMS theoretical concepts, hacking, Java, C, C++?? Wouldn’t it be better if only one (or two max) of these skill sets be made compulsory and rest optional? Would we save a lot of time that is unnecessarily wasted during degree years?
I hope i haven’t offended anybody here. My intention is to learn from others so that i can be a better teacher and be able to guide students better.
Thanks!
Kapil
According to me a student of Computer Enggineering must strongly focus upon his programming skills. Whatever you learn, try to actually impement it, maybe C or C++ or JAVA ,Data Structures, Algorithm or anything.
Apart from this, make JAVA or either .NET as your research area. You may choose anyone filed but go into the depth of it as these two are the main developments kits used. Those interested in Web Developments must go for JavaScript and Python.
i really appreciate the effort put to point the specific points to take care while studying cs… many just wonder wats the use of few subjects they read .. it would really help if u cud just specify the use of some of the subjects like systems programming,etc..