Computer Science in Plain English
-by Umesh Madan
The concepts and abstractions underlying much of software and computer science are simple, elegant and yes, eerily familiar. Algorithms and architectures regularly borrow and repurpose existing mechanisms and ideas from the past, from other fields, and from every day life. Most software is the automation of straightforward steps and procedures – the codification of common sense (sometimes good) and use cases. That cool new website, that hot new SDK or Framework often rehashes or reapplies old, well understood ideas. Entire cadres of visionaries, architects and companies make careers, reputations and billions by pouring well understood old wine into shiny (but not necessarily better) new bottles.
You wouldn’t know how simple most computer science is from the majority of the techno babble (and occasionally math) drenched writings on the subject. Or the breathless evangelism (journalism?) that describes yet another way to slice bread as, well…
I’m a computer scientist and engineer with over twenty years of experience in the field and I regularly find this stuff incomprehensible. At first. Then the concepts emerge from within the haze of obscuring detail, jargon, API calls, the complexity analysis, the sigmas, deltas and gammas, which may as well be the runes of dark, scientific magic spells. Don’t get me wrong – the detail and those API calls and math symbols are (eventually) extremely useful. The deep technical documentation is necessary. And the thousands of bloggers with their untold millions of “how to do blah in XYZ framework/device/operating system/API” postings – regularly save my life in my day job, and probably yours.
I am going to try something different here. To write about computer science and software in plain English – as far as that is possible. If you are looking for MSDN or Stack Overflow or how to Data Bind a List Control in Silverlight – this is not it. I am going to assume that my readers, if I get any, are in the software profession – so this won’t be CS 101 or computers for beginners. Nor can I completely eliminate the jargon: you have to have a baseline, after all. With time, I hope I can evolve this blog into something useful – computer science in Plainer English.
About me: Linked In.
My other blog: The Weekend Historian.