Category Archives: education

Crowdfunded Space Telescope Raises $200,000 in Less than Ten Hours

You may have heard about Planetary Resources: it is a company that aspires to collect valuable minerals from asteroids and then sell them back on Earth. They are not a bunch of lunatics: amongst its employees there are former engineers from high-difficulty missions such as the Mars rover. Their idea is simple and ambitious: making space exploration affordable in order to start mining asteroids for minerals.

In order to realize its goals, Planetary Resources realized it would have to possess a small flotilla of space telescopes, so they designed the Arkyd: a low-cost, highly functional space telescope. But they didn’t leave it at that. Their mission is to make space exploration wildly accessible: why not democratize access to their machine?

Following this idea, Planetary Resources launched a Kickstarter campaign yesterday and, at the time of writing this, had accumulated $270,000 in pledges, out of their goal of 1 m

illion. Funders will be able to use the telescope for their own aims, pointing it at whatever it is they desire. The telescope also has a mounted screen and a camera for taking photos of itself, thus leaving backers the option of taking their picture with the Earth as a background. The required pledge for this is only $25; if you want to be able to photograph your chosen place in the sky, though, you’ll have to dish out $200. It may seem expensive but, heck, it’s a telescope in space.product-arkyd100-1

Pledgers can also decide to give their allotted time to some educational institution (universities or schools) so that students can have a first-hand experience of what it is to use a space telescope. The thought of being able to do this with my physics class blows my mind.

This campaign comes in the midst of a recent stream of really exciting announcements concerning space. A month ago, Mars One, a Dutch company, searched for volunteers to embark on a one-way trip to Mars in order to start the colonization of the red planet. So far, they got more than 70,000 applicants. It feels a little like the beginning of the Wild West, where only the most intrepid would risk their lives in order to start anew in a different, hostile world.

How can Planetary Resources afford to put a telescope in space with only one million dollars, when the Hubble space telescope cost one billion? According to the company’s engineers, NASA has been using decades-old technology for their flights, constrained by the need to use proven designs in order to ensure the safety of its astronauts. Planetary Resources and the myriad companies that seem to be sprouting like mushrooms do not possess such constraints and thus are free to experiment with cutting-edge technology, which is quickly bringing costs down.

It is a titanic enterprise and their success would give space exploration a much-needed boost. Who knows, maybe the 60s science fiction movies weren’t so far-fetched after all. The real space age may be just around the corner.

Enhanced by Zemanta

How to Teach Programming to Kids, Part 2

It’s been a while since I wrote my first article on how to teach programming to kids. Since then, I’ve been able to try a lot of new stuff, some of which has worked, some of which hasn’t. I will share my experiences with you so that you can make an informed choice with your own children, whether you’re a teacher or a parent.

During the first term, my students were introduced to programming through small steps: first, they programmed each other on paper, playing a robot; then they played light-bot, an online game which perfectly illustrates how programming works. Then I moved them to robomind, an evolution of the old logo turtle which, in its latest version, can even be used to program lego mindstorms. Finally, we used MIT Scratch for game programming, which proved a resounding success: most students managed to complete a game in three or four lessons.

My challenge, then, was to introduce them to real programming: not a watered-down version for kids, but the real thing. In order to do this, I first had to give them a reason to learn. The way I did this was by teaching them cryptography.

English single letter frequencies. Created fro...

English single letter frequencies. Created from data from en:letter frequencies. (Photo credit: Wikipedia)

Cryptography is of course very complicated, but some basic concepts can be taught to grade 5 and 6 children. Ciphers such as the Caesar cipher, which consists of moving each letter a certain amount through the alphabet, are easily grasped. The way I taught this was by suggesting increasingly difficult puzzles: I’d start the class by displaying a message on the board and, without further help, I’d ask them to decipher it. To my surprise, they did it without help a couple of times. When they didn’t get it right, I would give them clues one by one: for example, I’d give them a list of the most frequent letters in the English language; the most frequent digraphs, and so on. Students were in groups and it became a competition, without much encouragement from me. The competition provided the motivation and the codes were almost always eventually cracked.

I also used the NSA webpage for kids, which has a lot of puzzles and even allows you to learn Morse code. The children were really excited about it. At the end of each lesson, I’d let the children write their own secret messages using the different techniques we learned during the class; then I’d put teams against each other, trying to crack the rival’s message.

