Monday, May 9, 2022

Reflecting on CS222 Advanced Programming, Spring 2022 Edition

I wrote four or five blog posts about CS222 this past semester:

And, arguably, this one.

I have in my task list a lingering reminder to write about the idea of interleaving the two-week project with the initial three weeks of work. It was a passing thought that came to me as I was reflecting on the course structure and the lack of preparation of students coming into the course. That idea is not fully formed, however, and since I'm not on deck to teach CS222 in the Fall, I'm not going to dwell much more no that idea here.

One of the major changes in CS222 this past semester was the inclusion of a personal progress report during the final project. These reports were due at the end of the first and second weeks of each three-week iteration but not the third. I have written previously about how these reports were beneficial in my Game Programming (CS315) course, and I found them to be similarly useful here. They gave me some insight into how teams were working, and it reminded students that work was to be done at a regular pace throughout the three weeks. To be clear, many students still exhibited clear "cramming" behavior, with a flurry of activity in version control right before the deadlines, but this gave me something concrete I could point to in my feedback. The one piece that leaves me uneasy is that there were a few reports that I just didn't believe. Students' self-reported effort is subject to deceit, both intentional and internalized. That may be an acceptable cost. The related problem is one that is endemic in higher education: I gave feedback and advice in reading many of the personal progress reports, and no one ever responded to that feedback in any form. I am less sure about this being an acceptable cost of my time and attention.

There are a lot of good things about using Java as a language of instruction in CS222. It is the language of the prerequisite course, and it is the language of the examples in Clean Code. It's still a commonly used language even though its time as a cool new language is long gone. I have been thinking about some of the problems of teaching with Java. It lacks some of the niceties of modern languages, such as the spread operator. JavaFX is not very common and kind of a pain to configure. Only one of out this year's 17 senior Software Engineering projects used Java, and the one that did seem to have chosen it as a default rather than by seriously considering the alternatives. This all makes me think seriously about switching to Dart and Flutter next time I teach the course, which may be Spring 2023. I would have to do a lot more interpretation or re-presentation of textbook material in order to deal with the language transition,. Maybe that would not be so bad for this course, especially considering the systematic lack of preparation for these students, not just from prerequisite courses but from all the machinery around them. I will need to pick up this thread of reasoning again next time I teach the course, although I suspect the main issue may end up really being how much time I have to re-create the course.

One of the perennial challenges of CS222 is similar to something I face in other team-oriented courses: the students want to divide labor among them rather than work together. As usual, several teams this semester learned that lesson the hard way, when they came to realize that putting their heads together actually resulted in their having better results than when, contrary to my advice, they divvied out individual tasks to individual people. I will definitely keep the Mob Programming RPG in one form or another, and I will move that earlier in the semester so that the students have a frame of reference for an alternative to this hyper-individualistic and management-centric model they have come in with.

That's about it for CS222 this Spring. I had some students who were a lot of fun to work with, and that was rewarding despite some serious attendance problems. I find myself pitying many of the students who are enrolled at the university despite being clearly unprepared for a transition to adulthood. I hope that their experience in this course proved to be a growth experience, although I suspect for many it is seen as an impediment laid out to prevent their happiness rather than an experience designed to delight their intellect.

No comments:

Post a Comment