Ask HN: Best way to learn computer/programming theory without college?
I'm curious about the best way that other people have found to learn theory or ideas that have made them way better programmers. Especially things they have done on their own time, or at least outside of college.
I've built complex systems and user interfaces, but I couldn't tell you about quick-sort algorithms, or sieves, or the best way to build a fibonacci sequence; I wonder if my programming is objectively worse because of it.
[+] [-] duggieawesome|10 years ago|reply
MIT also offers classes as well (http://ocw.mit.edu/index.htm).
[+] [-] brudgers|10 years ago|reply
On the other hand, Coursera etc. fall into a bit of a grey area regarding "outside of college". Though I tend to think that limiting the options to outside of college doesn't get the OP much.
[+] [-] smt88|10 years ago|reply
In general, the thing that's made me a way better programmer is seeing how highly experienced programmers explain the way they organize their code. Even though I don't practice functional programming, reading the reasoning behind it has been really helpful to me, and there are many principles from FP that make object-oriented code far better.
> I've built complex systems and user interfaces, but I couldn't tell you about quick-sort algorithms, or sieves, or the best way to build a fibonacci sequence; I wonder if my programming is objectively worse because of it.
It depends on what you're doing. For the vast majority of people, especially those in the business world, the answer would be "no". Many of those parts of programming (sorting, linked lists, random number generation, etc.) are provided by standard libraries or other programmers. You don't want to constantly reinvent the wheel if someone is paying for your time.
If it's something like cryptography, it's a lot murkier of an issue. It's really hard to evaluate a crypto package if you're not an expert, and even the "industry-standard" packages are often found to have holes in them. I'm still not suggesting you write your own, but it's always worthwhile to understand data security better.
[+] [-] brudgers|10 years ago|reply
Knuth coined the term "computer science". I won't claim it made be a better programmer, but it couldn't have made me worse.
[+] [-] Someone|10 years ago|reply
Back to the subject at hand: reading TAOCP front to back isn't for everybody (reading it is way easier if you have a good understanding of combinatorics and number theory), but I enjoyed it, and learned a lot from it.
[+] [-] valhalla|10 years ago|reply
[+] [-] epalmer|10 years ago|reply
Show your code to others and seek feedback. Always assume that your code can be improved.