If you're talking about getting a CS degree, you need to learn several languages representing a wide variety of programming styles.
Learn C (not C++). Do this whenever, but before C++. Don't learn C++ yet.
Learn an Object oriented language (not C++), like Java or Common Lisp. Yes, Common Lisp.
Once you've learned some other
proper object oriented language (not C++),
then learn C++. Do this only after you understand what Object oriented programming is. Otherwise, it'll make little sense (especially if you learn pure C first, which you ought to do).
Learn a purely functional language, like Scheme.
Learn it. You may find this more difficult if you already know something else; some CS degrees teach Scheme as their first programming language. If you want to start with Scheme, try
http://www.drscheme.org. It runs on Windows/OSX/Linux.
Learn a high level scripting language like Perl or Python (or both).
What order you learn them in is up to you. As a disclaimer, and so you can understand where I'm coming from, I'll summarize my relationship to programming:
I started with basic in the early 80's, moved on to FORTRAN, then Pascal, then C, then C++ (didn't get it), then Java (AHA! So
that's OO programming), then Scheme, then C++ properly, then Perl, then loads of others and I lost track at over 20.
I rotate between Linux, OS X, and WinXP on a daily basis (though ever more rarely do I use Windows). In my current job I don't write apps, I write lots of small programs crafted for analysis of whatever problem I'm working on. Also I write stuff that updates static web pages and the like. I get the most mileage out of Python, with some Scheme thrown in.
I use C/C++ for device drivers or other low level programming. Also it's used for simulation at our company so I mess with it a bit there.
-kev