As someone who reached his senior year studying Mechanical Engineering, and then switched majors to Computer Science, I think I understand where you’re coming from. (On my college transcript, my “free electives” are populated with courses like Fluid Mechanics, Materials Science, Thermodynamics, Diff Eq, etc.)
While Computer Science does cover some obvious programming courses (C, Java, Assembly), it also explores a lot of areas that are not so obvious to the uninitiated. A lot of course effort is spent in understanding the underlying concepts of how computers “think”. So, you’ll spend time in esoteric areas like Discrete Mathematics and Finite Automata. You might also get to work on building a virtual CPU that can run simple programs, study Data Structures, Networking concepts, HCI, etc.
At the end of your Bachelors studies, you’ll have a lot of foundational knowledge without much in the way of specialty. Think of yourself at that point as a blank slate upon which you can start to gather knowledge about a particular business or technology.
Beyond all of that, also make sure to hone your interpersonal and communications skills. I won’t say programmers are a dime a dozen, but your value can definitely be multiplied if you’re able to work directly with customers and management to address all aspects of solution definition, delivery, and support.
Currently, I work as a Technical Architect for a large software firm. And there is no end to my continued education. I have to keep up with my company’s ever evolving technology offerings and I also work to maintain industry-standard certifications and recognition.
I enjoy my work. There’s always something new to work on and improve. Customer needs and technology are constantly evolving. The only drawback is that my family and friends are always wanting me to fix their PCs.