I introduced the topic of programming by telling that computers made it really easy to cipher and decipher any message with very little work. That instantly caught their interest and they were soon asking me when we would start. After a while, I began to teach them Python.

English: example of Python Language

English: example of Python Language (Photo credit: Wikipedia)

Using the Python IDLE editor it was easy to get them understand basic concepts such as variables or conditionals. First we saw them in the console, where the result of each command is displayed instantly; then we started writing a full-fledged program in the editor. Arrays took a bit longer and for loops were a bit too much for some, though most got it without problems. The way I taught this concepts was by making a really simple quiz game, which is made with a raw_input and acouple of if…then statements. I introduced for loops to simplify the code, putting all questions inside an array and then looping through them.

After this, they were ready to start cracking codes: all you need is an array with the letters of the alphabet and an algorithm that loops through a message and replaces each letter by a different one. Then you can make a function that deciphers by taking the same initial function and giving it the opposite input. Finally, you can make a function that returns every possible message from a set of letters, so that students can just look and find the right one. There are of course lots of variants.

Microsoft Small Basic

Microsoft Small Basic (Photo credit: Wikipedia)

Looking back on this, I think using Python was a mistake. Python is quite powerful and it does qualify as a full-

fledged programming language, but creating things like good-looking graphics was quite beyond the ability of my students, since it requires the sometimes not-so-intuitive Tkinter library. One of the parents recently told me about Small Basic and I am under the impression it is a much better choice for children: it allows you to build amazing applications with very little code and displaying complex graphics on the screen is extremely easy. Small Basic also comes with a tutorial on how to teach it, which goes from making a simple game to playing with fractal shapes.

Summarizing, if you are a parent or educator, I recommend you to take a look at Small Basic, which seems to be the perfect programming language for children to get started. You can use the same approach of using cryptography as bait (and also because it’s interesting for its own stake) or you can start directly with the Small Basic program, which also seems engaging and fun.

Either way, the fact is right now there are so many great tools for teaching programming to children that it’s hard to choose from them. Using any of those is sure to produce great results and lead your students towards a future where they will be fascinated with computers instead of afraid of them.

Enhanced by Zemanta

The Different Faces of Mathematics

Even though most of us use mathematics in our daily lives, few of us ever think about what mathematics is about. We add, subtract and divide routinely, without thinking twice about what we’re doing. We assume math is something that relates to numbers and the relationships between them. We assume wrong.

In this article I want to take a look at the different ways of looking at math and its meaning. I will adopt a pseudo-historical approach: by this I mean I will make the different views unfold like a story in something that may look like history but probably has absolutely nothing to do with actual history. I try to keep my articles reasonably short, so there will be flagrant omissions: for example, I purposely ignore the intuitionist view for two reasons: first, it didn’t fit well with my narrative; second, I am not well-versed in its philosophical underpinnings. So feel free to expand on the topic in the comments below.

Mathematics started indeed being about numbers and how to add them up. It was a practical matter, more than an intellectual one. “You owe me three pigs and a goat.” That was math. The notion got refined as operations got more complex, especially with the appearance of geometry. It quickly became apparent that, applying elementary reasoning techniques (logic) to some set of simple, o

bvious truths, one could get extremely complex and non-obvious results. This lead many to asks themselves: what are we really doing when we do math?

Plato

Plato. Didn’t look too cute in this photo.

Probably the Platonic answer is the most popular. According to Plato, we could access mathematical truths because we had experienced them before in the realm of ideas. That is: somewhere, there is such a thing as a perfect triangle, of which every other triangle is but a rough copy. Mathematical statements, then, are statements about these perfect objects which exist outside our current realm of experience.

The Platonic approach was ontologically loaded: it assumed the world to be a certain way. It turns out most mathematicians don’t like the world much. They like what goes on in their head much more. So an answer based on reality was not satisfying to many, who were looking for a much more abstract, mathematically-minded way of looking at things.

A view that fit much better with this desire for abstraction was that of mathematics as the expression of logic. In this sense, mathematics would be nothing but pure logic, applied to certain propositions. Those initial propositions, given without proof, were called axioms. If one sticks to this interpretation, mathematics is the only branch of knowledge that deals with absolute truths, even if the initial axioms are not true. This is so because all that mathematics state is: “if these series of axioms is true, then so are these other statements.”

An example will clarify things. Imagine my starting axioms are:

“I have four arms.”

“Every person with four arms has two heads.”

According to this, I can state with absolute certainty:

“If the two axioms above are true, then I have two heads.”

This statement does not depend on the truth of the ones above. It is true, regardless.

But mathematicians (and logicians) are way more strict than that. They’d say: “you can’t just state “use the laws of logic to infer new truths” and start producing theorems. You need to specify which laws of logic you’re using.” Hence came mathematical logic, which can be seen as the systematization and symbolization of thought. Mathematical logic was taken to its modern form by Russell (sorry, Tongue Sandwich) and Whitehead in their famous Principia Mathematica.

Venn diagram for the set theoretic intersectio...

Venn diagram for the set theoretic intersection of A and B. (Photo credit: Wikipedia)

In this new framework, mathematics had just become the manipulation of symbols according to certain rules. The laws of logic (inference rules) determined which new chains could be built from pre-existing ones, starting with a set of arrays of symbols that were just a given (the axioms.) Funnily enough, instead of taking mathematics closer to truth, this abstraction took it further: mathematics, in fact, wasn’t about truth at all. It was just about manipulating chains of abstract symbols, the meaning of which – if they had any – was to be determined later. In fact, determining the meaning (the possible applications) of a certain mathematical theory was not considered part of mathematics, but applied mathematics. Mathematics just dealt with the abstract relationships between symbols, whatever they meant.

The formalization of logic opened the door to alternative logics. If logic is just a set of rules for creating new chains of symbols, can’t we use a different set? The 20th century saw the appearance of many such alternative logics: intuitionist logic, fuzzy logic or quantum logic, to name a few.

This vision of mathematics as the systematic manipulation of symbols opened another door: the possibility of automatization. If all we are really doing is applying pre-determined laws of transformation to a series of symbols, it should be possible to make this process systematic. The arrival of computers (which, by the way, was closely related to the development of mathematical logic) provided such a way. In this sense, a mathematical theory could be seen as a computer program: given the following input (axioms), apply your inference rules (instructions) to find every possible theorem. Mathematics could then be seen as the set of all possible computer programs that can be executed by a machine with infinite memory and capacity (or infinite time to perform its operations.)

After that, things got more complicated. Notions of soundness and completeness were explored and a lot of Earth-shaking results were obtained. I will go into these more deeply in following articles.

For now, I will give your brains a break. I know mine needs one.

PS Question: being a non-native speaker, I’m confused. Mathematics: plural or singular? In Spanish it’s plural. In English I think I’ve seen both uses. Yeah, I know, asking this question about a whole blog on mathematics completely undermines my reliability. Can’t be helped.

Enhanced by Zemanta

My Verdict on Coursera

Well, to be honest, this is not my verdict on Coursera but on the course I took, which is called “Programming Languages” by Dan Grossman, from the University of Washington.

I am going to abandon all decorum and intellectual pride and go into fan mode: it was awesome. It was bloody amazing. It was one of the best courses I’ve taken in my whole life, counting the ones I’ve paid for and the ones I took at university.

So why was it so good?

Well, first, it was challenging. It wasn’t too hard or frustrating. It could always be done. The information was there. But you had to think. Everything was carefully planned so you always had enough to go on but couldn’t just copy and paste. You were provided some tools and then you had to use them. The course never made the mistake of spoon-feeding you the material or of assuming knowledge you couldn’t possibly have. When you needed extra stuff (such as looking at some language’s documentation) it told you so.

Second, it was interesting. Up until then, I knew nothing about closures, first-order functions or dynamic dispatch. Now I know about all of this stuff. Now I can read the documentation of any programming language without feeling intimidated by it. I picked up Python in a matter of days; the same with Javascript. They didn’t teach me those languages in the course, but they gave me the tools to quickly be able to tweak what I know in order to get started as fast as possible. Also, now I have a pretty good idea of how to implement a new programming language: how to parse, how to interpret. If someone had told me I’d be able to do that by the end of the course I’d have thought them mad. But I can and the transition was seamless. It’s like one day I just woke up and knew how to code properly.

English: Python logo Deutsch: Python Logo

English: Python logo Deutsch: Python Logo (Photo credit: Wikipedia)

Third, it was fun. It was like having a continuous puzzle to solve. I did the homework with a smile, even though it took me up to seven hours to complete each time. It was a great pastime. It was like doing Sudokus, but better.

Fourth, I really liked Dan Grossman. His explanations were always clear and full of examples. He would code up what he meant as he went, sometimes making mistakes and correcting them on the fly. It was enlightening. Despite his obvious skill, he never came across as smug or condescending. The fact that he devoted many hours of his time, for free, to provide this course says it all.

