Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Yes, I borrowed the title form a famous joelonsoftware post for my question beca

ID: 654505 • Letter: Y

Question

Yes, I borrowed the title form a famous joelonsoftware post for my question because I didn't exactly know how to ask this.

I'm a professional programmer for a few years now and although I followed informatics courses in school there was a lot of stuff missing from the curriculum, as I now know but wasn't aware then. For example I didn't do any compiler theory, algorithm analysis (the Big-O), have no idea what P-NP meant etc.

So I want to catch up now!

But the field of computer science is big. Really big! So from here my question: What's the absolute minimum every software developer absolutely, positively must know about computer science (no excuses!)?

Explanation / Answer

Programmers need to know enough basic logic (at least some first-order logic) so that they find it natural to write assertions and specifications in a declarative way. Most programmers tend to only see the imperative aspects of programs. This does not help when you have to reason about your programs, or design good interfaces for modules and components.