2009 101: Difference between revisions

From XPUB & Lens-Based wiki
No edit summary
Line 17: Line 17:


We began the day by performing an "Human Adding Machine".
We began the day by performing an "Human Adding Machine".
[[Image:HumanAddingMachineFor6 Inputs.png]]


== Introduction to Computation ==
== Introduction to Computation ==

Revision as of 22:05, 7 October 2008

Technical Day 1.01: Introductions

Introduction to the Technical Day

Why programming?

A Manifesto for Change

What is Python?

Why Python?


The Human Adding Machine

We began the day by performing an "Human Adding Machine".

File:HumanAddingMachineFor6 Inputs.png

Introduction to Computation

Writing Numbers

The modern system of writing numbers (like 2008 and 17) can be traced to early Arab and Hindu origins. There are three key properties of this system:

  1. Based on an abstract relation of symbols to notions of quantity.
  2. Positional: Limited (or finite) number of symbols to represent an unlimited (infinite) number of quantities
  3. Decimal: Based on counting in groups of tens (or powers of ten)


Abstract relation of symbols to quantity

Finite Symbols, Infinite Possibilites

In contrast to [Wikipedia:Roman Numerals Roman Numerals], new symbols are not needed as the quantity increases, you simply keep adding digits to the left. Sometimes the African game Oware is used to teach children about counting.

Decimal

The common number system is based on 10 symbols (if one includes an explicit representation of nothing or zero (0)). This seems to be because we have 10 fingers (also known as digits)... thus 10 numerical digits. However, other systems are equally possible (based-4, base-9, base-173). Babylonians used a number system based on 60 (which is reflected in our representation of time). Also see Quipu for an early alternative writing systems.

Thinking Machines

Mechanical Math

Babbage's Difference Engine

Babbage worked at the limits of what was physically possible in terms of producing the many mechanical parts, and produced many of his own tools, achieving a level of precision unique to his time. Ultimately his later effors (with his second machine, the Analytical Engine) failed as it was simple too complex for him to build.

Adding a digit...

Minimalist Math

In An Investigation of the Laws of Thought, British Mathematician George Boole also worked with a notion of capturing something of the workings of human thought, though as an abstract mathematical system rather than a mechanical one. The system of algebra he developed is now called Boolean Algebra.

Note that a key property of Boole's "algebra" was that, just as with a positional number system, it was possible to represent an infinite variety of equations using just a limited set of basic "building blocks" (or "primitives") -- the "and", "or", and "not" elements. In fact, it can be shown that and can be represented using "or" and "not", and similarly "or" can be represented using "and" and "not" -- so only the system can be reduced even further to just elements. This is called [De Morgan's Law].

Dinner with De Morgan (an aside)

To make DeMorgan's law more concrete, consider the following situations with a somewhat demanding friend:

On making a decision to go out to eat:

I am only happy if we eat Chinese OR Indian food.
is the same as saying:
I will NOT be happy if we do NOT eat Chinese AND we do NOT eat Indian.

The morning after:

I am only happy when I have a good dinner AND sleep well.
is the same as saying:
I am NOT happy if I do NOT have a good dinner OR I do NOT sleep well.

Electrical Math

It was Claude Shannon who later (in the 20th century) connected the idea of Babbage & Boole to realize that a machine working with a binary representation of numbers would be possible to realize using flows of electricty.

Electronic Adders

Resources

Quotes

... [Y]ou can think of programming as the process of breaking a large, complex task into smaller and smaller subtasks until the subtasks are simple enough to be performed with one of these basic instructions.
Think Python, p. 3

Assignments for Next Week