2. Go for depth, not breadth. I know most US colleges make students do all sort of breadth stuff, which I don't get (I come from European undergrad, all our classes were CS/EE - coming to US for grad school, I was more prepared than others coming from top US undergrads). You have time to dive into other stuff after school. Do adjacent things like Biology or EE.
3. Find grad students and see what they're working on. This is where you'll see the value of the fundamentals. Then work backwards and fill the gaps. Try to get a tiny part in a research project (ideally one that can lead to publication).
4. Read timeless papers one each topic.
5. Hack, hack, hack - the gap between theory and practice is small in theory but large in practice.