So, I have already started thinking about school next year. This past year has allowed me the opportunity and luxury to think about the changes I want to make as I step back into the class; not only in the physical look and feel of the classroom but also in the curriculum and the types of activities I will be teaching next year. I want to focus much more on bringing more creativity and collaboration to the classroom through a more deliberate use of project and problem based learning. This has been something I have been thinking about for awhile and I have, in truth, done some work already in bringing a more collaboration and 21st century style teaching to my classroom. However, I have been going back and re-thinking, re-planning and really, re-doing almost everything to help create a classroom environment that is rich in creativity, collaboration and inspires students to be curious and learn outside the box. So, I am calling this series of posts documenting this process, “Hacking the Classroom”. Some parts probably won’t seem as radical as the title suggests but to me, this is going to be a re-vamp of my entire library of units and year plans as I look to bring in many of the resources I have been finding. I hope you will join me and encourage me through this.
One of the areas I have been looking at including in my curriculum is teaching students to program or code. This has become a hot topic recently with a couple of videos coming out proclaiming the benefits of teaching students to write code. I’ve included a couple below:
Obviously there are opinions from both sides of the table and lots of good reasons for and against teaching students to program. Advocates for teaching programming state that it can:
- Learning to write programs stretches your mind, and helps you think better, creates a way of thinking about things helpful in all areas
- An accessible and enjoyable way for students to learn about applied logic
- A New Literacy – programming is a literacy that children should learn maybe not to the same extent as writing but being able to understand some programming can enable students to have a better understanding of a industry that is becoming an integral part of our lives. Coding is the language of the 21st Century and to be illiterate may mean children are hinder from participating in this new future.
- Jobs – The information technology sector is booming and there are many opportunities that companies are clamoring to hire for
- In addition to learning mathematical and computational ideas (such as variables and conditionals), they are also learning strategies for solving problems, designing projects, and communicating ideas.
- Students begin to begin to see themselves as creators and designers
The other side isn’t exactly negative about teaching programming to students. They just want to bring a dose of reality to those are clamoring for rapid integration of programming classes and teaching.
- It’s a really bad reason to set educational policy. General childhood education isn’t, and shouldn’t be vocational training.
- Teachers are not prepared to teach programming as, for many teachers, programming itself is out of their grasps and training.
- Computational thinking involves conceptualizing, not just coding and learning the syntax of a language, and it’s more about the ideas, not the artifacts which the various learn to code sites do not do successfully enough to reinforce learning and deep understanding.
Probably the best arguments for not teaching coding, or at least to be sure that we are carefully and deliberating looking at the effect of teaching students coding, come from Jeff Atwood of the Coding Horror blog. In his post, “Please Don’t Learn to Code”, Jeff Atwood points out that programming is important, in the right context. Being skilled at writing is important for any job but not learning the various subtleties of programming will not hurt students in the long run. He also points out several other reasons stating that,
The “everyone should learn to code” movement isn’t just wrong because it falsely equates coding with essential life skills like reading, writing, and math. I wish. It is wrong in so many other ways.
He also states that it:
- It assumes that more code in the world is an inherently desirable thing. In my thirty year career as a programmer, I have found this … not to be the case. Should you learn to write code? No, I can’t get behind that. You should be learning to write as little code as possible. Ideally none.
- It assumes that coding is the goal. Software developers tend to be software addicts who think their job is to write code. But it’s not. Their job is to solve problems. Don’t celebrate the creation of code, celebrate the creation of solutions. We have way too many coders addicted to doing just one more line of code already.
- It puts the method before the problem. Before you go rushing out to learn to code, figure out what your problem actually is. Do you even have a problem? Can you explain it to others in a way they can understand? Have you researched the problem, and its possible solutions, deeply? Does coding solve that problem? Are you sure?
- It assumes that adding naive, novice, not-even-sure-they-like-this-whole-programming-thing coders to the workforce is a net positive for the world. I guess that’s true if you consider that one bad programmer can easily create two new jobs a year. And for that matter, most people who already call themselves programmers can’t even code, so please pardon my skepticism of the sentiment that “everyone can learn to code”.
- It implies that there’s a thin, easily permeable membrane between learning to program and getting paid to program professionally. Just look at these new programmers who got offered jobs at an average salary of $79k/year after attending a mere two and a half month bootcamp! Maybe you too can teach yourself Perl in 24 hours! While I love that programming is an egalitarian field where degrees and certifications are irrelevant in the face of experience, you still gotta put in your ten thousand hours like the rest of us.
I agree with several of his points. Having worked as the founder of a startup for the past year, I know how difficult learning to program effectively is and that you do need to put the time in to learn to do it as Malcolm Gladwell points out in his book, Outliers. The key to good programming is knowing the proper way to set it up and putting in as little code as possible to do the job. And that it needs to be done in context with a plan, a vision and that it needs to be focused on solving a problem that exists and that can be verified. Without a strategy and vision in place, your house of dreams will quickly tumble. You will hear many programmers and startups talking about this.
Where I disagree is his overall argument stating that,
I suppose I can support learning a tiny bit about programming just so you can recognize what code is, and when code might be an appropriate way to approach a problem you have. But I can also recognize plumbing problems when I see them without any particular training in the area.
In my Grade 4 class next year, I will be teaching students Animals and their Habitats and Weather. In my past years as a teacher, I have taught students Space, Rocks and Minerals and Building. However, I do not expect the majority of my students to become Zoologists or Meteorologists. There is a very slim chance that my students will ever be astronauts (though they may explore space as scientists), Geologists or Architects. But we still teach these subjects because the underlying concepts, methods and ideas are important in building a foundation for students to grow and build on. These are important ideas to share with our students. And if we introduce our students to one thing that ignites their passion and inspires them later in life, then it is worth it. Not all my students will grow up to write fiction for a living. But we teach all of our students to write creative stories because the underlying skills are important for all aspects of life and, who knows, there may be one student, who takes those lessons to heart and has their passion for writing stories blossom into a career. As teachers, it is important to constantly be looking for opportunities to help our students find their voice, their passion and something they can be good at. It is our job to introduce students to ideas and concepts they may not need in their later careers but can underpin and build their understanding of the world they live in.
I think teaching programming in schools serves a purpose and should be part of what we offer to our students, if only because there are ideas and concepts that come with teaching programming that are important in this rapidly changing world where software is an integral part of everything we use. And if it inspires even one student to find a place where they can excel and participate, then I think that is definitely worth it if it is done properly and with deliberate thought as to how to implement it so it is more than just a novelty.
So, I guess that is a long-winded way of saying that next year, I am looking at bringing in programming into my Grade 4 curriculum and I have been looking around for some resources to do this. Edsurge has a great section on their site with an entire list of all the sites available to help students to learn to code. While there are many resources available, both free and pay sites, the resources I am looking at are Scratch, Tynker, and Code Club.
Created at MIT, Scratch popularized visual blocks as a way of learning programming. But don’t let the easy interface and cute graphics fool you–users can make and share anything from simple animations to fully-fledged games (Edsurge). This is the site I first learned about and easily probably the most recognized platform. I used it a little last year with one of my students who really enjoyed it. A nice bonus is that it has been recently upgraded so that it can be used through the browser instead of having to download and install. The only downside is that you need to sign up and register students with email addresses which may be an issue. There are a number of resources already prepared for it to help teachers with guiding students through use of the site which you can get from the site itself or in other spots including this nice set of tutorials from Wesley Fryor:
Or these sites, some of which you need to pay for:
- Super Scratch Programming Adventure!: Learn to Program By Making Cool Games
Inspired by Scratch, Tynker has a dashboard to allow teachers to create a more structured way of teaching code with visual blocks. Includes assessment, classroom management, lesson plans, and a built in tutor. Free for schools (Edsurge). I just registered for this site but I am already very keen to use this. What I really like about this site is that it is very much geared towards teachers. From the teacher dashboard area to keep track of students work and provide assessment to the ability to add students without needing them to have emails, this site looks like a good place to start for teachers. Very guided with some tutorials and step by step instructions. You can even import projects from Scratch.
UPDATE: So I have been using Tynker for a little bit with the kids and, apart from a little UI confusion in various elements, the kids have really been enjoying the site. However, they have been also been moving very quickly through the lessons and are almost done all the levels. So, I did a little checking into the cost of upgrading and realized that it was going to cost $50 dollars per child! This when a lot of classes and schools are struggling to raise money for necessities. When emailed, the tynker crew didn’t seem worried by this leaving me to wonder which schools could afford this program and would be willing to pay for this. The subscription also includes the ability to make your own lessons. So, we will probably be moving off of this system as soon as all the students are done. It’s too bad because even though I like Scratch it was nice having a system geared towards teachers.
Code Club is a nationwide network of free volunteer-led after-school coding clubs for children aged 9-11. We create projects for our volunteers to teach at after school coding clubs or at non-school venues such as libraries. The projects we make teach children how to program by showing them how to make computer games, animations and websites. Our volunteers go to their local club for an hour a week and teach one project a week. We write a new set of projects every term. Each term the students will progress and learn more whilst at the same time using their imaginations and making creative projects. Terms 1 & 2 will use Scratch to teach the basics of programming. Term 3 will teach the basics of web development using HTML and CSS. Term 4 will teach Python and so on (Codeclub). This is a fairly new site on the scene which I just discovered. It brings in elements of Scratch with real programming added into the end of the term. This program is meant for teachers or volunteers interested in creating a club but the way it is set up could make it practical as an in-school program.
So for next year, I am planning on starting with Tynker to provide a good basis and an easy entry point for both myself and the students. Once we have gotten comfortable with that, we will move into the curriculum for Codeclub as that will allow us to integrate both Scratch and some real programming in a guided environment. I think the students will be really excited by the program and have tons of fun creating interesting and be challenged. The interesting part will be to see what happens when we get into some real programming. After reflecting on it after next year, I may need to need to move it into an after school program for those who are really interested but for this year I will try it and see where it goes. Wish me luck!