I'm going to offer up something very different. It's not programming as such, but it will affect you deeply further down the line, no matter what language, environment, or compiler you use, whatever job you have, no matter what you venture doing;
Epistemology.
Yeah, I know; wishy-washy weird philosophy stuff, but all paths, as they say, lead to Rome (except, of course, that they don't). In this case, a better understanding of something they won't teach you at Uni/College unless you ask for something completely different and inherently useless (ie. lectures in philosophy), well, it will probably prove priceless when you need it.
Human knowledge is the game we're playing here; there is no program you'll ever create that hasn't got the basic premise of human knowledge and of identity at hand. Sure, we create, consume and kill off files and memory at an alarming rate, all in the name of "getting the job done", but there's of course a huge gap between getting the job done and getting it done right.
Time and time again I bump my programming head against the brick wall of digital identity management, a field in which we try to link things in the real world with things in the virtual world. What else is computing about, right? So, an object over here is supposed to represent a thing over there in the real-world, but how do we know they are the same? (The Semantic Web and Topic Maps communities are filled to the brim of trying to figure that conundrum out) There's an epistemological term 'representialism' which is a handy search-word here, of course. But I challenge you to see if you can find a reasonable, fast, and elegant solution to the real-virtual identity problem. (I've written a few tomes on the subject myself, and it isn't as easy as first thought, all the more we need a new set of fresh eyes on it)
I'd probably start with something slight more concrete such as Knowledge management, which is really about making our computer systems more adapted to human behavior and needs (rather than the opposite of treating them as basic tools), and possibly dip your toe in user experience fields (has a lot of cool cognitive sciences involved) by reading "Don't make me think" by Steve Krug at the same time. Learning about usability and understanding its importance is probably better now than any failed project down the line.
If you're brave you could venture down the path of 'Women, fire and dangerous things' by Lakoff for more understanding of how we humans categorize, how are languages are built up, and postulate from that how are computer systems are supposed to work if we don't use the underpinnings of linguistic knowledge to create them? Tags without control are just as bad as words by themselves, or a counted tag cloud. Controlled vocabularies are just as bad as any pointed identification mark. They're just two opposites of what we really want, what we really need. And that might just be a fun mind exercise for 4-5 weeks?
Also, learn early that with all things, it depends. None of these things are about programming, but they all are about why we program. Good luck.