Tuesday, August 30, 2011

Lesson 3: Boolean Logic

Computer technology is dependent absolutely on Boolean Algebra.

Boolean algebra is named after George Boole, who developed his algebra of two values -- zero and one -- as a thought experiment in the mid 19th century. A little under 100 years later, MIT student Claude Shannon demonstrated the application of Boolean algebra to design electronic circuits that could resolve any logical and numeric relationship. Shannon's thesis underlies all modern circuit design and information theory.

Boolean Algebra has three operations: conjunction, disjunction, and negation. In computer logic design, we call conjunction AND, disjunction OR, and negation NOT. The result of these operations are defined in truth tables, as shown below.

    0 AND 0 = 0 | 0 OR 0 = 0
    1 AND 0 = 0 | 1 OR 0 = 1
    0 AND 1 = 0 | 0 OR 1 = 1
    1 AND 1 = 1 | 1 OR 1 = 1

    NOT 0 = 1
    NOT 1 = 0

Other logical operators are created from these basic Boolean operations. These are NOT AND (NAND), Exclusive OR (XOR), NOT Exclusive OR (XNOR) and so forth.

It turns out every logical operation can be construction from NAND gates. An entire computer processor, adders, memory circuits and so forth can be designed using nothing but NAND logic.

In computer circuits, these zeroes and ones are represented by voltage levels, which are controlled by the electronic switches we've already discussed in Tubes, Transistors and Integrated Circuits. Millions of these logic gates are combined to perform arithmetic operations, store values, and make decisions.


1. Describe or draw a basic TTL NAND logic circuit.

2. Modern computer memory is design using edged triggered flip flop circuits. Find a logic diagram for this type of memory circuit. (Hint: Google is your friend).

3. What does "flip flop" mean in the context of digital circuits?

4. Why is a clock signal important in dynamic random access memory (DRAM)?

Monday, August 29, 2011

The Intel Museum

This week's lessons on computer hardware development can be difficult to grasp without looking at some of this material with your eyeballs.

Intel has a free museum at their headquarters in Santa Clara, California. It's just a half hour from my office, so my son and I rode our bikes there for a field trip during our lessons on early computer technology and semiconductors.

At the Intel Museum, you can see Intel's semiconductor memory chips next to some core memory (an early type of computer memory that used wire windings around tiny iron donuts to store information). You can touch a big blob of purified silicon crystal and silicon wafers from which modern semiconductor integrated circuits are manufactured. Interactive exhibits describe the process of designing and manufacturing computer chips in details.

If you live in or near Silicon Valley, it's worth the trip. Parking is free -- just follow the signs for visitor / museum parking. Intel is served by VTA 60 (the bus that runs between the Winchester Transit Center in Campbell to Great America) and the free Mission Shuttle from Lawrence Caltrain. Intel HQ is also a very easy ride from the San Tomas Aquino bike trail, with bike racks available left of the museum entrance and on the ground level of the employee parking garage.

The guided tours are geared for grade school level children, so teens should do the self guided tour. Give yourselves about an hour. I had my son write a trip report. He's a visual learner, so the biggest benefit for him was seeing this old and new technology first hand.

Intel also has a nice resource covering much of this material in their online Journey Inside computer education curriculum. Use this to supplement your student's computer education with lessons computer history, the parts of a computer, circuits and switches, semiconductors, digital information, microprocessors, the Internet, and technology's impact on society.

In addition to Intel's museum in Santa Clara, we have a Computer History Museum and the Tech Museum of Innovation in Silicon Valley.

Finally, for those outside of Silicon Valley, see if there's a technology museum near you.

Lesson 2: Tubes and Transistors

A way to switch circuits on and off is necessary to create electronic digital computers. Some of the earliest electronic computers used mechanical relays controlled by paper tape with holes punched into it to add, substract, multiply, divide and calculate logarithmic and trigonometric functions.

Relays were replaced with vacuum tubes early on, then transistors. Small personal computers became possible with the invention of the integrated circuit, which can place many many transistors onto a single, small chip of silicon.

We will discuss how electronic switching is used in computing later, but first we'll cover the basics of the hardware technology that makes electronic binary logic possible.

Vacuum Tubes

Vacuum tubes are simple, electronic devices through which electrons -- and, hence, electricty -- flows through a vacuum. The most basic tube consists of a cathode and an anode inside of the vacuum tube.

