> they are highly theoretical and biased against people who are not good at math
Maybe it has changed but it's certainly not the case currently.
> I studied CS, and I had to take more electrical engineering and math courses in my first two years than programming-related classes.
Nowadays, most of the classes are CS related. There are still some (basic) maths because they are relevant to so many branches of CS.
> are full of useless classes
Well, that may be true. There will always be useless classes because there are many different career paths.
But I think you shouldn't underestimate the value of more foundational classes.
To give you an example, when I was an undergraduate 20 years ago, I was taught OCaml (many people complained it was a useless academic language), as well as tons of maths. Recently, I decided to learn myself some machine learning and Spark. It was a breeze as I already knew most of the maths and the functional programming model. It would have been much more difficult otherwise.