> algorithms (bubble sort is not!)
I invented bubble sort, independently, as a young self-taught programmer. I remember thinking "Okay, I have a very large list, and I need to sort based on whichever parameter they picked... let's see, how can I accomplish this without running out of memory."
When I learned that sorting was a hot topic in computer science, I remember feeling a little sheepish. When I learned my algorithm was old hat, I felt more sheepish. When I learned it was relatively crap.... Yikes.
Well, at least you came up with an algorithm that was functionally correct.
Also : the world wide web didn't exist yet, you couldn't just visit StackOverflow to get an answer to a problem you had. Formal course work was a great place to communicate with like minded peers and exchange ideas and learn from each other.
Yes, but software engineering was a completely different field back in those days. A lot of it was purely academic, and not of very much practical value for a solo programmer.
Perhaps different but already highly useful. A lot of things would have been good to know before I blundered myself. At least my experience of the said fields (data structures, algorithms, best practices) were that the teaching was sensible and I learned things at the uni but I was not clever enough to come up with all those ideas and principles all by myself, however keen a programmer.
(FWIW, I started programming on a ZX Spectrum).
A lot of us keen programmers had just learned our way ourselves, and had very little exposure to existing research on things like data structures (a binary tree is nice!), algorithms (bubble sort is not!) or software engineering practices (yes, you really need a version control system and some automated testing!)
So, software engineering classes could give a lot. I remember how clever I felt as a starting freshman, and how humble I had got in about three years' time when my professor took me through the Compilers class. A lot of education and classes is not really teaching you to know things, it's just to teach you to know how much there is to learn.