I Did the Hour of Code, and then I Did Three More Hours of Coding

By: Tony DePrato | Follow me on Twitter @tdeprato

Every year I take a few minutes to express slight annoyance at “The Hour of Code”. In my professional life, I will support any teacher wishing to participate. However, if anyone does happen to ask my opinion, I would explain to them my reservations about the event.

This year I want to take a new approach. Let’s skip the part about how an hour of coding is not a practical amount of time to plan, draft, built, and evaluate a creative solution or idea. Let’s move beyond the fact that the majority of the programming environments children are using are telling them what to do and how to do it (because they only have an hour). Finally, let’s completely ignore the potential disappointment students will face when they decide to actually try and build something on their own.

The first important fact I would like to address is that I have taught children as young as  grade three how to code something meaningful. It was a slow, and often painful process, that seemed to be futile. However, the children always surprised me, and after 6-8 hours of work, there was usually a working program that connected to an idea. I would like to stress that I am aware many students are not able to simple open an IDE and begin creating the next Mario Kart. Coding/Programing is tough. It takes practice. Students need to learn and evolve. Doing an Hour of Code ONCE to get them going is fun, and I would support that.

Why Are We Still At An Hour of Code?

My rant this year is on this simple question: why do we still just have an hour of code?
It seems like since many schools have been doing this for a few years that there would be another, possibly required, track that regular participants would need to follow.

For example, Three Hours of Code. Or maybe Two Hours of Code, the Wrath of Python. Anything beyond on hour for those who understand the mission, and have mastered an hour of code, would be preferable.

Maybe if it is the first time coding with students, schools do one hour, and join the movement.

Since those schools have a full year to prepare for the next challenge, how about level it up a bit? Why wait all year to just do one more hour?

If we are saying the mission of the project is to get students interested in coding, then shouldn’t the continued mission require more  levels of participation?

An Hour of Code year-after-year is not a going to make an impact.

Are You Really Serious About Coding and Project Based Learning?

If you are serious about working with young learners, then you need to find programs like AppJamming. These types of contests connect all the aspects of the Systems Life Cycle , to the student experience. Working with a program like AppJamming allows students to experience the various phases of creation from the idea to the end-product.

Makerfaires are another outlet for getting students involved in true project based learning initiatives. These types of events are excellent. Coding is part of a tool kit instead of the sole focus. Students who may “like” coding, but do not “love” coding, would be more likely to participate. Students would learn to integrate coding as a process into a larger product.

In Summary

Support teachers and students who want to do new things. Do not keep allowing people to easily do the same thing over and over. The learning becomes less and less when the goals are easy to achieve. Encourage people to challenge themselves, and take some risks.



Hour of Code: It Is Not Enough


By: Tony DePrato | Follow me on Twitter @tdeprato

The Hour of Codeis a very popular event and activity hosted by Code.org. Millions of students around the world participate in the large coordinated events, and continue to use the website to learn programming. Code.org is a good resource to get students and teachers interested in programming.

In the last year I have listened to numerous educators and administrators comment how their school participated in The Hour of Code. In many instances, I felt that these people believed this single event, and or uncoordinated participation of classes on the Code.org website, constituted a real effort in problem solving, computer science, design, and programming. I have news for everyone, an hour of programming, or even a month on Code.org, is only a half-step on a very long journey.

Read More at The International Educator

Beyond Hour of Code

By: Tony DePrato | Follow me on Twitter @tdeprato

A friend emailed me to get some ideas for his IB Computer Science (IBCS) class. We had recently discussed The Hour of Code, and how it was a good activity, but it was not deep enough to accomplish anything real.

I gave my friend the same advice I always remind myself to take. If you want to meet your curriculum standards and be interesting, teach students how to make their own math.

The example I gave to my friend went like this, and I typed it out in about five minutes, so forgive the loose structure:

  • Have students write a simple grade calculator. The calculator needs to tell the student what score or combination of scores need to be earned in order to reach a target grade. For example, I have a an 89% and I want an ‘A’. What grade do I need to get next or over the next few assessments?
  • Then, introduce this question, “Are all courses, grades, and the effort put into activities rewarded the same?”. The goal is to get the students to start looking at the work they do at school in degrees of importance, chance and statistics, etc. For example, how much effort should go into earning an ‘A’ for an elective vs earning an ‘A’ for a core IB course? In fact, does my class grade even matter that much compared to my overall IB score?
  • Students then revise their work adding more variables and creating metrics to measure aspects of their academic life. They are creating new metrics. They are learning to assign value to things, in a way that is meaningful to them.
  • This activity is automatically differentiated. Standard level students in standard level math courses will use different approaches than higher level students. Students who are strong in economics or business, but weak in math, will approach the problem from completely different level as well.
  • The assessment is not that difficult. There are always standard IBCS specific benchmarks that need to be considered. They can form 30%-50% of the assessment plan. The remaining percentage could involve creativity, real-world application, ability to reproduce results, etc.
  • Students can do this individually at first, and then in teams to refine their solutions. This is an excellent way to simulate the type of collaboration that happens when people decide to make something new. The team will have to compromise, probably choose a leader, etc. Some will fail. Few will actually succeed. Who said IBCS class cannot be the starting point for entrepreneurship?

