Wednesday, June 28, 2017

How Many Times Can You Teach Loops?

Suppose you have students learning computer science from first grade to high school. How many times can you teach loops? Maybe you start with blocks using Scratch or Alice and they learn counter loops and perhaps loop forever. Do you teach with that language a couple of years? Maybe. Do you reteach loops for each of t hose years?  Next you switch to a text based language. Now you teach for loops (by some name or other) using words. Maybe you add in while loops. Next year maybe you add in loop until. At some point you add in For Each.Have you taught each of those several years running? Are your students bored yet?

We’re looking at K-12 Computer Science Standards and there is a great K-12 CS Framework. But what exactly do we teach each year? Now perhaps we don’t teach CS every year. Perhaps we decide on one semester in each grade band (defined differently for your situation) where we teach Computer Science. Great now we can do it all together and avoid some duplication. In the two years or what ever between CS course the students forget much of what was taught so we have to reteach stuff. What stuff? Who knows so reteach it all?

Seems like a pretty serious problem. Fortunately for me I don’t have to solve it for grades K-8. Well not right now anyway. I do have to look at what students entering my high school know though. I teach at a private Catholic school that gets students from over 20 different middle schools in only a few fewer districts than that. These days I can pretty much run my first class is if they know nothing about computer science. That is not going to last for much longer as CS moves into the lower grades. But for the near future there is going to be a wider and wider range of previous experience. That complicates things a bit. A related post is What CS Should a Student Know Before High School

I expect that many high schools will have to have different entry points to the high school computer science curriculum. Some students will want/need to start somewhere between nothing and just a little. Some will have more than a little and even a bit of programming. Still others will have a good bass in programming and will be ready fro one of the Advanced Placement courses.

When students enter high school ready for Advanced Placement or the equivalent we’ll have to think about what to offer them to keep them interested and learning to a deeper level. Wow! Sounds like another blog post.

How do you see the K-12 landscape? What progression would you like to see in your school district or area? How long is it going to take to get to CS at all levels and what sort of changes do you see that making?


Mike Zamansky said...

One problem that won't be addressed is teaching concepts too early - when the kids can ape the correct behavior but they don't fully grok it.

I've seen this with Physics first where high performing kids take physics before they know the associated math and before they're ready to really get it. These kids do well on standardized exams like the NY Regents but they're playing "fill in the missing piece of the formula." Many don't really get it but since they can do the mechanics it's harder to teach them the deeper physics later on.

Since CS Ed is so in bed with the college board where doing well on one standardized test is taken to mean mastery I see schools introducing some CS concepts too early in an attempt to teach "advanced work" -- in fact, many schools already do this in a number of subjects and IMO in computer science as well.

Mike Zamansky said...

Let's look at what happens in other subject areas at the high school level:

Chem/Phys/Bio -- classes start from square one (but may assume some math knowledge)

Social Studies - same

English - assumes kids can read/write but doesn't assume any specific prior class
specific knowledge

Foreign Language - assumes no prior knowledge or places at appropriate level.

Math - teachers incessantly complain that the kids come in knowing nothing.

Hmm, I suspect we're going to see another correlation between CS and Math :-)