1. 5

Computer science has a reputation of being a discipline in a perpetual state of accelerated progress—a discipline in which our techniques, our hardware, our software systems, and our literature rarely exhibit a staying power of more than several years. While undeniably exciting, this state of continual intellectual upheaval can leave computer science students (and faculty) with a disturbing sense that there is no essential core of great work within the discipline. This paper describes a readings course entitled “Computer Science: the Canon” whose purpose is to counter this perception by exploring a set of “great works” in computer science. We describe our own (undoubtedly idiosyncratic) reading list used for the course, and discuss several central issues involved in offering such a course within a computer science curriculum.

  1. 1

    The link redirects to the CS dept home page. The article is here in the ACM digital library, which currently doesn’t have any subscriber restrictions or paywall.

    I find it interesting that a paper from 2003 listing canonical reading in computer science has nothing later than 1981. Were there no subsequent paradigm shifts or big advances in the field? I would’ve thought that human-computer interaction, parallel algorithms, and cybersecurity (if that’s within scope) all moved on dramatically in the intervening time.

    1. 2

      Unfortunately, the author of this paper passed away in 2019.

      I would hope this paper continuous to influence computer science programs in various education venues.

      I think, to a degree, the intent of the author was to separate ‘application’ of CS vs ‘foundations’ of CS.

      Which is why there is a focus on fundamental ways to carry out a ‘compute’.

      Have there been advances in the foundations of CS since ’81? I am sure.

      But I could not come up with something that changed a fundamental carrying out of compute (with exception of quantum computing).

      I think there are multiple new subfields developed, though, with most foundational one being program verification (that extends to verifiable correctness, security, computability limits). I think this subfield will have tremendous long lasting impact for next 100 years. As we will transition of how we teach CS from ‘guessing’ how to build ‘what will work’, to proving that it will work.

      1. 2

        The link redirects to the CS dept home page. The article is here in the ACM digital library, which currently doesn’t have any subscriber restrictions or paywall.

        Thank you! I made an opsie again.

        I find it interesting that a paper from 2003 listing canonical reading in computer science has nothing later than 1981.

        They actually address this in the paper, mistery solved!

        Another aspect of the readings shown is their age: for the most part, we have hewed to a rule that Canon papers should be at least 20 years old to be included in the course. The purpose of this rather arbitrary cut-off point is to provide a rough means of ensuring the lasting interest of the work in question.

        1. 1

          Oh, thanks, I didn’t spot that paragraph in the article when I read it. It’d be interesting to consider what writing from 1981-2000 would be included in a modern update of that article using the same rules, but also what the likely candidates are from this millennium too.