Towards a Computer Science Education

Posted 2018-06-10

As you may be aware, the current state of education in computer science is abysmal, to the point where "top researchers" in the field produce work that is worthless, designed for architectures inferior to what came before, written in programming languages) which are conceptually braindead, and all while operating at the beck and call of corporate lobbyists and traitorous three letter agencies. Educators teach to the lowest common denominator, while allowing the eternally shortsighted market and its pointless fashions to decide what deserves a place in the curriculum. Buyer beware.

My education is as a theoretical mathematician, a relatively mature field with a clear path through the cornerstones. Of course, most institutions manage to screw this up anyway, and most graduates can't explain the purpose of the derivative (to linearize), the integral (to globalize), or the group (the structure on the self-transformations of an object which defines that object in a model). So, fraudulent behavior of the CS academics aside, it's no shocker that the nubile field of computer science teaches its students diddly squat about computing or its history. (Every mathematician knows Gauss, Euler, and Riemann. Students: do you know John McCarthy, Guy Steele, and Gerald Sussman?)

So, let's say you're in the same position I find myself in, having no formal education in computer science, and little chance of finding a decent school, but with enough experience in a real discipline to posses a decent bullshit detector. What to do?

Well, the best I've managed is to gather a collection of books which seem promising, and to slowly work through them on my own. I'll be picking up the pace on them, and posting reviews on completion.

Meanwhile, if you think this list sucks, then speak up!

  • Generalist Works
    • Knuth - The Art of Computer Programming
  • Theory of Computation
    • Moore and Mertens - The Nature of Computation
  • Algorithms
    • Cormen, Leiserson, Rivest, and Stein - Introduction to Algorithms
  • Hardware Considerations
    • Horowitz and Hill - The Art of Electronics
    • Hennessy and Patterson - Computer Architecture: A Quantitative Approach
    • Kogge - The Architecture of Symbolic Computers
    • Silc, Robic, and Ungerer - Processor Architecture: From Dataflow to Superscalar and Beyond
  • Symbolic Computation
    • Stark - LISP, Lore, and Logic
    • Sussman and Steele - The Lambda Papers
    • John Alan - Anatomy of Lisp
    • Sussman and Abelson - Structure and Interpretation of Computer Programs
    • Graham - On Lisp
    • Hoyte - Let over Lambda: 50 Years of Lisp
    • Queinnec - Lisp in Small Pieces
  • Programming and Programming Languages
    • Steele - Common LISP: The Language (2nd edition)
    • Various - Ada 95 (reference manual and rational)
    • Keene - Object-Oriented Programming in Common Lisp
    • Various - Object-Oriented Programming: The CLOS Perspective
    • Kiczales, Rivieres, and Bobrow - The Art of the Metaobject Protocol
  • Programming Techniques
    • Norvig - Artificial Intelligence Programming: Case Studies in Common Lisp
    • Okasaki - Purely Functional Data Structures
  • Cryptography
    • Schneier - Applied Cryptography

2 Responses to “Towards a Computer Science Education”

  1. > most graduates can't explain the purpose of the derivative (to linearize), the integral (to globalize),

    It can't be properly said that "the purpose of the integral is to globalize" except in front of a certain audience. This is the fundamental problem of education, that the more inclusive its halls, the less meaningful its content ; and this fundamental problem can not be approached in any way whatsoever.

    > I've realized how little I know. So I'm thinking that I'll have to devote the majority of my effort to learning the ropes wrt computing before I can pull my weight in here.

    This is an unreasonable approach. Inasmuch as perfect knowledge is unattainable, it thereby follows that the only alternative to perpetual inaction is acting ~sanely~ on imperfect knowledge. The art of acting sanely on imperfect knowledge is not related to the knowledge itself, and there's some hope it may well be invariant across fields (which is why your "enough experience in a real discipline to posses a decent bullshit detector" assertion passes). So really, you have a bicephal problem before you : one end is "how to improve actual knowledge", and the other end is "how to make the most of the knowledge actually available" (this is not different for the person or for the group, incidentally, the problems of Science are the same as the problems of esthlos when it comes to this).

    Cheers.

  2. esthlos says:

    Mircea, thank you for your comment,

    > It can't be properly said that "the purpose of the integral is to globalize" except in front of a certain audience. This is the fundamental problem of education, that the more inclusive its halls, the less meaningful its content ; and this fundamental problem can not be approached in any way whatsoever.

    I've found the most common reaction to "CS edumacation is BS" is "well, the world needs more Java programmers", meaning: "the world needs more construction workers than engineers". Probably true, but interestingly these "Java programmers" treat the historical and theoretical underpinnings of their field as Jewish Physics.

    > Inasmuch as perfect knowledge is unattainable, it thereby follows that the only alternative to perpetual inaction is acting ~sanely~ on imperfect knowledge. ... So really, you have a bicephal problem before you : one end is "how to improve actual knowledge", and the other end is "how to make the most of the knowledge actually available"...

    Clearly this is correct. I'll have to think on why it wasn't clear to begin with.

Leave a Reply (USE HTML! Space not preserved!)