Heating the cathode energizes the electrons in the metal filament there. The electrons leave the cathode and jump into the surrounding space. As negatively charged electrons leave, they are attracted to the positively charged anode.

(Diagram from Vacuum Tube Basics, where you can learn more about vacuum tube operation.)

It's possible to control the flow of electricity by adding a grid between the cathode and anode. When a negative charge is applied to this grid, electrons from the cathode are repelled and cannot travel to the anode and, so, no electrical current can flow across the tube. This control grid acts as an electronic on-off switch. This on-off switching function is a necessary component for digital computers.


The next step of electronics development involved materials called semiconductors. At the most basic level, semiconductors are materials with an electrical conductivity somewhere between conductors (such as metal wires) and insulators (such as rubber or glass). What makes semiconductors useful for electronics is the ability to control the electronic properties and conductivity through "doping," which is adding small amounts of other elements to the semiconductor.

Early crystal radio receivers used a Cat's whisker detector. These detectors used a thin wire touching a semiconductor crystal to pick up radio signals. These early semiconductors were unreliable, however, and were soon superseded with vacuum tube technology.

A Bell Labs researcher studying radar technology at the outbreak of World War II accidentally invented the first semiconductor diode in 1939 when he purified semiconductor crystals used for Cat's Whiskers. After nearly another decade of concerted effort, the first semiconductor transistor was demonstrated at Bell Labs in 1947.


Later research showed the transistor could be used like a switch like a vacuum tube. Transistors are much smaller than vacuum tubes, use significantly less power, are more reliable, and (eventually) less expensive to manufacture. It didn't take long for hobbyists and computer engineers to figure out they could create smaller computers with transistors instead of vacuum tubes.

Vacuum tubes use tremendous amounts of energy to keep the cathodes hot, and they were fragile, with thin filaments prone to burning out. Semiconductor materials enable much more reliable electronic devices that use much less power.

Transistors are used with other types of discrete electronic components such as resistors, capacitors, and diodes and connected with wiring and printed circuit board circuit traces to create electronic devices such as radios, calculators and computers. When you see the green (usually, but they can be brown, red, or yellow) circuit board with big gobs of solder inside of an an electronic house thermostat or a toy R/C car, most of the electronic parts stickup up from one side of that board are discrete components.

The next big step in electronics miniaturization was the development of the integrated circuit, which we'll cover in the next lesson.

Sunday, August 28, 2011

Lesson 1: Student Assignment

Some of the below questions are review of Lesson 1: "Early Computer History." Some will require further research to answer.

1. What did Joseph-Marie Jacquard invent?

2. Describe Charles Babbage's Analytical Machine?

3. Why is Ada Lovelace important? What computer language was named in her honor?

4. What is Herman Hollerith famous for?

5. List the characteristics of a Turing Machine.

6. How is the Harvard Architecture different from a von Neumann Architecture?

7. In George Stibitz's Model K computer, what does the "K" stand for?

8. A machine called "ABC" was developed at the University of Iowa. What does ABC stand for?

9. What does ENIAC stand for?

10. Who popularized the word "bug" in the context of computer programs? What kind of bug was noted in her journal?

Lesson 1: Early Computer History

Here's a quick overview of computer history. I taught this lesson in a single one hour session, but you can explore further in the links and probably expand this into an entire semester if you wanted.

1801 Joseph-Marie Jacquard exhibits his Jackquard Loom, which uses punched cards to control a sequence of operations to make different fabric patterns. Jacquard is credited as the inventor of the first programmable machine. His loom is not a computer, but this loom is an important predecessor in the development of programmable computers.

1837 Charles Babbage describes his proposal for a programmable Analytical Engine, which can be programmed with punch cards to solve mathematical equations. Mathematician Ada Lovelance worked with Babbage and is credited as the first computer programmer. In 1979, the computer language Ada was named in her honor. Babbage was never able to build a working Analytical Engine.

1890 Herman Hollerith develops tabulating machines that uses punch cards to complete the U.S. census in record time. Hollerith founds the "Tabulating Machine Company" which, after various mergers, eventually becomes IBM.

1936 British mathemetician Alan Turing describes the Turing Machine, an important step in the development of computer science theory. The Turing Machine is used to help computer scientists model processing behavior and algorithms.

