For quite some time I have been toying with the idea of using some kind of online homework system in my intro-level classes. I had some experience with online homework as a teaching assistant in Texas, as many of our Calculus courses used them, but never tried doing this at Bates. For my Calculus I class this semester, I decided to try WeBWork, an open-source online homework system supported by the MAA and the NSF. In this post, I would like to share the successes, failures, and lessons learned from this experiment.

I was a little bit wary of experimenting on my students. This was my fourth time teaching Calc I at Bates, and adding this element meant I had to rethink how I did everything (so it added more prep time). But I had been wanting to try something like this, especially its potential for flipping a class, and so I decided my curiosity outweighed my need for a predictable class. Since it was an experiment, and one which I decided on a little late in the summer, I also decided that the students would get full credit on their webwork as long as they tried each problem once. I would not do this again, but I felt like that was a good deal to make with my students, since they were very much aware that I was as new to this as they were.

The part of this that I liked the most is the immediate feedback. In other classes, my students would turn in homework sets, I would give them to a grader, and they would get their homework back a week later. By this point, most students only looked at the grade on the assignment and moved on. With the online homework, students type in their answer, and then immediately see if their answer was correct. They know (because I told them) that they can just leave it at that. As long as they submit an answer they get full credit. What I found very interesting is that most students submit answers until they get the correct answer, and they will email me or come to office hours if they can’t figure things out. Many times we discussed some problems at the beginning of class if they were particularly tricky. Some of my students mentioned this being frustrating, and I guess I can see why. The program tells them they’re wrong but it doesn’t tell them why. On the other hand, many of these students who come talk to me and ask questions in class probably wouldn’t have if they had only been turning in homework. Eventually, they do get an explanation of why their answer was wrong. So even though it’s possible that it’s frustrating to some, I try to point out that all the work they’re doing is helping them learn. Hopefully they believe me.

One thing that was definitely frustrating, and this was mostly due to my inexperience, was that some of the problems in the problem library are just broken. A friend of mine who has a lot of experience with webwork lovingly refers to the problem library “the wild wild west”. So at the beginning especially, when my students emailed me their questions and came to office hours, I would work out the problem in the exact same way as my students and webwork wouldn’t accept their answer. Or it would accept it if they wrote their answer as a fraction but not in decimal form (without stating this anywhere in the problem). I learned to pick problems more carefully (I found the libraries that worked best), and I have finally learned to write my own problems (although most of it is from looking at problems from the good libraries and modifying them).

Syntax was another issue, and I should have spent more time at the beginning of the semester explaining how to write mathematical expressions that a computer would understand. We did talk about this a bit more when the expressions they needed to input were more algebraically complicated, and in fact it was eye-opening to them that things like parentheses really do matter (not just because your professor is picky!). So again, I like the online homework system because it really gets to the heart of some mathematical issues that students tend to dismiss as unimportant.

At the beginning of the semester, I was trying to do a bit of a flipped course. I had them do a reading from the book before class, and then answer some webwork problems. I think it worked OK at the beginning, especially because many more of them were prepared to follow the lecture. But I think later on the book got harder to read and they started just trying the problems without doing the reading first. In the future if I try this method again, I might direct their reading a little more (like “read this definition then do this problem” rather than “read section X.X and do the problems”). Without telling them, halfway through the semester I shifted the webwork so that now the reading and the problems come after the lecture, and it seems to be going a bit more smoothly.

Looking back, I think the ideal way to do this (if not trying a flipped class) would be to have a hybrid homework, part homework set that you hand in and part online. Ask the mechanical problems on the webwork (like “take the derivative of these functions”) and then more interesting questions in the homework set. I think one thing that is missing is getting them to go beyond the computational, and also giving them written feedback. For the feedback I was doing weekly quizzes, based on webwork and book problems, but now I think that the in-class time could be better used as, well, class time.

So dear readers, what is your experience with online homework systems? Have you tried them before? Any tips for people willing to try this? Please share your thoughts in the comments section below.

At Stony Brook we usually give hybrid homeworks, as you suggest. Also we have a drop-in tutoring center, and there are computers there so students can talk with tutors about any issues with their online homework — the tutors are all trained in the online homework system. That helps a lot with some of the issues you are describing (i.e., a tutor can correct syntax, if that is the only problem). But this does require extra administration, e.g., a faculty member who takes responsibility for training in the online homework system (I had that job for some time).

I’ve used both WebWork and now WebAssign (not free for students, but better coded problems, including problems from common textbooks). One thing I like to do is give them unlimited attempts–they don’t get credit until it’s correct, but they can try as many times as they like. I find the automated homework grading makes it easier for me to give more frequent homework (usually I have one due twice a week), which I feel is very important for calculus students. Rather than a hybrid assignment (we have limited grading help for our 80 student sections), I use clickers in the classroom to try and probe for more conceptual understanding.

Some of our instructors also use clickers. Clickers also (somewhat) improve attendance.

The correct answer was e^(9x), which the student was inputting, but which was not being accepted as correct. And of couse, as we all know, the problem was that when the system put in a value fo x that was too large (despite the default range supposedly being [0,1]) e.g. exp(90) was too large and coming out as Inf or NaN and of course x==x is false if x is NaN which of course we all know because we are all experts in perl floating point debugging– naturally. Don’t even get me started on the problems with negative aerguments to ln.

On the other hand, I had one student who encountered a similar issue with atan(1/x), (the system was choosing x values too close to zero) but then the student remembered that atan(x)+atan(1/x)=pi/2 and flipped this around, entering pi/2-atan(x) and got the correct answer. Not altogether the outcome I had originally hoped for though.

Sometimes, debugging these things becomes a bit of an art in itself.