
A great way to start , I think , with my view of simplicity , is to take a look at TED . Here you are , understanding why we 're here , what 's going on , with no difficulty at all . The best AI in the planet would find it complex and confusing , and my little dog Watson would find it simple and understandable , but would miss the point . ( Laughter ) He would have a great time . And of course , if you 're a speaker here , like Hans Rosling , a speaker finds this complex , tricky . But in Hans Rosling 's case , he had a secret weapon yesterday , literally , in his sword swallowing act . And I must say I thought of quite a few objects that I might try to swallow today and finally gave up on -- but he just did it and that was a wonderful thing . So Puck meant not only are we fools in the pejorative sense , but that we 're easily fooled . In fact what Shakespeare was pointing out is we go to the theater in order to be fooled , so we 're actually looking forward to it . We go to magic shows in order to be fooled . And this makes many things fun , but it makes it difficult to actually get any kind of picture on the world we live in , or on ourselves . And our friend , Betty Edwards , the Drawing On the Right Side of the Brain lady , shows these two tables to her drawing class and says , the problem you have with learning to draw is not that you ca n't move your hand , but that the way your brain perceives images is faulty . It 's trying to perceive images into objects rather than seeing what 's there . And to prove it , she says , the exact size and shape of these tabletops is the same , and I 'm going to prove it to you . She does this with cardboard , but since I have an expensive computer here , I 'll just rotate this little guy around and ... . Now having seen that -- and I 've seen it hundreds of times , because I use this in every talk I give -- I still ca n't see that they 're the same size and shape , and I doubt that you can either . So what do artists do ? Well , what artists do is to measure . They measure very , very carefully . And if you measure very , very carefully with a stiff arm and a straight edge , you 'll see that those two shapes are exactly the same size . And the Talmud saw this a long time ago , saying , we see things not as they are , but as we are . I certainly would like to know what happened to the person who had that insight back then , if they actually followed it to its ultimate conclusion . So if the world is not as it seems and we see things as we are , then what we call reality is a kind of hallucination happening inside here . It 's a waking dream . And understanding that that is what we actually exist in is one of the biggest epistemological barriers in human history . And what that means : " simple and understandable " might not be actually simple or understandable , and things we think are complex might be made simple and understandable . Somehow we have to understand ourselves to get around our flaws . We can think of ourselves as kind of a noisy channel . The way I think of it is , we ca n't learn to see until we admit we 're blind . Once you start down at this very humble level , then you can start finding ways to see things . And what 's happened over the last four hundred years in particular is that human beings have invented brainlets : little additional parts for our brain , made out of powerful ideas that help us see the world in different ways . And these are in the form of sensory apparatus -- telescopes , microscopes -- reasoning apparatus , various ways of thinking , and most importantly , in the ability to change perspective on things . I 'll talk about that a little bit . It 's this change in perspective , and what it is we think we 're perceiving , that has helped us make more progress in the last four hundred years than we have in the rest of human history . And yet it is not taught in any K through 12 curriculum in America that I 'm aware of . So one of the things that goes from simple to complex is when we do more . We like more . If we do more in a kind of a stupid way , the simplicity gets complex . And in fact , we can keep on doing it for a very long time . But Murray Gell-Mann yesterday talked about emergent properties . Another name for them could be " architecture " as a metaphor for taking the same old material and thinking about non-obvious , non-simple ways of combining it . And in fact , what Murray was talking about yesterday in the fractal beauty of nature , of having the descriptions at various levels be rather similar , all goes down to the idea that the elementary particles are both sticky and stand-offish , and they 're in violent motion . Those three things give rise to all the different levels of what seem to be complexity in our world . But how simple ? So when I saw the Roslings ' Gapminder stuff a few years ago , I just thought it was the greatest thing I 'd seen in conveying complex ideas simply . But then I had a thought of , boy , maybe it 's too simple . And I put some effort in to try and check to see how well these simple portrayals of trends over time actually matched up with some ideas and investigations from the side , and I found that they matched up very well . So the Roslings have been able to do simplicity without removing what 's important about the data . Whereas the film yesterday that we saw of the simulation of the inside of a cell , as a former molecular biologist , I did n't like that at all . Not because it was n't beautiful or anything , but because it misses the thing that most students fail to understand about molecular biology , and that is , why is there any probability at all of two complex shapes finding each other just the right way so they combine together and be catalyzed ? And what we saw yesterday was , every reaction was fortuitous . They just swooped in the air and bound , and something happened . But in fact those molecules are spinning at the rate of about a million revolutions per second . They 're agitating back and forth their size every two nanoseconds . They 're completely crowded together . They 're jammed , they 're bashing up against each other . And if you do n't understand that in your mental model of this stuff , what happens inside of a cell seems completely mysterious and fortuitous . And I think that 's exactly the wrong image for when you 're trying to teach science . So another thing that we do is to confuse adult sophistication with the actual understanding of some principle . So a kid who 's 14 in high school gets this version of the Pythagorean theorem , which is a truly subtle and interesting proof , but in fact it 's not a good way to start learning about mathematics . So a more direct one , one that gives you more of the feeling of math , is something closer to Pythagoras ' own proof which goes like this . So here we have this triangle , and if we surround that C square with three more triangles and we copy that , notice that we can move those triangles down like this , and that leaves two open areas that are kind of suspicious , and bingo . And that is all you have to do . And this kind of proof is the kind of proof that you need to learn when you 're learning mathematics in order to get an idea of what it means before you look into the , literally , 12 or 1500 proofs of Pythagoras ' theorem that had been discovered . Now let 's go to young children . This is a very unusual teacher who was a kindergarten and first-grade teacher , but was a natural mathematician . So she was like that jazz musician friend you have who never studied music , but is a terrific musician . She just had a feeling for math , and here are her six-year-olds , and she 's got them making shapes out of a shape . So they pick a shape they like -- a diamond , or a square , or a triangle , or a trapezoid -- and then they try and make the next larger shape of that same shape , and the next larger shape . And you can see the trapezoids are a little challenging there . And [ what ] this teacher did on every project was to have the children act like first it was a creative arts project and then something like science . So they 'd created these artifacts . Now she had them look at them and do this laborious -- which I thought for a long time , until she explained to me , was to slow them down so they 'll think . So they 're cutting out the little pieces of cardboard here , and pasting them up . But the whole point of this thing is for them to look at this chart and fill it out . What have you noticed about what you did ? And so six-year-old Lauren there noticed that the first one took one , and the second one took three more , and the total was four on that one . The third one took five more , and the total was nine on that one , and then the next one . So she saw right away that the additional tiles that you had to add around the edges was always going to grow by two . So she was very confident about how she made those numbers there . And she could see that these were the square numbers up until about six . Where she was n't sure what six times six was , and what seven times seven was . But then she was confident again . So that 's what Lauren did . And then the teacher , Gillian Ishijima , had the kids bring all of their projects up to the front of the room and put them on the floor . And everybody went batshit . Holy shit ! They 're the same ! No matter what the shapes were , the growth law is the same . And the mathematicians and scientists in the crowd will recognize these two progressions as a first order discrete differential equation , and a second order discrete differential equation . Derived by six-year-olds . Well , that 's pretty amazing . That is n't what we usually try to teach six-year-olds . So let 's take a look now at how we might use the computer for some of this . And so the first idea here is just to show you the kind of things that children do . I 'm using the software that we 're putting on the 100 dollar laptop . So I 'd like to draw a little car here . I 'll just do this very quickly . And put a big tire on him . And I get a little object here , and I can look inside this object . I 'll call it a car . And here 's a little behavior : car forward . Each time I click it , car turn . If I want to make a little script to do this over and over again , I just drag these guys out and set them going . And I can try steering the car here by -- see the car turn by five here ? So what if I click this down to zero ? It goes straight . That 's a bit of a revelation for nine-year-olds . Make it go in the other direction . But of course that 's a little bit like kissing your sister as far as driving a car . So the kids want to do a steering wheel . So they draw a steering wheel . And we 'll call this a wheel . And , see this wheel 's heading here ? If I turn this wheel , you can see that number over there going minus and positive . That 's kind of an invitation to pick up this name of those numbers coming out there and to just drop it into the script here . And now I can steer the car with the steering wheel . And it 's interesting . You know how much trouble the children have with variables , but by learning it this way , in a situated fashion , they never forget from this single trial what a variable is and how to use it . And we can reflect here the way Gillian Ishijima did . So if you look at the little script here , the speed is always going to be 30. We 're going to move the car , according to that , over and over again . And I 'm dropping a little dot for each one of these things . They 're evenly spaced because they 're 30 apart . And what if I do this progression that the six-year-olds did of saying , OK , I 'm going to increase the speed by two each time , and then I 'm going to increase the distance by the speed each time ? What do I get there ? We get a visual pattern of what these nine-year-olds called acceleration . So how did the children do science ? ( Video ) Teacher : Objects that you think will fall to the earth at the same time -- Kid : This is nice . Teacher : Do not pay any attention to what anybody else is doing . Who 's got the apple ? Alan Kay : They 've got little stopwatches . Teacher : What do you get ? What did you get ? AK : Stopwatches are n't accurate enough . Girl : 0.99 seconds . Teacher : So put " sponge ball " -- Girl : There was a shot-put and a sponge ball , because they 're two totally different weights . And if you drop them at the same time , maybe they 'll drop at the same speed . Teacher : Drop . AK : So obviously Aristotle never asked a child about this particular point , because of course he did n't bother doing the experiment , and neither did St. Thomas Aquinas . And it was not until Galileo actually did it that an adult thought like a child . Only 400 years ago . We get one child like that about every classroom of 30 kids who will actually cut straight to the chase . Now , what if we want to look at this more closely ? We can take a movie of what 's going on , but even if we single stepped this movie , it 's tricky to see what 's going on . And so what we can do is , we can lay out the frames side by side , or stack them up . So when the children see this , they say , " Ah , acceleration , " remembering back four months when they did their cars sideways , and they start measuring to find out what kind of acceleration it is . And so what I 'm doing is measuring from the bottom of one image to the bottom of the next image , about a fifth of a second later , like that , and they 're getting faster and faster each time . And if I stack these guys up , then we see the differences , the increase in the speed is constant . And they say , oh , yeah , constant acceleration . We 've done that already . And how shall we look and verify that we actually have it ? So we ca n't tell much from just making the ball drop there , but if we drop the ball and run the movie at the same time , we can see that we have come up with an accurate physical model . Galileo , by the way , did this very cleverly by running a ball down backwards down the strings of his lute . I pulled out those apples to remind myself to tell you that this is actually probably a Newton and the apple-type story , but it 's a great story . And I thought I would do just one thing on the 100 dollar laptop here just to prove that this stuff works here . So once you have gravity , here 's this -- increase the speed by something , increase the ship 's speed . If I start the little game here that the kids have done , it 'll crash the space ship . But if I oppose gravity , here we go -- oops ! ( Laughter ) One more . Yeah , there we go . Yeah , OK ? I guess the best way to end this is with two quotes . Marshall McLuhan said , " Children are the messages that we send to the future . " But in fact , if you think of it , children are the future we send to the future . Forget about messages . Children are the future . And children in the first and second world , and most especially in the third world , need mentors . And this summer we 're going to build 5 million of these 100 dollar laptops and maybe 50 million next year . But we could n't create a thousand new teachers this summer to save our life . And that means that we once again have a thing where we can put technology out , but the mentoring that is required to go from a simple new iChat instant messaging system to something with depth is missing . I believe this has to be done with a new kind of user interface . And this new kind of user interface could be done with an expenditure of about 100 million dollars . It sounds like a lot , but it is literally 18 minutes of what we 're spending in Iraq . We 're spending 8 billion dollars a month . 18 minutes is 100 million dollars . So this is actually cheap . And Einstein said , " Things should be as simple as possible , but not simpler . " Thank you . 