Code Monkey home page Code Monkey logo

techmillforkids's Introduction

TechMill for Kids

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.

Introduction

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.

What I Did

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.

Latent Demand?

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.

What You Can Do

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?

Next Steps

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.

Relevant Links

Jesse Hamner, 2016-2021 ๐Ÿš€


Footnotes

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.

techmillforkids's People

Contributors

jessehamner avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

techmillforkids's Issues

New PCBs for interfacing with a 4-bit adder or comparator

To add or compare two numbers, it will be necessary to have toggle switches for inputs and LEDs for outputs. Having a handful of four-toggle deck PCBs, plus four LEDs (to show which switches are 1 and which are 0) will be useful. LED outputs (five, or a bank of 4, 4, and 5 -- the extra for overflow) on a separate PCB will also be very useful, because wiring up LEDs is annoying and slow. While it is useful to show the kids that you can wire up an LED the wrong way and get nothing, they don't learn anything new by wiring up 13 LEDs and 13 resistors and lots of loose connecting wires. Thus, the LED output banks should be SMT components for sure, and while it will be necessary to solder the toggle switches by hand, the LEDs and resistors on the toggle banks should also use SMT components.

Test the logic gate PCBs

  • Fab the OR, AND, NOR, and NAND gate PCBs
  • order the components
  • test that they work as expected
  • ensure they don't draw too much current per gate
  • build a composite gate like an XOR
  • ensure that kids can solder the gates without difficulty

Handouts

Make handouts for participants, including such elements as:

  • binary to decimal conversion
  • blank truth tables
  • binary addition problems
  • two's complement
  • one-bit adder (with carry-in) diagram, with varying inputs and blanks for the outputs (a variant of the truth table, but with circuit symbols)

Make PCBs for other circuits

Surface mount components can be used to make:

  • half adder (one XOR gate and one AND gate)
  • full adder (two XOR gates, two AND gates, and one OR gate)
  • an AND gate cascade of four (2 + 1 cascade of gates) or eight initial positions (4 + 2 + 1 cascade of gates), to be paired with some XNOR gates (probably soldered in pairs or quads just to make things easier)

Add half and full adder symbols to macros.tex

It may be useful to add half- and full-adder symbols to the macros.tex file (example here), as the existing adder is not particularly useful.

See, for example, page 802 (14 of 20) in this pdf, where at a minimum, the use of the Sigma (ฮฃ) in a block diagram plus a few I/O pins can designate an adder.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.