If you’re a CS major and serious about computing (and there are more sciency and more mathy analogues of the story above too), there’s nothing holding you back from these areas. Just get good grades, do research, and get internships. Also challenge yourself by taking hard classes and grad classes while avoiding the “software dev” classes if they’re offered to you. Good schools generally don’t give them to you as requirements at all.
I suggest taking the serious systems and serious theory courses. Take OS, embedded, distributed, compilers, and networks classes. Take the grad algorithms, grad complexity and computability, grad combinatorics, abstract algebra, etc. classes. Then take whatever electives interest you: cryptography, graphics processing, parallel, biocomputing, computer vision, robotics, etc.. There are tons of CS that affect both everyday and specialized technology, from everything in civilian to military. Whatever knowledge you don’t have, pick up as you go: hint hint, this is what traditional engineering majors do, because when they’re not on /sci/ trying to cope with their undergrad major stress by saying how hard it is, they’re complaining that engineering school doesn’t teach them how to do an engineering job and that they learn most of what they actually need on the job. So yes, if you find yourself in firearms, learn more design from your local mechE. If you find yourself working on sensor technology, talk to your local optical / electrical engineer, and also teach him about your side of familiarity. Ultimately you have to work on the same things together, and there’s nothing stopping you from doing the optical side anyway after doing lots of work with it.
Also remember, despite what they say, computing IS important and a big part of serious tech. For every webdev, someone has to design and implement the core algorithms to make a 3D printer work.