gregbo (gregbo) wrote,

  • Mood:
I really like Michael Mahoney's papers on the history of computing. I wish I'd had access to this kind of information when I was an undergraduate. It would have cleared up a lot of confusion.

The most recent paper I've read explores the history of the mathematics of computer science, or how computer science theory came to be. It reveals a lot about why I struggled with some concepts. For example, a quote from John von Neumann on the theory of automata:

"There exists today a very elaborate system of formal logic, and, specifically, of logic as applied to mathematics. This is a discipline with many good sides, but also with certain serious weaknesses. This is not the occasion to enlarge upon the good sides, which I certainly have no intention to belittle. About the inadequacies, however, this may be said: Everybody who has worked in formal logic will confirm that it is one of the technically most refractory parts of mathematics. The reason for this is that it deals with rigid, all-or-none concepts, and has very little contact with the continuous concept of the real or of the complex number, that is, with mathematical analysis. Yet analysis is the technically most successful and best-elaborated part of mathematics. Thus formal logic is, by the nature of its approach, cut off from the best cultivated portions of mathematics, and forced onto the most difficult part of the mathematical terrain, into combinatorics."

"The theory of automata, of the digital, all-or-none type, as discussed up to now, is certainly a chapter in formal logic. It will have to be, from the mathematical point of view, combinatory rather than analytical".

The all-or-nothing, non-analytical nature of the theory of computation has always been troubling to me. Also, if you recall, I had an exchange with nsingman last year about his experiences in CS theory, in which he said that he found it algebraic in nature. He is correct. The things I had more success in, such as Euclidean and affine geometry, are analytical in nature.

Von Neumann notes the combinatory nature of automata theory as well. As you might guess, combinatorics gives me problems for similar reasons. I even bought a combinatorics book for CS theory problem solving practice during my first year of grad school. It didn't help as much as I'd hoped it would (although it probably kept me from failing).

On a somewhat related note, I am starting to wonder if the theory of computation is a useful subject for software engineers to study (although I think it is essential for computer scientists). At least in the contemporary concept of what a software engineer is, there is far less need for the ability to do things like prove problems NP-complete, or undecidable, or not recognizable by a regular expression. Also, the ability to do these things does not lend itself to a broader acquisition of the detailed knowledge a software engineer must know (at least at an interview). Just because one can prove some language is not regular does not reveal the algorithm recognizing it. Knowing the algorithm is of far more value today, at least on interviews.

(I hope that I am not burned someday by failing to answer a theory of computation question because I was spending more time on algorithms.)
Tags: career

  • Ciena interview

    I had an onsite interview at Ciena a couple of weeks ago for a Senior Systems Test position. Long story short — I didn't get the job. I think they…

  • ProtonMail test

    I took a test from 7-9am this morning from ProtonMail, a secure email provider based in Geneva, Switzerland, that has an office in SF. The test was…

  • IBM interview

    I had an interview loop yesterday at the IBM Silicon Valley Lab facility with several people from the Cloud Network Services group. Four engineers…

  • Post a new comment


    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.