I know this has probably been asked in one form or fashion, but I wanted to pose it once again within the context of my situation (and probably others here at Stack Overflow).
I made a career change to Software Engineering some time ago without having an undergraduate degree or graduate degree in Computer Science. I've supplemented my undergraduate degree and graduate studies in business with programming courses (VB, Java, C, C#) but never performed academic coursework in the other related disciplines (algorithms, design patterns, discrete math, etc.)...just mostly self-study.
I know there are several of you who have either performed interviews and/or made hiring decisions. Given recent trends in demand, what would you say are the three most essential Computer Science concepts that a developer should have a solid grasp of outside of language syntax?
For example, I've seen blog posts of the "Absolute minimum X that every programmer must know" variety...that's what I'm looking for.
Related questions
The closest ones I could find were "Basic programming/algorithmic concepts" - which was geared towards a true beginner, and "Essential Areas of Knowledge?" I didn't feel was concrete enough.