Efficient and clever programming is one quality which every to-be IT professional should possess. Most people misunderstand programming as 'knowing full syntax and semantics set of your favourite programming language(s)'. Programming languages are mere tools to implement your algorithms. The real power lies in devising the algorithm to solve real world problems and this ability needs a solid foundation of mathematics and aptitude. Converting your algorithm into a program in any programming language is the last step.
Most students who learn how to find factorial, fibonacci sequence, palindrome etc. start thinking themselves as great programmers. If you are such a student, you are on a wrong track. I was also one among the same, when I was in 2nd Semester of B.Tech, way back in 2007. Until and unless you train yourself to program for real world problem situations, your programming capabilities are for nothing.
If you want to bear that special quality, then you should hone your programming skills. Just like everything we have on internet, there is a service dedicated to this thing too, on the internet. It is called SPOJ that stands for SPhere Online Judge. The address is http://spoj.pl . Register there. Once you login, you can click "Problems" in the left pane to see a list of programming problems. Click anyone in the list. Read the problem and try to solve. If you are a first timer, pay attention to their input and output constraints and example. Since your program will be evaluated by a computer, not a human being, you need to accept inputs and present output in the way defined in the problem. You can see the example input and output set t understand the issue. Once you solve and test on your computer, you should upload and check whether it gets accepted. Most beginners have problems following the input and output constraints. Once you get used to, SPOJ is very addictive if you are a guy serious about sharpening your skills.
The problems are generally tough mathematical issues. You need to think with open and calm mind to arrive at a solution. If you are a B.E./B.Tech CS/IT guy I would really like to encourage you to continue this as a hobby through out the course. At the end you will be an outstanding guy in your group.
And, if you wish to earn some cash then go to http://codechef.com and participate in their competitions. There are cash prizes for the winners.