Everyone should learn programming, right? Yes! But how… Should we allow children to explore and learn about syntax on their own, or should we drill programming like we rote memorize the table of multiplication or German grammatical cases? Felienne’s talk outlines this history of programming education and didactics beliefs in programming that lead to the prevalence of exploratory forms of teaching, starting with Papert’s LOGO. She will then explore programming education in relation to mathematics and language education and explore how rote learning could look like for programming. Felienne will discuss her own research into misconceptions and code phonology as means to teach programming more effectively.
Felienne Hermans is an associate professor at the Leiden Institute of Advanced Computer Science at Leiden University where she is the head of the PERL group that researches programming education.
She is fascinated by the question of how we can teach all people to program.
Yup. You read that correctly. Felienne believes spreadsheets are code. She even goes as far as to say that they are the best programming language that has existed in the history of languages.
I’d love to tell you that there were resounding applause and much cheering from the audience for our opening keynote speaker but the truth is there was an audience of confused people with a mix of a few spreadsheet enthusiasts.
To Felienne, spreadsheets are such an amazing programming language that most people don’t even realize they are coding. Spreadsheets are simply intuitive and allow people to insert some data into them to get up and running in no time. The barrier to entry in this language is minimal.
In her attempt to evangelize the world with this Ph.D. research, her presentations at developer conferences were met with much negativity. Many simply said, “that’s not real programming.” It didn’t matter she could demonstrate the Turning machine she built using only spreadsheet formulas. It still wasn’t programming in the development world. People still remained unconvinced.
After so much negativity and push-back to her life’s work, Felienne was heart-broken. She just started to accept that other people calling her work “shit” was normal. This was life. She should grow thicker skin.
That was until she joined a running club in 2015 when she realized that people could actually be nice to one another. Running was such an inclusive community and they didn’t tell her that she was “shit” or not a real runner because she did a half marathon in 2 hours.
The same thing happened when she joined a knitting group in 2016. While she showed up with her old-school straight knitting needles, the more experienced knitters who use fancy curved needles were happy to teach her using her “outdated” equipment. She was accepted as she was, using the tools she had at hand. The knitting group was just happy to have another enthusiastic knitter in the group.
Back up a bit to 2013… bearing the weight of the world calling her work “shit” she lied to herself and the world about how happy her work made her. When she graduated with her Ph.D., she continued that lie about how excited she was to continue working on spreadsheets… and the worst thing happened, a company hired her to do just that. She was now stuck continuing her work that she lost her passion for.
As a total coincidence, a local community of children needed a programming teacher on Saturdays. She decided that she would help and in the process feel a little better about something she was doing in her life.
One problem though… Felienne didn’t know how to teach. So she had to learn that first.
The Oxford Handbook of Reading summarizes how children acquire reading skills. Through her reading of this book, Felienne realized that she knew absolutely nothing about teaching and that programmers understand nothing about how people learn.
This was a big problem.
While the rest of the educational community debates and argues pedagogy, the programming community does not. Why? Why must we keep pushing people to learn in the same fashion?
Taking the research-proven methods of other educational approaches and applying them to programming instruction allowed students to understand and absorb more material and be able to apply those lessons learned to new problems and situations with less difficulty.
Things like direct instruction, vocalizing syntax aloud, and being provided examples or solutions with expert explanations all helped these children to learn to program more efficiently and with fewer cognitive load problems. This new approach set these children up for success.