Several of the other answers on this page jump to providing solutions without first understanding the problem. In my view, this is a mistake.
As as CS student you undoubtedly know that, in order to optimise code, you need to:
- Determine where the bottlenecks are so you can target your efforts where they'll be most effective.
- Use objective measures so you can be sure you aren't making things worse - either within the bottle neck or globally.
The same principles apply to improving your own performance.
Identify the Issue
The first thing you need to do is to isolate the areas where you need to improve your speed. Be as precise as you possibly can.
- Do you find it difficult to understand the problem's requirements?
- Do you have a problem choosing the overall approach to meeting the user's needs?
- Is your typing speed the problem?
- Do you have trouble applying algorithms to real world problems?
- Once you have a solution in mind, do you struggle to articulate it?
These are, of course, just suggestions: you need to study your own behaviour, and then to isolate the areas where you need to improve.
There are several approaches you could use here:
Compare your performance with others.
Bare in mind that when you're watching other developers, much of their "programming skill" is hidden, as it goes on in their heads. You may need to get them to articulate what they're thinking in order to figure out where you are currently falling short. Even then, what people say is going on in their heads isn't always very accurate. Also remember that you're you, not anybody else. Your strengths and weaknesses are different from other people's, and you will do better if you capitalize on your own strengths rather than try to fix your weaknesses.
Work out where you spend most of your time
If there is a specific area that is really slowing you down, working on that area will often improve your overall performance. Of course, optimising a single area can actually make other areas slower... but generally this approach works well.
Look for low-hanging fruit
When you start analysing your behaviour you might find that there are some easy wins. These might be worth your attention. Even small improvements can add up to big ones.
Don't limit yourself to single tasks: consider how they inter-relate
You can loose a lot of time task-switching, or by doing tasks in the wrong order.
Once you've narrowed down your issues very precisely, you then need to measure your current performance in that area. The reason for this is that you will benefit from some objective means of determining whether or not you're getting quicker. This isn't always easy, and I wouldn't spend more time on this than necessary - a rough measurement will probably be enough - but you don't want to fix a bottle neck only to discover that this has made you slower overall.
Now it is time to move on to solutions, and some of the other answers already posted will almost certainly help you here.
You have two basic approaches:
- Improve your performance in areas where you are weak.
- Leverage your strengths to "hide" your weak areas.
For example, one of the things that makes me a slow programmer is that my memory is shot. To help me deal with this I could try to deal with my weakness:
- I could learn simple memorization techniques
- I could practice remembering things by playing memory games
Or I could mitigate my need to remember things by employing my strengths:
- I could learning to re-think out solutions rather try to remember them
- I could improve my Google skills
- I could use crib sheets
As I have mentioned, building on strengths is usually more effective than focusing on weaker areas, but it is up to you to find the best approach for you.
This is really the only way you'll get quicker at anything.
There are two schools of thought here: one is to go fast and worry about quality later. The other is to focus on quality and then learn to go fast later. There are things to be said for both approaches: you'll have to see what works for you.
Consider People's Suggestions
There are a lot of good suggestions in the other answers on this page, written by people who (probably) have more experience than you. Once you understand your specific needs, consider carefully if any of them could help you.
Look for Good Tools
One of the best approaches to improving productivity in any area is to automate things where you can. When it comes to programming, this often means using tools to take some of the effort out of the process.
If you enjoy programming, you'll want to do it more and do it better. So, make your programming life as pleasant as possible.
For example, I invested in a really good keyboard, not primarily because it helps me type more quickly, but because I really enjoy using it. This helps keep me happy in my work, and in turn this makes me more productive.
Of course, this is just an example. What would make your programming time more pleasant? Do you need to take your laptop outside? Solve differnt problems? Work collaboratively rather than on your own? Switch programming lagnuages? Do you prefer analysis, testing, or cutting code? You may not be able to change these things immediately, but they're things to consider in the long term.
I don't suppose that everything I've written will be useful for you, but I hope it will stimulate your thinking and help you find solutions that work for you in your situation. All the very best.