sexta-feira, dezembro 16, 2016

Enabling Creation, Not Just Consumption: "Coding for Kids"

Follow my blog with Bloglovin

(some of my Apps at the Google Play Store)

20 GOTO 10'

I taught myself BASIC on a ZX Spectrum when I was a teenager. 

I'd sell computer science as basically being much more fun than it sounds. At it's best, programming is a very creative activity, a drive for a balance of simplicity, power and elegance. It can be incredibly rewarding and luckily there's also no shortage of work if you're good at it, and high pay.

It has many of the plus sides of any physical engineering discipline (including the pleasure of making and evolving something after an idea), and few of the limitations:

  • very short feedback loops, you're almost instantly able to make something and see the effect - incredibly motivating to newbies;
  • the ability to return to any point during construction and 'branch' with alternate ideas or start over;
  • all the resources and community you need to start from scratch and become expert. No college degree is required, just a laptop, internet connection, motivation and talent.

I think we need to sell computer science in terms that will appeal to kids. But there's far more to IT than coding. Nearly every child will use IT in their future career and coding will suit very few. There's networks, hardware, storage, capacity and more. It's too simplistic a view in my view (I'm an IT worker since 1991).

(My Apps at the Google Play Store)

Once upon a time, people needed to learn about levers, gears and linkages to may their way in the industrial world. Later, it was triodes and pentodes, then transistors and integrated circuits. Nowadays it's C and other languages. It's a natural progression. Obviously, there will be some who just want to do hairdressing and "beauty therapy", but for others with ambition and a bit of an engineering bent, programming is where it's at. Single-board microcomputers such as Raspberry Pi and Arduino are an easy, accessible way to get started with this, and I can imagine that it will be very exciting and satisfying for a surprisingly wide range of students. There is very little exciting and engaging about making a Powerpoint presentation or using Microsoft Word - those are "skills" that you pick up anyway. But the real world runs on code and people still have to write that. If you don't understand it, even at a basic level, you are going to find yourself in a world you don't understand nor thrive in. Who wants that? Taught in the right way, there's nothing boring about it. I've shown people the very basics of Arduino - the "flash an LED" program - and without exception when people get that working using their own efforts it's always something that seems to get them excited. The usual response is that they never thought electronics/programming was that simple, but was inherently inscrutable and always beyond them. Once you show them that it isn't, the ideas and inspiration naturally follow. Even if that's only ever as far as it goes, they've learned something about how things work in the real world, and that is of great value.

I'm sure this will take off. It's even making me think that becoming a teacher for this sort of thing could be worth considering. If the teachers are not inspired, how can the kids be? I have yet to meet a teacher who is inspired by what can be done with Powerpoint. The computer is probably the most important and powerful piece of equipment most people have in their house, and everyone should have the skill to be able to tell it what to do for a change.
When it comes to children, some things (like cryptography or computational biology) are rather advanced subjects to start off with. Other things, such as recursion, or even search, is not really worthy of it's own mention. You leave of a lot of, for children, more interesting subjects such as animation, drawing and user interaction. Also I miss basic concepts, such as how does a computer actually work, what's it made of? If I had to make a list of stuff for kids to learn, it'd be something like this:

  • Basic computer concepts
  • Algorithms (would also include search and simple cryptography, also use of Open Source resources)
  • User interaction (not necessarily with GUIs)
  • Animation and Drawing
  • Web Design
  • Social Design and Crowd Sourcing
  • Basic System Administration
  • Cloud Computing

A lot of these things could be taught without computers in the form of games for younger kids. Information technology is not just about computers. Kids (and others) really need to understand more of the fundamentals and not just how to use excel. Otherwise, in a few years, a lot of key (but old) technologies will be lost (such as C or assembler). If you want to be able to do anything seriously useful with computers, you've got to have the maths. It's the maths that determines your ability to model a real-world scenario with data. That means matrices, differential equations, analysis, and all that other beastly stuff. Teaching someone "a programming language" will not address this deficiency. What objects will they be programming with? This stuff is tough, for students and teachers, much tougher than teaching Logo - but it's a gold mine.

I am pro programming in the curriculum. Why? Because I am pro problem solving in the curriculum and there is far too little of that. Programming (or coding) is a way of expressing thoughts towards solving a problem through to communicating the solution to others. It is like writing, music or art. It is a tool for creativity, for modelling and communication. It is about enabling creation not just consumption, it is about cooking not just eating. I’m not sure however, how we give children opportunities to, ‘…understand computational thinking…’. I don’t want them to just understand it, I want them to bloody do it!

NB: You can find my programming posts by using the following list (by year):

2016 (4):

Enabling Creation, Not Just Consumption: "Coding for Kids"
Android App: Brick-a-Brack
Android App: Whack the Minion!

NB: Counting in the post you're reading now, amounts to 4 posts this year.

2015 (9 posts):

Android App: "Sons de Bichos"
Android App: Children's Day: "Urso Taralhouco", A Flappy Bird Look-alike
Android App: (2b) U ~(2b): "Hamlet's To be ot Not To Be Soliloquy"
Android App: "Encryption e Decryption"
Android App: "Zombie Alarm"

2013 (5 posts):

Advanced Python Class: "PacMan" (extra-project)
Advanced Python Class: "Asteroids' Game (Final Project)"
Advanced Python Class: "Blackjack"
Advanced Python Class: "Memory Game"
Advanced Python Class: "Pong Game" (no AI Engine)

2 comentários:

Book Stooge disse...

It is always good to see someone excited about something. Best of luck :-)

Manuel Antão disse...

The Google pricks didn't let use the "minion" brand name in my game. I hope you were able to install it and had some fun with. "29" is my score...See if you can beat that!!!