To give some background, I'm a graduating senior at a top CS university in California. In the past year I've managed to maintain a 3.8 GPA while taking 5 courses per quarter, but I would highly advise you (since you seem to be an underclassman) to not take 6 to 7 classes a semester.

My reason for doing so was because of an outstanding job offer that I accepted the year before that begins in June. Otherwise, I'd likely be staying one more quarter to graduate and take a lighter course load.

Here are a few reasons why I don't think overloading yourself with classes is a good idea:

1. You wont learn as much.

What I've noticed from taking this many classes is that you have a lot less time to devote to studying than many of your friends. Because I had to prioritize my time, I would often skip supplementary reading that would really have helped me understand the material we covered in class. In addition, I rarely went to office hours (computational theory was an exception). I did well in my exams because I studied what I thought was going to be on there, but after the quarter ended I realized that all the supplemental reading I could have done would have given me a lot more insight in the topics we learned in class.

2. You wont have any time to have fun.

You'll have to turn down a lot of offers to do fun stuff with others. Hack-a-thons, parties, etc., are thrown out the window. You just wont have the time to sacrifice to do these kinds of things. I studied approximately 40 to 50 hours a week on top of the time we spent in lecture and discussion. I didn't have a job though (had to quit my on-campus research job to study).

3. You'll have less time to complete projects and study (especially finals).

It becomes exceedingly difficult to keep up with projects and study for midterms or finals (especially finals). Last quarter we had a 3 week long OS project dealing with user-level threads. Because of my time constraints and deadlines for other classes (designing a CPU for my computer architecture course), I wasn't able really work on the OS project until 3 days before it was due. I managed to complete it, but it really wasn't an enjoyable experience due to the pressure. This was a common story for me all quarter. YOU WILL ALWAYS FEEL BEHIND.

Don't take multiple project classes unless you're a better hacker than your peers and can finish assignments significantly faster than others. I'd go against astrofinch's advice and say that you should always start on programming assignments as soon as possible.

4. You'll burn yourself out.

By the end of the quarter, I really wanted to give up. My reward for designing a 5 stage pipeline processor along with a dozen programming labs between my other project classes was 5 finals within a week. I had to pull all nighters that entire week AFTER pulling all nighters the previous week to finish my quarter-end projects.

5. You'll hurt your GPA if you don't know what you're doing.

I was extremely lucky to do well in my classes. If I messed up on my finals my grades would have been extremely poor. Unless you really know what you're doing, and you're confident you can be successful under this kind of pressure, taking too many CS classes at once will make your GPA suffer.

6. Your physical condition will suffer due to lack of exercise, sleep, and stress.

I always felt better if I had time to exercise everyday, but oftentimes, I'd skip out on my weekly routine, and I'd feel like crap throughout the week. Unfortunately, I'd always be catching up on sleep so I never got a chance to hit the gym.

In conclusion, the wise thing to do is to take less classes and do well in them. Take the time to hang out with other students, go to office hours, and read stuff that interests you from class. Unless you have a really good reason for doing so, you shouldn't be subjecting yourself to 6 or 7 classes a semester. You really have to be motivated.