Thursday, August 18, 2022

Summer Course Revisions: CS222 Advanced Programming

It has been a little wobbly here due to my teaching schedule changing, as discussed in my previous post. Because one of my courses didn't make enrollment, it looked like I was on deck to teach my department's CS200 Computers and Society course, which is a university Tier 2 core curriculum course in the natural sciences domain. I've never taught it, but it sounded like it could be an interesting challenge. I started doing some prep work on it, and then I was notified that a colleague was willing to swap a section of CS222 with CS200. CS222 is a course I designed, teach regularly, and love to teach. Also, that CS200 course was scheduled right before my other two back-to-back courses, and so it would have had me teaching continuously from 12:30 to 5:00 on Tuesdays and Thursdays. Thanks to the generosity of my colleague, I am now scheduled to teach CS222 MWF instead of that CS200 class, which is one that he has prepped and taught regularly.

This all happened two days ago. Now, the easy thing to do would be to just copy over my Spring CS222 plans, change some dates, and be ready to go. This is not my way. Regular readers may recall that I ended my reflection on Spring's section by putting forward the proposal of changing the technology that I use to teach CS222. This has been on my mind intermittently over the summer, especially as I spent several weeks exploring game design ideas in Flutter. Pushing aside lingering doubts, I began to design the course with this new technology foundation, and today, I published my plan for the first several weeks.

Obviously, the most important transition has to do with getting the students up to speed with Flutter and Dart. The truth is that they have come in with fairly weak understanding of Java anyway, and so rebooting their language learning experience may have a net benefit. The documentation at flutter.dev is excellent, and you can see on the course plan that I am having them complete several standard Flutter and Dart tutorials and codelabs.

The most important factor here is time. Knowing that they will all have to be going through these beginners' steps means that I am accounting for it in my expected weekly commitment. A few things that I had them do in Java have been pulled out, such as the GradeTool refactoring exercise. One thing that really excites me is that students will be running into higher-order functions and stream processing earlier and more consistently. It is to Dart's benefit that it doesn't carry all the baggage that Java does. I was excited to find the iterable collections codelab as a great example for helping novice programmers understand how this works.

I have started a sample solution to my traditional two-week project assignment and, based on that, traced backward what kinds of things I need to introduce in class in the first three weeks. That is, I have developed a running example in class that, I think, will prepare them to build up a version of the two-week project that is essentially the same as what my students have done with Java and JavaFX in the past. 

I do not expect their reading of Clean Code to be significantly hampered by changing the language of teaching. The examples in the book are all in Java, but I don't think the students ever spent a lot of time with the examples anyway. The prose mostly stands on its own. Indeed, in my ten or so years teaching CS222, I don't remember a student ever referencing or asking about a code example in the book.

Today, I recorded and published my first tutorial video based on the stack of Android Studio, Flutter, and git. I hope to make a few more tutorial videos during the semester based on the kinds of questions my students have or difficulties they encounter. 

I'll be sure to write more about this transition in the future, certainly in my end-of-semester reflection if not before. In the meantime, if you have questions, comments, or suggestions, please feel free to share them in the comments or to email me.

No comments:

Post a Comment