1937 Bell Labs researcher George Stibitz creates a calculator he calls the "Model K" which used Boolean logic mechanical relays. (We'll cover Boolean logic later)

1939 University of Iowa researchers pioneer important computing concepts with the Atanasoff Berry Computer, including binary arithmetic and electronic switching.

1940s Computer hardware development explodes due to World War 2. Norden bomb sight and artillery fire control are some examples of mechanical computers used in warfare. The British built 10 Colossus computer -- large, building sized electronic digital computers -- to break German codes. They used thousands of vacuum tubes to perform calculations, and data was input using paper tape with holes punched into them, which controlled the movement of metal wheels with pins on them.

1943 ENIAC -- the first general purpose electronic computer.

1945 Mathemetician John von Neumann describes the von Neumann architecture. This describes your basic stored program computer with an arithmetic unit, control unit, a common memory to store data and programming, input and output, and external storage. Instructions and data are fetched via a common bus (or data transfer circuit). von Neumann's store program architecture was an advancement over earlier program controlled computers, which were programmed by hard wiring the instructions as part of the computer architecture.

1950s - first commercial computers developed.

Saturday, August 27, 2011

Computer Skills Homeschool


Introduction to Computers Home School curriculum

This high school introductory computer technology curriculum for the 21st Century will depend a great deal on Wikipedia and other online resources, and organized in a fashion that is hopefully useful for the homeschooling parent and student.

Here are the lessons I have so far and will post to this blog.

  • Computing History
  • Tubes, Transistors and Integrated Circuits
  • Microprocessors
  • Boolean Algebra and Circuits
  • Binary Digits
  • Unicode
  • Computer Networking History
  • The Internet
  • The World Wide Web
  • More TBD...

I'm a homeschooling dad and a technology professional. My son is now a high school junior through a home school charter school in California.

My son is taking a computer skills / technology class this semester. We looked at the various online curricula available and, to be honest, the programs we found seem to fall short and are outdated. They're all variations on introductions to Windows 95 (!) and Microsoft Office.

Anybody born since the 90s and exposed to technology knows how to use a computer mouse, login to a computer, and browse the web. Using productivity tools is also an important skill, but my son has been creating Word documents and Power Point presetations for years now. Your child and mine are a little bit beyond these basic "Introduction to Computers" classes.

So my son and I are creating our own curriculum suitable for technology aware students. We're putting a lot of work into it so I figure I might as well journal our efforts so others can benefit.

This class is not a deep dive into computer technology -- this isn't an Electrical Engineering degree -- but I will expose our students to the basics of computer hardware and software technology. We start with the history of computing, move on to basic hardware and software basics, and from there we'll explore computer networking, the Internet and the World Wide Web.

We'll dip our toes into simple HTML and Javascript programming, but the class project, so to speak, will be writing an Android application. If you don't have an Android phone, don't worry -- the Android Development Kit (available for Windows, Linux and Mac OS X), comes with an Android emulator built in. My son's already decided he'd like to write a tower defense game. Since we'll be writing an Android app, that means we also need to learn a little bit of the Java programming language and object oriented programming.

I'll also post exercises here that you can use or adapt as you see fit. The point of the exercises is to reinforce the concepts taught in the lesson. In the meantime, we'll also cover computer network security, privacy issues, social networking, using cloud applications and storage, and the ethics and responsibility that comes with having all of this power available at our fingertips.

I have no idea if we'll actually cover all of these topics in a single school year, but I think it beats using up a full school year learning how to properly indent bullet points.

I'll post at least twice a week with lessons, and possibly more often than that, so check back often or add this blog to your RSS reader. If you don't know what an RSS reader is, we'll talk about that here later :-)

If you have your own ideas and links to resources, I'm all ears. Please also feel free to ask questions. I'm a Silicon Valley software engineer working for a Fortune 100 computer hardware & software corporation and have been in this game for a couple of decades now. I see the binary digits that underlie the fancy user interfaces, just like Neo in The Matrix, and if I speak too much geek speak, please don't feel intimidated, but speak up and ask me to break it down for you.

Finally, if you feel like this is handy resource for other home schooling parents, please pass the link to this blog around to your friends via email, Google Plus, Facebook, Twitter and whatever other social networking applications you and your friends use. Thanks a million!