Should you take this course? If you have any interest in programming languages and some experience, I’d said definitely yes. I just can’t recommend it enough. It was brilliant. Amazing. You won’t regret it. I know I don’t.

The fact that there is such quality content, which a year ago was only available to students in top universities, freely available for anyone is proof of what the Internet can do to change the world.

Enhanced by Zemanta

You’re Not as Smart as You Thought

When I was little I thought I was a genius. By the age of seven I could write almost like an adult and knew things such as the definition of square root, Pythagoras’s theorem or what an electron was. In the meanwhile,  my classmates were learning to add and eating their buggers.

Then when I became a teenager I realized there were other people who were also pretty smart though, I assumed with a certain self-sufficiency, not as smart as me. After all, I had read the Odyssey when I was twelve. I knew quantum mechanics. I understood relativity. (At least I thought I did). Gosh I was smart. I had to study chemistry, since memorization was involved. But I had no need to review physics or mathematics. It was so logical, after all. I could just go to an exam and figure it all out right there and then.

Man, was I smart. And I let everyone know.

think

think (Photo credit: the|G|™)

Then I started my physics degree. I guess it was there that the suspicion started to arise: maybe I was not as smart as I thought. For example, I would go to a class and not understand everything immediately. I would try to solve a problem and get stuck. Those were new feelings to me: I had never experienced them before. But, instead of learning a humbling lesson and getting to work, I decided to work even less. Why? Well, if you fail because you don’t try it doesn’t mean you’re not smart or special, right? It just means you are above all that stuff. You’re too good to get your hands dirty. The dumb ones are the ones who try.

So I spent two or three years with extremely mediocre results and then, one semester, I failed everything. I guess that was a wake-up call.

So I decided enough was enough and started to work in a consistent way. And my grades improved a lot. And I realized I had been lazy and immature. And I also realized that I was still pretty smart. I mean, the moment I get to work, I start getting As. Must mean something, right? Man I’m smart. Again.

So then I started a PhD in physics and that was hard. In my discharge, I must say I really lacked the motivation. One of these days I will write a post titled “Why the Standard Model is the Ugliest Theory Ever Made.” I certainly wasn’t smart enough to understand it with little effort. No: mastering the standard model required me to work on it every waking hour. But I hated it, I hated the theory and I was convinced it couldn’t be right. And I didn’t want to spend the next 10 years of my life spending every minute learning it. So I quit after a year.

A diagram summarizing the tree-level interacti...

A diagram summarizing the tree-level interactions between elementary particles described in the Standard Model.(Photo credit: Wikipedia)

By that time I had already figured out I wasn’t that smart. I mean, I was pretty smart, maybe well above average. But that doesn’t mean much when you live in a highly competitive and globalized world. I wasn’t smart enough to become a Nobel prize winner, for example. I would have made a good average physicist. I would have published a number of articles on some obscure area of particle physics. I would’ve given popularization talks. But I would never have made a worthwhile contribution to our understanding of the universe.

I guess the realization came in batches. First, by realizing I could never have been Newton or Einstein. Being aware of the fact that, given the same information they had when they made their discoveries, I would not have come up with the theory of universal gravitation or of special (or general) relativity. I realized there was a qualitative jump between solving a problem for which there is a system and solving one where you have to create your own system.

Similar realizations came to me in other areas. I have been playing and making music since I was six and I always thought I was pretty good at it. I would find some jazz musicians way above my skill level, but I always thought that was a matter of practice, not talent. Then I discovered Jeff Buckley and I realized I could never write a “Grace.” No matter how hard I tried, no matter how many hours I spend in front of the piano, I will never be able to create such a work of art. I will always be pretty good. I will never be Jeff Buckley.

So Real: Songs from Jeff Buckley

So Real: Songs from Jeff Buckley (Photo credit: Wikipedia)

Something akin happened with writing. I have been writing since I was six and writing well since I was seven (of course, in my native language which is Spanish). I always thought one day I would write “the most amazing book ever made.” Yes, so much for humble. What did you expect? I was a kid. Even as a teenager, my language teacher would come to me and tell me I had talent and I should pursue it. My annoyingly condescending answer would be something like: “that’s what they tell me about everything I do.” Man, I was special.