Encouraging the use of tools and problem solving is great, but unless students can see beyond language constructs, they are not going to ever get away from programming for the sake of programming. Programming is a tool. Excellent programmers are creative and inventive. Unless those last two concepts are nurtured through planning students will never realize their potential. Also, this keeps IBCS from being boring.

If you want some ideas for programming projects for grades 3-12, send me an e-mail: tony.deprato@gmail.com

How to Teach Programming

This week on IT Babble the Podcast Edition, you will hear Patrick and I discuss this topic that was posted on Slashdot.org: Revisiting Why Johnny Can’t Code: Have We “Made the Print Too Small”?

Any one claiming that programming is related to text size has a serious problem. Why? Because tools that you can use to write programs allow you to set your text size. These are the options that come with the built in terminal on the Mac:

Screen Shot 2015-11-16 at 7.54.23

Clearly, there are plenty of fonts, sizes, and colors available. People are grasping at straws trying to figure out why all the time spent having students plow through programming models simply is not turing them into “coders” or programmers. Trust me, it is not the font size.

The Main Problem

Everyone is over complicating the issues around learning to program, and they are not working towards the correct goals. The curricula are based on doing things in an hour, or 24-hours, or as a running elective without an objective.

Unless those in education set goals, at age appropriate levels, and have tasks that students can relate to, then attainment will be dismal. This process is not any different than learning a language. If a student is forced to do a language, and they have no application outside of the classroom, the language will not be learned.

The goal of programming, cannot be programming. This is what happens in all subjects when educators believe the subject should be taught, but have no practical application to connect the subject.

What Would a Curriculum Look Like?

I wrote a curriculum framework, yet to be fully implemented, for building problem solving skills and pattern recognition skills starting in year 3. The full framework can be seen here: Problem Solving with Computer Science and Programming: A Holistic Guide & Curriculum Overview.

The goal at every level is to build problem solving skills that connect to the physical world, as well as the digital world. The goal is always simple and repeated year after year. This allows a student to spend time working within the discipline, but also allows them to have time for all the other educational opportunities that are available.

Because this curriculum has a variety of experience based learning opportunities, students are more likely to apply what they learn to other subjects on their own initiative. When you state, this is programming class, and this is where you will do programming, then a student is less likely to apply programming outside of that framework.

What Does a Good Programming Class Look Like?

If students are required to take programming, then the lessons of a programming class cannot be based around following step-by-step instructions. Instead they need to be puzzle based, allow for teamwork, and follow a flexible assessment model.

One practice I like to follow for all new programming concepts is something I call “chopping wood”.

I once read that chopping wood is therapeutic because a person can get immediate results. Students new to programming need immediate results.

Here is how it works:

  • Students are given a working program, not piece of code, but a simple program with 3-4 parts.
  • The teacher asks the students to team up and annotate what they believe each part does. They do annotation with comments. The teacher asks the students not to run the program, just to study it.
  •  The students run the program and play with it. Whatever features it has the teacher then defines so the students can experiment. This might take 5-10 minutes, it is not a game or challenge.
  • The teacher sends the students the program again, this time it is broken. The students compare the working model to the broken one and try to fix it.
  • The students break the program and send it to one another. (This can also be a homework assignment)
  • The teacher review the structures and logic.
  • The final assignment- add a new feature. Annotate what you will do inside the code, and try to achieve it. Make it clear students can sign-up for forums (teacher provides a list if age appropriate) to get help from their peers around the world.

Rinse and repeat with every new set of concepts. After students have a decent framework, they can start taking code that exists and combining it together, improving it, etc. Then after they have manipulated and used many scripts or programs, the process of making something unique will not be so trivial or difficult.

The assessments need to be peer (30%), self (20%), and teacher (formative/summative 50%). Students need to feel like they have some say in their work. Most teachers are not great programmers, and without some input from students, interesting solutions or attempted solutions, may be ignored. In programming attempts matter. The logic might be clear, but the syntax maybe jus be a bit off. Literally speaking – if you are not careful in programming you can fail a student with a great idea for a grammatical/spelling mistake.

Unless the goal is to have a factory of people typing instruction sets, schools need to focus programming efforts towards problem solving, pattern recognition, and team work. As much as possible, the subject of programming needs to be integrated and not separated. The student mindset should be that programming, writing code, etc. is simply a tool box that can be accessed anywhere and anytime.

Tony DePrato