I agree that knowing C is super helpful. Learning about data structures, algorithmic analysis, etc can be very useful.
I was a biology major, I've never stepped foot in a computer science classroom. But my boyfriend is a CS major and I've read most of his CS textbooks.
It come in handy so much! For example I recently build an app that tracked where you went using GPS and erased "fog" on the map as you went. It sounds simple but Jesus was it difficult using Apple's maps framework. It definitely wasn't meant to do something like this but I got it working now fine.
The hardest part was calculating how much "fog" you've erased. Some peoples database of GPS coordinates could hit over 100,000 entries. That's not too bad but if the code wasn't really efficient it would cause the app to slow to a crawl. So I decided to use a quad-tree to organize the spatial GPS data. That way, when you enter an area of the map you've already been to, it can look up the GPS coordinates in that location, and uses a Monte Carlo algorithm to calculate how much of the fog you've erased is actually "new" and how much of it was already counted. I did all of this in C and it runs incredibly fast.
That's the hardest part of teaching this stuff to yourself: understanding data structures and algorithms. You can't do much more complicated than a chat app if you don't know this stuff or won't learn it.