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).
Dear Apple, Google & Microsoft:
I am a teacher and I like it when technology empowers my students, gives them voice, and helps them to create, design, share, and discuss. Your tools are great and they are used in education to do all of these things. Thank you. Sometimes the tools are free and sometimes they have to be paid for. Fair enough. It’s business. And the competition between you will keep the tools sharp, useful and relatively cheap. I hope.
I’ve even checked out and tried out many of your certification programs that you offer for your tools. I have certifications from all of you but I decided early on not list them; I didn’t want to be, or appear to be, aligned or biased towards any specific tool or company. Students and learning are my focus. Nevertheless, I am tempted to list them, sometimes, when I look at other educators’ social media profiles with strings of certification letters. It shows that they have met a certain standard and now, other people know it, too.
Don’t get me wrong. I am extremely pleased with the availability of your various high quality tools, both hardware and software, for my students to use. And I don’t for one minute think less of any teacher who achieves and/or lists certifications from Apple, Google and Microsoft in their profile. As I just said, I have a bunch of certifications, too. My concerns don’t rest with my colleagues at all. My concerns rest with three specific issues I have:
- a feeling of ‘being used’ as part of advertising
- losing sight of what really matters
- that one company’s technology has everything you need
I know ‘being used’ might sound a little harsh… and it is probably hypocritical, as well, since I have certifications from all of you. But I am getting more and more suspicious of these certifications. Are they really helping teachers to learn more about how technology can be used to empower students and transfer agency to them? I read the rationales in your ads about your certification programs and I wonder. The ads say things like: “You’ve spent the time growing your skills, now get certified to be recognized for the work you’ve done” (1) or “As an Educator you can build skills on iPad and Mac that directly apply to activities with your students, earn recognition for the new things you learn, and be rewarded for the great work you do every day” (2) or “The Microsoft Certified Educator (MCE) certification validates that educators have the global educator technology literacy competencies needed to provide a rich, custom learning experience for students” (3).
But in every certification process I have participated in, I’ve never been asked to critically compare similar tools from different companies in terms of their efficacy with students. I’ve never been asked how I could combine tools from different companies to best meet the needs of students. I’ve never been asked to explore in-depth how a tool, combination of tools, could help students think, learn, and share. (Interestingly, there was one certification process where I did do all of these things quite regularly—but that was in university.) So, I cannot help but feel that these certifications (and the constant encouragement to share them) are more about business competition and advertising and less about empowering modern learners.
What is most important in education is learning. What helps kids to learn better? What barriers are in the way of learning? What empowers kids? To me, these are the essential questions and these are the things I find that I have to constantly keep reminding myself of. As cool as Google Expeditions are, for example, one must ask how specifically it will help kids learn better? I’m not saying that it will or it won’t… My point is that one must take care not to lose sight of what really matters. I admit it; I am guilty of it all the time… and, all the time, I have to work hard to center my thinking on learning, and then surround myself with these essential questions: What helps kids to learn better? What barriers are in the way of learning? What empowers kids?
I am always asking and thinking about three questions regarding the use of computer programming as a tool for (co)learning, (co)thinking, (co)designing, and self-expression in schools. Within educational contexts, my questions are:
- What is the promise of coding to learn?
- What is the promise of learning to code?
- How can the promise of each be be realized?
This post is in no way an in-depth look at each of these questions; in fact, exploring these questions amounts to a significant chunk of my on-going professional learning in a career-long journey that started with this thesis.
But, recently, I’ve been thinking far more intently about the role of reflection applied to the development of coding projects by students and how reflection might enhance learning and transfer of learning. I have made observations of students coding; I have interviewed students in the midst of designing and realizing their projects; and I’ve reflected on my own experiences with computer programming over the years.
I’ve noticed that after solving problems that arise in coding projects, children often forget, or don’t attend to, the details of their thinking process when looking back at the program. While it is true that the result of their thinking process is captured in the product they created, how can we (and they) gain insights into the process?
What I have also observed, and felt as a programmer, is that the kind of reflection I am talking about is not helpful at the time of solving the problem. Keeping notes about how and what I am thinking when I am solving a problem would interfere with thinking itself! Any extra descriptive information I might want to capture in the middle of coding is usually highly practical (for example, I might want to make some notes about how a list of variables is being used in a function or I might want to write a note to myself in the future when I start to work another part of the program).
But one of the promises of learning through coding is the development of creative problem solving competency that can be transferred and applied to new contexts. That is, it is not enough that new knowledge and skills are learned… one needs also to learn how to apply the new knowledge and skills in the future. This is a paraphrasing of Papert’s Principle: Some of the most crucial steps in mental growth are based not simply on acquiring new skills, but on acquiring new administrative ways to use what one already knows.
So, this is the focus of my question. How do we as educators help, support, encourage, facilitate, ensure that learners are acquiring new administrative ways to use what they already know? I am thinking reflection could be a powerful strategy–placing value and taking the time to really think about what was learned or figured out… thinking about how problems were solved, what mistakes were made and what success were had?
In my role as an educator and facilitator, I’d been reading these reflections and having conversations with students and looking to highlight any of the following:
- creative process
- design process
- problem solving, testing, debugging
- generalizing strategies & concepts
- programming repertoire
- code portfolios & remixing
- learning transfer
What if an appropriate reflection is attached to the product, either in contextual notes within the code itself and/or by creating a parallel product such as a blog post in which reflective thoughts are captured? The criteria behind “appropriate” I think is the most important part of this and this would vary depending on quite a number of factors. I am currently facilitating a lot of 9-10 year olds working on long-term coding projects in Scratch. So, perhaps some reflective questions might be:
- Tell the story of your project. Why did do it? How did the ideas for parts of your project change after you started?
- How would describe the design process you used in your project? Imagine you are telling a friend about it who is interested in working on a similar project.
- Tell the story of how you solved problems that came up in your project? Try to name the problem and describe why it was a problem. What was the process you went through to go about solving it?
- What new ideas, questions or goals have come about as a result?
- Create a timeline, description, process steps, of the creation of your project from start to finish?
I continue to think about the role of reflection and how to incorporate reflection with these students in way that is actually useful to them. I’ve been rereading a number of resources about reflection in learning within this new context. Here are some I have been looking at; if you have some great resources or you have ideas, comments or responses to what I am thinking about in this post, please comment below.
Some learning transfer and learning reflection resources I’m looking at:
- Learning through reflection from Learning and Leading through Habits of Mind (2008)
- Learning By Thinking: How Reflection Improves Performance (2014)
- How Planning and Reflection Develop Young Children’s Thinking Skills (2003)
- Scaffolding Student Reflections + Sample Questions (2015)
- New frameworks for studying and assessing the development of computational thinking (2012)
- Skill may not be enough: The role of mindfulness in learning and transfer (1987)
- Learning about Learning enhances performance (2001)
- Transfer of Learning (1992)
I did a little research because I didn’t want to assume… But, as far as I can tell, many school districts in Canada and in the United States call a group of educators writing together a “writing team.” They assemble writing teams to write curriculum resources for teachers, documents that promote best practices in assessment, instructional design, effective teaching, summaries of new research about educational practices, and so on. I’ve written on a few writing teams.
My question is this: When is a writing team appropriate and when is a curation team appropriate? By the way, I’m not sure any district has ever formally organized a curation team… I just made that term up. But, in any case, it would seem to me that, there will be contexts in which the best resources are the most current resources or newest resources. If innovation is the goal, then a static resource might not cut it.
Some might argue that curation is often one component of what writing teams do. They review research and summarize what is most applicable to the educational practice being addressed. That might be but my idea is different. My idea is the idea that the team is committed to an ongoing project of specific knowledge curation, and not a big one time creation.
My point is that I think there should be careful thought put into the nature of the knowledge that is to be created. When is it more appropriate, or necessary, to have static knowledge created and when it is more appropriate for the creation of resources that are dynamic, that is, updated, edited, and improved on a regular basis? I would love to see three kinds of knowledge creation teams in action: writing teams, curation teams, and hybrid teams.
For example, the thoughtful review and presentation of careful, painstaking, peer-reviewed research into certain educational practices might be more suitable for writing teams. I think the Ontario Ministry of Education’s collection of monographs called the Capacity Building Series is an excellent example of a very useful (yet static) set of resources for educators.
Much of my own professional work in education involves technology and new innovations and new ideas are shared daily. Let’s say a school district wanted to assemble a writing team about using coding in the classroom to support learning and thinking. This might be a job for a curation team. Instead of meeting for several days or weeks to write a single resource, the team would meet regularly through the year for short periods of time and curate (review, select, annotate, organize, share) resources on an ongoing basis.
I think it’s harder to find dynamically created/curated resources because they don’t look like traditional knowledge. I think a wiki is the killer app for ongoing knowledge creation but I’m not sure about curation. There are lots of curation tools (for example, storify) but perhaps the choice of curation tool is bound to the context and purpose of the content.
I think there is great potential for a hybrid team to write/collect a solid core set of resources and then to be bound by an ongoing mandate to curate resources… to keep improving, adding to, culling, and annotating so that they are as useful, practical and as fresh as possible.
This the third update about our year-long game design project in grade 4/5. The game designers have one goal:
Design and code a game in Scratch that makes learning about fractions fun and easy for younger students.
The target game-playing audience for this project are grade 2 students. You can check out the progress of the games at any time by visiting our Fraction Games Scratch studio:
One of the books I have been reading this year is called Launch: Using Design Thinking to Boost Creativity and Bring Out the Maker in Every Student and I am attempting to see how that design thinking approach (lower left) can inform what I am doing with these students this year. So far, I continue to see many similarities to other design cycle and learning frameworks I have found useful, the simplest of which is Mitch Resnick’s Kindergarten approach to learning (lower right):
I’m planning to devote a future post to reflecting on the learning design thinking aspects of this project.
On March 2, it was the grade 2 students’ turn to visit the grade 4/5 students (see Update 2 to read about when the grade 4/5 students visited the grade 2s). This time, the game designers sought feedback from their target game-playing audience. Even though the games were unfinished, the grade 2s provided their feedback about what they saw and other (as yet unimplemented) game ideas explained to them by the grade 4/5 designers.
There were three basic questions the designers had (but there were many follow up questions during the actual meetings):
- What do you think of the game so far?
- What makes a computer game fun?
- What would you like to see in the game I am making?
Grade 2 students met with two different game designers and provided their thoughts, impressions, ideas, and suggestions. Immediately following the session, game designers wrote a concise blog post to capture the feedback they received. This information will be reviewed before they begin their next coding session.
Grade 2 students are providing feedback again on their next visit in early April. Stay tuned!
Resources & Links
- Initial post about this project
- Learning Design by Making Games (Update 2)
- About our Project (from project blog)
- Student blogs
- Fraction Games Scratch Studio
- Learning Design by Making Games article by Yasmin Kafai is contained in Constructionism in Practice: Designing, Thinking, and Learning in a Digital World
This is my second post about a project called Learning Design by Making Games and is directly modeled after the research of Yasmin Kafai. An overview of that research and this project is in the initial post. Other resources and links about this project can be found at the end of this post.
This update finds our students nearing the end of the second month of coding. A very big difference between Kafai’s research and this project is that we are only coding officially about one hour per week. Students are invited to code on their own time as well and many certainly do. In Kafai’s research, the students were coding their games one hour per day!
Nevertheless, students are making progress on their projects. A Scratch studio was created to contain all projects and allow easy access by the students in the class and anyone else online who is interested. If you take a look, keep in mind that all games are unfinished and will remain that way until June.
On February 1, the grade 4/5 game designers went to visit a class of grade 2 students, the target audience for the game. They worked with concrete materials together in small groups for about 45 minutes. There were a number of questions the grade 4/5s had planned to ask the younger students:
- What do the grade 2 students already know about fractions?
- What are their game preferences? What kind of games do they like playing?
- How did the grade 2 students work with the materials?
- What did the grade 2s find challenging?
- What surprised you about your interactions with the grade 2s?
The last question above became a follow up question because one of the themes of the debrief session about the grade 2 visit was that the game designers were often surprised at how quickly the grade 2s learned things. We took notes during our debrief session about the visit. On March 2, the grade 2s will be visiting the Grade 4/5 class to take a peek at the game design/coding progress and provide feedback.
Resources & Links
- Initial post about this project
- About our Project (from project blog)
- Student blogs
- Fraction Games Scratch Studio
- Learning Design by Making Games article by Yasmin Kafai is contained in Constructionism in Practice: Designing, Thinking, and Learning in a Digital World
Once again, I was inspired and prompted by my friend Matt Oldridge into thinking and writing. This time, I found myself considering flow again. I wrote about this a few years ago but, since then, I have learned more about constructionism and more about learning in general. I’ve still so much to learn but Matt’s prompt today brought me to an epiphany:
Powerful, joyful, natural learning induces flow.
Seymour Papert always strongly argued that learning is an innate and powerful instinct in humans, especially children. His research, theories, and the learning & thinking tools he designed for children always sought to be in harmony with the way children learn naturally. When reading Papert, you hear him expressing, again and again, the idea that education and learning are two very different things. And, that learning should always be the goal.
So, my mid-week morning epiphany is this: The conditions Mihaly Csikszentmihalyi describes as necessary for “flow” are the “look fors” for powerful (joyful and natural) learning as Papert often described. Powerful, joyful, natural learning induces flow.
That is, whenever I have witnessed powerful learning in students, or experienced powerful learning myself, a state of flow was achieved by those ‘doing’ the learning. I’m still wondering if it works the other way around: when one is experiencing flow while engaged in an activity, is powerful learning always happening at the same time? What do you think?
At this point in the information age, our personal digitals tools, data and valuable resources are often protected by a username and password combination. Maybe this will change in the future but currently, the task of remembering dozens or hundreds of passwords is a challenge.
Many people I know use one, or just a few, passwords for all of their accounts. While easier to manage, the well known problem with this approach is that if someone with malicious intent discovers one of those passwords, it will unlock a long list of your accounts.
I’ve never liked writing down my passwords or using special software to securely organize my passwords because they could be lost, they have to be kept up-to-date and managed, and possibly they could be stolen (which means the thief has access to everything).
The strategy that I use, and one that I shared last week with a teacher and his students, is the approach of using an algorithm so that a unique and strong password can be generated on an as needed basis for any web site you are using. Then, you will only ever need to remember one thing, the algorithm, which is the process of remaking any of your passwords… months or even years into the future.
To illustrate this point, let’s create a very simple algorithm to generate passwords. In this example, the result of each instruction appears in bold after the instruction (we will use an account you might have on google.com in the example below)
- Write in lowercase the first, third and last letter from the unique part of the domain name (in this case the “google” part of google.com):
Password so far: goe
- Count the number of vowels in that unique name and add a zero in the tens column if it is only one digit; write the two digits:
Password so far: goe03
- Take what you have written so far and write it again
Password so far: geo03geo03
That is now your algorithmically created password for your account at google.com. Using the above algorithm, if you had an account on amazon, your password is: aan03aan03. You might be thinking, “I have five Google accounts! They’d all be the same!” In that case, see below.
I wouldn’t recommend the above algorithm. It’s not a very strong password. If you are going to use the algorithm method, you should create an algorithm that builds a very strong password.
Let’s say you want a password that is 10+ characters long, has lowercase and uppercase letters, numbers, and symbols. Again, let’s use the google.com example and say your username/email on that account is email@example.com. Here is an algorithm that produces a strong password according to https://password.kaspersky.com/
- Write in lowercase the first, third and last letter from the unique part of the domain name
Password so far: goe
- Count the number of total number vowels in the that unique name. Find that number on the number pad on your computer keyboard. Push shift and hit that number and the one after to add two symbols (if there are more than 10 vowels, return back to one again)
Password so far: goe#$
- Count the number of vowels in the that unique name and add a zero in the tens column if it is only one digit; write the two digits
Password so far: goe#$03
- Write the first three letters again of the password so far but in reverse order and in uppercase
Password so far: goe#$03EOG
- Take the first three letters of your google username and add to the end
Password so far: goe#$EOG03exa
According to https://password.kaspersky.com/ it will take a bruteforce attack about 33 centuries to crack that password. Not bad…
If anyone figures out, discovers, or somehow steals this password, then they can only get into that account. If they try it with any other account, it won’t work of course because it is unique for that site and account.
Neither of these is close to the algorithm I use… there are lots of ways to look at letters, numbers, keyboard, symbols, and so forth. And it’s fun to make one up that your like and that works for you. Just make sure that it’s not too complicated or else you might not be able to remake the password in your head.
And if remembering a somewhat complicated algorithm seems more daunting than remembering a few passwords, just remember that that is all you will have to remember once you start to use it and after you change the password on your accounts. And, you’ll have a unique and strong password for every site/tool you use.
One of my favourite chapters in Constructionism in Practice was written by Yasmin Kafai: Learning Design by Making Games (pp. 71-123). She was interested in learning more about the development of children’s design strategies within the context of creating an authentic artifact – a computer game.
Children were asked to design and create an interactive computer game that made the learning of fraction concepts fun and easy for younger children. It was a six month project that was self-directed, personally meaningful and cognitively complex. Students not only learned about the concept of design from the management of their projects but also learned through design about teaching, feedback, learning, mathematics, psychology, and problem solving. One of Kafai’s main research questions focused on discovering how students overcame various problems they faced over the months as they cycled through the many iterations of their interactive computer games.
I was inspired by this study and found a willing teacher collaborator and class of 23 students to embark on our own journey of design, creativity, and coding. In our case, a class of grade 4/5 students in Brampton are using Scratch to design their interactive games. As the winter break approaches, they are coming to the end of the initial phase of the project: building up basic a literacy and proficiency in Scratch. Students have been engaged in creating games or other programs over the last two months. The boy I highlighted in my previous post is one of those students.
In the new year, they will be challenged with a complex task that closely mirrors that of Kafai’s study: designing an interactive game using Scratch to make the learning of fractions easy and fun for younger students.
Like Kafai, we are interested in seeing how students tackle the design problems and we are looking forward to regular sharing and discussion sessions between students. There will be monthly visits from younger students in the school to try out early versions of the games and provide feedback. We are also interested in observing and hearing student reflections regarding the development of their computational thinking over the next six months. We will be helping students make connections between their projects and the many mathematical processes and curriculum expectations that also will be involved.
I will be posting roughly once per month about this project. Stay tuned…
One of my blogging goals is to share more often about coding to learn experiences of the students I am working with at various schools. Case in point, on Friday, some grade 5 students were hard at work during their fourth session (our first was October 3) of game design using Scratch. In January, they will be challenged with a larger game-design project but, for now, they control all parameters of their game.
One student was starting to program a new game inspired by the slither.io growing snake game. He had the user interface complete (arrows controlled the movement of the snake) and was starting to work on how to make the snake grow longer after bits of food were consumed. (A copy of his project as it was on Friday is here.)
During the 60 minute session, I checked in with him four times. I was well aware of what he was trying to accomplish and sometimes we discussed new ideas or how certain blocks might work within the context of his goal. I recorded some video during the final conversation we had.
He is still in the early stages of designing and coding his game but he figured out a number of conditions needed to make the snake grow in size and have the body follow along in the direction the head was going. In so doing, he talked about variables, Cartesian coordinates, decimal magnitudes, and various problem solving strategies.
The reflections he shares in the video below illustrate quite well what I often see when coding is used by students in a meaningful and powerful way, over the long term, and used as a means to learn concepts and visualize ideas. You can hear various mathematical concepts and processes that were applied simultaneously and all within the context of a single goal, which he set for himself, during this session.