We held eight weekly code club sessions at the English School. Each session lasted one and a half hours and was scheduled after students’ regular school day. There were usually two and sometimes more Futurice mentors present.
The first sessions introduced basic programming constructs such as variables, functions, loops and other control flows. In the later sessions, the students got to apply these building blocks in solving various tasks.
In the beginning of each session we briefly explained the concepts we wanted them to learn, but otherwise we let the students start coding straight away. The first exercise of each session was a recap from the previous week’s topic. The students were free to advance at their own pace and they were not required to complete every exercise. The final exercises in each session were usually more open-ended so that those who managed to complete all other exercises in the allocated time could explore them in more depth. Throughout the sessions, the main role of the mentors was to help the students when they got stuck.
We also held other types of sessions that went beyond typing code on a computer. One time the students got to pilot a small toy robot and another time they got to fly a drone. Students were really excited when they got to program a robot to drive around a track. Programming the drone to fly was actually less interesting, maybe because it had to be done on a different language than the rest of the exercises and the limited accuracy of the drone made it difficult to control it towards the target.
![A small spherical robot rolling on a track taped on the floor.](https://images.contentful.com/pqts2v0qq7kz/39Gru7NYmskcygKcsEcKOO/4e3e0caa58707e37739c953bf823c0d8/img_20151216_145345_s1800x0_q80_noupscale.jpg) Will the robot stay inside the track? Photo credit: Yrjö Kari-Koskinen
We prepared exercises for each week’s session in the week before. We brainstormed ideas for the exercises collaboratively and decided who will implement which exercise. A day or two before the code club session, when the exercises were ready, we tried them out and gave feedback for each other’s exercises and made final amendments.
Both planning the exercises and seeing the kids carry them out was really fun. We often started preparing an exercise with only a vague theme in mind. The exercise emerged from lots of experimentation and playing. But this is exactly what we wanted to tell the students: programming is a creative endeavor. Seeing the students get the hang of programming and apply their newly learned skills reminded me of how I felt when I was a kid and learnt programming: that unlimited possibilities had opened up.
![A drone on the floor with people on the background lookin crounched over a laptop.](https://images.contentful.com/pqts2v0qq7kz/VYPyPNZas6QwIYESoS0Im/bf5395b32333c2d230357612cec2aefd/img_4433_s1800x0_q80_noupscale.jpg) The drone is ready to take off (as soon as the remaining bugs have been fixed). Photo credit: Sebi Tauciuc
We are sharing the teaching material
Teachers, IT professionals and anyone else is welcome to use the material we have created to teach children programming. You can try out the exercises right now at the Chilicorn code club. Adopting the material is easy: open the page and start coding.
The code club web page contains a code editor and a window for displaying graphics. More exercises can be loaded from a menu. Exercises consist of some instructions and partial Python code which the student has to complete. The student is also free to start from a clean plate and build something on her own.
![A screenshot showing a code editor on the left and a drawing produced by the program on the right.](https://images.contentful.com/pqts2v0qq7kz/4PjLvB0h7yc8AWgCuiCWSC/637ba4bd491dd58bc17bc7110462d091/codeclub2_s1800x0_q80_noupscale.png) The Chilicorn code club web page.
In most exercises the goal is to draw something, because seeing the results visually gives instant feedback. Drawing is done with a turtle library similar to the Turtle Roy environment that is commonly used in code schools for smaller children.
Programming will be part of the elementary school curriculum in Finland starting Fall 2016. We at Futurice wanted to help teachers develop course material for grades 7-9. There is plenty of teaching material (mainly on graphical programming languages) available for younger children (for example at koodikoulu.fi). However, far less material is available that is suitable for upper comprehensive school level and for learning text-based programming.
The curriculum states that in grades 7-9 the students will be expected to learn a text-based programming language. Our exercises are using the Python language because it is easy to learn, is available on many different environments and extends readily to large programs. Many of the exercises involve mathematical concepts because programming will be part of the math education in Finland.
We encourage anyone who is interested to mentor code club sessions at their local school. While no previous programming experience is assumed from students, a prospective mentor should have at least a basic level of expertise with Python. Necessary level of skills can be obtained by doing the exercises yourself, perhaps together with a friend who already knows programming.
The exercises could surely be improved further. They could be translated into Finnish and integrated more tightly with the elementary school curriculum. If you want to help improve the material, submit a pull request on project’s GitHub page.
We are grateful to the English School for letting us hold the code clubs and to the Spice Program, the social impact program of Futurice, for sponsoring employees’ spare time contributions to digital education.
- Antti AjankiLead Data Scientist