The algorithms stuff is useful. More useful than it seems. It comes up often in many engineering jobs. Perhaps more importantly at your stage in life, it will get you an internship.
Do internships. If you miss the one you really want, think hard about why, then try again. Internships are the best place to start into my next piece of advice.
Specialize in something valuable while you're in school or once you start into your career. Jobs I might look for if I were entering the work force today:
- Image processing or other noisy data handling.
- Robotics, especially something requiring interdisciplinary skills like control theory.
- Deep learning techniques are all the rage; you'll be much more useful if you understand how they work and can build novel topologies. Being taken seriously here will likely require a portfolio (maybe graduate work).
- Systems programming is an unending hellscape of horrible problems. Some people seem to enjoy it.
- If you have a knack for it, security. It takes a certain deviousness to think of new ways to misuse things. It takes a wizard to do something like Meltdown and Spectre.
It doesn't really matter what you become a domain expert in as long as it's valuable. It does matter that you don't treat "domain expert" as a fixed target.
In terms of extracurricular work, find an open source project that's got engagement from companies with lots of senior people (Kubernetes would be a good example, it has many very talented people working on it). Fix open bugs. Fix the onboarding experience. Start with trivial things and go from there. Don't get dismayed when you end up with hundreds of review comments, that's how you learn.
Regarding compensation, the split is approximate. The cash is both salary and an annual bonus paid out in January. The stock is actual stock, not options, so every month some number of Google shares show up in my brokerage.