Starting in the 2012/13 academic year, the Computer Science Department at the University of Bristol changed how the Undergraduate-level, 1st year (or "freshman") Computer Architecture unit was delivered. Although it always had a practical emphasis, there was a view it should be even more hands-on. There were various motivations, included the fact that a) by doing so the topic could be more engaging, but also b) it seeds an ethos and skills that are of general use: for example, it could mean students participate more actively in maker-like, hardware-based (versus software-only) projects.
The NANDboard, whose original concept and design was due to
Simon Hollis,
was among various innovations introduced; Simon left at the end of the
2014/15 academic year, prompting forcing me to learn the basics of
PCB design and subsequently revise his initial NANDboard version.
Although fundamentally important in Computer Science, Boolean algebra is a notoriously dry topic. The problem is exacerbated when hands-on experience amounts to solving paper-and-pencil exercises; the typical result is for students to be increasingly uninterested and disengaged. The underlying causes are varied, and differ from student to student. However, anecdotally at least, the following are common:
- There is a disconnection between theory and practice, in the sense it is unclear how Boolean algebra directly relates to intuitively useful forms of computation; this typically leads to students disengaging, based on the view that said theory has no practical use (to them).
- Paper-and-pencil exercises are of a necessarily small scale, which can mean toy problems dominate; this typically leads to students disengaging, e.g., because they can easily solve said problems so avoid any deeper investigation of physical constraints and properties, and unusual designs (e.g., a C-element).
- In part due to the wealth of resources available, modern students are used to and excited by the immediacy of software development; this is often direct motivation for studying Computer Science in the first place, with Boolean algebra feeling like a regression towards Mathematics (which, for some, is less popular).
Put another way, this approach is similar, by analogy, to learning C by studying the language and "hello world" style programs without ever actually compiling and executing them.
An obvious alternative is to connect theory and practice directly, by supporting genuinely hands-on, experimental tasks. One way to do so might be to equip each student with a breadboard and some 7400 series ICs. However, for us at least, this presented some problems: a) large cohort sizes (of say 200+ students) make the logistics involved quite challenging, b) said cohorts are typically unfamiliar with, and sometimes have an outright dislike for electronics. The NANDboard attempts to manage these problems. Conceptually, it is just a USB-powered breadboard pre-populated with NAND gates: it could be viewed as a form of NAND-only PLA, where implementation of a Boolean expression (cf. programming the PLA) amounts to connecting pin headers (i.e., the gate inputs and outputs) using jumper wire. There are, of course, some gratuitous blinkenlights to visualise the inputs and outputs.
Motivated in part by observing how students use them, the NANDboard design has gone through several revisions as is illustrated below:
Revision | Image | Design |
---|---|---|
B | ||
C | ||
D | files, schematic, user guide | |
F | files, schematic, user guide |
Later revisions (e.g., rev. F) were designed and manufactured with generous support from Elliptic Systems.