<p>Students per class: ~200/class for lower division (61ABC) and anywhere from 30-150 for upper division classes. Core upper-division classes such as 162 and 170 generally have 150 or so students each, while others like CS 160 (User Interfaces) are much smaller.</p>
<p>As the last poster said, professors lecture for every class, while TAs lead discussions. The CS department actually seems to hire more undergraduate TAs than most others. The undergraduate TAs vary quite widely in quality; I've met ones who are really, really helpful as well as others who are just plain bad. Switch around in the first few weeks to find the best ones.</p>
<p>Schedule: Don't take more than two major classes per semester unless you're either very motivated, skilled and confident in your abilities, or you just don't care about your grades. Don't take more than one project class (see below) per semester.</p>
<p>Grading varies by professor. Contrary to popular belief, there are no set quotas, and every professor is free to grade as he likes. Brian Harvey and Dan Garcia curve to class means of 2.7. Jonathan Shewchuk, who teaches 61B once every two years or so, curves to a much more generous 3.3. Use pickaprof.com to find out which professors hand out the most A's (if that's your thing) and work your schedule around them.</p>
<p>The workload varies very widely. HKN ratings are NOT a good gauge, as students often start with CS 61A, notice how much more substantial the workload is compared to their other whatever-101 classes, and rate 5's on workload. Well, if they thought CS 61A was a lot of work, they're in for a treat. These are estimates of the times I've personally spent on core CS classes:
CS 3: 3 projects; 30-60 minutes each
CS 61A: 4 projects; 2-6 hours each
CS 61B: 3 projects; 10-20 hours each
CS 61C: 4 projects; 20-40 hours each
CS 170: 13 problem sets; 4-10+ hours each</p>
<p>CS 150, 152, 162, 164, 169, 184, and 186 have giant semester-long projects worth anywhere from 30-50% of the grade, and take up 100-300 hours over the course of the term. (The time estimates are per-person; the projects are done in teams of 3-5 students each.) If you want to be a CS major, be prepared to spend lots and lots of all-night coding sessions in Soda Hall. Personally, I'm not into that, so I've intentionally avoided all project-based CS courses.</p>
<p>In terms of interaction with professors, you have to pursue them yourself. You have to attend their office hours and make the effort to get to know them. If you must get a letter of recommendation from a prof who teaches a huge class, the best route to take is to ace his/her class, then become a TA and/or do research for him/her.</p>
<p>Hope this helps.</p>