Friday, November 16, 2018

Testing Computer Science Knowledge Is Hard

How to evaluate computer science students is always a tough question. It’s everywhere that computer science is taught. There is something of an issue with a course offered in the United Kingdom f or example. Exams ‘useless’ for computer science, say experts  Among the experts they quote are two educators. Miles Berry is someone I know and he definitely qualifies as an expert.

The software developer the article quotes develops educational software, which is interesting. It seems like articles on software education always seem to include a quote from a software developer. Why?

In any case, evaluating CS knowledge is a tricky thing. I prefer projects to tests and quizzes but they have limitations as well. Mostly that it is easy to cheat. Students have time to figure things out, which is great, but that means one has trouble knowing what they know against how good they are at looking things up.

Calling this cheating might not be the right word because real programmers share and copy code all the time. And being able to look things up is an important skill.

Paper tests are harder to cheat on but limit creativity. And they're no fun. I use the occasional quiz in my classes. It sort of keeps kids honest to a point and lets me get a better handle on where students are struggling with concepts.

Having one on one conversations might help some. But that doesn’t scale well. Some students have trouble communicating what they know and some teachers have trouble asking the right questions. So much depends on the teacher student relationship.

I wish we didn't have to grade at all. That would require students who learn because they want to know things and not just want to get good grades. As teachers we would still have to understand where students were having a hard time because that would help us to teach better and students to learn better. Most evaluative instruments feel like blunt objects to me.


Garth said...

I have the same issues. I have not given a written test in my programming classes in years. Since my classes are small I can get away with this. I can see what they are doing because I look over their shoulder or hear them talking about what they are doing. My students work together so there will be some sharing but it is not hard to spot the drones. I do not lecture much so they have time to program in class which allows me to see them work. If it was more of a lecture in class and program out of class I can see a major difficulty. College programming classes are famous for cut and paste programming. In class testing is necessary. Now the problem is writing a relevant test. That can start a whole new discussion.

Jeremy Wolff said...

At the beginning my courses (ECS and CSP) I tell students that the class will be challenging, fun. I am also very honest with students and tell them that grades are not important for their success in the course- and if it was up to me, there would be no grade to worry about at all. Instead, I tell them to be creative, take risks, and work hard. I am constantly walking around the room seeing where students get stuck and asking each other to help one another work through problems. The benefit of this is that it tends to build more of a community in the classroom, where it's collaborative instead of competitive. I can also easy tell who isn't participating and address that early.

Unfortunately, as much as i'd like to though, I can't get around the grading issue. So I grade on a 1/0 scale based on the implementation of the concept for that activity. They are also given projects with rubrics. It's not perfect, and there are certainly students who do the bare minimum for an easy A. But it sure beats Testing, and it definitely keeps students engaged and excited about programming.