Slashdot Mirror


Donald Knuth Worried About the "Dumbing Down" of Computer Science History

An anonymous reader writes: Thomas Haigh, writing for Communications of the ACM, has an in-depth column about Donald Knuth and the history of computer science. It's centered on a video of Knuth giving a lecture at Stanford earlier this year, in which he sadly recounts how we're doing a poor job of capturing the development of computer science, which obscures vital experience in discovering new concepts and overcoming new obstacles. Haigh disagrees with Knuth, and explains why: "Distinguished computer scientists are prone to blur their own discipline, and in particular few dozen elite programs, with the much broader field of computing. The tools and ideas produced by computer scientists underpin all areas of IT and make possible the work carried out by network technicians, business analysts, help desk workers, and Excel programmers. That does not make those workers computer scientists. ... Computing is much bigger than computer science, and so the history of computing is much bigger than the history of computer science. Yet Knuth treated Campbell-Kelly's book on the business history of the software industry (accurately subtitled 'a history of the software industry') and all the rest of the history of computing as part of 'the history of computer science.'"

5 of 149 comments (clear)

  1. False Summary - Haigh Agrees with Knuth's Thesis by careysub · · Score: 5, Informative

    Which is: there are no good technical histories of computer science.

    Read TFA - he spends the majority of the article explaining in detail why Knuth is right - that there are indeed no good technical histories of computer science, and little prospect of any.

    Where Haigh takes issue with Knuth is in arguing that the histories of computers and software, which are not technical histories, are nonetheless valuable in their own right, and thus Knuth's dismay at their publication is misplaced. But he otherwise agrees with Knuth has to say.

    --
    Starships were meant to fly, Hands up and touch the sky - Nicky Minaj
  2. Re:Sheeit, journalist by bmajik · · Score: 5, Informative

    If you look up "appeal to authority" logical fallacy, there is an exception for Donald Knuth:

    "footnote: It is never fallacious to properly cite Donald Knuth in lieu of providing your own argument."

    --
    My opinions are my own, and do not necessarily represent those of my employer.
  3. Re:Knuth is right. by Anonymous Coward · · Score: 3, Informative

    Discreet mathematique are the basis for computing

  4. Re:Knuth is right. by Anonymous Coward · · Score: 2, Informative

    It is the mathematics that IS the computer. Studies on math proofs, generation of ballistics tables, navigation tables...

    And the realization that the ideal person to carry out mathematical steps is someone without imagination, can't be distracted, and doesn't lose their place... In sort, a "mechanical calculator"... Thus the invention of calculators - going back to the Abacus (1300BC), Napiers Bones for multiplication (1612AD), and slide rules (1622AD), first mechanical adding machine (Pascal, 1642), the Leibniz calculator (add/subtract/multiply/divide, in 1674. Then we get to Charles Babbage and the difference engine (for creating navigation tables in 1822) who then moves on to what is considered the first real computer - the Analytical Enging (1838) - even though it was never built, the first programs were written to show what it could do (credited to Ada Lovelace). - references from http://www.mortgagecalculator.org/helpful-advice/chronological-calculator-timeline.php, which has a nice presentation for calculator history

    The instruction cycle is how math formulas are evaluated.

    The CPU is an implementation of the instruction cycle, combined with an arithmetic logic unit.

    All that a CPU can do is defined by mathematics - it can't do anything else.

  5. Re:Knuth is right. by swilly · · Score: 5, Informative

    Computer Science is a pretty broad area of study, but I consider these three problems to be the most fundamental.

    Computability: What can a computer do and what can it not do? There are an uncountably infinite number of problems that a computer cannot solve (undecidable), and only a countably infinite number of problems that a computer can solve (decidable). Fortunately, most of the interesting problems are decidable.

    Complexity: If a computer can do something, how efficiently can it be done? This goes beyond the Big O you are taught as an undergraduate, and considered language spaces such as P, NP, PSPACE, EXPTIME, and so on. It also considered not only computation time but space (unfortunately, few undergraduates are introduced to space constraints of algorithms, a great interview question is to list an example of a sorting algorithm that takes constant space).

    Equivalence: Given two algorithms, do they perform the same computation? Meaning that given the same inputs they will always produce the same outputs (and yes, side effects are also outputs)? A less strict (but of more practical importance) is whether or not a program meets a specification.

    Computability and complexity are both important parts of the theory of computation, which is usually built on top of Language Theory, which is itself built on top of Set Theory. The hardest problem is modern mathematics may be P = NP, which is also a Computer Science problem. The third problem requires creating mathematical proofs using Formal Logic. It is also an excellent example of an undecidable problem, meaning that there is no general algorithm that can perform it for every program (in other words, it's something that a computer cannot do).

    In addition to Set Theory and Formal Logic, Computer Science relies heavily on Boolean Algebra, Graph Theory, and other areas of Discrete Mathematics. Computer Science is inherently cross-disciplinary, but at its core it is closer to Mathematics than it is to Engineering or Science.