On Saturday I finished grading my midterms and confirmed something I had feared: one of my classes has a large gap in understanding between the best group of students and the worst. In that particular class 8 students earned a perfect score on the midterm and 7 students earned less than 70%. I think the exam isn’t at fault, as this is the fourth time I’ve taught the class and it was of a pretty typical difficulty level. Instead, I think that I have a large group of students who either have programmed before or who have a strong natural ability at programming and a large group of students who are struggling with programming.
Classes like this are tough for everyone. If you teach to the middle, which is just about the only thing you can do, a large group is bored and a large group is lost. We didn’t used to have this issue in the Python classes, but this academic year we changed the curriculum so that any student interested in development (computer science, security, or computer game development) needs to take the classes. The classes are designed for novice programmers, since we don’t assume that students will have already programmed. But there is a population that learns programming in high school, so we also developed an accelerated version of the course that covers both classes in one quarter. Sadly, though, not everyone who should be in the accelerated classes ends up there, so the Python classes have been more bimodal this year. I don’t think there are any easy solutions for it, but when I have as large of a gap as I do in one of my sections this quarter I get a bit discouraged.