There should be no reason you have to jump to a master’s for that. A bachelor’s in CS or EE would be a joke if it didn’t (doesn’t) cover those things. Arguably, even the current 4 year bachelor’s is a waste compared to a focused 2 year program: looking at my college’s requirements, many classes are wasted. Business majors taking a physical science with lab component, entry level English classes being taught by a TA that doesn’t speak English natively, etc.
I guess it depends on the program, but at my university an undergrad EE major, even though it had more units than any other major, didn't get to the best and most interesting stuff (perhaps because engineering majors also had to learn about things other than engineering, which seems like a pretty good idea.) Personally I wish more CS grads (including many people I worked with) had a better understanding of compilers, programming languages, databases, operating systems, distributed systems, networks, and computer architecture, as well as applications programming and interaction design. It's hard to get all of that while working at a single job, but readily achievable at a university, and an extra year of coursework really helps.
Business majors should take physical science courses with a lab component! How else are they going to learn anything about reality?
But there is no excuse for bad teaching, anywhere (especially given how insanely competitive faculty positions are - even crummy adjunct and lecturer positions.)
Unfortunately research universities prioritize fundraising > research > teaching. And sometimes grad students are selected to teach based on financial need or departmental requirements rather than interest or ability.
[dead]