We've arranged a global civilization in which the most crucial elements — transportation, communications, and all other industries; agriculture, medicine, education, entertainment, protecting the environment; and even the key democratic institution of voting, profoundly depend on science and technology. We have also arranged things so that almost no one understands science and technology. This is a prescription for disaster. We might get away with it for a while, but sooner or later this combustible mixture of ignorance and power is going to blow up in our faces.
-- Sagan, Carl. 1995. The Demon-Haunted World : Science as a Candle in the Dark. New York: Random House. p. 26.
There is a cult of ignorance in the United States, and there always has been. The strain of anti-intellectualism has been a constant thread winding its way through our political and cultural life, nurtured by the false notion that democracy means that "my ignorance is just as good as your knowledge."
-- Asimov, Isaac. 1980. "A Cult of Ignorance". Newsweek. January 21, 1980, p. 19.
A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects.
-- Heinlein, Robert. 1973. Time Enough for Love. New York: G.P. Putnam's Sons.
A few years ago my friend Adam asked me if I would teach his son about how computers work -- not "how do I use Windows" or "tips and tricks for a Raspberry Pi", but rather, how binary works and how logic circuits can do stuff like add numbers. He was seeking people to instruct on a very wide variety of topics. In a broader context, he is putting his child on the path to becoming a more human instance of Heinlein's Competent Man or, at some level, a polymath. He wanted an afternoon to do it, but this project's requirements mushroomed into a multi-day event. There don't seem to be any obvious, kid friendly workshops like this, even though I looked around a bit (though, this project has lots of potential, as does the Crash Course Computer Science series).
My daughter is pretty tech savvy and, like Adam's son, has expressed at least a passing interest in the Raspberry Pi. She has also helped me solder up some boards and fab some antennas. So I was willing to at least attempt the lesson, and I'd throw my kid into the mix too (they're already friends from school). Both kids are fourth graders, as of the 2017-2018 school year.
Anyone who knows me knows that if you ask me what time it is, I often tell you how to build a clock. This is typically a problem (people don't want to hear the story of how the earth cooled), but in order to teach a kid what a logic gate is and how we use them to do math, I was going to have to start pretty far back down the ladder. At least, in order for a kid to really understand how a transistor enables a logic gate, I want them to know a little more than the typical "transistors are just switches, okay?"
I did write a little more explanation of basic electronic components than was strictly necessary. And after giving the first bit of the lecture, I learned that I left too much out of the "binary" section. Though, to my credit, the kids really enjoyed learning how to count to 31 on one hand (25 - 1), especially binary "4", which is just the middle finger!
The basic flow of the lesson is:
- "enough math to understand binary"
- "enough electronics to understand how electricity flows"
- "enough circuit theory to understand the common logic gates", and
- "enough digital logic to see how computers can add or compare numbers."
That's actually a lot. This workshop takes around 4 hours of total time, if you don't do any soldering. It is best split into two sessions, regardless of whether you teach soldering or not.
I threw in a bunch of "experiments" or "applications" like the classic lemon battery, a saltwater resistor, a Leyden jar (the earliest capacitor), and a cardboard/aluminum foil variable capacitor. There are a handful of thought experiments designed to introduce slightly advanced topics like integer overflow without making it too hard. It might be useful to make an aluminum foil & corrugated cardboard multi-layer capacitor too, either beforehand or in place of the Leyden jar.
During Open Data Day, another friend asked me about the existence of anything resembling this project, and I told him about it. I also said I would teach his daughter (also a third grader at the same elementary school) along with Adam's son and my daughter. I had already revised the first half of the workshop anyway, and my daughter had since become much more adept at handling binary (not just the middle finger part). So I offered another child the chance to participate.
I am perennially over-committed, and have little free time as it is, but this, like so many projects, did seem worthy and I did seem like the guy to do it. But: I want some feedback from some fellow nerds. If I'm doing something that seems useful, I want other people to know about it, and I value collaborative efforts. And since I don't have the time to run a summer workshop or anything like that, I am happy to post it on github so we can all work on it and share it, and so somebody besides me can turn this into a successful "thing" if it looks like it's worth the trouble.
If you want to contribute, check the Issues tab for existing needs. Further:
Download the PDF and read it. If you love it or hate it, tell me. If you want to help make the document better, add comments or propose edits and we can all improve it. Why LaTeX? For one, I love it. Second, it's open-source, and beautiful. And third, there's no way to do a bunch of this stuff like circuit diagrams or elegant tables in Markdown.
Screencap of a circuit diagram (schematic) from the text. These aren't easy to draw with most tools.
I took or modified sentences here and there from Wikipedia (and Simple Wikipedia, which wasn't always better), and I know that sometimes the language is above the heads of 9-year olds. But they can learn the words, and with good instruction, the concepts are accessible. Still, I'd like to have some more careful or soft introductions to some of the ideas. The extra eyes, and authors, are most welcome.
In addition to reading and refining it, you can think about outlets for it. Do you think high schoolers could teach it to younger kids? Would a public library or elementary school summer program be interested in this workshop? What ages are actually appropriate for this topic and materials?
I've produced some simple logic gate PCBs for discrete components1, including OR, AND, NOT, NOR, NAND, and even XOR, but not XNOR (although I demonstrate using a NOT gate with an XOR gate in the text) and am testing their applicability and performance before I include the Eagle CAD2 files in this repository. Additionally, I have designed some full-adder PCBs using integrated components. As each gate is discrete, it is still easy to see the design of the full adder. I may also wire up a 4-bit adder, since stacking all these gates together to make even a 4-bit adder will get ungainly and will be very slow to implement and tough to troubleshoot.
An XNOR gate built from an discrete-component XOR gate and NOT gate.
LED 0 is lit, indicating the two inputs (here, both tied to Vcc) are the same.
The next hardware widget will be a JK flip-flop gate, to provide some memory to write to and from which to read. The only new component it needs is a three-input NAND gate, and that component has been designed and tested too.
As an added bonus, the kids can learn to solder (I've got a separate tutorial in this repository for that, and a slightly more challenging Atari Punk Console soldering project repository as well) and can make their own gates, since I use entirely through-hole components for the workshop PCBs.
Participants can solder the gates if they want to, but the workshop should provide enough to make some complete logic circuits without that portion of the workshop, so soldering is optional. A few other PCBs like a 4-switch deck of toggles, a 4-bit XNOR comparator, and small boards of 4 or 8 LEDs (the designs are or will be included in this repository) will be very useful.
A rendering of the 4-toggle circuit board, used to input numbers into a logic circuit.
Jesse Hamner, 2016-2021 🚀
1Sparkfun has already produced a similar set of gates, but they use entirely integrated components, and I want to show the kids at least a few discrete-component gate blocks.
2In keeping with the open-source philosophy, and AutoDesk's recent change in the terms of use for Eagle CAD, I have begun to transition the PCB designs to KiCAD.