Learning is a life long pleasure. Programming and Computer Science are challenging and take time but luckily the resources available today make it almost free to get access to top quality materials.
Things Often Not Covered By Universities
For some reasons the "ivory tower" does not include all of the nitty gritty practicalities required to actually ship and run software in the real world.
Here are some of those topics I wish were covered in the first year. (Hint: they also help immensely in being gainfully employed)
The fundamental tool of managing change which was strangely ignored for a very long time in the short history of programming
Quality and Testing
The practical answer to actually attempting to validate correctness in practice (rather than just logical proofs)
Build and Continuous Integration
Automation as a solution to the shortage of developer time and the exponential increase in software and complexity
Performance and DevOps and Operations
With hardware having kept up with Moore's Law and "the cloud" providing so much elastic compute, performance is now often an afterthought. Additionally, how to quickly and efficiently deliver software has coalesced into the term DevOps.
The big idea being that software that is not actually running is not very valuable ;)
I know it sounds crazy that Computer Science practitioners (or Developers) should sully their hands with "Operations" but to truly understand the problem domains watching the logs or responding to an outage can vastly change how we write code.
Importantly, seeing latency, traffic volume, and environmental issues makes us thankful when we do get back to the keyboard and can just focus on the theoretical aspects of a problem.
Introduction to Programming
Stanford "Programming Methodology"
by Mehran Sahami (very fun and Java is a good starting point)
- (also at https://itunes.apple.com/us/itunes-u/programming-methodology/id384232896)
An Introduction to Interactive Programming in Python
Design of Computer Programs
Algorithms of course!
A really well designed introductory algorithms course: https://www.khanacademy.org/computing/computer-science/algorithms
- (also at https://itunes.apple.com/us/itunes-u/programming-abstractions/id384232917)
Theoretical Computer Science
Information and Models
- (also at https://itunes.apple.com/us/itunes-u/information-and-entropy/id424082281)
University of Michigan