And then I read Garcia Marquez. And I realized I will never, ever be able to write “A Hundred Years of Solitude.” No matter how hard I try. No matter how much I read. I am just not smart enough.

So here I am, thirty years old and a recipient of the dubious gift of intelligence: enough intelligence to know you don’t have enough intelligence. If you think about it, I’m at a pretty annoying spot. Some people who are positively less intelligent than me will never realize their limits. They will go around living their lives without knowing how far they are from those who actually do the stuff that counts. Those who create the world the next generation will live in. Some who are more intelligent than I will have the spark to create something remarkable, something that will outlast them. I can think of no more meaningful way to spend your life than creating a work of art (or science) that is somehow bigger than you. That transcends you.

And here I am: smart enough to know that I am not smart enough to do. Condemned to know the limits of my talent. Condemned to understand them. Condemned to spend the whole afternoon working on a bloody assignment from my Coursera programming course because I’m just not smart enough to do it in five minutes (the course, by the way, is amazing. It’s the one by Dan Grossman. Highly recommendable). And yes, that particular event is what triggered this rant.

Anyway, I guess it’s good to know your limits. People say it’s a sign of wisdom.

It just sucks to have them.

Enhanced by Zemanta

What Will Schools Look Like in 20 Years?

Today I am writing about a topic I know well: education. Reading futurist and teaching blogs I have found a lot of interesting opinions and predictions, some of which make sense, some of which don’t. In particular, I have found that futurists tend to underestimate the importance of the teacher, whereas educators tend to overestimate it.

Many argue that teachers will soon be a thing of the past. The old picture of a classroom full of pupils who listen quietly to a teacher is going to be replaced by a technology-driven scenario where each student has a tablet and learns through software. More on how this software will work later.

This makes sense, in a way: when teachers explain a concept, they are always too slow for some students and too fast for others. Only a reduced number of pupils will be adapted to their teaching speed. This creates an environment where most students are either bored or confused. It would be much better if that teacher was replaced by a series of tablets that taught at each child’s speed.

Phila. Teachers on Capitol Steps, Wash., D.C.,...

Phila. Teachers on Capitol Steps, Wash., D.C., 5/13/11 (LOC) (Photo credit: The Library of Congress)

The only problem with this picture is it’s false. A teacher delivering a lecture is not the way things work anymore. At least, not in some schools. In the schools that follow the Montessori method, students work on projects of their own choosing – within limits – and are taught lessons, which are 5-10 minutes long, depending on their speed. Children have a personalized progression which solely depends on how fast they do their work and how interested they are in a certain topic. And this is not done only in Montessori schools: student-centered education is the new educational paradigm and any school worth its salt is implementing it.

Of course, a lot of adults are not familiar with this because it was a while since they went to school. But things have changed a lot since the 80s.

So our teacher-centered education has become student-centered: ideally, this means a classroom where children – or teenagers – are doing their work or research and where the teacher is there to facilitate the learning and offer help whenever it’s needed. In this context, the role for teachers in the future of education is clear: they will keep being the coordinators of the classroom, making sure that students are doing their work – and not, for example, breaking the windows or setting the place on fire– and offering help whenever it’s needed. Teachers will also be there to resolve disputes and teach values, something which a piece of software would be unable to do.

Student teacher in China teaching children Eng...

Student teacher in China teaching children English. (Photo credit: Wikipedia)

This means that most of what is today considered “education” will be really done by software. The few 5-10 minute lessons that teachers deliver today will probably be given by a tablet, which is great since it will free up the teacher’s time for other tasks. If students need clarification, they can replay the videos or redo the exercises. If they still need help, they can go to the teacher. This way, educators won’t have to be teaching the same lesson to 3-5 students at the same time and won’t have to give up supervision while they’re teaching.

Being taught by software instead of by a human is a great idea, especially at early stages. It is because most humans do not have the necessary knowledge to teach certain concepts. Astronomy gets often mistaught in primary education because the teacher does not have the relevant background. A lot of the science experiments are not performed properly because teachers don’t know about random error, for example. The software, on the other hand, can be supervised by experts in both the relevant subject area and education, so it will be both engaging and accurate. The child’s learning experience will be certainly enhanced. Of course, when it’s time to start a project or do an experiment, teachers will be there to help. And that’s exactly what they should be doing.

English: Public primary school (EPP) outside D...

English: Public primary school (EPP) outside Diego-Suarez (Antsiranana), Madagascar (Photo credit: Wikipedia)

