Middle School Computer Science

Teaching CS at the High School level isn’t too hard.  Basically, I’ve taken a college freshman level curriculum, tweaked it to make it a bit more interesting for high school students, slowed it down a bit, and taken out some higher level math that a freshman in high school just hasn’t had yet.  Every year, I tweak it a bit, based on feedback from students and from what I see going on in the classroom.  I borrow ideas shared by other CS teachers and I’m constantly trolling through the resources on the CSTA web site.  It may not be perfect every time, but it works.

Teaching CS at the middle school level is a whole different story.  If what should be taught at the high school level isn’t a settled issue, it’s even less of a settle issue at the middle school level.  The number of places even teaching computer science concepts as part of the curriculum is tiny.  I only know of one or two myself.  Most people are doing robotics or creative computing as an after-school club.  While they might have what one could call a “curriculum,” they’re not as worried about sequencing or providing a foundation.  It’s about sparking an interest primarily.

CS is part of our curriculum in the middle school, something I’m hugely proud of and thankful that the administration supports.  It’s not fully an academic class, but it is required and every year, we’ve added more time.  I’ve struggled every year to figure out the best sequence of assignments, how to present assignments, what language and tools to use, and how much group work to do.  I started by doing Scratch in 8th grade, but found that those students thought it was a bit too cutesy, so I moved it to 7th and finally to 6th.  I left the assignments alone, and it works pretty well.

In 7th grade, we’re working in a block language that’s a precursor to Python, Jigsaw.  At the end of the term, I’ll have them export their programs to Python, so they can see how their programs would look if they typed them out.  In this class, we do more with concepts like variables, functions, and types, but we simply repeat many of the same concepts learned through Scratch: loops, if statements, and general sequencing. This year has been challenging because this is the first class to do it, and they didn’t have Scratch last year.  But some of them did Scratch in other venues and some did robotics with me, but still, a lack of foundation in logical thinking has been a challenge.

In 8th grade, I started the year doing Python.  That was kind of a disaster, so I decided to offer either Python, using the videos I had created, or javascript, using an online system that sequenced lessons and projects.  It’s still a disaster.  And it’s not me, and I think I have to figure out a better way to do this.  First, the classes are especially large this year.  I normally have about 15 or 16 students, the perfect number to group them and to manage.  I have 22 in each of my 8th grade classes.  I’d say about half of them even know what’s going on.  Second, I only see them once a week.  It’s common for them to forget entirely what’s going on from week to week, so I have to backtrack a lot or, given the large class size, students just twiddle their thumbs and hope I don’t notice.  Third, they know this class doesn’t really “count”.  The students who are motivated to learn for the sake of learning do fine.  They diligently complete assignments, ask for help, and figure things out.  The rest, if I’m lucky, poke at the assignments, but are sneakily doing homework for other classes.  Sigh.

I have one more trimester of 8th grade to get this “right”.   Here are some changes I’m going to make:

  1. Back to Python.  At first the kids were excited about javascript and they liked the self-directed lessons.  But javascript’s curly braces and semi-colons got to them and they also couldn’t see how they were building skills.  The projects in the online environment had no relation to the lessons–or at least the kids can’t see that.
  2. One project, working in pairs.  I have a couple of groups of students working through either javascript or Python projects.  The time is such that, realistically, students can only get through one project.  I think what I’m going to do is have them complete a “Choose Your Own Adventure Story” game, adding graphics at the end.
  3. Pair programming.  I’m going to make people switch halfway through each class, so that each partner gets a chance to be at the keyboard.
  4. Turn in their work every class period.  I’m just going to check off that they did something in class.  That might focus some of the kids who aren’t doing anything in class.
  5. Handouts.  The videos aren’t getting watched between classes.  I’ll leave them there for the over achievers, but I think a handout with a list of the functions they need to use will be more helpful.  To save trees, I’ll post them online, letting individuals print if they want to.

I’m also in the process of revamping the whole Middle School curriculum, so in a few years, none of this will apply, but I do think I’ve learned a lot about how to scaffold projects for MS students, something that I think will be helpful even as I morph the classes into something that looks more interdisciplinary and involves more physical objects, a la #makered.  And that may be what’s more appropriate for middle school, a way of showing students how computing is connected to math, science, art, even history and English.  It makes sense to me to channel their energy away from the screen and into collaborative hands-on work first and add the computing components later, when it makes their physical objects light up, move, collect data, or make noise.  Though I sometimes complain about my class not “counting,” it is also a blessing because I don’t have specific content to get through.  There’s not a next grade that’s expecting me to have covered material through x concept.  I’m just trying to engage students in something fun, have them see that they can control their computers and not the other way around, and if they remember what a loop is, or learn logical processes, so much the better.

Enhanced by Zemanta