The most crucial thing you need to understand about CS is this: most programs are designed exclusively as launchpads for graduate students. They're designed to train budding computer scientists, NOT software developers; little consideration is given to the latter group, even though they clearly constitute the majority of enrollees at almost every school.
At my school, we had to take all of the following outside of the core CS curriculum:
Calc 1 (PLUS prerequisites like trig, precalc, and college algebra, if necessary)
Senior level Calc 2 based probability (complete overkill, in my opinion)
Note: Discrete 1 and 2 and Linear Algebra are technically relevant to the CS curriculum, so I've excluded them from the above list. Calc is mostly useless in CS. You'll see a little bit of integration in the unnecessary probability course, in the unnecessary physics courses, and in algorithms. It's nowhere near enough to warrant the ENTIRE three semester sequence, but I digress...
Electricity and Magnetism
Intro to Modern Physics (i.e. intro to quantum and relativity)
Gen Chem 1
Gen Chem 2
Organic Chem 1 or Biology for Majors 1
One additional natural science for majors (I took the physics sequence plus gen chem 1).
If your department's program is ABET accredited (like mine was), which won't benefit you at all in practice, you'll also be forced to take all sorts of engineering courses (like a THREE course computer architecture sequence) on top of the more typical CS stuff. Fair warning.
One final note: as I mentioned, you'll get virtually no exposure to actual software development processes, or any of the tools and frameworks that real developers use. You won't be required to take a single writing course (technical or otherwise). You will probably only learn ONE programming language, and only enough of it to do what they want you to do (which is to write data structures and algorithms and test or apply them within a very limited context). CS is really an applied mathematics degree. This is why internships are so crucial for successful post-graduation placement; if you come out of school with a mediocre GPA and no relevant experience, you're just somebody with a relatively basic understanding of CS concepts and no understanding of how to actually make usable software. Not very useful to a prospective employer.