Inspired from Emin Gun Sirer at Cornell University
If a project is given as a group project, every team member should contribute, learn, and get hands-on experience. A member can implement some portion of the code, but he/she should also know what others are doing and the other parts are coded. There should be close interaction, so that final works of different people can be glued together successfully. Don't work to closely neither. For example, if everybody tries to update the same directory and same files all the time, the final output may be a mess. Divide the work cleanly and work on it systematically.
Don't start a project the last 3 days before deadline. Sometimes you may spend on a bug for hours or even days and you will regret that you have started so late. Start early! Then you will not panic and will enjoy writing code. Otherwise, it is highly probable that your program will be a mess and will not work.
Ask questions to TAs and to the instructor when you are hesitating on design decisions. Use your office hours. If you did not understand a topic, don't hesitate to ask and learn: the sooner, the better!
While doing a project, use the techniques/algorithms/concepts that you have learned in the class. Don't try to reinvent the wheels that have been already invented.
Homeworks should be your own work. Spend time in understanding the topics and proposing your own solutions to the problems. This will also be very helpful for the exams and sometimes also for the projects. In this way, you will understand the concepts much better than working for the exams the last-night and forgetting everything after the exam. If you put sincere effort in learning the topics and doing the homeworks and projects, you will learn the concepts life-long.
Be patient in writing programs and debugging. Sometimes, it may take hours to debug a single bug, but when you overcome it, you can continue writing programs in a fluent manner. Don't be discouraged by errors or mistakes. Every bug that you debug will an experience for you that you will use in future program development. Programming quality is related with experience. So, try to gain this experience by not giving up easily, by being persistent on debugging, and by spending enough time in design, coding and testing.
First try to achieve what the assignment says. Doing flashy things without doing what the assignment says will not bring you extra credit, but will take your time unnecessarily.
Try to work incrementally on a big project. If you try to write all the code on the paper first, and then go to the lab and write it on the computer and compile and run, it will most likely not work (except some CS101 assignments). First of all, you will have a lot problems in compilation, and then in running the programs. Design your program or system in a clean way and implement it step-by-step. Do some testing not at the end, but after every step. In this way you will also enjoy the design and implementation phases, since you are progressing in a sure-way, step-by-step. After each step you will see some output and this will give you delight and self-confidence.