Hacker News new | ask | show | jobs
by stan_rogers 4567 days ago
Fundamentally,computer science = data structures + algorithms.

You know, I keep hearing that, but nobody has ever been able to convince me of it. Those are, indeed, the things that fall sideways out of "computer science" (for want of a better name), but it's a near-equivalent to the statement fundamentally, fluid dynamics = boats and airplanes.

"Computer science" is about developing a method for reasoning about process. For the most part, we're still stuck in a world where intuition plays a larger role than it ought to when developing processes, both in the computing world and in the physical world. Investigations into process have yielded algorithms and heuristics (what to do), of course, and those, in turn, depend upon data structures (what to do it to), but we're still pretty much at the level where we're dealing with specific instances rather than a more general formal language. Chemistry without knowing much about the atom yet, in a way.

What you learn in school (at least at the undergrad level) is "here's what we've found out so far" (as it is in any subject). And while that can be a big help, allowing you to more easily recognise classes of problems, there is still more intuition than reason involved in attacking the really hard problems. Both "software engineering" and "computer science" are about reducing the amount of fuzzy, squishy, intuitive parts, but in different ways. "Software engineering" is about robust application (finding and understanding the use of the equivalent of "materials" in the field); "computer science" is about understanding the fundamentals of process (and may well extend beyond computing).