Last year I posted an article called Turn the Hour of Code into the Year of Learning. This year, I wanted to share a few ideas about how you might do that. After checking out some hour of code activities with your students (this year, officially, December 4 – 10), take a look at the ideas below – they might help extend the hour of code introductory activity into a long term, project-based learning adventure for you and your students.
1. Learn to code by starting your own coding project
Many teachers have told me they have thought about ‘doing coding’ with their students but they are hesitant because they don’t know how to code. One strategy that has worked with those brand new to coding is this: commit to three 45-minute coding sessions on your own time, at home, using the Scratch coding environment. Like any user, you create your own account on Scratch so that your projects can be saved and shared (your students should create their own accounts, too, for the same reasons). Then, spend those three, 45-minute sessions making something in Scratch that is enjoyable and interesting to you… hopefully you will choose to make something you are passionate about like an art project, or an animation, or a game, or a digital story.
The idea here is that when it comes time for you to introduce the Scratch environment to your students, you can share with them (authentically) the project that you are working on and excited about. Ideally, you can show them how you coded it and even continue to work on it in front of them, thinking out loud as you go. Don’t worry about designing lessons about each coloured coding block or giving them coding assignments to complete; that’s not the ideal approach. A proven and effective approach is to tell them that there are four “rules” for working on their Scratch projects:
- make something that you are passionate about
- think of your Scratch work as a project that might take days or weeks to complete
- learn by playing, tinkering and experimenting (think growth mindset)
- work with each other, your peers, to discuss ideas and share new skills
This is the 4P approach to creative learning outlined by Mitch Resnick in his book, Lifelong Kindergarten and used by his Lifelong Kindergarten group at MIT. (In fact, you can listen to Mitch discuss each topic in these YouTube videos: creative learning, projects, passion, peers, play, creative society). Students will want to work longer and harder on collaborative projects they are passionate about. I’ve seen exactly that happen with countless students, including this one.
In early November of this year, when I outlined these “rules” to a grade five class for their Genius Hour projects, one boy said with a little smile, “those aren’t really rules… they’re sort of fun rules.” He was right; they aren’t rules. They are the foundation of a different learning paradigm and for building a creative, collaborative learning culture.
2. Think of coding as a literacy
There is a well known code.org video called What Most Schools Don’t Teach. My favourite response in the video is from Mark Zuckerberg (at 47 seconds). I think his response best characterizes the idea of coding as a literacy. Thinking about coding as a literacy is the essential perspective that educators need, in my view, in order to move forward with helping students to use coding as a tool to express, create and explore ideas and concepts.
Most teachers would agree that reading, writing, speaking and listening are the working components of being literate; competency in each of these components is crucial to accessing and exploring new ideas, expressing one’s ideas, and learning, making, connecting, thinking. Computer programming is another literacy in which people can express ideas and make things by thinking mathematically and computationally.
To me, the code.org video sometimes seems to be saying that every kid should be learning how to code because the world will need more computer programmers in the future or that that skill will be essential in future jobs. But I think its just saying that learning to code at some level of competence will be beneficial to everyone, no matter what you do. Every kid in school won’t become a professional journalist or novelist even though they are learning how to read and write just like every kid who takes piano lessons does not become a concert pianist or piano teacher. Reading words, reading music and reading code are all not only useful skills to develop but learning each also helps you to think, express and understand.
Coding in education is not just about building a skill set. Thinking is such as abstract concept. If you are a teacher, you probably help students to “make thinking visible” in many different ways. To me, that’s a literacy. I think that anything kids create to make their thinking visible, that process and that product, qualifies as a media text. Thinking is more than just ideas… thinking can be feelings, dreams, fears, inventions, problems and solutions. Kids can make music, write stories, code games, build machines, and design new ways to solve problems. Coding, in this perspective, provides another avenue for creation and expression.
3. Plan a design-thinking, project-based learning activity
Considering how design-thinking can help students learn is a popular endeavour among teachers right now. There are many great books recently published such as Launch and Invent to Learn. I think of design-thinking as a model for thinking both creatively and critically. Coming up with new ideas to solve a problem is important. But, design thinking also requires reflection and critical thought: How are our solutions solving the problem? Should we continue in that direction? Do we need a rethink? Do we need more information? Do we need to learn new things? Do we need to talk to other people about it? And so on…
I recently shared a long-term project in which I was working with another teacher to create a project-based learning experience for a Grade 4/5 class, rooted in design-thinking. Full details about the project are outlined in this article. Essentially, my teaching partner and I were interested in empowering students to apply their coding skills to create a computer game (using Scratch) for younger students, one that would make learning about fraction concepts fun and easy for them. We intentionally did not start with a design process flowchart. Through ongoing reflection, and a culminating reflection activity, we wanted them to build their own design-thinking process from their shared experience of designing the computer game.
One of the most important things to point out is that our primary focus/goal was not for kids to learn to code. That happened for sure but it wasn’t the main focus. More important was:
- facilitating the project-based learning environment
- helping them to share and discuss their ongoing work and learning
- holding expectations that they were regularly reflective
- establishing structures for them to be reflective and collaborate
- supporting their creative and critical thinking efforts
- maintaining an environment where playing, tinkering, experimenting, and sharing were not only acceptable but desirable
Coding in Scratch formed the context in which all of this took place. We thought of coding more like thinking made concrete and as a medium for expression rather than as a skill per se that simply needed to be learned.
4. Use programmable robots or controller boards
It wasn’t that long ago that, outside of LEGO Mindstorms (launched in 1998) or LEGO WeDo (launched in 2008), there wasn’t much else commercially available to children, teachers, parents and schools. These were among the first buildable and programmable robots. As the maker movement took root in schools, there has been an explosion of buildable / programmable robots available (e.g., Sphero, Dash & Dot, mBot, Ozobot). There are online stores that carry hundreds of robots and sites that help you choose the right robot for your / your students’ needs.
There are also programmable, or at least tinkerable, controller boards (e.g., Raspberry Pi, BBC micro:bit, Arduino, Makey Makey) that are designed specifically for students to make and build in educational contexts. Again, lots of online stores and sites that help you choose what you need.
Designing, coding and building computer programs that work only on a screen might be all you need. But, you can expand the possibilities and choice for students by exploring and arranging for access to robots and controller boards. In the beginning, programmable robots in education (viz. turtles from Grey Walter and Seymour Papert) where always real, physical, electromechanical robots. Providing access to real programmable robots expands the possibilities for designing, playing, making, thinking and sharing significantly. It also tends to make more sense to younger children who often prefer a concrete object to interact with rather than a virtual (screen-based) one.
5. Offer challenges but maintain student voice & choice
I have always liked the notion of children learning skills and fluency in any domain from authentic immersion. Papert’s idea of a mathland, where children learn to become mathematically literate, has always resonated with me. I think computers allow for diversity and the ability to individualize the way in which children want to explore, make and share their ideas about mathematics, based on their passions.
I think choice and passion are the priority for learning. Helping students to find what they love and then supporting their projects in that domain is time well spent. Sometimes, though, you can add challenges to the list of choices for students.
I continue to add to a Scratch studio a collection of ‘mathland challenges’ for students to try if they wish. The idea is they can ‘remix’ the Scratch code in a given project to make changes and explore and build concepts. These challenges are often deliberately connected to overall expectations outlined in the Ontario Mathematics curriculum. I did not create these challenges as assignments for students or as puzzles. They are meant to be examples of projects students could choose to explore ideas and concepts.
This blog is a reflection on a Scratch project I have been working on. I wanted to capture, at an overview level, my thinking and progression through this project.
The purpose of this post is exploratory and preliminary. I’ve started a collaborative inquiry with one of the teachers I am working with this year, and his class of grade 5 students on a year-long project to eventually move from generally non-reflective learning to intentional, reflective learning, especially within the domains of mathematical and computational thinking. I will be writing more about that inquiry in a later post.
In my Scratch project, I am trying to use an array in Scratch (called a list) to contain the parameters of a large, virtual map that could be used as an interactive world in which a game or adventure could take place. Ultimately, I want to generate a large map made up of tiles measuring 20×20 pixels. The overall map might be 100×100 tiles in size, perhaps. Initially, I am thinking I need to know at least three things about each tile of the map:
- Row position
- Column position
- Tile attribute ID (a number that would denote both the kind landform and what item, if any, would be available in that tile – e.g., grass, sand, water; grass + flower, sand + flower, water + fish)
Since Scratch only comes with the capability to create one dimension arrays, I decided to try to use three lists simultaneously, one array of values for each attribute; as long as I used the same index number, it would act like a three-dimensional array. As I thought about it more, I realized that this approach would not work. I could not get three lists to work like a matrix of values. What I needed was a two dimensional array that would hold whatever value for the Tile attribute ID. I cannot use a two Scratch lists (using the same index number) as that does not define a 2D matrix of distinct variable containers. I was stuck.
Anyway, quite a while ago, I created a first project that initializes and draws a map made of 18×18 tiles (and each tile was 20×20 pixels, as noted above). That seemed to work okay. The project that creates and draws the map is linked below. Note that you cannot move around in the map; it just creates a map and displays it on the stage.
I recently revisited this Scratch 2D mapping project again. In order to help me think about it, I simplified the problem. I thought of a 10×10-tiled full-size map, displaying 4×4-tiled window portion of the full map. I spent some time again considering how I might create a two dimensional array (using a function block in Scratch) but it was getting very complicated… needlessly complicated for the goals of this project.
I decided to go back to my original idea of using one list (array) in Scratch to store the Tile attribute ID value for each tile of the 10×10 square array of tiles. So, using this linear approach, items 1-10 of the array would correspond to row 1 and columns 1-10; items 11-20 would correspond to row 2, columns 1-10, items 21-30 correspond to row 3 and so on. The 10×10 map grid is simply arranged in a 100 item long list.
In order to display the 4×4 window onto the map, I needed to apply some patterning and algebraic thinking to the function that located the top, left corner (TLC) of the 4×4 grid of tiles. Now that I have written the code successfully, it seems simple now to reflect on it but I needed to think through the values systematically to make sure I had the pattern.
My idea was that the function would be passed one value, namely, the top left corner location of the 4×4 grid to show. The function would essentially determine the correct tiles to show from the linear array and the correct positions on the stage to stamp them. Before I wrote the function, I played around on some grid paper and drew this to get it visually clear:
After doing this, I felt more confident about how to code the loops in the function and proceeded to write the code. Eventually, the code for the function took shape like this:
The inner loop draws the 4 tiles in the row, the outer loop controls which row is being rendered by the inner loop. I wrote the function in such a way that it could be later expanded to draw a much larger map grid, and a larger window portion to display. The go to x: y: block controls where on the stage the tiles appear.
Here is the project that contains the 10×10 full-size map and the 4×4 display window. You can play with it yourself and see that the it works to only ever show a 4×4 portion of the full 10×10 map. Use the arrow keys to ‘move around’ in the map.
The final task to complete is to write bounds checking code so that the arrow keys do not move the 4×4 window outside of the 49 possible TLC positions (for the 10×10 grid). The problem is that I did not write the TLC-control variable code (arrow keys) in a way that will make bounds checking easy. I think that part of the code will need to be rewritten to be not only more efficient but also allow for easy expansion later to a larger window size and larger overall map.
With just a few changes, the overall map is now 100×100 and the viewing area size (window) is 20×20 tiles, where each square tile is 16 pixels wide:
This blog post is written to demonstrate the connection between an idea – a large, predefined map area being displayed within a smaller window – and the mathematical and computational thinking behind it.
The Ontario Mathematics Curriculum (Grades 1-8) defines 7 mathematical processes:
- Problem solving
- Reasoning and proving
- Selecting tools and computational strategies
As I so often observe with students who are working on their Scratch projects, all seven processes are activated during work in project-based, design-thinking based coding-based projects. In my mapping project, without question, each of these processes was engaged at various times during work on the project.
This curriculum also divides mathematical concepts and skills into 5 strands:
- Number sense and numeration
- Geometry and spatial sense
- Patterning and algebra
- Data management and probability
In my mapping project, I needed an understanding of and the ability to apply concepts & skills in three key strands: number sense and numeration, geometry and spatial sense, & patterning and algebra. I needed to figure out (and then write the code) how to determine the correct 2D pattern of 4×4 tiles to display from the 1D linear array of values, the correct placement of the 4×4 grid on the screen in response to the arrow-key input, and the proper overlay of the 4×4 grid onto the Cartesian coordinate system the defines the stage in Scratch.
Stay tuned for a later update about the bounds checking code as well as details of the collaborative inquiry with the teacher and his grade 5 students.
During the summer of 2016, I read this book (left) edited by Yasmin Kafai and Mitch Resnick. I was inspired by Chapter 4 (called Learning Design by Making Games). In it, Kafai described her study in which a group of 4th grade students spent one hour per day (over a six-month period) writing, designing and programming a computer game (using LogoWriter) for younger students to help them learn about fractions. One of the main conclusions of her study was that the students demonstrated a wide variety of approaches (top-down, bottom-up, and a mix of the two) to the complex task of game design. She also found that students learned things not only through the design task itself but also about design thinking as a concept.
Even though this study was about 25 years old, I knew the idea would still work with a modern class using MIT’s Scratch environment. I also knew it would be an empowering, design/computational-thinking project that would have strong connections to the mathematics curriculum content and processes. I was excited to see what current junior students could learn about design and computational thinking, and mathematics, from this kind of project. In early October 2016, I found a teacher and a Grade 4/5 class who would take part. Starting in January 2017, we partnered with a Grade 2 class in the school (whose students became the target audience for the older students’ computer games).
It was initially planned as a year-long, project-based learning task. It would also turn into an inquiry about design thinking. We did not provide students with a pre-made roadmap for design thinking. Instead, we chose the constructionist route; students were invited to build their own concepts of a design process throughout the project and, especially, at the conclusion of the project through several consolidation and reflection activities.
It wasn’t feasible for the students to work on their project daily as in the original study. It turned into one weekly, 80-minute session. The whole process spanned a 9-month period at the school and unfolded in five phases:
Phase 1: Preparation (October – December 2016)
Students in the grade 4/5 class developed basic literacy / competency programming in Scratch using creative learning and the MIT research-based approach utilizing “projects, passions, peers, and play.” Our objective was for students to take the time they needed to build enough fluency in Scratch programming so they would be ready for the design challenge of the fraction game.
The following video was recording in December, 2016, during Phase 1. This student was in the initial stages of designing his own Scratch version of the slither.io game:
Concepts such as variables and the Cartesian coordinate system are not part of the Grade 4 or 5 curriculum; however, most of the students gained a working knowledge of these concepts because they were essential mathematics needed to make the games and projects they wanted to create during Phase 1 (note: students had complete freedom to follow their passions and to choose their own projects in Phase 1).
Phase 2: Design goal & Empathy (January 2017)
Students learned the design goal (“design and write a computer game, using Scratch, that makes learning about fractions fun and easy for primary students.”). The students quickly realized that they lacked knowledge about the Grade 2 students. A 90-minute session was organized for the following week in which they proceeded to conduct interviews with students in the Grade 2 class. The Grade 4/5 class made observations of the Grade 2 students and their thinking about: 1. their current understanding of fraction concepts, and 2. what makes a computer game fun for them. After the 90-minute session, the Grade 4/5 students met as a class to debrief and compile a master document of observations, ideas, impressions, ideas and further questions. This information became the starting point for imagining what their game might look like.
This is page one of the document created during the debrief session (after the initial meeting time with the grade 2 students):
Phase 3: Cyclical Design Process (January – May 2017)
Students worked on their educational computer game product once per week for an 80-minute session. Each student has access to either a Chromebook, laptop or desktop computer. Once per month, the Grade 2 students visited and provided feedback on the developing games. In the image below, the older student is asking her younger grade 2 partner questions about what he thinks of the game:
Grade 4/5 students blogged about the feedback from the younger students and on their own plans for their game. I interviewed the older students about both computational and design thinking concepts. Regular sharing and discussion sessions took place between students, face to face, and in online environments (Google Classroom site, blogging site).
Assessment Strategies (during phase 3)
Assessment during this, the longest phase, was tied to success, to educational goals and the instructional strategies used. PBL demands a flexible, reflective assessment framework. Evidence of learning occurred through the collection and analysis of four key sources:
- Student interviews and regular conversations about projects / challenges / plans
- Observations of student learning via work / video / photography
- Creation of a product over a long term using regular social sharing structures
- Student reflections of the ongoing design process verbal / blogging / culminating
Grades were not assigned at any time within this PBL structure. Feedback, discussion, and peer collaboration were provided or supported in context and in situ that supported student learning and helped focus them in their pursuit of their projects.
One of our primary foci was to assess competencies:
- Critical thinking & analysis: Impact was evident daily during programming sessions in which design ideas were put into place with coding. Students were in a constant cycle of creative thinking (ideas for the game) → Problem solving (coding the ideas in Scratch) → critical thinking (fixing bugs, taking feedback into consideration and working into game).
- Creative thinking & doing: As noted above, impact was evident daily as students were in a constant cycle of creative thinking (ideas for the game) → Problem solving (coding the ideas in Scratch) → critical thinking (fixing bugs, taking feedback into consideration and working into game)
- Risk taking was observed in the context of “growth mindset” vs. “fixed mindset” behaviour, especially when facing obstacles. This attitude was modelled by teachers consistently and, over time, they were adopted by students. The learning culture was safe and open and made inviting to the sharing of all ideas. Developing an attitude towards making mistakes that was positive and constructive was an essential goal.
- Learning to learn: Students were “in control” of their projects. Each student was responsible for ALL aspects of the design cycle of their computer game. This required self-regulation and self-advocacy which was observed during feedback and project sessions. Students also engaged in a significant reflection and consolidation activity at the end of the project to promote (and assess) transfer of learning.
- Collaboration: Putting empathy and feedback to work is a hallmark of the design process and these students were expected to, and were observed, doing exactly that. Students in the Grade 2 class noted with satisfaction that their regular feedback was indeed taken into consideration by the Grade 5 designers. Additionally, face-to-face meetings with students were student-run and student-regulated and offered ‘just-in-time’ moral, technical and analytical support to produce their game projects. The web-based Scratch environment also supported collaboration between programmers.
- Communication: Aligned with collaboration efforts, communication skills and listening skills were expectations in this project. Regular and predictable structures were put in place to support students’ oral and written communication about their projects with not only each other but with other users online.
- Global Citizenship: Responsible and respectful use of technologies was practised and expected using online discussion groups in Scratch, student blogging and student feedback within a Google Classroom that was created to manage project elements. Issues that arose that involved respect and communication online were discussed and appropriate actions were taken to address and learn from any incidents that took place.
Sample artifacts (from phase 3)
Phase 4: Launch (June 2017)
Students prepared for a special “Launch Day” for their computer game product with the Grade 2s. This looked very much like the monthly feedback sessions but the excitement level was at maximum.
After Launch Day, students collected final feedback from Grade 2 students regarding their games, how well goals were met, and how well feedback provided in earlier sessions was implemented into the game designs. This Scratch studio still contains working copies of each of the fraction games (these were available, however, January – June, not just after Launch Day).
Phase 5: Consolidation & Reflection (June 2017)
After Launch Day, students were involved in two collaborative consolidation activities and one major reflection activity regarding the “design process” as it applied to making computer games and as it applied/applies to future contexts in which they might see a need to apply design thinking to solve a problem.
Below is a sample of four reflections written by Grade 4/5 students (using their blogging site) during the final reflection activity. They were asked to respond to this question: “How could you use the design process that we [students] created together [during the collaborative consolidation activity] to help you design something else in the future?
“I could use the design process that we created to design something else in the future because designing games are very similar to designing other things. I would first think of an idea for what I am designing and then I would carry out the plan that I thought of. After I have a rough idea of what I am going to be doing, I would start designing. Once I have a first copy of my design, I would either go to other people for feedback or make it better myself depending on the situation. Then I would use the feedback to make my design better and come out with the final product.”
“I can use this design process for celebrations, designing football plays, or rearranging basically anything! This design process is a lot like many other things in life. Think, get feedback, do, fix, get feedback, do, fix, and repeat. Doing scratch is basically a life lesson. It teaches you to look over, and keep fixing. The activities I mentioned at the beginning of this paragraph, are examples the follow the same format of do, fix, repeat. That is how the scratch design process is like designing many other in real life activities.”
“I could use the process to make a city. it could be real or made from blocks. I could experiment with the blocks, sketch a rough idea and think of what It will look like. I will see who is in the city and make and build buildings and houses to suit them. I will ask the people who live in the city about how they want it to look and where they want it to be. I will plan and sketch out the city and fix any problems I may have such as one building too close to the other. I will make my city better and expand it. I will test it and go through each building and ask the people a final time about how it looks. then my city will be officially open!”
“The reflection process that we created can be used in many ways other than just scratch. For example, designing a custom chair. First you experiment with creating the chair. Then you ask the person that wanted you to make a chair how they want it to be made. Then you can imagine the way it would look. After that, you enter the design loop. You create, then ask for feedback, and then you reflect. Finally, you make your last improvements and ask what they think about the chair. If they like it, you were successful! Good Job. But this comes to show how the design process can be used in many different ways. Many other things that you can use the design process on are designing parties, bedrooms, houses, buildings, your new coffee recipe, your frying pan, your table, your couch, your cupboard, your computer, your balloon, your book, your floor, your building blocks, and even a plastic bag! This comes to show how many things you can use this process on.
Okay… indulge me! Try this experiment:
- Activity #1 – Think of a topic in which you have a strong interest, and broad, expert knowledge/skill. Then, search the web and find three really good sources of information for that topic.
- Activity #2 – Think of a topic in which you have no interest, no knowledge and no skill (in my own case, I might choose ‘the history of rug making’ or ‘how to successfully run a large law firm’). Then, search the web and find three really good sources of information for that topic.
If you are anything like I am, or like the many students who tried this experiment, you felt quite confident in your choices for Activity #1 but then felt rather lost making choices during Activity #2.
I am also reminded of the times when I happen to listen to morning talk radio or read op-ed pieces. When the topics are education or learning related, I am almost uncontrollably critical, evaluative, questioning and reflective. For most other topics, however, I might easily find myself convinced of the author’s viewpoint because it sounds reasonable or well-informed. The truth is I really don’t have an accurate understanding of the full context or background behind many issues.
And it is not as simplistic as this in practice; I could pretty quickly plot my level of expertise in any topic on a continuum, ranging from ignorant to expert. My contention is that the more you know about a topic, the easier it is to ‘think critically’ about information related to that topic.
I have always felt regular pangs of sympathy when I have worked with students and tried to facilitate their efforts to evaluate information they find online. They usually faced this paradox: A student doesn’t know about ‘something.’ Student looks up information about ‘something’ online. Student finds endless information about ‘something.’ Student has great difficulty knowing if the found information is ‘good’ information or not. Frustrated, student uses the first few Google search hits for ‘something’ as their sources of information. Does this sound familiar?
So, the Catch-22 is that the more one knows about a topic, the better one can think critically about that topic, and the better one can evaluate the value of new information related to that topic. However, the opposite is also true and that’s a wicked problem.
So, in response, I have endeavored in the past to provide students with ‘strategies’ for evaluating information they found online. Here is an old screenshot of one such set of strategies that I first assembled around 2002:
You probably see a lot of problems with using this kind of an approach. After using this with my junior and intermediate students for a few years, I did see some good things that came from it but, primarily, it had poor results. The good thing was that the students were learning about some characteristics of information and knowledge such as currency and bias. But the bad thing was that this list made the act of critical thinking even more daunting for my students. How do they know if someone is an expert or not? How can they really be sure if the information is up to date? Or, how does one really figure out purpose or bias when students have neither context nor background knowledge?
So, I still don’t really have an answer but I continue to learn and try new ideas and approaches with students. So far, I have learner that:
- Learning to ‘do’ critical thinking, and learning about epistemological concepts, cannot happen in a few lessons or even in a unit. It is an ongoing, every day, all the time conversation. It’s a skill with many facets and dimensions like social skills or collaboration skills.
- The more you know about something, the more you can make connections to other knowledge, and the better you can be critical about new information that comes your way.
- Leading students through a series of engaging exercises and discussions about epistemology works better than trying to teach a set of ‘critical thinking considerations’ as displayed above. Fun exercises (such as ‘why no one knows REALLY knows how many moons Jupiter or Saturn has right now’ or ‘spot the fake web site’) can spark ongoing discussion about these ideas.
- Adults tend to have an easier time being critical about new information because they have lived longer than children, have more experience, made more mistakes, have more knowledge, and so on. Many adults have general background knowledge about a wide variety of topics that at least gives them something to think with when being critical about new information (even they are not experts in the topic).
- Thinking critically about information is ESSENTIAL for children to practice every day. One of my generation’s KEY skills was FINDING useful information. With today’s young learners, one of the KEY skills is thinking CRITICALLY about the information they (easily) find.
Other related things I think about:
- What if the ‘expertise’ a person has involves information that might be widely considered spurious (e.g., government conspiracies, alien abductions, moon-landing hoax).
- What constitutes truth when it comes to ‘news’ online? How can students navigate what is referred to as ‘fake news?’ Is the term ‘fake news’ just a trendy term meaning ‘biased news?’
I’m looking forward to learning your critical thoughts and ideas about this post! 🙂
I received an email from a teacher colleague last week and it contained a single sentence–a question: “I wonder if you might give me your definition of modern literacies?”
I was intrigued, not only by the question but also by the reason behind asking it (which she explained in a later email). In any case, I did have some ideas about this but I never really worked it all out and wrote it all down. After writing back to her, I started to look up other people’s ideas and definitions and found a wide range of explanations. I find the topic of literacy and media, old and new, fascinating.
So here is what I wrote back. (Please comment at the end of this post to discuss. I would love to hear your ideas and thoughts on this.)
When I think of a child who is developing literacy, I think of him/her as developing competencies in both consuming and creating information in different media. By competency, I mean that students are making meaningful connections to their current knowledge and thinking critically about information they are consuming. Likewise, by competency, I also mean that students are communicating clearly when relating their ideas (expression) and effectively considering the needs (and characteristics of) the target audience(s) for the information they are creating.
I think the word literacy could be used to describe competency at different levels. For example, one could say any of these three things:
- How well do you use social media to share and learn? (How literate are you with digital media?)
- How well do you use Twitter to communicate? (How literate are you with Twitter?)
- How well do you use hashtags on Twitter? (How literate in hashtags are you?)
Regarding the idea of modern literacies, I think literacies involving media that are newer (e.g., YouTube, Twitter, Instagram, wikis, blogs, texting, email, etc.) one could discuss the development of literacy in each of these media and each could be considered a modern media, each with a corresponding literacy. There is certainly a fair amount of overlap of competency in each of these but I think there are also medium-specific competencies that are unique.
Additionally, I think the term modern literacies should be considered a relative term–what exactly it means would depend on the period of time or generation you are talking about. TV media would have been a modern literacy in the 1950s and 60s. When I reflect on the importance of media-specific literacies, I often think about a very well known (and well studied) debate that took place between Nixon and Kennedy in 1960. It was the first televised debate in the US. You can watch it below.
When watching the video, you can see how relaxed and healthy Kennedy looked, but Nixon looked thin and often very uncomfortable. There’s a good article from TIME called “How the Nixon-Kennedy Debate Changed the World.” This debate is an excellent illustration about how a medium conveys far more information than the raw information contained in the spoken words. People who heard the debate on the radio felt Nixon won. Those who watched it on TV thought Kennedy won. By 1960, 88% of households had TVs. Kennedy ended up winning the US election as we all know.
Where is the math in coding? As much as I think that the connections between coding and mathematics are obvious, I think that there is a process involved in noticing and noting when mathematical concepts are demonstrated–some are clearly in use in students’ code and are easy to notice; other concepts are also in use but are more difficult to identify. I have always liked to think that code is thought made concrete. One of the greatest benefits of students learning through coding is that their thoughts become concrete, visual, manipulatable, discussable, viewable, and so on. This single affordance of code written by students makes seeing the math and the thinking possible!
Assessment for / as learning
Being in a teacher role and finding the mathematical and computational thinking in a student’s code in the midst of a group of busy students is not a simple process. I think it’s a skill, but one that can be learned and practiced.
Moreover, being in a learner (student) role in the classroom and finding the mathematical and computational thinking in one’s own code is also a skill and one that is worth practicing, as well.
When the teacher identifies mathematical concepts at work in a student’s code, and takes the time to notice it and have a conversation about those concepts, that’s assessment for learning. When the student identifies mathematical concepts at work in their own code, and takes the time to notice them and have a conversation about them, that’s assessment as learning. Each of these strategies should drive further learning, exploration, tinkering, and reflection. Both of these kinds of assessment need to be active all the time and structures need to be put in place to support them. Quality assessment for/as learning do not happen by accident.
Finding the mathematics at work in student programs
Even to a beginning Scratch user (student or teacher), I think the following example from a project created by a grade 5 student called Marie (not her real name) is clear and compelling.
After a few sessions of playing with Scratch and learning how it works on a basic level, there was a student sharing session where she learned that Scratch can draw things with a pen. The class was challenged to draw two-dimensional figures using Scratch. She wanted Scratch to draw a triangle (that week, the class was also in the midst of constructing various triangles on paper with protractor, pencil and ruler). This is the first attempt by the student:
There is a good amount of mathematical thinking to notice and note here. Even though no triangle was drawn, the code clearly demonstrates that Marie:
- knows that the sum of the three angles of any triangle is 180°
- knows that an equilateral triangle has three sides of equal length and three equal angles, each 60°
- is trying to transfer the steps in her paper and pencil drawing strategy to the Scratch environment
Why didn’t it work? This did not need to be asked; Marie said this aloud to herself. But then, her mouse started to click the green flag over and over, faster and faster. Her screen looked something like this when that happened:
“Oh look! A hexagon!” Some students around her looked over to see what was going on. Marie then proceeded to change her code. Very quickly, it looked like this:
She had meant to draw an equilateral triangle but she managed to draw a regular hexagon instead. After a fair amount of excitement and sharing, I reminded her about what a student had shared during the one of the previous sessions about the repeat block.
Whatever the repeat block has in its mouth will repeat the number of times indicated. The result:
Repeat blocks and looping logic in code can be applied to various concepts. This example shows a geometry and spatial sense idea where specific regularity and repetition of line lengths and angles result in different figures. Let’s get back to the triangle. Marie was simply asked by her teacher after the discovery of the hexagon: Now, what’s going on with the triangle? Marie changed the 6 to a 3 in the repeat block:
So Marie and I had a conversation about her work. I asked: “Where are the three 60 degree turns. They have to be there because I see them in the code. What is going on?”** (see note below) This was enough of a prompt and an encouragement. Nothing was wrong with her thinking. But she realized pretty quickly that there was a difference between her drawing an equilateral triangle on paper and getting Scratch to draw one. Through some more conversation, she narrowed it down to something like: I am doing something extra when I draw it on paper that I left out in my code. Something was missing.
I came back to her about ten minutes later and saw that she made some revisions to her code and she had a protractor in her hand. She showed me something interesting. “I found the three 60 degree turns” she said. And there they were:
She explained that Scratch turns 60 degrees clockwise starting from whatever direction he was facing. Looking at the protractor, she could clearly see now that he needed to turn 120 degrees after drawing the lines each time. She changed the 60 to 120 in her blue turn block:
The great part of using Scratch as a tool through which students can learn concepts is that there is both a meaningful, logical experience in which a product was created as well as a safe, social component where other students or a teacher can have a conversation about the thinking and figuring out as it is happening.
“I’m going to write my blog post now,” Marie said. She knew that was always part of the process and a reflective blog post was a requirement not only for consolidation but also for later reflection during a future time when this experience could be used, transferred, incorporated, remixed, and so forth.
At the end of all this, I think I said something like: “Great! Can’t wait to read it. And I can’t wait to see what you do with the hexagon you made before!” Looking back at observations from the week before, not a single student in the class had accidentally created a hexagon when drawing a triangle using paper, pencil and a protractor. And I would be surprised if Marie did not know now, simply through hard play, that each interior angle of a regular hexagon is 120°.
This post was about Marie’s geometry project on Scratch as well as a few observations I made and conversations we had. But there was a whole class of other students exploring geometry through Scratch. Check out what Karanvir was doing with a right triangle:
** “Where are the three 60 degree turns. They have to be there because I see them in the code. What is going on?” — I am always learning how to best converse and talk to students during their thinking and figuring out. My biggest goal is to not do the thinking for them, and more: how to spark, encourage and pose good questions that provoke or prompt thinking in different directions. There would be a long list of ways to respond to Marie at this point. In my opinion, one of the worst would have been something like: “Oh look – I think you need to put 120 instead of 60 in for your turns. Try that and see if you get a triangle.” This could easily be seen as helping the student be successful. I get that. But the point of the whole exercise is that the student learns that a tool like Scratch can help them to think, experiment, play, share and discuss.
Thanks to Jonathan So for the provocation:
In my own mind, I prefer to think of my list as realizations that defined me as a teacher.
Teaching grade one made me (professionally speaking)
I have spent a total of six years of my career teaching grade one or a one/two combined class. My very first year of teaching was a one/two combination. I knew nothing. I learned many things in my BEd degree (for example, I had an exceptional P/J mathematics instructor!) but my training did not address how to teach children to read. And I certainly did not learn how to do it in my very first year of teaching. I had no choice but to allow the wide range of my students’ competencies and confidences drive my own professional learning with respect to what I had to do to support each one of them in their journey towards literacy. It also clearly demonstrated that I had to learn with and from other teachers and make a commitment to continuous professional learning. These values and commitments continue to shape my learning.
My children changed my teaching for the better
I can honestly say that I did not have a real understanding of the impact of school and teachers in a child’s day-to-day life until I had children of my own (two daughters). I am guessing that most teachers with children would say the same thing. My knowledge before children of my own was completely one-sided, teacher sided. This is not to say that a teacher without children will/can never know; there are ways to learn. But, having children, and living the parent role and being a witness to children attending school, informed my approach to teaching at a very basic level. Among other things, I think it underscored strongly the importance of empathy, listening, relationships, and student passions/voice.
Who is in control of the learning?
I admit it. In my early career, I feared losing control of my class. Not only in the behaviour sense but also in the learning sense (and, of course, now I know they are both completely connected). I planned all the learning my students would do in advance of the day making pretty much all the decisions about how concepts are best taught (and learned by students). Of course, that worked for a small group of my students but many had “problems” that needed more time, remediation, reteaching. Those students were having difficulty learning. Actually, no… they were having difficulty with my assumptions about how to best learn it! This was a hard realization to let take hold of me. But it did. I was creating problems that should never have existed. Now my mindset is a clear one of learning reconnaissance, iteration, feedback, and true informative assessment—what do students know, how does each child learn, what is exciting to each one, where are they coming from, how does each child proceed, how do I do things that respects how children learn, how do I interact and support learning in a culturally responsive way, how can I model growth and co-learn, how can we make things and talk about things with each other, how do I put them in the driver’s seat of their learning and their lives? It’s a long list of questions instead of a long list of assumptions. That’s the key. The reason my blog is called makelearn.org is a result of this realization. And Seymour Papert puts it nicely (see the quote at the very top). Then, when I read Bo Adams’s post a few years ago, I instantly loved his notion of one “C” to rule them all.
Project-based learning & constructionism
If the previous realization was the “what/who” than this realization is the “how” or the verb that causes the action of learning. How do we get there? Projects! Passions! Play! Peers! Making things. Reflection and discussion. Iteration. Growth mindset. Design. And so on. I still remember the very first PBL-based activity session with my students. It was unnerving and exciting but I knew it was the right way to go. Voice and choice were honoured. It was very inconvenient initially as I did the heavy lifting of connecting the curriculum to the student’s learning (so that I could write report cards). In time, we did that together – we looked at the curriculum together and figured out a learning direction together. We made the map together. We learned about how we would know if we knew. The responsibility was shared and expectations were high. But the students were in the driver’s seat. Sometimes I was a bit like a driving instructor, sometimes I was a curious (and very interested) passenger.
Curriculum – segregated vs. integrated
This realization is a result of the PBL and constructionist activities of my students. The current curriculum is designed and communicated specifically for the convenience of teachers (and reporting), not students. It is segregated. Everything to be learned is clearly pulled apart, domained, listed, ranked, organized, and so on. In the process, though, a lot of the meaning and purpose is pulled out, too. In my early career, I felt responsible for reintegrated the curriculum and trying to find ways to inject meaning and authenticity into my students’ activities. However, again, those were my decisions and my plans that were set in advance and it pretty much ignored student interests. No student voice. No real choice. The curriculum still IS segregated into different domains. But everyone knows that the real world and real interests don’t work that way. Real learning is authentic, meaningful, significant and, I think, should be project-based and connected at the centre to student interests and social justice. This is not new. Cross-curricular and multidisciplinary approaches are common. But official curriculum documents usually silo domains of knowledge. Wouldn’t it be interesting if a curriculum was written to be convenient for students and learning rather than for teachers and instruction?
“I wanted to make it play the theme from Star Wars.”
So began a Grade 5 student’s response this week when I asked her what she was working on with her micro:bit program. It was her very first session with it but she, and the rest of class, did have several other experiences in recent months making things with Scratch.
I recorded a video in which she runs her program for me; you can hear the theme.
She then went on to explain that she had recently learned how to play the theme from Star Wars on the recorder. She knew the fingering, the notes, and the length of the notes. Now, she decided to make the micro:bit play it. She showed me how she used the ‘play tone’ blocks to make the notes and set the length.
Here is the bit of code she made that plays the notes:
Three things made a strong impression on me as she told me more about her project:
- She came up with her own exciting idea to do something on the micro:bit and was given the encouragement and support to try it. She was passionate about the idea.
- She transferred her knowledge of playing the recorder to coding the micro:bit to do the same thing. This reminded me of Papert’s notion of syntonic learning in Mindstorms (although not exactly the same).
- She transferred her knowledge of making & coding in the Scratch environment to the process of making & coding in the makecode environment she was using.
And, there was a fourth thing that made an impression—the variety of projects by the other students in the class. By genuinely inviting students to pursue their own exciting ideas and passions for an initial project on the micro:bit, they were highly driven to see it come to life. In the span of about 45 minutes, and in the very first session, students made digital dice, a magic 8-ball, and music or message events tied to buttons. They were already talking about things they were going to work on at home.
If you have not yet read it, I highly recommend reading this article called A Different Approach to Coding written by Mitch Resnick and David Siegel. The 4P approach outlined in the article (and summarized below) is a tried and tested set of guiding principles that results in a higher level of engagement, motivation, exploration, and far more meaningful knowledge & skills being developed over time (I recently wrote about the kinds of knowledge and skills I would expect of effective coding to learn experiences).
[Updated July 2017]
I want to share my set of “coding to learn” outcomes. These are the things that I am looking for in children who are coding in educational contexts. These are the targets in my mind. To me, these represent the powerful learning potential in coding to learn.
“Coding to Learn” Outcomes
- learning to express their creativity using coding and technology
- learning to solve a variety of problems encountered in their projects
- demonstrating a growth mindset (rather than a fixed mindset)
- speaking mathematically to the computer/device through their coding
- making exciting, personal ideas come to life through coding (this serves as the prime motivator for students to learn, play and push their coding skills further every day)
- creating meaningful software applications rather than isolated chunks of code
- actively learning from, and sharing with, others (face to face & online)
- learning to visualize a process that accomplishes a task in their project
- learning, practicing and refining the design process
- reflecting on their thinking and learning in order to transfer to new challenges
- excited about learning and exploring coding and technologies on their ‘own time’
But where is the curriculum in all this? That’s probably a great topic for a different post but I do strongly believe that, for example, the ‘math curriculum’ could be completely integrated within a year long series of programming projects by students. I firmly believe that, within a constructionist philosophy, all crucial mathematical concepts could be built via effective coding experiences.
Over time, my approach to introducing coding, and the way my student use coding to learn, has changed. I hope it has improved. The way I measure my success is how strongly I observe the above “Coding to Learn Outcomes” in my students.
Below I have tried to describe, in a concise way, the progression in the way my past students have learned to code and learned through coding. At the beginning of my teaching career in the early 90s, I admit that I saw computer programming as a skill and as a separate subject. When we explored programming in my grade 5 classroom, that is how I approached it and how students saw it. Over time, I’ve made many changes to my philosophy and my practice in order to get to the potential outlined in my “coding to learn” outcomes.
Most outcomes are NOT evident or VERY WEAK
- Coding is approached like a separate curricular subject
- Coding is not understood as a literacy
- Taught as discrete lessons, teacher driven, skills based
- Focus is “learning to code”
- No integration with other learning, school activities, or students’ interests
- Coding tools chosen by teacher are designed for programming, not learning through code
- Teacher role is instructor and coordinates learning through series of lessons
- Students learn to code within a linear instructional design
- Assessment is based on coding quizzes and tests
- Sharing or remixing code is seen as cheating
Outcomes that are in evidence are WEAK
- Focus is still “learning to code”
- Mostly skills-based approach, series of lessons or assignments
- Coding not understood as a literacy or creative tool
- Lesson-based but some time for exploration, some choice
- Coding is a short unit, not integrated into other learning
- Some effort to make learning to code more meaningful beyond just a skill
- Use of coding tools with some effort to connect code to more meaningful things
- Teacher role is instructor but encourages some student-chosen explorations
- Some deliberate attempts to connect learning from coding
- Assessment based on quizzes, test, and projects
Most outcomes are in evidence and STRONG
- Focus is “coding to learn” rather than “learning to code” but both occur
- Coding is understood as a literacy through which ideas can be expressed
- Attempts are made to integrate coding activities into other learning and school endeavors but not to high degree (full potential is not realized)
- Student-centered approach, student voice and interests are valued
- Regular sharing of ideas and code is encouraged between students
- Choices for students, coding challenges, longer term projects
- Students are encouraged to solve problems together
- Teacher role is coach, modelling growth mindset
- Teacher reflects on expected outcomes vs. observed outcomes
- Assessment based on teacher observation and student projects
- Regular, deliberate attempts to connect learning and coding; learning through coding has authenticity to students
- Regular, deliberate attempts for student to reflect on coding, thinking, etc.
Most outcomes are STRONGLY in evidence and ROBUST
- Focus is “coding to learn” rather than “learning to code” but both occur
- Coding is integrated into other learning and school endeavors
- Coding is understood as a literacy through which ideas can be expressed
- Students engage in long term projects / inquiries of learning through coding
- Projects and programs arise from student interests and passions, teacher’s role is to help connect to curriculum expectations; student interest came first
- Regular sharing of ideas with peers and online discussion
- exploration and playing with ideas and code is actively encouraged and shared with peers
- Teacher role is coach, modeling growth mindset
- Teacher is co-thinker, co-coder, co-learner
- Teacher reflects on expected outcomes vs. observed outcomes
- Assessment based on teacher observations, conversations, interviews, student products, student surveys, and student reflections
- Regular structures in place to connect learning and coding (using coding literacy in other aspects of school activities, meaningful, authentic use is primary goal)
- Regular structures in place for student to reflect on what they are learning through coding experiences
Coding in education is once again gaining more and more popularity in education. There are now too many coding tools, online and device-based, to keep up with. There are so many choices now for students, teachers, or for anyone looking at using coding in education. Choice is great but it creates a new challenge for teachers – which tool(s) is best for my students?
But coding in education is special. It’s not just learning about loops, variables, objects and if…then statements. Coding to learn in education has a long history. But computer science and computer programming also has a long history. Often, they are getting mixed up and, I think, there is time and effort being wasted as a result.
Here are the terms again with an explanation as I see it:
- Coding to learn (constructionism)- the focus is on being creative, designing things, and learning concepts through the act of computer programming. Projects are coded in a social environment, ideas, problems, solutions are shared and discussed. The nitty gritty of the programming code itself is important, too, but not the primary focus.
- Learning to code (computer programming) – is a discipline and skill in which a human is creative and designing things, and puts together codes and symbols, in a logical, organized way, to instruct an electronic device what to do with input or data. The efficiency and structure of the code is paramount as is the program’s capability to complete the computing task(s).
Neither is better or worse than the other. And both overlap and are interrelated. The question I want to raise is: which one is the primary focus when students are coding?
Students are learning things through the act of programming when they code to learn. Students who are learning to code are learning to be adept at programming (e.g., good efficiency, algorithms, structure, design, readability, annotations, etc). I think BOTH will happen despite the focus, but I think educators need to think about focus all the time and understand why their students are spending time coding. I wrote about this a bit before in this post.
If the focus is coding to learn, then I think there are other considerations that must be made besides the focus. For example, is the tool students are using in sync with the focus? This is where I am seeing some time wasted. There are lots of educational coding tools available but there are few coding to learn environments. Lots of blockly or Scratch-like block code tools are great for providing options but often they are missing essential components that make the tool better as a learning and thinking tool. (Likewise, there are software development environments that are specifically designed to facilitate rapid application development and provide the essential tools a programmer needs.)
I freely admit that I am a Scratch chauvinist. I think that the Scratch environment, which continues to be free and has been online for many years, is the best place for students to be coding to learn. Why? Because it has built-in features that support tinkering, creativity, sharing, discussion, remixing, experimentation, exploration. It was designed from the beginning to allow for:
|tinkering and playing – the coloured code bricks are inviting to children, like LEGO they snap them together and try them out and see what happens. Bricks are groups according to their purpose, for example, blue bricks are for sprite movement or location, orange bricks for variable functions.|
|personalization – children can make their projects more interesting and meaningful by using their own images and sounds if they wish. Image files and sound files can be uploaded. Audio can also be recorded within Scratch if a microphone is available. Images can be edited within Scratch.|
|collaboration – Scratchers are not alone; they form a community of makers, tinkerers, artists, game designers, and so on. Projects can be shared and remixed by anyone in the community. Discussion boards are connected to each project and to every studio.|
In addition to these design principles, Scratch was developed to have a low floor, high ceiling and wide walls. This excerpt from Scratch: Programming for All explains these ideas:
Finally, one of simplest, but most important, features of Scratch is that it is a cloud-based tool. Users can create and save their work in within Scratch environment. And, because it is a cloud tool, students can access and work on their projects from any computer simply by logging into their account. This facilitates quick and easy access; that means that long-term, project-based learning is supported. Research I have read, and my own work with students over the years, has shown that “one-off” or isolated experiences with coding has almost no impact on student thinking and problem-solving and it is not meaningful to students. I have witnessed students working on long-term projects in Scratch—they care deeply about what they are doing, they think about it between sessions, and they are continuously engaged in this balanced interplay between creativity (getting exciting ideas about what they want to do) and problem-solving (making the ideas come to life in Scratch).