I am currently a computer science undergraduate student(5-year studies).What do you propose for graduate studies,concerning market needs?
More than market, think about what you want to do. That's much more important, and you'll have more fun that way.
Programming for a living is tough enough, so unless you can really connect with what your doing you'll just become another Mort, when what we need are Elvises and Einsteins
Note: Besides when you graduate a few years down the road, I can assure you that the Market's landscape will be different than what it is now. And If I, or anyone, could tell you exactly what that market will be, I'd be answering this question from my private yacht in Tahiti ;)
I'd suggest you ignore current market needs and focus on what you are truly deeply interested in. Something that might even keep you up at night. Graduate studies are hard work, and to spend it on something you're not 300% interested in will make it next to impossible.
With that being said, if your interests happen to align with market needs then more power to you. I do believe however, that you can find a market for specialist knowledge in almost any branch of computer science, whether its security, parallel computing/concurrency, networks, human computer interaction etc. etc.
You should also check this thread on a similar topic: Going back to academia?
This is a good question, with no real good answer.
What are you interested in? If you're any good, this is much more influential in your career than what the majority of your peers end up doing. Chasing the dollar will only get you so far, until you're at a point where the career you wanted looks like a distant and unachievable memory.
Market conditions may be fairly tough at the moment, but do you want to nail your academic education to what the market is demanding now?
assuming you do want to learn CS and work as a progameer I would focus on the stuff that stays valid when market requiremnts change. e.g. take courses that teach DATA STRUCTRES, Complexity, Graph Algorithms. try to learn basic programing in several programing languages representing DIFFERENT paradigms such as: PROLOG, LISP, C++, and even some Assembly.
this type of knowladge will take you onwards when Java is not the most popular language anymore - (if you don't belive that this will ever happen - try talking to people that learned COBOL or FORTRAN...)
Every says do what you want to do, which makes perfect sense. However, I will actually give you a suggestion. Look into a management degree.
Unless you want to stay technical your whole life, e.g. senior programmer, tech lead, etc., then you'll probably want to have some management knowledge under your belt. Granted, you can gain a lot of knowledge via OJT but there are some things you will learn in school.
One of the best and most interesting classes I took for my MSITM degree was business ethics. You wouldn't think it necessary or particulary beneficial but it showed me why so many business flounder or run into problems. They lost focus of what a business is supposed to do.
Even if you never want to become a bona-fide manager, many of the classes will still benefit as a senior tech. You will probably learn good project management skills, different ways of how IT can help the bottom line, and many other ideas that you may not get if you only focused on a hard science curriculum. If you get an IT management degree, you can still stay technical while also learning applied management techniques.
As Robert Gould suggests, you should make your decisions based on what you find most interesting. The best reason for this advice is that graduate studies — especially studying for a PhD — takes a good few years or more. Given the rapid rate of change within computer science there is every chance what the market thinks is necessary right now may be yesterday's news by the time you graduate.
Picking a topic you a genuinely interested in will improve your chances of doing well in that chosen area. And people who are smart, hard-working and dedicated will always find interesting, well-paid work.
Fortunately, computer science is an extremely deep, diverse and growing field with applications in a huge variety of areas. If you are paralysed by the range of options and want to find something that is interesting and has good pay and/or job security, I would suggest looking into areas such as bioinformatics, machine learning (disclaimer: I have a PhD in this area), and large scale databases and file system research. I think all of these have a bright future in the next decade or so.
If you still want more advice, I recommend reading Paul Graham's essays on How to Do What You Love and the section on Grad School in Undergraduation.