teaching machines

CS 245 Wrapup

May 20, 2014 by . Filed under cs245, lectures, spring 2014.

CS 245 has officially closed. I offer some reflection.


We used Bitbucket for the first time ever to distribute and submit homework assignments. I wish I could say I learned how to overcome problems that my students ran into, but I can’t. Mostly issues seemed to stem from failing to follow the pull-code-commit-push workflow. Two obvious items to fix for next semester are:

  1. Diagram the relationship between my repository, their fork, their local mirror, and their working directory. Students might understand the workflow better with a more informed mental model of how Git works.
  2. Set up Eclipse to automatically pull changes from my repository. This semester, students went to Bitbucket and hit Sync to obtain new or updated specifications and automatic graders.

One thing that probably won’t get fixed is spurious pull requests from students. With a pull request, a student is asking me to integrate her changes into the base homework repository. That’s not really her intention, but “pull request” has the word “pull” in it, so the student clicked it. That the student mixes this up is perfectly acceptable. The problem is that the student’s code becomes publicly visible in my base repository’s pull requests list. By visible, I mean other people can see it. I can decline the request, but the code remains visible.

Final Exam

The final exam could have gone better. The first question was to use a MinHeap to sort a list of Integers. This is 8 lines of code, 6 of which are two linear traversals of a data structure. Few people got it.

The last question was inspired by a conversation I’d heard in the hallway a few weeks ago between a student and another faculty. The student had a sorted list and wanted to create a structure that could be easily added to but stay sorted. The solution is to build a balanced tree. What’s the most efficient way to build such a tree? By halving the list, inserting the middle element, and recursively inserting the two halves. It’s an elegant 5 line algorithm. Even fewer people got this one.

Half of the questions were conceptual. I asked the students to develop an algorithm for managing a coat check at UWEC’s annual Viennese Ball. Next year I’d like to take all the people that suggested using a stack or a queue and let them try their ideas out.


After I tallied up grades, I was alarmed to find so many Fs. However, I plotted the frequency of each letter grade with the number of homework Blugolds that students earned and I’ve transferred my alarm to a different issue: Why don’t people turn in homework?

Final letter grades and their frequency. Color indicates how many homework Blugolds were earned to achieve the letter grade.

All of the Fs received no homework credit. (Some the Cs and Ds got no homework credit as well, but they earned Blugolds through labs, participation, and exams.)

To be fair, the homework this semester was tough. To be fair right back, the homework deadlines are very relaxed. Students may submit any homework any week of the semester, provided they at least get the homework files in place by the “later-week” submission deadline.

I tried to assign four full homeworks and three preassignments (half-homeworks). I think I’m fully convinced now that this is just too much. Three full- and three half-homeworks seem like an appropriate challenge.


Some other ideas have been floating through my head: