I personally chose engineering specifically because I wanted to do a little of everything. Just my take - but it seemed like most of the CIS majors at my college knew a little bit about alot of stuff, but the software engineering majors knew a lot about alot of stuff. After reviewing the curriculum with seperate counselors, i chose the engineering path , because it seemed to have all of the fundamental CIS courses, plus the extra math and electronic engineering courses that the CIS students didn't get. After visiting some jobs (i was lucky enough to get a tour from relatives of nasa and a small electronics company) I definitely feel like I made the right decision.
I'm sure you can excel in most (if not all) of the fields mentioned above.
Here's what I'm doing to reach my goal of learning a wide range of topics:
1. I want to learn 1-2 things REALLY REALLY good. for me right now its java and xhtml/css because i already knew some before starting college. Plus if times get tough, you can always fall back on a job in something that you're really good at.
2. Test myself through forums, certifications (just for self assurance), and sample textbooks; to make sure I'm really really good at it. (i want lots of feedback to see where i'm at , criticism welcomed)
3. after i'm comfortable with 1-2 languages, I'll move into more stuff - this will come much more quickly if I'm fluent in my background language. I'm currently in a c/c++ course, and already found the transition to be very smooth b/c of the java background. I kind of don't even know why i have to take the course, I learned most of it already on my own.
4. schedule regular intervals of time for learning. structure that time so i get something of value out of it. for me, i try to go through a textbook for 1 hr each morning. I keep a text file of all the topics that I need to work on more, then revisit them the next day. It's only an hour, but try learning and practicing 10 new methods in the java library each day and you'd be surprised by how much more you know at the end of the month.
5. read a ton. whenever i can. i canceled cable b/c i only watched 2 channels (1 was pbs anyway) and it distracted me from reading at night. books give me alot of inspiration, especially biographies. technical books are great too, but i have to mix it up or i get bored to death.
6. join some open source projects and get my name out there.
7. join a startup that i can get alot of knowledge out of. i don't want to get stuck in a corporation making boring database queries and simple apps that don't require alot of real inventiveness.
when I chose to move into computers (my real background is accounting), I had a friend tell me to choose one of these fields first: programming, databases, networking, or security. But I still reject the notion that you need to only be in one specific skill set. I chose engineering because the 2 people i personally know who consider themselves true software engineers (my uncles) , seem to know everything. they have no problem debugging tons of code, fixing problems in sql queries, making elegant webpages, all sorts of networking issues... everything and they can do it in almost any language/script language the client needs them in. On top of it all, they design alot of the hardware components needed for embedded systems. Maybe my uncle is an exception, but i truly believe that you don't NEED to settle on one technology or area of focus, at least in the beginning. Just get really good at something you like and see where it will take you.