>>12860198>math>physicsboth fine subjects if you want to study in academia or apply what you learn to other fields. Just be aware that you need to get a PhD to be able to do these *properly* in your career. If you get a BSc, you're at a disadvantage right ought of graduation.
>CSIt really depends on your department/program
1. If you just want a job writing code for decent amounts of money, this will tell you what you need "at most places.*
2. If you want to learn actual CS (both theoretically interesting and applicable everywhere), you ought to do the above - a PhD is where CS gets super interesting and nontrivial. Try to at least minor in math in undergrad, if not double major if theory is your interest.
3. If you want to get a real software engineering (aircraft, cryptosystems, other real time systems, scientific computing, etc.) right after undergrad, aim to go to a great (top 25) school for CS/EECS. Otherwise, you can skip the non meme electives and try to at least minor in math, taking more combinatorics and algebra.
>engineering?Usually fine since it's standardized, and chock full of information all over the place. You get a good foundation for general work in STEM though you miss some of the rigor / foundations from the above. Just be aware that you have very little say in what direction your education will take until your last 3-4 electives. This is good because it means that everyone knows the engineering degree has a "baseline" for difficulty, but bad if you really want to jump into the academic side of engineering in undergrad.