Teach the kids to code!

Tonight marks the first meeting of the Lær kidsa koding! (teach kids to code!) initiative, which I’m so thrilled to be a part of. One of the most important recommendations in the report to the government I co-wrote about hindrances to digital innovtation in Norway was introducing programming in schools. In Norway, as in most other countries, children and teenagers have to have support from home and be very self-motivated to teach themselves to program. There is absolutely no support for this at most schools until the second last year of high school, and even then  I have met many children who want to learn to program (often so they can make games or animations) who have no support or help and end up giving up. Even teenagers studying media and communication are told they can’t take the programming class because it’s reserved for other students. No wonder we struggle to recruit IT professionals – but at a deeper level, I think this is serious for the whole country: we need everyone to have basic knowledge of how computers and networks work. We don’t all need to be programmers, but this is such a fundamental part of today’s society that we are going to make the wrong decisions as a society, as individuals, as innovators (as police offers, doctors, teachers, parents, lawyers etc etc etc) if we don’t all have more understanding than we do today.

I wrote an op-ed in Aftenposten last week about this that got lots of Facebook likes and Tweets and comments: Hvorfor lærer vi ikke barna våre å kode? Read it if you haven’t already! (The English version Google Translate suggests isn’t too bad, actually).

Torbjørn Skauli, the person who has developed the Norwegian version of the kids’ programming language Scratch, is one of the people working on Lær kidsa koding! and he recently posted a really promising outline of what a curriculum in programming could look like, in four levels. It’s definitely worth spreading, so I took the liberty of copy and pasting it, and translating it to English (below the fold). What do you think? Would you want your kids to have the opportunity to try this curriculum?

Nivå 1: Avmystifisering av IT (for alle)

Hva: Lære at et program er en oppskrift laget av mennesker, som datamaskinen følger, og at veldig mange av tingene vi bruker inneholder en datamaskin. Lære at programmering er en nyttig ferdighet i arbeidslivet, og at man også kan gjøre det på fritiden med sin egen datamaskin. Ha det gøy med å lage enkle programmer.
Hvem: For alle, inklusiv foreldre! Målgruppen er særlig barn i barneskolealder, men “Nivå 1” er aktuelt for alle som ikke har prøvd programmering før.
Hvor: Overalt hvor vi kan komme til! På SFO, klubber, barnebursdag, utstillinger og arrangementer. I fremtiden burde dette være del av læreplanen for barnehage og barneskole.
Hvordan: Scratch, Legorobot og andre enkle, lett tilgjengelige verktøy.

Nivå 2: IT-allmenndannelse (i obligatoriske læreplaner for ungdomsskole og VGS)

Hva: Lære om konseptet algoritme og om hvordan informasjon kan representeres som digitale data. Lære noen forskjellige algoritmer for behandling av informasjon. Overordnet forståelse av lagring og overføring av data. Digitale medier: lyd, bilde, web. Enkel robotikk.
Hvem: Elever i ungdomsskole og videregående skole.
Hvor: På kort sikt burde det være mulig å få dette inn som valgfag i ungdomsskolen, men dette bør inn i skolens læreplaner, enten som eget fag eller som utvidelse av matematikk, naturfag og kunst&håndverk.
Hvordan: Jeg er usikker på hva som vil være de beste verktøyene her, men neste versjon av Scratch er en god kandidat. Legorobot og enkel tekstbasert programmering er også aktuelle, men dette nivået bør unngå å ha fokus på det programmeringstekniske.

Nivå 3: IT-håndverk (valgfrie fag i ungdomsskole og VGS)

Hva: Lære å bruke et fullverdig programmeringsspråk. Lære mer om representasjon av informasjon, datamaskinarkitektur og nettverk. Skrive programmer som oppleves som fullverdige og relevante, f.eks. for web eller nettbrett. Dette nivået kan inneholde andre ferdigheter, f.eks. simulering, animasjon, digital fabrikasjon (3D-printing etc.) og robotikk
Hvem: Elever i ungdomsskole og videregående skole.
Hvor: Valgfag i ungdomsskolen, linjefag i videregående skole.
Hvordan: Python, Java, C++ eller andre fullverdige språk. Fullverdige verktøy for andre ferdigheter som læres på dette nivået, f.eks. 3DS animasjon og 3D-printing.

