This is the launching off point for a series of posts on computing science (and its most common expression, programming) geared for people who don’t have a lot of experience in the field. These are basically an expansion of the notes I usually end up making when I tutor CS students.

Unlearning How to Count

Most CS courses start by introducing students to a programming language, which usually begins with a study of variables and simple operators. The problem I have with this is that a lot of people come away from that with an almost superstitious understanding of how computers actually work.

This section is here to explain what information is and how computers can organize and manipulate it.


This section is on compilers and programming languages as tools for software development. This about how we make compilers, it’s about why we make them. Specifically, it’s about the problems that compiles solve for us so that we can get real work done rather than just fiddling with bits.