You're viewing a comment by Tj Gabbour and its responses.

Tj Gabbour Permalink
April 27, 2015, 11:54

I don't have a favorite, but here's one...

The Elements of Computing Systems: http://nand2tetris.org/

I use this to teach someone how computers work. Neither of us cared so far to run the simulation software; we just run everything by hand with our minds and whiteboards on the table. (Or when lucky, a whiteboard-like table surface.)

I find their assembly language rather unpleasant. But we got surprisingly used to their (binary) machine language, pretending we're the CPU control unit, quickly bored with longs trips to RAM and figuring out ways to make our job faster. (We also used a textual assembly I made up, as well as one using Clojure's EDN format.)

Same with the usual notation of logic gates. I just use boxes with names; I anthropomorphize them to distinguish them conceptually, rather than give them some weird visual shape.

Teaching is quite an undertaking. I prepare nice reference sheets (using Balsamiq) to visualize processes. I imagine I'll release them later.

This is a springboard for other texts, which I read to be able to answer questions. (Today, we're delving into input/output, which means I need to know more than "uh, the book says direct memory addressing." So I skimmed sections of books like: Hennessy & Patternson's "Computer Architecture", "See MIPS Run", Intel's "Software Developer's Manual", Ward & Halstead's "Computation Structures", Mano and Kime's "Logic and Computer Design Fundamentals".)

One theme that really comes out is, when you get to the register machine, it's like a board game. You wake up & start your turn, see what's around, do the thing, and end your turn. When we popped up briefly to a much higher level (Clojure) — with an explanation that followed how an interpreter works — it's kind of the same: you see a form and environment... well, there's a weird thing where you-as-eval call eval again (because the program is a tree rather than a list), so you awaken into into a new consciousness which starts its turn while you're still awake... but eventually you (hopefully) end your turn.

Reply To This Comment

(why do I need your e-mail?)

(Your twitter handle, if you have one.)

Type the word "browser_455": (just to make sure you're a human)

Please preview the comment before submitting to make sure it's OK.