Articles of Faith

In a discussion with Karen Reid yesterday about what should be in U of T’s second-year CS hardware course, I learned something about my own beliefs that I hadn’t realized before: I believe that in order to be a computer scientist, a person must know (or must once have known) how logic gates, cleverly combined, can do things like add numbers. I don’t know if it’s a holdover from my degree in engineering, or whether it’s a ghostly memory of the epiphany I had in Prof. Michael Levison’s CS210 class at Queen’s in 1981-82 when I suddenly understood how deterministic collections of circuits could make choices (i.e., execute ‘if’ statements). I doubt we’ll ever agree on a definition of what computer science is, but this, the idea that programs are data, trees & recursion, and how garbage-collected object-oriented languages actually work are all marked “must know” in my mind. What’s in that category in yours?

Adder built with NAND gates

In the wake of posts about Shopify's support for white nationalists and DataCamp's attempts to cover up sexual harassment
I have had to disable comments on this blog. Please email me if you'd like to get in touch.