The role of the teacher will be considerably more complex than today. Firstly, teachers will have to know the software they’re using upside down. The software will not only teach, but it will monitor each student. Doing so, it will provide the educators with huge amounts of data on each pupil, which will be added to what the teachers can surmise by observing. It will be the teacher’s task to analyze this data and decide the proper course of action for each individual student. Teachers, then, will have to be a lot more subtle in their ways of handling interaction with their pupils and a lot more thorough in their analysis.

So how will classrooms look 20 years from now? There will certainly still be teachers: for monitoring, discipline, technical support –“my tablet doesn’t work!” – and, especially, for making accurate analyses of the children, with their weakness and strength, and suggesting possible courses of action. The teacher-student role will be reversed: before, students had to learn from their teachers. In the future, the job of teachers will be to know their students, using all the data at their disposal. Once teachers don’t have to teach anymore, only the most essential part of their job will remain: to inspire.

Enhanced by Zemanta

The Beauty of Recursion

Recently I started taking a functional language programming course at Coursera and I decided to share a little bit of what I’ve learned, at least the part that should be interesting to any reader, even without a background in programming.

If you’ve never programmed, here’s a really, really brief explanation of what it is: programming is telling the computer what to do, one thing at a time. In order to do so you need to be extremely precise, since there is only a limited set of expressions the computer understands. You also need to use this vocabulary in a way that is understandable to the computer, so the syntax has to be extremely rigid. For example, a computer may understand something like:

Paint black pixel (43,4).

But it wouldn’t understand something like:

Paint all the pixels around the corner of the screen a dark color.

Recursion! Holy crap!

Recursion! Holy crap! (Photo credit: ktheory)

The communication with the computer happens through something called a programming language. The programming language is a set of words and expressions and a way to “interpret” them, that is, to transform sets of sentences (programs) typed by the user into something a computer can understand.

Here I will focus on programming mathematical functions, since getting into other topics would take too much time and there is plenty of information elsewhere.

Imagine we want to make the computer add up to numbers for us. In ML, the language I’m learning at Coursera, that’s relatively straightforward. You type:

2 + 2

And the computer returns:

4

That’s it. However, you may want to do more complicated stuff. For example, you may want to take the square of a number. In this case, we can create something called a “function.” A function takes an input (in this case, a number) and returns some value. For example, our function “square” will take a number as an input and return its square. In ML we write it like this:

fun square(x) = x * x

Where fun stands for “function” and * represents multiplication. If we now type:

Square(4)

ML will return:

16

Simple? Things can get more interesting. Imagine, now I want to write the factorial function. If you’re not familiar with it, the factorial of, for example, 5, is defined as:

5! = 5 * 4 * 3 * 2 * 1

Where ! means “factorial.” As you can see, the factorial of a number is that number multiplied by all the ones that come before. How to define this in ML? There is a very elegant way that uses a concept called “recursion.” The idea is that the function can call itself. But let me show it to you. We can write the factorial function as:

Fun factorial(n) = if n > 0 then n * factorial(n-1) else 1

That is: the function calls itself if n is greater than 0, else it returns the value 1.

Let’s see what it does. Imagine we want the factorial of 5. In this case, according to the expression above,

Factorial(5) = 5 * factorial(4)  (since 5 is greater than 0)

And the factorial of 4 will be:

Factorial(4) = 4 * factorial(3) (since, again, 4 is greater than 0)

You get the idea, right? Continuing this, n will keep decreasing until we get zero, which will return the value one. Let’s look at the last step:

Factorial(1) = 1 * factorial(0)

Factorial(0) = 1, since 0 is not greater than 0.

This is called recursion: the fact that a function can call itself over and over again until it reaches a certain threshold, which allows the operation to end.

Hence the joke: in order to understand recursion, you first need to understand recursion.

Recursion is an extremely powerful tool which can be used in a myriad situations, not only programming. An example of a recursive argument is the “proof by induction” of mathematics, where you proof that, if some statement is true of some number n, then it has to be true of the number n + 1. All that remains is proving that the statement is true for one number and it’s automatically proven for all.

If you have trouble understanding this article maybe you should read this other one first.

Enhanced by Zemanta

Research Shows Bullying Pays Off

Bullies are popular and popular kids are bullies. This is the result of recent research on bullying during middle school, though I am confident the findings will also apply to high school students: the more aggressive they were – girls or boys – the more they were liked by their peers. The form of aggression could be physical, but spreading false rumors, for example, worked just as well.

