I started teaching programming for the reasons that I mentioned here. I felt pretty clueless about how it would go and I didn’t know exactly how I would even grade students after the first few weeks of the class had passed.
Things I’ve noticed:
- Similar to Khan Academy, using CodeHS alone and expecting students to work in isolation is dehumanizing and will teach them very little. One of my primary reasons for teaching programming is to help students feel confident taking risks and being creative. Michael Fenton’s Ignite talk sums up this comment better that I can.
- Students do not look at and think about examples. They just don’t. They have to interact with it for it to be useful.
- Most of the CodeHS instructional videos begin with a brief explanation of a new coding concept, then go on to write a program using the concept. I’ve learned that that first minute is beneficial, then I stop the video.
- Some of the programs students are asked to write could be more engaging. For example, they write a program that decides if it is a weekend, there are a few programs that discuss apples & oranges.
- The instructions for each program could be explained more clearly. A 10 point font paragraph is tough for some students to follow on a screen. A bulleted list of expectations for the programs, or a checklist would be even better: where students check off when their program is able to complete each component.
- It is missing a projector mode where I can project a complete program with a large, bold font.
What works for my classes
I anticipate areas where students will struggle and develop activities to bridge the gap. These activities include:
- Modifying the example programs to do something similar, but different then what they currently do. This is much more productive then having students watch the program being written in a video.
- Some examples:
- Change the example program that converts US dollars to GB pounds to instead convert minutes to hours.
- Change the example program that draws a blue circle to draw 1 large circle centered exactly on the canvas, and change the color.
- Change the calculator example to instead prompt the user for how much money they waste per week and calculate how much money they waste per year.
- Some examples:
- Pencil & paper activities that allow students to think through a challenging coding concept and better understand the computations behind the code. Here is an example of an effective activity to help students understand how for loops can be used to sum numbers:
- I employ the concept behind the 5 Steps to Orchestrating Productive Math Discussions with students programs:
- Minimum lines of code contest: especially at the beginning of the school year, I’ll tell students that we are having a contest today to see who can make their program work using the smallest number of lines of code. This encourages them to think about programming efficiency and style and not just accomplishing a task.
- Students get choice in a final project for each unit. There is a separate part of CodeHS that includes “supplemental material” I used these and assigned a point value to each program and told students they just had to earn 30 points. some students opted to complete 1 challenging program while others completed many more simple programs.
- I currently grade with 70% or their grade being successful completion of each programming unit (for loops, variables, booleans…), 20% of their grade is their final project for the unit, and 10% is supplemental practice, worksheets, etc.
- I’m not thrilled with this system. I keep edging closer to eliminating grades in programming, but I’m not quite ready yet. Maybe after some serious consideration this summer.