https://ocw.mit.edu/courses/electrical-engineering-and-compu...
In my experience, most hobbyist programmers are fine writing scripts and other small programs but have no exposure to the sort of ideas that are necessary for making large programs. This course at least exposes you to a lot of those concepts.