Monday, June 29, 2020

Summer Course Revisions 2020: Platforms for Publishing Course Content

I took a little break after completing Flying Leap and then, about two weeks ago, I switched to full-time planning for the Fall semester. I figured that the easiest course to revise would be my game programming course (CS315), and so I started with that. However, as I wrote up my preamble to the actual course content, I realized it was long enough, and coherent enough, to be its own post. So, rather than jump into CS315, I will share with you how I ended up back to web components.

In the first week, I spent a lot of time thinking about how to present information to my students and guide them through a good experience that will likely be online and with some synchronous meetings. Neither of those variables have actually been specified by the university administration, but it is what I expect, given what I know so far. The curious reader may be interested to know that the university seems to be prioritizing the use of in-person meetings for freshmen, while upperclassmen get shifted to online courses. The default stance seems to be that classes will be online and asynchronous, which essentially removes all scheduling restrictions from students. My department (and at least one other) have petitioned to keep the schedules in place, having regular synchronous meetings with students. We expect this to be approved as long as we agree not to make attendance mandatory and to record all sessions for students who need to watch them asynchronously. I'm still not sure exactly what tools I'll use for this, in part because the university is promising some support as well... but again, we don't have official word yet. Even our Canvas pages for Fall are not available yet. So, I move forward with planning, hoping I'm not stumbling into a trap.

I didn't get much real planning done that first week because I spent more time feeling out my options. I discovered a few months ago that my go-to starting place for course sites—the PWA Starter Kit—is no longer under development. The project site recommends using OpenWC instead, so I looked into that. Although I understand web components and lit-html, the other pieces were all new to me. It was not clear if it would be a worthwhile investment in learning or a quagmire, so I wanted to make sure I understood my requirements and the implications of my decisions.

I looked into scripting content directly into Canvas after my friend and Taylor Computer Science professor, Dannie Stanley, pointed out that they have a well-documented Web API. Looking into this, I was also surprised to find that Canvas is free software. I tinkered with it a bit, but I decided it was not for me. I would have to bind too much of the structure of my course to their epistemology, which of course would not fly. I like the idea of being able to write my specifications once and publish them to Canvas, rather than my current approach of maintaining a Web site and then adding slots for submissions on Canvas, but it's not worth the shoehorning that would be required.

I also looked into simply using Markdown for everything and hosting the content on GitHub pages. I actually starting writing up the CS315 course plan this way in order to get a sense for it. It was very fast to write and easy to host and modify, but it broke down once I started thinking about grading. I expected to use specifications grading or digital badges (or both), and this is where my traditional web components approach really shines: I can define the content of this kind of course artifact as data and then write programs that manipulate it into different forms, including HTML+CSS for presentation and Markdown for documentation.

In the end, I decided to buckle down with OpenWC and rebuild my course sites in lit-html and web components using their toolchain. It took a bit of work, but now I have everything set up. Since I was getting my hands dirty, I switched parts of the site over to material web components rather than Polymer, even though there's a big warning on those repositories that says they may change while in development. I am a wild man.

It would be dishonest of me not to mention that I spent an embarrassingly long amount of time trying to get source code highlighted properly on my course pages. I tried highlight.js as well as prism, but both had problems integrating with my toolchain. After many hours of work, I got prism working good enough for the minimal use case... then I abandoned it and just left the code unformatted in a <pre> block. Maybe you've had that happen before, each attempt saying, "This will probably fix it and then I'll be done," and then you finally do fix it after two days of work, and then you say, "This was not worth it. This is not important. Where is my beer?"

The next blog post in this series will talk about the changes I'm making to my CS315 Game Programming course. See you then!

No comments:

Post a Comment