Tuesday, December 13, 2022

Reflecting on CS222 Advanced Programming, Fall 2022 edition

My students have not yet taken their final exam in CS222, but I feel like I am in a good position to share a few thoughts about the course. 

Three things that went well

Using Dart and Flutter was a success. I did not get the impression that the students were any more lost using Dart and Flutter than they traditionally have been with Java and JavaFX. There is so much good documentation around Flutter that I suspect it was actually much easier for them to deal with it. I plan to keep this change to the course next semester, when I will be teaching CS222 once again.

Around the middle of the semester, I presented a series of two workshops comparing Java and Dart. I had hoped for more students to come, but the fact is that preparing and executing the workshops helped me better understand where the students were. I plan to bring this experience into next semester's class, potentially rearranging some of the first-week material to give these workshops in class. I have been inspired by Robert Talbert's latest blog post about 12-week plans for 15-week courses: while his target audience is not teachers like me, it still got me thinking about how the first week of CS222 might be structured as more of a review of past material.

Incorporating the mob programming game got my students thinking and talking about mobbing, and adding the achievement gave my students something to pursue. I look forward to using my classroom mob programming game next semester.

Three things that require consideration

I think I had less participation in the resubmission and achievement system this semester than usual, or if it wasn't actually less, it was still disappointingly low. I have had some conversations with others who use similar methods, and I wonder if the students would be better served by having a handful of concrete deadlines rather than rolling weekly ones. Undergraduates are notoriously bad at time management, and so maybe it is a double whammy for them to have to deal with both managing resubmissions/achievements and remembering weekly submissions.

I use a simple grading scheme that, despite my efforts, students do not understand. On one hand, I do not blame them but rather the school system that has damaged their thinking around learning. Again inspired by some of Talbert's other writings, as well as some recent conversations with colleagues, I have been wondering how much of my class I can get away with not grading. This would be an uphill battle since students are trained to be anxious about grades. 

In the final iteration of the final project, some teams included fundamental errors, such as not having passing tests or naming classes as verbs. I have already provided checklists to help with such things, but nobody uses these. I could ask students to turn in more artifacts such as checklists and CRC cards, but this runs counter to the previous point. I wish I had a better view into the students' behavior and how it is that a team of four smart students can run multiple code reviews and not see simple, fundamental Clean Code violations such as naming problems.

Something like conclusions

That's all I have for today. I need to do significant work during the winter break to pull together changes to this course. I hope to be able to share some thoughts about it in under three weeks. Ack, this is a short break.

No comments:

Post a Comment