Algorithm Analysis (Asymptotic Complexity / Big O Notation) courses are the bane of computer science students everywhere. These courses were mandatory, dry, and lacked real world pragmatism for students who just wanted to get stuff done. Well, that’s what we told ourselves; that’s the theory we presented to our friends – we were convinced that framework vendors or the hoogie-boogie man would figure out the most efficient way to performance tune / compile our code. We looked to Sun, Microsoft, or IBM to figure out the details. In truth we were lazy-naive students and Algorithm Analysis was tougher than we’d like to admit – much harder than programming in 4th generation programming languages, more difficult than computer theory, or operating system theory.
As I brush up Algorithm Analysis I found these perspectives interesting:
to be a good programmer, you just program ever day for two years … to be a world-class programmer, you can program every day for ten years, or you can program every day for two years and take an algorithms class – Introduction – Analysis of Algorithms, Insertion Sort, Mergesort
Having a solid base of algorithmic knowledge and technique is one characteristic that separates the truly skilled programmers from the novices. With modern computing technology, you can accomplish some tasks without knowing much about algorithms, but with a good background in algorithms, you can do much, much more - Introduction to Algorithms, Second Edition
It’s unfortunate that our professors never mentioned that Algorithm Analysis would be an integral part of academic type interviews and a prerequisite for getting a job at Google, but then again who would have listened?