14th of January, 2016
After a few years teaching a beginners course, I realized that using creativity is a great motivator to learn programming. Even in a technical field like software engineering, even with logic-driven students, the desire to create and express oneself is stimulating and inspiring.
Many mornings I got up early to turn on the lights for the first semesters. Together we embarked on the journey to learn programming. In the past semesters, we used no additional tools. We wrote plain C, used the compiler directly and ran everything in the “black matrix” (terminal). We even used the text editor vim. Students learned everything from the ground up – with the most essential and basic tools. So, I saw students struggle:
They struggled with vim (did you know when you type
hello in vim, you get nothing but an empty new line). They struggled with the compiler (overusing the tab key will overwrite all your source code, e.g.
gcc prog.c -o prog.c). And obviously, they struggled with C. I gave it my very best to keep them engaged and to their credit, they stuck with it – even if yet another tiny mistake rose from the screen and hit them in the face. Eventually, we got over the hump and got excited about encrypting numbers, generating Fibonacci sequences and solved puzzles from Project Euler. But something was missing…
The birth of sketchbook
In preparation of the next semester I asked myself: How can I make programming more sexy? So, I curled up on the couch and browsed papers, course materials and looked at dedicated initiatives. I googled till dawn. I played with graphical approaches like Processing and Scratch again and got excited about them. I remembered that after a few students had asked me about graphics previously, I had played with a couple of C libraries. Yet, I could not in good conscience recommend any of them because they were too complicated.
So, there I was. I wanted something graphical and I had to teach the language C. But there were no existing (teaching) tools for that. Eventually, I realized that I had to move away from the bottom-up approach. I had to involve magic: Files had to appear out of thin air (using git). After typing out a spell, a lot of files had to be mixed together simultaneously (using make) and then without ever having heard anything about double buffering or event loops, a shiny new window had to appear in the black wall of the terminal.
That was a lot of change from one semester to another. It seemed like I had to change everything I had prepared previously. But I tried it anyway and a couple of hours of hunching over my laptop, I had the first version of sketchbook (Thanks Marco for the idea to simply call it “sketchbook”).
The first lecture
In October, new students found their way into my lecture: IT is essential today…, you will be rich and beautiful if you can program…, and look those guys say it too…
Then the moment came. The first exercise.
Last year, we printed
hello world together and the students then changed it to
This year, we drew the letter C using rectangles together and then I sent them off to draw a Mickey Mouse face on their own.
The next two days I got Mickey Mouse screenshots via email. I was blown away. I was expecting a few blocky gray faces, but I got beautiful colorful faces. The students went nuts with sketchbook. They went home and sat for hours to perfect their Mickey Mouse. Get this: Engineers-to-be drew comic figures in their spare time! The same people who are crawling underneath dirty cars on weekends. I was blown away.
Over the next weeks, I continued preparing my lectures. And it was fun. Finding exercises and examples became almost obvious. The looping structure of sketchbook made it seem natural that we needed variables, branches, etc. Pushed from the success of the Mickey Mouse exercise, I tried to administer more open tasks.
And the students kept surprising me. I got countless crafty, psychedelic, lovely and flat-out weird submissions. I decided to put them up on the lecture site for all students to see.
Why did it work?
During the winter break, I tried to find out why the lecture was so much more fun. After gazing into the chimney fire for hours and developing a little headache from thinking too hard, I had come up with four things that changed from last semester:
- more beautiful output
- open exercises with self-determined level of difficulty
- possibility to submit solutions to challenges
- use a little magic to take away the initial hurdles
These things make a great recipe for a fun lecture.
But somehow, it seemed too complicated; it seemed like there is a greater idea behind these reasons.
And then it dawned on me:
In past semesters, I tickled the students’ logic center. They had fun solving sciencey, mathy puzzles. But this semester they had an additional motivation: The students could create something. They could tweak and polish. They could do something that was different to their neighbor and still have a correct solution. In short they were allowed – and even encouraged – to be creative.
Try it out! Build towers of cutlery when doing the dishes. Create a new visualization for the quarterly accounting. Come up with a fancy pattern when mowing the grass. Creativity is a great motivator.
I gave a talk about this, please look at the slides.
If you want to play around with sketchbook, please check it out on Github.