What concepts in Computer Science do you think have made you a better programmer?
My degree was in Mechanical Engineering so having ended up as a programmer, I'm a bit lacking in the basics. There are a few standard CS concepts which I've learnt recently that have given me a much deeper understanding of what I'm doing, specifically:
Language Features
Data Structures
Algorithms
Obviously, the list is a little short at the moment so I was hoping for suggestions as to:
Take a look at this blog post by Steve Yegge (formerly of Amazon, now at Google):
It goes into some detail about the the five most important concepts that developers should be required to know: