Thursday, January 16, 2014

Reverse Bell Curve In Programming Projects

I have some 60+ students working on end of semester projects these days. I have one section of Honors Programming and two sections of Explorations in Computer Science. And let me tell you I am learning a lot! I’m pretty sure the students are as well. One issue for me is that I am teaching both of these classes for the first time. Well as least as they are currently structured. So getting timing right has been a challenge.

My honors programming kids are really impressing me with what they are doing. We have obviously been programming for the whole semester and they’ve all completed a lot of projects. Most of my time is spend helping them with some just in time learning. I think I first heard that phrase from Doug Bergman or perhaps Lou Zulli – both amazing teachers who are focused on project based learning. In any case the students know what they want to do to solve their problems but sometimes need some help learning how to accomplish that. They need stuff that was not covered in the basic scope and sequence. Sometimes I know how to do what they need and sometimes not. Either way I’m having fun.

I am seeing some variation between the students who have and have not had prior programming experience. That’s to be expected but I’m learning from this how to teach to a mixed group better going forward. I get to try these ideas in a week or so.

My Explorations in Computer Science class has only beenreverse bell curve doing programming for about a third of the quarter. We haven’t had time to cover a lot so of course the projects are simpler and mostly focused on things we covered in class. Here is where I am seeing a reverse bell curve. On one side the kids who are struggling to figure out how to create their projects. They know the syntax but haven’t made the full leap to solving problems from scratch.

At the other end are the students who really “got it” and are going to town on their code. Not a whole lot in the middle. We see this a lot in CS education and it is a constant issue. It’s not an issue of smart or not smart but an issue of whose brain works in what ways. Part of my job as a CS educator is to help all of the students develop their brains to think the way a programmer needs to think.

What I often see is that some students make a steady progression along the “new way of thinking.” Those seem to be a minority. Most people find a time where it suddenly (relatively speaking) clicks and they just “get it.” Learning and problem solving take off at this point. Some lucky people reach that mark early in their learning but some people take longer. Sometimes a lot longer. Speeding that “click” up is my constant goal.

I wish I had more time with this semester’s students but unfortunately these are all single semester courses. With the Exploring students I would spend more time on problem solving. Not necessarily more code syntax or language features but how to put it all together. I’m thinking about how to do more of that earlier next semester.

For the honors programming students I would like more time to talk about designing with objects. We did an introduction to objects and even created some simple ones. But I didn’t spend enough time talking design. Not that there was a lot more time for it. What I am seeing in their projects is that most of them would be easier, faster, better,  even prettier if they were using more in the way of object oriented design. Many of them will, I hope, take AP CS next year and they’ll get more in that course. They’ll be ready I think.

New semester starts in about 10 days with a new set of students. Going to be fun.


Edward Bujak said...

The bimodal distribution is disturbing and generally does not feel good. Regardless of the data content, it is reflective of that sample (i.e that class) and can sometimes be rationalized. If the entire population (of your 160 students) was something short of a bell curve or a slightly skewed curve then that would be an issue. It's almost impossible to explain to teachers that their one class (same subject, same level, same work) scores lower, on average than the teacher's 5 other classes. The bimodal curve is even harder to explain without more anecdotal and real data. Is this class right before lunch or right after lunch or maybe the first or last class of the day? How about the mix of students in the "bimodal class" ... how are these students selected for scheduling. It could be simple poor sampling (statistics term) which resulted in a higher concentration of low performers and high performers. If you could look at the low performers' grades and the high performers' grades across all subject (but particularly in math and science) would these students earn similar grades? I have done exactly this for a few early years of teaching and found a very high correlation with student grades in my math and computer science with grades in most of their other subjects. I stopped worrying about grade distributions due to bad sampling. Sometimes there are classes that I have a very obvious gap of "average" "middle of the bell curve" students.

Alfred C Thompson II said...

The bimodal distribution is within a class not between classes. It is not uncommon in early CS courses and is a topic of discussion in many forums.

Garth said...

This was a common curve in the college precalc courses I used to teach. If they were not bimodal I would be surprised. I do not see it so much in my high school classes but when I do it seems to be caused by events outside the class. The low end would be the low end in all their classes.

ben said...

A regular bell curve is where the mode of the data is close to the middle. A reverse bell curve is where the mode is near the left and right (high end and low end)(in your case a lot of As and Fs)