Nivå 4: FritidsaktivITeter (på ungdommenes fritid)

Hva: Lære å utvikle programmer og systemer på et mer avansert nivå. Skrive større programmer. Lage roboter, apparater og installasjoner. Avansert animasjon. Hjelpe til med instruksjon av yngre barn, og samtidig være rollemodell for dem.
Hvem: Elever i videregående skole, og kanskje på ungdomsskolen. Bare en liten andel av elevene vil være aktuelle, men det er ønskelig at alle blir gjort kjent med mulighetene slik at de som har en latent interesse eller talent får muligheten til å prøve seg.
Hvor: På fritiden, helst i nettverk av folk med sammenfallende interesser, lokalt eller på nett.
Hvordan: Få hjelp av voksne mentorer som kan ha LKK som sitt nettverk. LKK og/eller skolen hjelper med å koble interesserte elever sammen med lokale likesinnede og mentorer.

And here is an English translation:

Level 1: demystifying IT (for everyone)

What: Learn that a program is a recipe created by humans, which the computer follows, and that many of the things we use have computers inside them. Learn that programming is a useful skill in the workplace, and that one can also program in your spare time with your own computer. Have fun creating simple applications.
Who: For everyone, including parents! The target group is especially children in school age children, but “Level 1” is appropriate for anyone who has not tried programming before.
Where: Wherever we can get to! At after school care, clubs, children’s birthday parties, exhibitions and events. In the future, this should be part of the curriculum for kindergarten and elementary school.
How: Scratch, Lego Robot and other simple, easily available tools.

Level 2: IT general education (in the compulsory curriculum for middle school and High School)

What: Learn about the concept of algorithms and how information can be represented as digital data. Learn some different algorithms for processing information. An overview of the storage and transmission of data. Digital media: audio, visual, web. Simple robotics.
Who: Students in middle school and high school.
Where: In the short term it should be possible to get this in as an elective in high school, but this material should be covered in the school curriculum, either as a separate subject or as an extension of mathematics, science, and arts & crafts.
How: I’m not sure what would be the best tools here, but the next version of Scratch is a good candidate. Lego Robot and simple text-based programming is also relevant, but this level should avoid focusing on the technical programming.

Level 3: IT Crafts (optional subject in middle school and high school)

What: Learn to use a fully featured programming language. Learn more about the representation of information, computer architecture and networking. Write programs that are perceived as valuable and relevant, for example for web or tablet. This level can contain other skills, eg. simulation, animation, digital manufacturing (3D printing etc.) and robotics
Who: Students in middle school and high school.
Where: Electives in junior high, main subjects in high school.
How to: Python, Java, C + + or other valuable language. Full Worthy tools for other skills taught at this level, eg. 3DS animation and 3D printing.

Level 4: Leisure Activities (in teenagers’ spare time)

What: Learn how to develop applications and systems at a more advanced level. Write larger programs. Create robots, equipment and systems. Advanced animation. Assist with the instruction of younger children, and be a role model for them.
Who: Students in high school and maybe middle school. Only a small percentage of students will want to do this, but it is important that everyone is made aware of the possibility so those who have a latent interest or talent are given the chance to try.
Where: At the time, preferably in the network of people with similar interests, locally or online.
How to: Get help from adult mentors who may have LKK (Lær kidsa koding!) as their network. LKK and / or school helps connect interested students with local peers and mentors.

Further reading:

02. April 2013 by Jill
Categories: Teach kids to program! | 1 comment

One Comment

  1. Thanks for spreading the word Jill. Just note that the “what” and “how” entries are rather incomplete and unfinished. Of course I am to some extent stating the obvious. A main thing I want to contribute here is the inclusion of those youths that go beyond school in their interest for computers. They may not be many, but we really want them and should support them!

Leave a Reply

Required fields are marked *