• About
  • Projects & Research
  • Publications
  • Archives
  • Categories
  • Posts Tagged ‘theory’

    Computer Science, the study of…? Mathematics.


    2010 - 04.30

    [Note: I wrote this more as a curiosity.  What follows is a dabbling into one perspective of what computer science is, a subfield of mathematics in this case. I think it would make an interesting series and invite requests.]

    One of my all time favorite quotes attributed to Edsger Dijkstra (one of the best known theorists and algorithms computer scientists) is:

    Computer science is as much about computers as astronomy is about telescopes.

    Djikstra felt very strongly that computer science should be viewed as a branch of mathematics. A radically novel subfield.

    First, the “divide and conquer” view of large systems (breaking a universe into galaxies into solar systems and so forth) does not work for programs. Changing one bit (abstracted away in the creator’s mind), changes the entire system. There are no too small to matter parts.

    Second, computer science relies on discrete numbers. A bit is a one or a zero (excluding quantum computing systems). Our logic depends on yes/no choice:

    if (x) : then y
    else : z

    We pick branches; we do not go down multiple paths. A discrete system is antithesis to the analog perspective we humans have. We have the notion of “gray areas.” We can have proportions (like one third) that can only be estimated by a computer.

    He was also adamant against software engineering, or as he called it, “The Doomed Discipline” as it cannot guarantee correctness. Consider testing: while one can find bugs through testing, one cannot prove there are no bugs in the code. (Not finding something is not definitive proof.)

    In regards, to how he felt computer science should go, he demanded formality. Language should be accurate. Errors are not an infection or insect, and, hence, not a “bug.” Software and hardware are inanimate things; they should not be personified (they are genderless and do not desire, need, want, etc. anything).

    And, our very beloved proofs. While not as formal as those in a mathematics course, there must be irrefutable logic to them. As this is a model-centric view, each program is an independent model. So, students need to be able to justify that their program (their proof) is sound.


    For more information about Dijkstra’s views, I recommend his 1998 paper, “The Cruelty of Really Teaching Computer Science.”

    Grading


    2009 - 09.09

    It’s very strange to me how my department handles grading.

    First off, the emphasis on having courses on a curve. I understand the significance of having the course weighted for even distribution. But, when the curve is set up with a C+/B- as the median, I’m not convinced that students understand what they are suppose to. In this system, you can tell how well a student did relatively, but not what they know; there isn’t a checklist of knowledge in this case.

    I, as I have mentioned, am doing grading this semester. It’s depressing how few students follow directions.

    … Yet, I can’t entirely blame the students. They are being taught to program in the lower levels. The importance of theory (algorithms, logic, and critiacal thinking) aren’t emphasized. It’s very difficult to blame a student for not understanding, if (s)he doesn’t know why things are important and why we do things a certain in way.

    Even the tutors and some of the grad students don’t get the signifigance. I just want to hit my head against a wall sometimes.