Saturday, February 18, 2017

What does a good CS class look like?

This question came up in a meeting I had with someone from the Upperline School in NY.  Really it is what I have continued to struggle with since transitioning to teach more CS than math.

When I think about teaching math, I know what a good math lesson looks like.  It has all students collaboratively solving problems.  But when it comes to CS, I haven't necessarily seen a lot of "WOW! that was a good CS lesson" in other classes - in fact, I've only observed one other person's CS class, and it seemed like an average class.  Nothing I was dying to replicate in my own class.

In my class, so much of the programming tasks are pretty individual - people working by them selves to learn a new aspect of programming.  They talk to one another when they run into problems, but I don't see students wrestling with content the same way I see students in math wrestle with content.

Our class-code-alongs provide a bit of a glimpse into that, but still there is this awkward timing thing that I don't have quite down.

Where I did see collaborative problem solving in my CS class recently was when we did the brainstorming for our Simon game.   I think that can be expanded on to give students a task and see what they come up with.

Next, I want to give students a challenge to make another game - maybe 2048 the game, or a memory game?  I think this could be a fun, collaborative, and rigorous challenge for students.  I could even create my own code to give students who need a bit more scaffolding after they struggle a bit.

I keep coming back to the question of "who is learning in my class, when, and how do I know?"  Here's  how I have identified my "learners" in my class thus far:

  • I have a few students who are constantly asking questions - it shows that they are thinking about processing what they are taking in and making sense of it.  
  • My students who "go rogue" and decide to do their own projects are other students I would identify as my "learners" also - they are creatively arriving at solutions.
  • My students who can look at someone elses' code and troubleshoot it.
  • My students who create things they are proud of... you can see it on their face - they are happy and satisfied with their work.
  • Students who see the need to define the problem - again, they are asking questions and keeping the big picture and the small picture in mind.
  • My students who re-read their code before asking me - have looked at the errors and tried to make sense of them.  I have noticed a gap between students who know how to read code and those who don't.  This was especially true when we took a break from programming and then came back to it.  Some students were writing some funky things like if (x = 6 or 7) - logically I know what they were trying to do, but they were pretty far off the mark from a syntax perspective.  I suppose this is much like PEMDAS in math - they might be capable of thinking about a problem from a big picture, but when it comes to computation, it can be rough.  

When looking at this list, I am noticing that a lot of these things are happening when we do projects - not just the little stages in CodeStudio.  It is so hard to see the learning when they are "plugged" in to the computer...  obviously there is a time and a space for this type of learning, but I am wondering if I need to move to peer programming models or replace it with some more open ended-esque projects.

I really wish there was someone out there doing CS education research much like Jo Boaler is doing maths education research.

No comments:

Post a Comment