Where’s the joy? Creating something, and sharing it, is an exciting and motivating endeavour. With the new 2020 Ontario Mathematics Curriculum now guiding mathematics in classrooms across Ontario, I think there is renewed excitement and potential to encourage creative learning with students, especially with coding activities.
Unfortunately, after accessing and reading through a long list of new coding resources produced by various school boards and other organizations, I am seeing mostly lengthy webinars and highly detailed lesson plans that ‘connect’ math curriculum expectations to coding assignments. I agree there has to be some direction in this regard but the way coding is “taught” in school, and the way students feel about it when doing it, is going to have a major impact on outcomes. I know this because I have been working with students and coding since 1995 and my own approach and philosophy has evolved as I have learned from my students and other talented teachers and researchers.
The most important question I ask when my students are coding is: do they love doing it? Strand A in the new Ontario Mathematics Curriculum is a fascinating new dimension with much potential. My guess is that Strand A is attempting to address and change long standing sexism, racism, and so-called ‘math anxiety’ associated with the teaching and learning of mathematics. If this is the case, then this strand is a start but there are still many issues. For example, ideas like ‘building personal resilience’ (which is mentioned in the Stress Management and Coping section) is an interesting idea but it is also a privileged approach. Why not first dismantle systemic factors in education systems that continue to oppress, degrade, prejudge, stereotype, discriminate, stream, exploit, and exclude non-white students? Maybe if these were dismantled then there would no longer be a need to ‘teach resilience’ to students. In any case, there is still work to be done to strengthen the ideas in Strand A.
Passion. This is one crucial, missing element in Strand A and is the main point of this blog post. I searched for the words ‘love’, ‘joy’ and ‘passion’ in the Strand A section of the new mathematics curriculum and found a total of zero hits for these words. In fact, none of these words can be found in ANY of the strands of the new mathematics curriculum. Why?
The focus of this blog post is on students who are using coding in their learning. The most important question I ask when my students are coding is: do they love doing it? I ask this because I want that to be motivating them. I don’t want it coming from me. I am happy to encourage, suggest, and have discussions with students about their projects. I have found, over and over, that students who are passionate about their chosen projects will work harder and longer, and learn far more, than students who work on assignments or puzzles that I have given them.
As it turns out, the Lifelong Kindergarten Group at MIT figured all this out a long time ago. Students who play, experiment, tinker and build their own projects (rather than assignments or puzzles) that they are passionate about, in collaboration with their peers, are far more engaged, interested, excited, motivated, and so on (I am sure you can fill in lots of words that reflect qualities you are hoping to see in your students).
Instead of lesson plans or assignments, I am trying to focus on creating opportunities for all of my students to design, create, experiment, and explore just like kids in Kindergarten do. The best way I have found so far to do this is to use the 4P approach as guiding principles (read Mitch Resnick’s book called Lifelong Kindergarten for more information about the 4P approach):
The passion element of this approach cannot be overstated. Learning to code and learning related mathematical ideas become secondary to the force and determination which students bring to their personal coding projects. I have seen students in grade 3 designing fun games in Scratch and they have learned intuitively that y means “up/down” and x means “left/right” not because of any lesson I taught but because the sprites in their games needed to move in certain ways… so, they needed to learn how to move the sprites in their game, sometimes in very complex ways. All sprites in Scratch are situated on a Cartesian plane (with the origin at the centre of the stage) and movements are controlled by the blue blocks:
The biggest difference I found with students learning within the 4P approach is that curriculum objectives cannot be taught or explored in a linear or arbitrary way. Also, artificial knowledge boundaries that have been created within a curriculum (such as: plot and read coordinates in all four quadrants of a Cartesian plane, and describe the translations that move a point from one coordinate to another starting only in Grade 6) are rendered ridiculous because mathematics is a language and every language is predicated on building literacy and fluency, not a checklist of skills learned in a sequence at different times. Students use mathematical ideas when they need them. Coding in Scratch is always ready and waiting. As children start to conceive of more and more complex ideas and projects, Scratch has the capacity to support the creation of highly complex programs. This was part of the design of Scratch from the beginning (low floor, high ceiling, and wide walls).
My continued concern is now that ‘coding’ has become an ‘official’ part of the Ontario curriculum, the stated objectives will simply become check boxes in a long list of expectations that need to be met by the end of the year bereft of any creative or exciting dimension. My contention is that all of these expectations can and will be met if we try, instead, to focus on creating opportunities for all students to design, create, experiment, and explore using coding tools like Scratch. Let’s focus on encouraging students to create projects they are passionate about in playful collaboration with their peers. As students work this way, then, as teachers, we can find the math, we can help students notice and name the mathematical ideas they are looking for to solve a problem or already using in their code. The conversations will be different for each student. I understand that a child-centred approach can be challenging and time consuming but I think that it’s worth it.
If you look for it, I’ve got a sneaky feeling you’ll find that Mathland actually is all around.
I have spent a fair amount of time thinking about a question Seymour Papert asks in the following video (and in many other ways in a various books and papers):
“How can we create a mathland? That’s really what it’s about.”
If you are unfamiliar with the concept, he mentions it in this excerpt from a longer interview contained in the this documentary DVD:
Papert uses the metaphor of Mathland in his book Mindstorms: Children, Computer and Powerful Ideas (1980) to challenge preconceived notions about children’s capability to learn as well as how they might learn mathematical ideas:
It is clear from Mindstorms, and from other works (e.g., page 64 in The Children’s Machine, 1994) that Papert sees the computer and programming languages, such as LOGO and Squeak, and concrete tools, such as the Turtle, as building materials for a Mathland. These materials and ideas continue to evolve. MIT’s Scratch is the current and practical realization of ideas that began with Piaget and Papert. I am well aware that Scratch is not LOGO. One could also say that LOGO is not Scratch… but that’s a topic for another post. Maybe we can all agree, however, that both are destinations in Mathland?
Mathland, actually, is all around
In my ongoing professional learning as a teacher, I have generally resigned myself to thinking that the best we can do, at this point in time, in terms of creating a Mathland is LOGO and Scratch. Like Papert, the computer has always fascinated me not only because of its versatility but also because of how computer programming can influence and shape thinking and learning. To me, Scratch is where it’s at when it comes to a thoughtful, carefully designed, extensively tested and deeply researched environment that is, I think, a village in Mathland (and a very popular one).
Metaphorically speaking, I have recently ventured out of the Scratch village and have begun to look for other places in Mathland. Once I started to look, I discovered some. Maybe others have already found these places but they were not obvious to me until recently.
I wanted to briefly describe four examples of mathematic immersion that have been around for years and are nothing new. What is new is that I am more deliberately considering how they function as an immersive mathematical experience.
At the risk of repeating myself, I want to make it clear that the practice of finding “math in the real world” in classrooms is not only nothing new but it is also not what I am intending to talk about in this post. My intention is to reconceptualize mathematics (using as my muse Papert’s Mathland concept) as a culture and language and to seek out truly immersive experiences for learners within that culture and language.
The connections between mathematics and music are extremely well known and often discussed (e.g., this, this, this and this). I think listening to and creating music become more powerful with metacognition: one could consider basic reflections about the connection between note durations and fractions or more sophisticated reflections such as the connection between sound frequency and harmony. I think long term immersion in music is akin to long term immersion in mathematics. I know people who have explored music far more deeply than I and the feedback from them is that understanding musical theory is key to understanding the music one is trying to interpret or to realizing the music one is trying to compose. A friend of mine recently explained this to me using the example of a fugue. He was the first to point out that J. S. Bach is sometimes referred to as a mathematical composer. What if music was formally considered another branch of mathematics? If that interests you, then you might enjoy reading this article.
Consider some popular geometric toys/games like LEGO, Minecraft, or the Rubik’s Cube; and what about Froebel’s Gifts? Again, there is nothing new about the connection between these toys and mathematics. What is new for me is considering these kinds of toys to be from Mathland and to have the potential for immersive mathematical experiences. It is not unusual to see children attain a sense of flow when playing with these toys; I’ve always considered flow and learning to be nearly synonymous. Now, I am thinking children who attain flow while playing with these toys have been transported, so to speak, to Mathland. I think that when children are using these toys to build, create, and explore, there are experiencing an immersive mathematical adventure.
Poetry, Prose and Rap
It might a little less often that connections between mathematics and things like poetry and rap are discussed but I think they are clear. Consider the patterns, symmetry, meter, and structure inherent in these formats to express ideas. Unsurprisingly, there are domains of knowledge and study that focus on this (poetic prosody and linguistic prosody). Initially, I had only begin to consider meter in poetry and rap but then I discovered that prosody, in a bigger sense, refers to all rhythm, pitch, intonation, and syllable stress in language generally.
I would guess that many teachers use patterns and symmetries found nature to connect to mathematical ideas in patterning, algebra, geometry, and spatial sense. For example, I remember clearly exploring the Fibonacci sequence and the golden ratio with students by starting with examples of the golden ratio in nature. Additionally, fractal patterns are common patterns in plants, such as ferns. To me, these clearly underscore that the natural world can be understood in terms of predictable and quantifiable mathematical patterns. In a literal sense, Mathland is all around us. How do we create the conditions and environment so that students can explore, interact and learn from an immersive mathematical experience?
What am I missing?
There must be many more places in Mathland I have missed. What are some other destinations in Mathland where you or your students have visited? Please let me know in the comments!
[This is a reblog of a post I wrote at scratchmathland.com]
The BBC micro:bit contains various sensors for measuring temperature, light intensity, direction, movement, and so on. These sensors might be valuable in a project in which measurement data collected by one micro:bit (the sensor) can be communicated to another micro:bit (the receiver) and displayed on the LEDs. However, there are methods by which this sensor data can be collected and saved in a data file.
The micro:bit does not have the capability to open and write directly to a file but it does have the capability to write to your computer’s serial port (via the USB connection – remember – USB stands for Universal Serial Bus). A terminal emulation program can be used to display the data in real time. Additionally, that data can be easily saved to a text file.
This post describes this process with an example project that I coded and tested on a Mac running macOS High Sierra (ver 10.13.6) and on a Chromebook running ChromeOS (ver 71.0.3578.127).
Click to jump to a section:
- Programming the sensor micro:bit
- Programming the receiver micro:bit
- Capturing the serial data on your computer…
- …Using macOS
- …Using a Chromebook
Programming the sensor micro:bit
This code simply sends data through the radio so that another micro:bit can receive the data. The sensor will measure and transmit six readings: temperature, light level, compass heading, acceleration strength, rotation pitch, and rotation roll. You can access this code here: https://makecode.microbit.org/_4ds5jqKbWAWA This project sends sensor data to the receiver about once per second via the radio; depending on your experiment, you might need to adjust the “pause (ms)” blocks to collect sensor readings more or less frequently.
Because the “radio send string” block has a limit of 19 characters, I have coded the sensor information to be sent in two separate strings. In order to keep the data organized, the letter “A” or the letter “B” is the first character of the string transmitted by the radio. This will become the method by which the receiver micro:bit can correctly identify what information it is receiving.
Note that the “join” code within the “radio send string” in the code below could easily be modified to create comma separated values (CSV) so that the output from the receiver micro:bit could be quickly imported into a spreadsheet and analyzed / graphed.
Programming the receiver micro:bit
This code takes action when it receives data via the radio. The variable CheckTag looks at the first character in the string received and takes one of three actions as indicated in the code below. If CheckTag is A, then Data1 will be assigned the first set of three sensor readings (see code above). If CheckTag is B, then Data2 will be assigned the second set of three sensor readings (see code above). If CheckTag is C, then Data1 and Data2 will be joined and sent to the serial port. Some extra code was included (button A press) so that a new header could be sent to the serial port in case the data is being view in real time and needs to be identified. Access to this code is available here: https://makecode.microbit.org/_AP7LLd4wU1U3
Capturing the serial data on your computer…
How does this project work using the serial port? The “serial write line” block (or any of the other serial write blocks) sends text data to the serial port via the USB connector on your micro:bit. Your computer can read this incoming data by using a terminal program. These kinds of applications have been around for decades and were commonly used in communication between two computers on a network starting in the 1970s. Perhaps the most common terminal was DEC VT100 (pictured). Today, there are apps you can download to your computer that “emulate” these terminals. In the past, they were actual devices that looked much like an old style desktop computer but they could not perform actual computing tasks on their own (sometimes they were called dumb terminals).
For this project, I used used a free macOS application called SerialTools as my terminal instead of using a built-in terminal emulator. The serial reference information on the makecode site suggests opening the built-in Terminal program on a Mac (or analogous one on a PC or in Linux) and then using a command like:
sudo screen /dev/cu.usbmodem1422 115200. There are command line suggestions for Linux and Windows 10 as well… but I found that using a terminal emulator app, like SerialTools, worked better.
Once both of your micro:bits have been flashed with the HEX files, and both are running, make sure the receiver micro:bit is plugged into your computer via the USB connector.
Then, in my case, I started SerialTools on my Mac. Look for something like “usbmodem1422” in the serial port list (the ‘1422’ might be a different number on your computer):
Then, click on the “Connect” button to start displaying the data coming into the serial port from the micro:bit:
To observe how the sensor data changes in real time, pick up the sensor micro:bit and move it around; bring it close to a bright light source, or place your thumb onto the CPU chip to see the temperature rise.
Once you have the data you want, highlight that data in the terminal window and right click to copy. Then, open TextEditor on a Mac and paste in the values:
As I noted above, I separated the sensor values in this project with a space character for but you can easily change that to a comma in the sensor code so that you could produce a CSV file of the sensor data. CSV files are easily imported into your favourite spreadsheet for further analysis or graphing.
…Using a Chromebook
Similar to adding the SerialTools app on macOS above, on your Chromebook you also need to add an app. Head over to the Chrome Web Store and look for Beagle Term (there are other ChromeOS terminal emulators but I used this one successfully). Once the app has been added to Chrome, make sure both of your micro:bits have been flashed with the HEX files, and both are running. Make sure the receiver micro:bit is plugged into your computer via the USB connector.
Now, start up Beagle Term. You will be asked to configure but just go with the defaults:
(Note: if you do not see a device listed beside “port” then the microbit either isn’t plugged in or the Chromebook has not detected it yet. Notice also that on the Chromebooks, my micro:bit connection to the serial port is identified as
/dev/ttyACM0 which is very different to the device name my macOS gave:
usbmodem1422– just interesting to note.)
Now, click on “Connect.”
Once connected, the app will display the data being sent by the serial write line blocks from the receiving micro:bit. Once all of the measurements have been collected, you will need to copy and paste all of the data from the terminal window to a Google Doc or Sheet:
- Double click at the start of the text that you want to select in the Terminal window.
- Scroll the window to the end of the text you want select.
- Shift + click the end of your selection.
- All text between your first click and your last Shift + click is now selected.
- Ctrl + C to copy your selection.
- Open the Docs file where you wish to paste the data.
- Click Ctrl + V to paste your selection.
As noted above, I separated the sensor values in this project with a space character for but you can easily change that to a comma in the sensor code so that you can ultimately produce a CSV file of the sensor data. CSV files are easily imported into your favourite spreadsheet for further analysis or graphing.
Let me know in the comments below how you have captured data from the micro:bit in your projects!
At long last, the new version of Scratch is now live at scratch.mit.edu. It launched officially on January 2, 2019. Scratch 3 is a complete redesign of not only the editor but also the code ‘under the hood’ that runs Scratch. The advantage is that Scratch 3 now works on virtually any device that is connected to the internet and runs a modern browser. The experience is not identical across all devices but it is close. If you are used to Scratch 2 but want to get quickly oriented to Scratch 3, then this article is for you.
It is quite important to note right away that the core of what Scratch is, and what it can do for children seeking to have fun being creative and exploratory, has not changed. Unlike some other popular coding tools, Scratch has always been about being wide open in terms of having a multitude of options for children to be creative, express their ideas, and follow their own interests and passions (wide walls). Also, the new Scratch continues to not only support beginning programmers with very simple, quickly constructed projects but also support programmers who are progressing and using more sophisticated programming (low floor, high ceiling). Scratch 3 dovetails beautifully with a positive, nurturing approach to learning based on child-centered Scratch projects (rather than assignments or puzzles) where they can playfully and collaboratively create, design, share, remix their ideas.
Improvements and Enhancements
No coding blocks were removed in Scratch 3; Scratch 2 projects work seamlessly in the new Scratch 3 environment. Some blocks might look a little different in Scratch 3 because of a new colour. 12 blocks are either new or have been tweaked in the lastest Scratch:
Scratch 3 also contains a host of improvements and enhancements:
- Code blocks are larger to facilitate dragging and dropping on mobile screens
- New left to right flow in the editor, stage is moved to the right-side
- New sounds, costumes and backdrops added in the libraries
- Some blocks have moved to the extension library such as those for pen, music and video sensing
- Built-in editors for costumes (paint) and music have been dramatically improved and enhanced
- The Scratch 2 show/hide tips window on the right hand side is gone but it has been replaced by a tutorials library
You can take a look at the Scratch FAQ and the Scratch 3.0 entry in scratch-wiki for more detailed information about these changes. If you are looking for even more, why not check out the Spring 2019 edition of Hello World magazine (free to download) which includes five articles about Scratch 3 (the first one starts on page 14).
Key improvement – Extension Library
I’m very enthused about the way the extensions library works. I think it makes it easier to understand how the core Scratch tool works and how it can be extended to do new things. From what I remember from the sessions at Scratch@MIT 2018, the developers mentioned that the new Extensions Library in Scratch 3 makes adding new capabilities and functionality with existing and future peripherals much easier.
A great example is the BBC micro:bit extension. The ten blocks included in the extension provide basic access to certain functions of the micro:bit. In order to use this extension with your micro:bit, you need to do three things first (more details on the Scratch microbit help page):
- Install “Scratch Link” on your device (currently, only available for Windows and macos)
- Upload the Scratch micro:bit HEX file to your micro:bit
- Add the micro:bit extension library to your Scratch project and connect your micro:bit
What is actually happening is the Scratch HEX file uploaded in step 2 controls bluetooth communication between the Scratch device (your Windows or macos computer) and the BBC micro:bit. The code on the micro:bit never actually changes as it does with other micro:bit coding environments (such as the popular Microsoft Makecode editor for micro:bit). This makes the experience a little more intuitive because continuous uploads of new HEX files for each change to the project are not needed.
Here is an example of a project (called micro:bit Maze Game) where the micro:bit is used to control the player in a multi-level maze game:
In terms of a wish list, I think it would be great to have a generic Scratch extension library that included blocks to sense and control things like voltages and data flowing through USB connections which might make possible some open ended projects that connect Scratch to any ad hoc electronic project. It might also be interesting to have a touchscreen extension library with block that handle sensing events based on a touchscreen. This would facilitate project interfaces that allow a user to touch sprites (acting as icons) to control events such as games or drawing programs. Finally, I would love to see an extension to provides an interface to either a local or network (like Google Drive) folder so that data could read from, or written into, a file.
Scratch 2 executed Scratch projects using Adobe Flash which meant that projects would not run on non-Flash capable devices such as iPads (which are one the most popular mobile devices used in homes and schools). This limitation is no longer an issue with Scratch 3. This is a significant change and will positively impact iPad-rich schools allowing students to access their Scratch projects via a (modern) browser app.
One of the interesting new design challenges of this improvement will be that students can explore authentically the development of projects that run on a wide variety of both hardware and software environments, an issue in computer programming called cross-platform software development. A given Scratch 3 project does not necessarily appear or work identically across different platforms. The experience is close but not identical. The ask and wait block is an example. The look and feel of the video sensing blocks is also variable with hardware you are using.
Cross-platform development is nothing new. Almost every web site has straightforward code that checks to see what device / browser is being used. It then makes adjustments on the fly so that the user experience is optimal for that device / browser. Scratch 3 does not have these kind of detection blocks built in but different versions of projects could be developed for different devices / browsers so that a project runs optimally. I wonder if a device detection reporter block could be in works?
Key improvement – Drawing and Sound Editing
There have been big improvements in the both built-in editors for bitmap and vector painting and for sound editing. These improve the quality and speed of editing so that users can focus more on the creative aspects of the images and sounds they want.
Some of the things I like the best about the new paint editor is that vector is now the default mode. Also, I am enjoying the new colour picker – I feel I now have a far greater command of colours. For a detailed overview of the new paint editor, take a look at its entry in the Scratch wiki.
The sound editor is so much smoother and so much more fun than before. The filters really make it fun for children to experiment with audio and give them the power to create the sounds they want for their project. Recording and trimming are also more intuitive. For a detailed overview of the new sound editor, take a look at its entry in the Scratch wiki.
I have been using Scratch 3 (now and in beta) with students for a while; there are a few things on my wish list:
- Right-click block help – In Scratch 2 there was a very handy and built-in reference that explained the function and use of any block, including parameters, and a code example. A simple right click on any block would bring up this option. Students used that quite a bit for reference.
- Retractable Code/Costumes/Sounds window – There are many times when it would be great to have more screen real estate to look at more code at once. Zooming in and out on code is easy in Scratch 3 but I would also love to see a button that would retract the Code/Costumes/Sounds tab on the left side to reveal more of the space for scripts. One might ask, why do you need that – are you not always needing code blocks? No. Not when walking through code or remixing and trying to understand someone else’s code. And no, not when reorganizing and optimizing my own code. In my experience, there are clearly times when I would like more space.
- Real time x,y coordinate position of mouse arrow – One thing I do miss from the editor in Scratch 2 was the indicator, in real time, of the x,y position of the mouse arrow on the stage. I often used that as a quick estimate of where I wanted a sprite to be placed and then I fine tune it later. It’s not a big deal… one can get the same effect in by moving a sprite to a position on the stage and then look at the x,y indicator… Nevertheless, it was often quite handy to be able to see a live x,y coordinate read out of the arrow tip’s position.
Resources about Coding in Education
Articles (using coding as a tool to think with)
- Finding the Math in Student Programs (Medium, September 7, 2017)
- Modeling an Analogue Clock in Scratch (TVO, February 2, 2018)
- Scratch is the Right Place for Coding (Medium, May 30, 2017)
- “Coding to Learn” Outcomes (MakeLearn, June 2017)
- 5 ways to turn the ‘hour of code’ into the ‘year of learning’ (Medium, November 26, 2017)
- Learning Design by Making Games (Medium, October 21, 2017)
- Mathland Reflections – Game Design (MakeLearn, December 10, 2016)
Resources (using coding as a learning/thinking tool)
- Coding to Learn: Children, technology & powerful ideas (Prezi, May 2018)
- Mathland Projects Studio on Scratch
- ScratchEd – Resources main page
- Creative Computing Guide (Scratch 2.0 version) from ScratchEd
- Creative Computing Guide (draft Scratch 3.0 version) from ScratchEd
- Scratch-based Connected Coding Challenge by Drew Wheeler
Videos (for professional learning)
- Kid’s creative thinking
- Rethinking Learning in a digital age
- Coding as a new literacy
- LOGO From 1972
- LOGO From 1983
- Papert on “Mathland”
- Seymour Papert — Inventor of everything good in education
- An quick intro to Scratch
Books (coding to learn, creative learning, design thinking)
- Lifelong Kindergarten by Mitch Resnick (August, 2017)
- Invent to Learn: Making, Tinkering, and Engineering in the Classroom by Sylvia Libow Martinez & Gary Stager
- Mindstorms by Seymour Papert (full text of this book provided at no cost by Seymour Papert’s family)
- The Gears of my Childhood by Seymour Papert
- Launch by A. J. Juliani and John Spencer
Don’t get me wrong. In the summer, I think it is essential for teachers to relax, unplug, take a break, spend tons of time with family and/or friends, and enjoy some sunny summer weather. The summer break makes us fresher in the fall and reconnects us to other parts of our lives, friends, family and personal interests that may need some attention.
But, at least for me, there’s a feeling that slowly grows in the summer where I’m restless and looking to plug back in and learn, read, create, tinker, and so on. A few teachers have asked me for some suggestions for summer learning so here are a few for when that feeling comes to you.
It’s not a brand new book but it was to me this spring. Learner Centered Innovation by Katie Martin is great. It really goes into detail with a critical lens on educational practices and provides a vision and examples what teachers can do to improve things for students by starting with them. Much of the language resonates with me because it echoes much of my own vision for education.
For Peel teachers, there are some conference opportunities both in PDSB and outside of it. If you are around later in August, the second annual Empowering Modern Learners Summer Conference is taking place at Central Peel Secondary School on August 23 and 24th. John Spencer is one of the keynote speakers! On July 5, MakerEdTO is taking place at the York School in Toronto. There is more information on their website.
But the idea I would really like to encourage is taking on a project that focuses on a passion or an interest you have. This is something I look forward to doing every summer. The idea is to intentionally outline a project you will take on over the summer that’s centred on an interest you have. Make as the goal achieving flow as Mihaly Csikszentmihalyi describes it. The professional learning comes as a result of the reflections you make about the experience and the learning that happened.
For example, a colleague of mine decided to try oil painting. He’s not an artist. He had never oil painted. He learned quite a bit about making and the creative process. At first he wondered: how does oil painting work? He bought a book about the paintings of Mark Rothko and looked at how he did it; he read about his process. Then, he learned about equipment on the internet. Rothko was the start of it for him. He studies a maker/artist and began experimenting with tints, blending, and so on. Coincidentally, I did almost the same thing one summer but using latex paint and reading this book by Mark Daniel Nelson!
Another colleague of mine wanted to do more with coding and computational thinking with her Grade 6 students in the fall but she wanted to know more and have some skills. She explored Scratch over the summer. She wanted to get comfortable and she made a goal for herself to create a fun game for her son to play. By the end of the summer, she had made a maze game that included two levels. It worked out pretty well and she used that experience and her game example when she introduced Scratch to her students that fall.
I’ve started to get a few ideas for some summer projects. Electronics and building an AM radio from scratch is an idea. I also want to explore CoSpaces. I have dabbled with it but there is so much potential there and I want to know it and create with it to learn more.
Please leave a comment below about what you are thinking about if you are thinking about a summer learning project. I would love to read about it.
This blog post is more of a curation project than a blog post. I have put in one place various statements, beliefs, arguments, for or against, the use of block-based programming/coding with students. Some are clearly pro ‘text-based,’ some pro ‘block-based,’ while others are mixed and point out pros and cons based on certain factors or contexts. This is exactly what I expected to find.
I think the bigger question is the ‘why’ question and the question of ‘coding to learn’ versus ‘learning to code.’ Most of these articles address the issue of an effective means by which students can ‘learn to code’ which is not really my focus with students (which doesn’t mean it doesn’t happen; it’s just not the focus) but, nevertheless, there are many interesting ideas.
Some of the articles below were very frustrating to read because of inaccuracies. One of them, for example, points to limitations in block-based coding that, in fact, do not exist and I wondered how much direct experience the author had in programming using that tool. Other articles were frustrating because they repeated prejudices concerning block-based programming environments such as they were ‘only for kids’ or that block-based code is merely the ‘first step towards real coding’ with text-based languages.
Some of the articles were very exciting to read! One of the best finds was an article called Scratch has a Marketing Problem by Steve Krouse. He writes about challenging his prejudice about block-coding as he explores the potential of Scratch for his students. Another great find was this short video called Why top universities teach drag and drop programming. Dan Garcia from UC Berkley talks about why block-based programming was chosen for students over text-based programming (at his university as well as many across the United States).
Note: I intend to add to this post as I find new articles and resources. Please comment below any URLs to articles, videos, podcasts, or other resources that might merit inclusion in this list.
Pro text-based coding for students
Pro block-based coding for students
Balanced / It depends / It might not matter
[Note: The post below was updated in July, 2019 (originally written May, 2018). This article might be a useful read if you are teacher considering Scratch vs Swift Playgrounds or are caught up in discussions / arguments about the two. I think that juxtaposing these two coding environments helps reveal the distinction between children “learning to code” and children “coding to learn” in schools.]
If you are a teacher like I am, and love to see how coding can be conceived of as a literacy, a powerful tool with which children can create, tinker, and share then you might also become frustrated by articles like this. Here is a quote:
Block-based coding is kind sort-of, kind-of coding just like a child using an Easy Bake Oven is sort-of, kind-of baking. What the child makes in the Easy Bake Oven may technically be a cake, but it’s not really a cake. Similarly, coding in something like Scratch or Scratch Jr. may technically have coding blocks, but it is not really actually coding.
Besides the prejudicial (and erroneous) assumption that block-based coding is not real coding, this kind of thinking strikes at the question, “what is coding?” Or, better, “why do you want kids to learn how to code?” In this article, the author is clearly writing about teaching kids to code. It might seem a subtle and dismissible distinction but I think there is a big difference in pedagogical focus between students learning how to code in schools and students using code to explore, create and learn new things. Unless I am teaching a computer science course in which students are learning the discipline of computer programming (involving best practices of algorithms, structures, systems, networking, robotics, AI, etc.) then I think the focus of coding with children in schools should be the development over time of each child’s literacy in controlling various computing devices with code. And, it doesn’t matter… blocks or typed text… they are still learning to control a computing device. (More on text-based vs. block-based here.)
Ultimately, for me, it comes down to a single key issue: In the limited time we have with children each day in school, what is the best use of that time for learning? How are we designing and/or supporting powerful and empowering learning experiences for our students? I suppose you could think of it as a question of ROI – with any given student investment of time and effort, what is the return in terms of powerful, high quality learning?
I am a teacher who has observed students using a variety of coding environments and finds that Scratch has the most to offer students. Despite this bias, ultimately, I think we can all agree that we are looking for tools, environments and learning models that really work well with our students in terms of high quality, meaningful, useful learning.
I have a love-hate relationship with Swift Playgrounds. I think probably anyone who is as passionate about learning as they are about computer programming would probably feel the same way. Maybe that’s just me? I just think Scratch has more to offer because it focuses far more on creative learning than Swift Playgrounds does (or could) as it stands now. More on that later…
There’s lots to love
Swift Playgrounds is a beautiful looking environment to learn to code. It’s a nice, modern, object-oriented language and I can learn concepts and conventions and put them to work later in Xcode. Children can choose step-by-step lessons and puzzles to build their coding knowledge and skills. They can choose other playgrounds to play in and subscribe to third party ones, too. They can start with a blank project and try out coding ideas. They can save their projects. There are handy shortcut buttons so you don’t have to always type in commands or statements. The code editor is very helpful and automates many syntactic and structural formatting conventions. Kids can program various robots. There’s even a new, augmented reality coding kit so kids can start to explore AR.
There’s lots not to like
I considered writing a section about how Swift Playgrounds and Scratch are both free tools but that Scratch (which runs on all devices) is supported by a non-profit called the Scratch Foundation and that Swift Playgrounds (which only runs on iPads) is supported by a for-profit called Apple, Inc. Suffice it to say, I think the motivations behind each tool are linked to the organizations that create and fund them.
Learning to code
It’s probably clear by now that Swift Playgrounds was not designed as a learning through coding environment; it was designed as a learning to code environment. I don’t think anyone at Apple would have ever said that it’s a coding to learn environment. Indeed, in 2016, Apple’s Director of Tools & Technologies Product Marketing Wiley Hodges said that Swift Playgrounds is “not about learning apps for platforms. It’s about learning good coding practices.” Yet, this turns my mind back to the single key issue at the beginning: In the limited time we have with children each day in school, what is the best use of that time for learning? How are we designing and/or supporting powerful and empowering learning experiences for our students?
What makes using Scratch powerful learning?
Scratch is a unique learning environment because every aspect of it was carefully researched, designed, tested and redesigned. The experiences children have in Scratch maximize the creative, social, personal, experimental, visual and design elements and minimize the technical, syntactic, textual, abstract, and rigid elements of many typed languages. A key design objective in Scratch was (is) to support self-directed learning through tinkering and the creation of personally relevant projects in collaboration with peers. These ideas are further refined and described in Lifelong Kindergarten by Mitch Resnick.
In terms of real students in real classrooms using Scratch, I regularly see students quickly think of interesting ideas they have for a Scratch project and proceed to start to code it in their first session. The use of the Scratch environment, along with a research-based and student tested learning model, can accelerate learning and competence using Scratch to express their ideas. When I observe children creating with Scratch, the best word I can think of to describe it is intuitive. The colour-coded blocks invite experimentation based on almost instantaneous conclusions students have about how the blocks might function with other blocks. The work and the learning come from the building of their code scripts into projects that work the way they want. Typed languages are generally not very intuitive. And with modern object-oriented programming, these languages are even more abstract.
It’s no accident that Scratch works so well with students. I regularly engage in detailed conversations about projects, designs, and problem solving. I’ve written previously about how Scratch is the right place for coding in schools. Probably the most important aspect of Scratch is that it was designed to support a very wide variety of potential projects that can be easily personalized; this leads to children who are highly invested emotionally in their projects. Many have said in passing how much they love working on their Scratch projects.
Papert and Mathland
The “powerful ideas” part of Seymour Papert’s 1980 book Mindstorms: Children, Computers and Powerful Ideas talks about the potential of the computer and computer programming as a tool for thinking and building knowledge within a carefully designed learning environment. This powerful learning environment is the opposite of computer aided instruction (CAI) which is a profoundly important distinction. Instead of designing computer applications that act as a teacher for children, Papert envisioned computers as tools children could use in order to play with ideas and build knowledge. He saw coding as a way to control a mini world, a Mathland, and developed LOGO and various mathematical learning environments. From his perspective, the children are controlling the technology, not the other way around.
Papert’s philosophy was always about how children could use coding to learn, and learning about things that are interesting and fun. Powerful learning is exciting, personal, memorable, social and creative. Scratch was specifically designed (and continues to evolve in redesigns) to be exciting, personal, memorable, social and creative. Despite the seemingly endless coding tools now available through sites like code.org and various app stores, I still think Scratch is the right place for coding to learn.
It’s effortless to hop onto social media, whatever social media you interact with (for me it’s primarily Twitter, Medium, WordPress, and news sources), and read through stories and ideas created by other people. In fact, I ‘found’ myself the other day after work having spent about 90 minutes straight on social media. But many other days, it might be 30-40 minutes. I usually learn some things and make notes of resources to refer back to later. Browsing on social media often leads to some great finds.
And, I do have a blog and a podcast and I do share ideas in other places online. But I am pretty hard on myself when it comes to sharing things I create which is contrary to this message from Derek Sivers (his video is partly why I started to blog in the first place).
And, there are also a handful of times when the consumption and creation are intertwined into real-time engagement or interaction with other people (primarily using Twitter chats or Twitter messages).
The problem: I am spending a greater and greater proportion of my ‘allotted time’ to consuming information… rather than creating and sharing it. Why?
Creation is hard. Consumption is easy. The tricky bit is that I do learn from doing both activities. I can’t be the only one thinking about this… And it bothers me. As educators, we expect students to balance their time between consumption and creation. I do think I learn much more by creating. And creating and sharing ideas is more concrete — that part of me that looks for evidence that I have been productive likes the concrete thing I’ve made. The results of consuming information are very intangible. But is it all as simple as that? Am I simply lazy?
Here are my publication stats for this blog:
25 (not 26 since you’re reading 26) times I started to write a blog post and 25 times I abandoned it for some reason. Sometimes I do go back. At least I’ve published more than not. I’m also writing a book but that’s even more difficult. And I am finding the limitations of a physical book to be annoying; ironically, books still seem to be the pinnacle of professional communication. (Incidentally, in the last week or so, I’ve pretty much decided to create a web site instead so that I can link to resources and embed media).
Another issue is that the more I consume information (and see how much is out there) the greater the feeling I get that everything has already been written, shared, and thought through. Just look at the re-discovery of ‘coding’ in education in recent years… Sometimes I think we are all caught up in an endless cycle of ideas that get discovered, shared, forgotten and re-discovered again.
Which brings me to this blog post. What possible purpose can it serve? Who am I writing it for? So what if someone else says, ‘yeah, I get that feeling, too.’ Maybe my own cynicism about sharing ideas also goes through a cycle. But it is rare to ever get direct feedback like that but it does happen and it is cool when it does (thanks, Kate):
So, that part of me that wants some concrete product is making a few resolutions:
- Spend more time reading blogs than tweets (the idea being to truly explore ideas more throughly rather than skim through multitudes)
- Comment and interact more with other bloggers (the idea being to respond and interact with the people who are sharing ideas & resources)
- Go through all my drafts and finish & share the ones that need to be (the idea being to reconnect with ideas and think through them again)
- Get to work on my shiny, new project: https://scratchmathland.com/ (I have the domain as of early May but have put 0% there so far…)
And, just for fun, here is that inspirational video by Derek Sivers which, combined with words from Dean Shareski, motivated me to start blogging:
No, I am not rethinking “empowerment” in the sense of is it a good or bad thing? But after reading a very thought provoking essay called Empowerwashing Education by Benjamin Doxtdator @doxtdatorb I am rethinking how I have used the term and what the term means and implies.
The first thing that jumped at me as I started reading was that if I am a teacher and I am thinking about that ways I empower my students, that still puts the starting point (i.e., the control) of the empowering with me. That is, there is still an oppressive or, at least, paternalistic tone to empowerment when considered in this way. So often educators think: I need to do things so that my students are “empowered.” I don’t like the idea that I am holding the keys to the empowerment of my students. I don’t like the idea they get empowered through me.
On the other hand, I do have power and privilege that was and is accorded to me at a very high cost to others historically, socially, and economically. I consider it a moral imperative to use that power and privilege I have to try to transform status quo conditions that disempower, discriminate and oppress others (in this context, my students). Isn’t it a good thing to want to and try to empower and help others?
My concern when reflecting on this is the question of who decides how my students are empowered? I confess that until I read this essay, I only considered it in one direction: to what extent do all the daily decisions I make as a teacher empower my students? If that is true, then isn’t that idea based on the assumption that empowerment is something done to other people? That sounds wrong to me now. He makes another point that is still resonating with me: he posits that the current use of the word empowerment in education is often meant more as “liberal” than “liberating.”
I think Benjamin makes it very clear that there is (and always was) a lot of context connected to the term empowerment but that current use of the term by educators (and by corporations) seems to have emphasized striving to support passions, innovation, design, voice and choice and deemphasized social justice, politics, activism and radicalism.
His essay ends with some sound advice and three questions to consider instead of using the term “empowerment” in a buzzword kind of way:
Be sure to take some time to read his essay: Empowerwashing Education
Why is it that the older children get, the less play seems to be connected with learning? Personally, I think the two concepts are nearly synonymous. Sometimes I read things that imply that play is great for young children but not so great for older, more serious students. Often, the notion is that all children need more formal instruction and they need to learn knowledge and skills contained in some syllabus or curriculum, something that mere play will not get them. The inference here is that play is informal (and less effective for learning) and instruction is formal (and more effective for learning). At least, that is the inference I make but I strongly disagree with thinking about play that way.
Nevertheless, I try to see the logic in this line of thinking that considers play a low level learning strategy. One needs only to consider any of the most serious professions that often involve life and death decisions, such as medicine and law enforcement or considering other activities where one wrong decision or oversight in planning might mean serious injury or death, such as rock climbing or scuba diving. All of these require the actors to learn knowledge and skills and execute them at a consistently high level of competence. I am guessing (I don’t really know for sure) that training in law enforcement or medicine probably involves highly detailed simulations in which the participants are playing the role they will later actually be in the real world. I would also guess that rock climbers and scuba divers don’t start out by climbing the most difficult faces or diving to record depths. They probably spent a great deal of time training and working up to higher and higher levels of difficulty and danger.
In all of these cases, I think there is a common factor in the training: a level of safety. Perhaps the condition that there is a level of safety could broaden the definition of play for people of every age? That is, that there is a built-in safety factor so that the player can explore and learn without fear of serious consequences. The play still has to have meaningful and real consequences in order for the player learn but maybe not injurious or lethal consequences. In everyday contexts, it is pretty well known that safety (physical and psychological) is a crucial condition for learning. In fact, it is also clear that children who are fearful or anxious experience great difficulty learning and chronic anxiety might impair future learning.
Most mammals play, especially when young. Think of any litter of cubs that you have seen. There are lots of theories as to why mammals play but, surprisingly, very few have been proven by careful observation and research. Two consequences of play in mammals that do seem to be confirmed by research are:
- development of social competence
- increased brain mass and neural connections (cognitive development)
In my experience as an educator, my students have taught me how making things equates with playing; creation and play are deeply connected. Further, I think that if people of any age are creating things they are exciting about, and sharing them with others, the experience is very meaningful and highly memorable. Experiences that are personal (but in a social context) and involve the creation of some kind of product are not merely experiences; they are extraordinary experiences.
I think we all learn something from every experience but I am curious about something: is there really such thing as a passive experience? Maybe all experience can be plotted on a continuum of extent of activation or something like that. If you can plot experiences in this way, I have another question: is there a direct relationship between extent of activation and potency of learning? I have written previously about Mihaly Csikszentmihalyi’s concept of flow (1, 2) and I think it is worth mentioning again. To me, flow is a indicator, perhaps the best indicator, of the extent of activation of an experience.
I strongly believe that one can say:
Flow indicates powerful, joyful, natural learning.
just as accurately as one can say:
Powerful, joyful, natural learning induces flow.
Finally, a quote from Fred Rogers:
Children’s play is not just kids’ stuff. Children’s play is rather the stuff of most future inventions. Think how many people played about going to the moon before that was ever a reality. Let your imagination help you to know the truth about your identity.