This will not sound surprising to many. I have very clear recollections of being 13 and refusing to add on to the insults and physical aggression a girl in my school was getting for being chubby. One of my friends back then told me: “acting like this you’re not going to score any points.”

Being young and naive, I was quite shocked there was a point system. I was even more shocked that refusing to humiliate someone or, even worse, standing up for them, could be seen as a reason for social demotion. In my youth and naiveté, I continued to act the same way for a good 3 more years, thus explaining a lot of what happened in high school.

English: Polish teenagers. Polski: Polscy nast...

English: Polish teenagers. Polski: Polscy nastolatkowie. (Photo credit: Wikipedia)

It took me a while to figure out aggression is the only way to keep others from trying to hurt you. If you manage to appear scary enough, be it by physically abusing people or by making  them afraid of what you have to say, bullies will stay out of your way. This tactic also seems to work when looking for a partner, since girls are usually attracted to the popular kid and the popular kid is the one who bullies.

Bullying pays off.

But childhood and adolescence are not just some quaint stage of our lives that can be ignored. Teenagers are adult projects and share with those the urges that will drive their lives in the future. The bullying may stop superficially, but it certainly doesn’t disappear. Adults can also be bullies in much subtler ways than children. They’ve just learned to disguise their sadism and their plays for power in a way that’s considered socially acceptable.

I am wondering whether some research will be done along these lines. What is an adult bully and how to identify them? Do popular teenagers become popular adults? Do bullies keep doing their thing well into their forties as heartless HR managers or dog-faced clerks?

I would certainly love to find out.

Enhanced by Zemanta

How to Teach Programming to Kids

Most adults are intimidated by programming. A lot of them have never actually seen the code of a computer program and they probably imagine it to be some kind of esoteric mumbo-jumbo. Even those who actually see a piece of code seem quite baffled by it. When I ask other adults working at my school if they would like me to teach them some programming, they look at me as if I was out of my mind. They all assume it is difficult and way beyond their level of expertise.

Robot Attack!

Robot Attack! (Photo credit: Dan Coulter)

Kids, however, are a different story. I’m talking about 7-year-olds. Kids who can barely write. Kids who like to make drawings of their dogs and then add wings on them. These kids, unlike the adults, are not only not intimidated, but dive into programming like kamikazes, fearless, determined, unaware of all the prejudices most adults have. I got my kids to program with very little effort in the course of 3 45-minute sessions. This is how I did it. I started by playing a game. I spread some beads on the ground and told them one of them was a robot. The robot wasn’t really smart so it could only understand very simple instructions, like “turn left” or “forward 3 steps.” The goal was to get as many beads as possible, but they had to write what the robot had to do in advance. Kids love games and playing the robot, so that went well. It introduced them to two important concepts: firstly, to the fact that computers only do exactly what you tell them and nothing else. That computers, unlike children, can’t more or less understand what you mean. Secondly, to sequential batches of instructions and to the limited lexicon of computer-human interactions.

English: Screenshot of the RoboMind educationa...

English: Screenshot of the RoboMind educational programming environment (Photo credit: Wikipedia)

The next step was playing a computer game. I used light-bot, in which you control a little robot using symbols. It is exactly like programming: the only difference is you use pictures instead of words. It even allows you to use functions and recursion. There are two versions of light-bot: the first one is great as an introduction. In the second one recursion plays a bigger role and there’s the option of creating your own levels. Needless to say, light-bot was even a bigger success than the previous game, since one thing kids love more than games is computer games. It was so successful that many of the kids actually started to play it at home, therefore learning more program than I could ever have taught them, on their own. Some of them managed to finish the game and started creating levels for their classmates.

English: RoboMind logo

English: RoboMind logo (Photo credit: Wikipedia)

The last step was using robomind. It is a program which is very similar to the mythical win logo from the 90s, where students controlled a little turtle by typing commands in a console. In robomind you control some kind of robotic vehicle which can observe its surroundings, move around and paint. The language is quite powerful and it includes the possibility of using loops, as well as if/then statements, which makes it straightforward to program your robot so it finds its way out of a maze, for example. Students also loved robomind, even though it involved typing, because they had already become familiar with the concepts needed for programming with the previous experiences. My next step will be to introduce MIT Scratch, a programming language which allows students to create videogames and animations. My pupils are, of course, very excited about it. I’ll let you know how it goes.

Enhanced by Zemanta