Friday, July 28, 2017

Summer 2017 Course Revisions: CS222 Advanced Programming

This is the last in my series of Summer 2017 course revision posts, turning to the course I teach every semester and revise every summer: CS222 Advanced Programming. The most significant changes to this course result from its finally returning to a twice-per-week meeting schedule. When I first offered the course, it was on a Tuesday/Thursday schedule. The extra 25 minutes in a meeting gives time for more sophisticated discussions and more hands-on practice. Also, with two meetings per week, I was able to give assignments every day and still turn them around rapidly. A few years ago it was moved to a MWF schedule, and I remember the meetings feeling very short. Also, I feared I wouldn't be able to keep up with three grading marathons per week, and so I switched at that point to my weekly assignment schedule. That very semester, I asked to return to the twice-weekly schedule, but this request was forgotten or not acted upon. Several friendly reminders later, I'm scheduled again for twice per week.

There have been a few changes over the years that mean I cannot simply pull back in my old course plans. The original incarnation of the course used Joshua Bloch's Effective Java as a text. In the intervening years, I switched over to Robert Martin's Clean Code, which gains generalizability over the Java-specific information in Bloch's text. I have been happy with that transition. Another significant change is in the structure of the course. I used to have about five weeks of introduction, a two-week project, and then a six-week project completed in two three-week iterations. Several semesters ago, I decided to cut the introduction short and add an extra three-week iteration to the final project. As with the change in texts, I think this was a very positive change.

I have decided for the Fall to bring back the "daily" assignments during the first three weeks of the course. I also plan to extend the assignments into the project portion of the course in order to help students stay on track. For example, I like to introduce design thinking each semester and have students consider a five-step design-thinking process and consider what it means to their team and their final project. This is usually isolated to class time, and I suspect most people don't carry this idea with them after the discussion. Giving a small essay assignment after the in-class exercise should both reinforce the material as well as incentivize attendance and participation.

I started the process of breaking down the weekly assignments into twice-per-week assignments, but I haven't quite finished that yet. I think I may just leave it as-is, though, and see how the first week of classes goes. I would like to leave the door open to allow myself to transition in-class discussions more smoothly into assignments, having students wrap up some examples or write responses to an idea, for example. This kind of spontaneity appeals to my just-in-time teaching philosophy, although I am a bit concerned about teaching three courses on Tuesdays and Thursdays with 90 minutes between each. I will need to safely guard the 90 minutes after CS222—the first course of the day—to give myself time to tweak the assignment for the next day and to prepare myself for the next class.

The rest of the course will stay pretty much the same. I will come up with a reasonable two-week project, likely reusing my Wikipedia Analyzer project but modifying it to use JSON rather than XML. One of my students pointed out in the Spring that Wikipedia's XML API is being deprecated, so I may as well get my students in CS222 doing some JSON parsing. The final project format will remain the same, except for the occasional assignment dropped in to keep students honest. I am keeping the achievements as well, although using the smaller number of creditable achievements that I tested in the Spring (four) rather than the larger number I had been using in the Fall and previously (six).

The current draft of the course description is online. I recreated my course site design based on the Polymer 2.0 release, and the sites for other two courses I wrote about earlier this week were derived from this one. The navigation no longer has to make use of hash paths, thanks to the service worker. This caused me a slight headache the other day when I loaded the page over HTTP and all the navigation broke. I was able to port the essential parts of the platinum-https-redirect element, which does not yet support Polymer 2.0, to force my course pages to load over HTTPS. I also tweaked the sw-precache configuration this morning for all the sites, hopefully in such a way that the static content is appropriately cached for offline access.

I feel good about getting most of my course redesigns done this week. I will be participating in my university's pilot of Canvas as an LMS, and I have spent some time tinkering with it as well. It seems like it will serve my needs well, and it has several features that are clearly superior to Blackboard. I am curious to hear what others in the pilot think, especially those who were more entrenched into the Blackboard ecosystem. I try to use the LMS as little as possible, since the tools of my trade live elsewhere on the Web.

Thanks for reading! As always, feel free to share your thoughts and suggestions in the comments.

No comments:

Post a Comment