Thursday, March 6, 2014

Diminishing Returns

A few years ago, I was directed toward a website called CodingBat to help give my students some extra practice coding without making me create lots of new problems. Honestly, it was love at first sight. Coding bat is fantastic! As a student, CodingBat provides a large number of Java coding problems. You just type the code into the text box provided, and it will compile the Java code you write and run it through a number of test cases. Then, CodingBat will tell you which test cases you failed so you can properly troubleshoot your code. As a teacher, CodingBat will track how often your students are running code and how correct they are with the code they are submitting. Additionally, you as a teacher are provided with the actual code they are submitting, so that you can see what they may be doing wrong and provide assistance that way.

Fast forward to today where I am attempting to create a gamified classroom. For the past progress reports my students had not performed well as I had been creating assignments with too little return for the effort. This created a poverty of points that resulted in failures on progress reports. (Which is a problem for a teacher as well as for the students and their parents.) I could have addressed the issue by decreasing the total number of points required, but I am quite fond of the goal of earning 500 points a week. So I didn't. I could have increased the value of assignments already turned in, but then such a sliding scale I thought would lead to distrust from my students as all assignments probably would not receive the same increase. Consequently, a student would probably end up saying, "Wow, I would have done that assignment had I known it would have been worth that much." So, I didn't go for that option either. 

I did however pursue 2 options that I thought would address the issue of poverty of points. The first option I pursued was the inclusion of Boss Fights (tests that are only available for a single day. For more info, see this previous post). Every student was provided with a review and later a test worth about a couple of weeks worth of points. And come to find out, for some students, if you put a worksheet in their hand, they will complete it and simply thrive. You tell them there is a test on these types of problems, and they will study that worksheet and do pretty well on the test. It's just how some students work. And a good number of students gained points back that way. I was pleased. 

The other way I addressed the poverty of points was through CodingBat. I figured that to make CodingBat appealing, I would need to make each problem worth at least 10 points. I also figured that no student would actually complete more than 20 or so as CodingBat will quickly increase the difficulty of the problems. I also informed my students that the problems that had a "show solution" button would not be worth any points but would be valuable in the learning process. 

For most students, my assumption of no more than 20 problems was correct. However, one student sat down for a weekend and knocked out 39 problems! And he was done for the 9-weeks. I still had 2-3 more weeks I needed for him to be motivated and learning, and he was done until April rolls around.

Next time, I am going to go for diminishing returns. On something as repeatable as this where I can be nickel'd and dime'd to death, I will make it so that the more problems you do, the less each problem is worth. If I were to write the assignment again (because I do not want to go rewriting assignments for the reasons listed above), I would say the first 15 problems would be worth 10 points each. The next 15 would be worth 5 points each, and every problem completed after that would each be worth 1 point each. That way, if he is just doing them because he thinks they are fun, I will continue to give him some reward, though not enough to make him useless for the rest of the month.