What I’m working on this term

Winter Term started exactly one week ago, so we are now officially in the swing of things. I’m teaching 5 days a week this term, which is great in terms of spreading out the workload but also means I don’t really have a “down” day where I can work from home and crank things out that require deep thinking and concentration. It’s also the first time in a while that I’m teaching a full 6-credit course — my course releases for my leadership role and my service on our tenure and promotion committee meant that I had a lighter teaching schedule in Spring 2022 and Fall 2022 (Comps and the Science Fellows Colloquium, both terms). It took me a few days to get back into the rhythm of a MWF class!

Winter is always a busy term for me, and this year is no exception. So, what am I spending my time on this term?

Research

My big research deadline / push actually happens early in the term, so I get it out of the way right away — I have a conference paper deadline this weekend. The working draft is currently a bit rougher than I’d like, but definitely in a state that can be tweaked by the deadline. I also fully expect that the paper will be rejected, since I’m aiming high, so that takes a bit of the pressure off to get it “perfect”. The paper is on an experiment we did in Spring 2019, so I’m relieved to finally be getting it out for review.

For the rest of the term, my goal is to take a look at all the other work-in-progress and determine what to write up next. I didn’t realize while in the thick of campus leadership just how much mental energy that role took up, and how much that mental energy overlapped with the mental energy required to do deep thinking and writing about my scholarship. I’m looking forward to having some of that mental space back.

Teaching

I’m teaching Software Design this term, a course I regularly teach. A few years back we revamped the course, and I’ve pretty much followed the same order of topics since then. I’ve had a bunch of conversations with one of my junior colleagues about the course, in particular about where our students struggle, and based on those conversations and their experiment in moving topics around, I’m playing around with a different order of topics. I think this reordering will give our students more solid footing in some of the backend development, and better prepare them to work with web frameworks. I worry a bit that they might miss some of the messaging around user-centered design, since I’m not leading with that anymore, so we’ll see what happens.

Service

Winter is by far my busiest term as Summer Science Fellows director. I need to select a new cohort and place them into research labs on campus, and help our second year cohort find research positions, too. There are a lot of moving pieces to keep track of. I developed a pretty decent workflow using Trello last year, which I plan on using again. In addition, I’ll be searching for my own replacement as director, since I’m stepping down at the end of this year.

Personal

I test for my third degree black belt in taekwondo in mid-March (eek!). I am confident that I will pass, but I’d like to try for that elusive perfect score on the form portion of my test. (I’m pretty close, I think!) My taekwondo studio puts on a mini-show twice a year with the black belts, and last year I took over organizing and directing that. Our next show is in April, so I will be spending time this month putting together routines, and then after that running once a week practices up until the show.


Looking at this list, there’s certainly a lot in play, although thankfully I don’t think it rises to the level of requiring a self-care paper chain. And there are things not on this list — the end of Comps at the end of the term, my work on the tenure and promotion committee, stuff at home — that are also ongoing. But I’m mindful about my limits and am working hard to ensure that I keep everything within comfortable boundaries so that I don’t completely exhaust myself.

Currently reading: Unraveling Faculty Burnout: Pathways to Reckoning and Renewal, by Rebecca Pope-Ruark.

Advertisement

“x, y, z. Pretty close.”

My family and I spent a week with my brother, sister-in-law, and niece at the end of my winter break. My niece is a year and a half old, and unintentionally hysterical in the way that really young kids are.

My SIL recently taught my niece to recite the alphabet. As my niece practiced saying the letters and repeating the order, my SIL encouraged her by saying, “Pretty close!” My SIL used this phrase often enough that now my niece ends every recitation of the alphabet with a hearty “Pretty close.” To her, “pretty close” IS part of the alphabet.

(The alphabet recitation happened many times during our visit, and it never got old.)

I’ve been thinking about this scenario and how it relates to how students form mental models of course content. I recently introduced my Software Design students to git and GitHub. Students often struggle to learn version control — the workflow and the commands — and don’t develop great mental models as a result. Particularly at this point in the term, when they’ve only done two short labs introducing them to the key commands and ideas, git seems to consist of a series of magical and confusing commands you issue in hopes that your code will be saved in your local and remote repositories (as illustrated beautifully in this xkcd comic). It’s hard at this point for them to figure out which commands are “alphabet commands” — necessary to complete the task at hand — and which commands are “pretty close commands” — not necessary for the current task, but they’ve heard them in conjunction with the other commands and figure they must play a role in completing the task.

Eventually, my niece will realize that “pretty close” is not the last letter of the alphabet, as she gains more understanding of and fluency with language and has more opportunities to practice the alphabet with feedback. And eventually, given enough practice and repeated exposure to the workflows, most of my students will be able to cut out the “pretty close commands” as their mental models of git shift. My role, to help them get to that point, is to provide them with plenty of opportunities to practice various workflows, while providing an underlying model of what’s happening to the repositories as they issue and execute those commands and providing appropriate feedback to help students figure out what parts of their models are correct and which ones need refining.


What I’m reading: The Empathy Diaries: A Memoir, by Sherry Turkle.

What I’m listening to: The audiobook version of No Cure for Being Human: (And Other Truths I Need to Hear), by Kate Bowler. (Apparently it’s Memoir Week around these parts!)

Updates from Fall Term

Fall Term at Carleton officially ends at 8:30am CST on the day this posts, the due date for term grades. Fall Term officially ended yesterday afternoon for me, when I submitted my grades. I still need to do a few minor wrap-up things — finish my “notes to self” about things to change for the next time I teach the course, back up the course from Moodle, make sure all course materials are in one place — and once those are complete, I’ll be ready to move on to thinking about Winter Term, and about the various things on my plate during this long break between Fall Term and Winter Term (which starts in early January).

I have a longer post planned on my first year Ethics of Technology seminar — watch for that later this month. For now, here are some highlights from the term that was.

“Maintenance” proved to be an apt theme. I now think “maintenance” is my theme for the year, and not just for the fall. Thinking about my workload in terms of maintenance helped prevent me (most of the time, anyway) from overextending myself. From putting things into my course that might be flashy but would have a small payoff in the grand scheme of things. From saying “yes” to requests that weren’t in my core set of values. From burning myself out. Focusing on slow and steady forward progress also reminded me that change can happen in small increments consistently met over time, which (most of the time) headed off my frustration about how slow things can and do move in academia.

I quit Facebook. OK, technically I’ve deactivated my account, because I communicate with neighbors and a few other groups via Messenger and I wanted to continue to do so. But otherwise, I’m off, completely. The decision’s been a long time coming, frankly. Facebook became more of a source of stress than a fun way to keep up with family and friends. Facebook ceased to be fun for me a long time ago, I now realize, and I stayed on because of a weird fear of missing out. I also became increasingly uncomfortable with supporting a company with deplorable ethics that actively and daily harms the very fabric of society. (Not shockingly, Facebook was a frequent topic of conversations and readings in my first year seminar.) The first week off was tough (I probably did go through some sort of withdrawal), but after that it’s been…fine. I’m happier and calmer, and best of all have more free time. I wish I had done this years ago!

I’m dreaming about alternate models for the CS major. This term I’ve been working with various offices on campus to possibly bring a long-simmering idea of mine — a corps of students who work to maintain and grow software development civic engagement projects from previous courses, actively working with community organizations — to the pilot stage. (“Long-simmering” doesn’t quite do it justice — I’ve been actively working on this idea for 5 years now!) Making sure we do this ethically and sustainably is very important to me. Ethics has, not surprisingly, been top of mind all term since that’s the subject of my course. I’ve had conversations with some of our majors about the course, and about the possibility of offering this course to majors at some point. The conversations in both of these realms have me thinking about how we educate our CS majors, how we serve or fail to serve both our majors and others who just want to learn some CS on their way to another major, and what we prioritize. (Tangled up in here are also thoughts about assessment and how much of our assessment practices privilege the foundations students bring into a course, but that’s a topic for another time.) Mark Guzdial’s latest blog post about the history of computing education echoes (and much more clearly articulates) some of the complex thoughts that have been swirling in my mind around these questions. TL;DR: I’ve been mulling over what an ethically-focused and service-centered CS major, or program, might look like. Does such a program exist already? What would the key components be? How might such a program prepare students to be ethical software developers and technical leaders? This sort of dreaming actually overlaps quite a bit with the planning I’ve been doing for the next phase of my career, once my STEM Director stint ends — turns out, there may be common themes between the type of leadership role I think I’d like to seek out next, and the way I’m thinking about CS education at the collegiate level.

Winter Break’s looking fairly full right now, but I’m looking forward to more control over my schedule for a few weeks and to tackling some projects that require blocks of less-interrupted time — and to a complete break at the end of the month (hopefully!) before Winter Term starts.

How has fall term or semester been going for you?


What I’m reading: I just finished The Vanishing Half by Brit Bennett. I’m still figuring out what I think about the ending, but the book was excellent, riveting, and complex.

What I’m listening to: After hearing an interview with the author on the Happier podcast, I raced through the audiobook version of Everything Happens for a Reason, by Kate Bowler (and have her more recent memoir, No Cure for Being Human, on my library holds list). It grapples with questions of mortality, sickness, and faith head on.

Day 1

Carleton’s Fall Term officially started yesterday.

The first day of Fall Term feels different from the first days of Winter and Spring Terms. The first day of Fall Term is a culmination of several months of planning and anticipation, unlike the first days of Winter and Spring Terms. There’s the frenetic anxiety present at the start of any term around meeting a new set of students and wondering whether your carefully-designed course will go as planned or go off the rails, of course. But since Fall Term also starts off the academic year, I’ve found this heightens our already-heightened anxiety, and adds to the anticipation. And the first day of Fall Term has its own special schedule, with shorter classes, Opening Convocation, and the president’s reception for faculty and staff. I think this is why at the end of the first day of Fall Term, I’m ten times more exhausted, and more relieved, than after the first days of other terms.

Perhaps the first day of Fall Term’s wardrobe changes also contribute to the heightened exhaustion at the end of the day.

I’m teaching one class this term, a first-year seminar on Ethics of Technology. It occurred to me, right before classes began, that given my class’s time slot, this would likely be my students’ FIRST CARLETON CLASS EVER. No pressure, right? And after 4 consecutive terms of teaching fully online (except for Comps), I worried a bit about being rusty with how to run and pace an in-person class. Turns out, the majority of my students spent the better part of the last school year virtually, so we’re all rusty and re-learning how to learn with others in the same physical space.

Class went really well. I’m really liking this group of students and, from what I could discern in one 50 minute class meeting, their collective energy. I used an icebreaker activity to get students thinking about how their experiences build frameworks through which they make judgments, which then segued into having them think about one of our central course questions (on balance, is technology a net positive, net negative, or neutral for society?) with their frameworks in mind. (We had a particularly lively discussion about chocolate vs. vanilla ice cream.) One icebreaker question was “do you prefer coffee or tea?”, a question I end up asking most of my classes at some point in the term. I’ve found over the years that the younger-skewing my class, the less likely they are to prefer coffee, and that held true in this class as well. I’m not sure why that is, but it’s definitely a consistent trend.

I debated whether I should attend Opening Convo in person, given that we’re not done with baseline testing, but I did and I’m glad I did. Instead of our usual speaker, several faculty, staff, and students read stories submitted by the community about Carleton community members who went above and beyond during the pandemic. It struck exactly the right tone. A tradition at Opening Convo is the singing of the alma mater, which made me very nervous, but instead one of the Carleton choral groups sang it for us. And now I want us to have them sing at every Opening Convo, instead of having us all muddle through.

Between class, lunch with colleagues, and Opening Convo and the reception, I was pretty peopled out by the time I left campus. I ended up hanging out with the neighbors when I got home, so I’m starting today with depleted people reserves and a schedule full of meetings. Whoops.

It was lovely to be back in person, and it was lovely to start of the term on such a positive note. I’m really looking forward to the term ahead!


What I’m reading: Race After Technology: Abolitionist Tools for the New Jim Code, by Ruha Benjamin. HIGHLY RECOMMEND so far.

What I’m listening to: The podcast Depresh Mode with John Moe. This week’s episode touched on how family traumas shape us, and I thought it was really well done.

5 Questions as I Design a First Year Seminar

Due to the high demand for computer science courses, my department rarely offers a first year seminar (or, as we call them at Carleton, Argument and Inquiry seminars, or A&Is for short). We last offered one in 2014: Human-Centered Computing, taught by me. So when the opportunity arose for us to propose an A&I seminar for 2021-22, I jumped at the chance. This fall, I’ll be teaching Ethics of Technology as an A&I seminar.

I adore teaching A&I seminars. I like having a class solely comprised of brand-new Carleton students, and watching as they adjust to college and to life at Carleton. I like having a hand in helping them navigate this strange new place. I appreciate the A&I as a gentle introduction and/or a “sampler platter” to a particular subject, rather than a comprehensive overview. The point of an A&I, after all, is to introduce students to how scholars ask and answer questions in a field — which means I can be creative in how I interweave the course topic with this goal. This venue gives me an opportunity to teach something we don’t currently offer in our CS curriculum — and perhaps a way to try out what this might look like as part of our regular curriculum. (Case in point: our Human-Computer Interaction elective grew out of that Human-Centered Computing A&I seminar.)

Designing an A&I seminar is challenging in the best of times, but even more so in I Thought We Were Post-Pandemic But Apparently Not times. As I plan out my course, I keep coming back to the same five questions.

What supports will my students need to adjust to full-time, face-to-face learning? Incoming first year students experienced all sorts of learning models over the past year and a half: fully online, fully in person, hybrid, hyflex, Hi-C (ok, maybe not that last one). Whether they graduated in 2020 and took a gap year, or graduated in 2021, their high school experience ended weirdly. What expectations will these students carry into the college classroom? How can I create an environment where we all feel physically safe to share the same air and the same small space? What can I do to help them learn in the presence of others, something we all took for granted as the norm pre-pandemic?

How can I best design my in-person course for flexibility? I remain skeptical that everything will be hunky-dory, back to normal for the entire term. Don’t get me wrong: I take a lot of comfort in the fact that the vast majority of our community will be fully vaccinated. But students will likely get sick or have to quarantine. Heck, I have an unvaccinated (because of age) kiddo at home who (as of now) will be back in school full time around (as of now) unmasked people. So I may get sick or have to quarantine. I feel like there’s less course design support for flexibility this summer, and while the lessons I learned last summer are definitely valuable, I still feel a bit lost here.

What trauma will we all carry into this year, and how will it manifest? Earlier this summer, I naively thought that we’d be heading into post-pandemic life more fully, and not back into the thick of the pandemic. Which, I think, means that some of the trauma we carry is the same old trauma of living through a global pandemic. But there’s also pandemic weariness, pandemic anger over how preventable this current wave was, pandemic grief over all those we’ve lost, pandemic uncertainty about the future, pandemic despair that we seem to be heading back to “business as usual” and not taking away any lessons about the precariousness of so many in our society….you get the picture. We’re grieving, we’re exhausted, we’re angry, we’re fed up. Our collective mental health is a dumpster fire. We don’t have the resources — at my institution, in our medical system, in society writ large — to deal with trauma on this scale. How do I help my students navigate this — particularly while I’m trying to navigate my own trauma?

What should my students read? This is more of an “embarrassment of riches” question. There is so much good writing on all sorts of aspects of ethics in technology. I flirted with the idea of a textbook for a bit, but abandoned that idea because there’s so much non-textbook reading I could assign instead. Should I have students read a few books and deep-dive into a few topics? Should I go broader and have students read more long-form journalism articles on a wider set of topics? I need to decide soon (technically, I needed to decide when textbook orders were due earlier this month), but I’ll admit to a bit of decision paralysis here.

What is the one thing I want my students to walk away from this course with? I haven’t settled on my central course question yet. And that’s certainly a big part of what I want students to take away from my class. But I also want my students to walk away with a sense of resilience. A sense of belonging. A sense of agency. And a strong support network. I want my students to leave my class thinking that it was a safe place to learn and to try out ideas, and feeling that Carleton is a home for them. To me, particularly this year, that’s at least as important — if not more so — than any of the course content or core ideas.

What questions are you asking yourself as we head into the later part of summer and the transition to a new school year?


What I’m reading: Black Boy Out of TIme: A Memoir, by Hari Ziyad.

What I’m listening to watching: The Olympics! Particularly swimming, and some of the taekwondo.

5 Pandemic Teaching Practices I Plan to Keep

As Spring Term wound down and hints about the structure of Fall Term (and the summer) emerged over the past few weeks, I found myself reflecting on the past year+ of pandemic teaching. I talked in my last post about returning to some of the normalcy of interacting in person, and how much I’m looking forward to little things I used to take for granted. At the same time, I recognize how much grief and trauma we carry forward, individually and collectively, and wonder / worry about what that will look like and how we will deal with it, next year and beyond.

Somewhere in the middle of those two spaces lies pedagogy — what it was in the Before Times, what it became in Pandemic Times, and what it will look like henceforth. I’ve spent a lot of time thinking about the “henceforth” part. What have I learned in the last 4 terms of teaching online? How will this carry over into my future courses? What’s going to “stick”?

This, of course, is not a one-time reflection — I’m sure my thoughts will morph as we settle into whatever becomes our normal. But at this point in time, I keep settling on the same 5 things, which makes me think these will be the most likely to “stick”.

1. Weekly grid

I first saw this idea in a Resilient Pedagogy workshop last summer (and blogged about it here). The grid communicates expectations to students about what’s going on in class in a particular week, in what mode, and how long each item should take them to complete. I’ve found the grid invaluable for planning out each week. It shows me whether activities are balanced across modalities or whether I have to switch things around (e.g., do I have too many asynchronous team activities planned?). It keeps me honest in my expectations of students — I can quickly see if what I’ve planned will take 8 hours or 16 hours, and adjust accordingly. And I find it much, much easier to parse than looking at a list of activities on a Moodle page. So much so, that I embedded the grid for the week into that week’s Moodle page.

Screen shot of Moodle page for Week 6 in Software Design, highlighting the activity grid.

I’ll continue this because: It makes planning easier for me! And it has all of the key information for the week in one place for the students, including when office hours are and how to access the lab assistants.

2. Sunday night videos

I’m pretty sure I got this idea from Small Teaching Online, by Flower Darby and James Lang. The Sunday Night Video, so named because I often ended up recording and/or posting the video on Sunday night, is a short, 5-10 minute video which presents a high-level review of what we did in class last week and what’s coming up this week. The review and preview focus on how the course activities, concepts, skills, etc. fit into the learning goals and the larger arc of the course. Similarly to the grid, it provides orientation and context within the course — why are we doing this set of activities now? How will this get us closer to achieving the learning goals in the course?

Screen shot of the weekly review/preview video, a.k.a. the "Sunday Night Video"

I’ll continue this because: It’s a quick and accessible way to remind students of how all of the pieces fit together. It shows students how we’re progressing towards the learning goals for the course. It helps them connect the dots.

I might modify this by: Instead of recording a video, I could start off the first class meeting of the week with this content. I don’t know if that’s the best use of limited class time, but I could probably do a variation of this in a shorter amount of time. I may experiment with this in the fall, when I’m teaching a first year seminar.

3. Collaboratively annotated readings

I’ve posted previously about my use of Hypothes.is in my Computer Networks course (also written up here), and I’ve also used Hypothes.is in Software Design. When I first experimented with it, I thought of it exclusively as an asynchronous team tool, for students to label and highlight course concepts together. (For instance, in Software Design I have students apply Steve Krug’s Trunk Test to a web site, finding and highlighting answers to each of the Trunk Test questions.) The more I used it, the more I realized how I could use it to focus students’ attention on key concepts in particularly dense readings, or guide students through reading a recent paper related to course concepts, or (in the case of Computer Networks) walking students through a protocol specification. The example below shows my annotations in our online textbook for a particularly tricky topic.

Annotated text using Hypothes.is, explaining the finer points of TCP Congestion Control in a Computer Networks course.

In turn, students can add their own highlights, comment on my annotations, and so on — which leads to a dialog about the material before we even get to class!

I’ll continue this because: It’s an effective way for me to communicate how students should read a particular selection and what to focus on, and help them be more effective readers of technical content. It allows students to communicate with me as they are reading so that I can get a clear sense of what’s confusing and what’s piqued their interest. The act of annotating a reading also serves as a valuable check to me — I can hone in on what’s really important, and cut out sections that I may have assigned in the past but that don’t carry much weight in terms of student comprehension of a particular concept.

4. Using Google Docs during small group activities

When we moved to online teaching, I lamented the loss of in-person group work and of teaching in my favorite classroom space, a large room with tables and walls of whiteboards. How would I reproduce the collaborative brainstorming, the collective question-answering, the creation of communal artifacts, and my walking around the room to answer questions and redirect the wayward group?

Answer: collaborative editing of Google Docs.

Example of a collaboratively edited Google Doc from Software Design, where teams analyzed different websites.

Collaboratively-edited Google Docs allowed me to reproduce the spirit of all of those things. Student teams either had their own document to edit, pre-populated with the discussion questions and prompts, or had a section of the document to edit, also pre-populated with the questions / prompts (shown in the example above). I’d send student teams to breakout rooms after setting up the activity. Sometimes I’d travel from room to room, but because I found this more disruptive than helpful, I’d usually just monitor the activity on the document(s). If I wasn’t seeing any typing for a while, I’d stop by the room. If someone in a team wrote a particularly interesting, insightful, or good point, I’d add a comment. I also used comments to ask guiding questions if a group seemed to be heading off-track or in the wrong direction. The document(s) provided a record of class discussion, which students could revisit or, if they’d missed class for whatever reason, use to catch up. (This was particularly valuable when I had students literally on the other side of the world for whom class met in the middle of the night and who rarely attended synchronous class meetings because of that.)

I’ll continue this because: In addition to providing students with a record of what each group produced, this provides me with a record of what each group produced. Even when I walk around the room, I miss things.

I might modify this by: having students take pictures of the whiteboards and post those to Google Drive, when we use the whiteboards in class. (It might also be an interesting learning activity to have teams annotate the pictures after the fact, as a way to consolidate their learning from a particular class session!)

5. Instructional videos / walkthroughs

I tried, as much as possible, to avoid lecturing in synchronous class meetings, instead opting to record smaller-sized lectures and posting those along with targeted readings. As the pandemic wore on, I found other valuable uses for instructional videos:

  • Walking through worked examples of problems.
  • Providing feedback on things that many students missed on an assignment or exam, to help students who wanted to revise figure out how to approach the revisions.
  • Walking students through the steps of a lab activity — showing them how to do something, and then asking them to stop the video and do a particular section of the lab (shown in the picture below).
  • Providing feedback to individual students and/or teams on an assignment, when it was easier to show them where they went astray instead of trying to put it into words.
Screen shot of a video walking students through a lab on Flask.

I’ll continue this because: Not every student is going to catch everything in a lecture or demonstration the first time around. Allowing students the opportunity to review and rewatch things at their own pace provides more opportunities for real learning — particularly if the students work the example, step through the problem, etc. along with the video. And the students who received video feedback indicated that they found this form of feedback particularly helpful, because they could see what part of the assignment particular pieces of feedback matched.

I might modify this by: finding ways to record the lecture / problem examples portion of class, maybe not all the time, but when I’m teaching a particularly difficult concept.


In reading over this list, I’m struck by the fact that all of these pedagogical practices increase transparency. They expose how students approach and apply the course concepts, and the work of small teams. They give students a glimpse into how I think about the pieces of the course and my expectations for their learning and engagement. They make more of the construction of the learning process visible. And hopefully, by being more transparent and not assuming students know why I’m doing what I’m doing, I’m also being more inclusive.

If you’ve taught during the pandemic, what new practices do you plan to continue?

Midterm … ish … update

We’re currently in Week 7 of 10 of Spring Term, and the only good thing I can say about this state of affairs is THANK GOD the administration moved fall term registration, and advising, to the summer, because if I had to meet with all of my advisees on top of everything else going on this week, I would probably run away to join the circus.

No one is ever at their best at this point in our academic year. Every other institution in the universe (it seems) is out for summer, and we’re all sick of each other and exhausted and cursing our calendar. This year those feelings are amplified. I poll my class every Wednesday (anonymously and when I remember) to see how they’re doing, and this week over half the class responded with some level of “not great”. A good number of my students are dealing with some pretty serious stuff. The other day one of my colleagues said “I wish we could just give everyone an A and send them home at this point.” Which, to be honest, sounds like an excellent strategy.

I have to say that I’ve mostly struggled through the term, too. Work continues to be a firehose, and I continue to work more hours on weekends than I’d like. There are difficult growing pains connected to my leadership role. My course grader went MIA for a good chunk of the term. Both kiddos are really struggling. I’m dealing with a level of exhaustion I haven’t experienced since I-don’t-know-when.

And yet.

I’m fully vaccinated, as is my partner, as are many of my close friends here. I’ve hugged people I don’t live with, for the first time in over a year! And one of my kids is now vaccine-eligible, and is hounding us to schedule their appointment ASAP.

I’ll be hosting students IN MY RESEARCH LAB, PHYSICALLY in a few short weeks.

My Software Design students are awesome and a lot of fun to teach. I am having a blast.

I submitted an article to a journal earlier this month! Something I’d been thinking about writing for a while and then struggling to complete for months. I convinced one of my favorite staff people to coauthor, and writing with her was one of the high points of this academic year. And I’m currently working on another paper, on work I did with students a couple of years ago, which I hope to get out for review by mid-summer.

I was elected to the college’s tenure-and-promotion committee, a 3-year stint. This is super important (and hard!) work, particularly as we figure out what faculty reviews and evaluation look like post-COVID. I’m humbled that my colleagues trust me to be a thoughtful voice in these discussions and deliberations.

Most importantly, despite everything else going on, I feel a rare sense of … calm. A sense that all of the important stuff will get done, maybe not quite on the timeline I’d like, but still, done. That the stuff that doesn’t get done wasn’t really important in the first place. That the current state of affairs, no matter how frustrating or difficult, is temporary. This is a rare state for me in normal circumstances, but especially during the spring, where my depression and anxiety are typically at their worst. Perhaps all that hard work in therapy is starting to pay off.

I hope this week, despite whatever else is on your plate, that you are able to find some small bit of calm among the chaos.

Extending the “central question” experiment to Software Design

In my Fall Term course, Computer Networks, I experimented with designing the course around a central question: should the Internet be considered a public utility or a private good? Students produced reflections at the start and end of the term around this question: the start of the term’s reflection focusing on how they understood the question at present, and the end of the term’s reflection utilizing evidence from the course to demonstrate how their answer did (or did not) evolve.*

The experiment proved so successful that I now plan to do this in as many courses as I can. I like how it focuses the students, succinctly, on the core of what we’re learning and reminds them that what they learn in this course has broader impacts beyond the content. At the same time, the central question helps me focus on what’s really important in the course, which helps me make decisions about what content to include or exclude, what to triage, and how to structure course activities.

This spring, I’m teaching Software Design — the same course I taught a year ago. Software Design is an interesting course in that we cover a lot of ground and a number of seemingly disparate topics loosely united by the theme of “these are things we think our majors should know about how to write effective software”. Things like: how to work effectively in teams. Best practices in function and class design. Code style and commenting. A bit of user interface design and accessibility. How to shepherd a project from idea to deployment. Iterative design. Ethics. Design patterns.

I’ve worked with my colleagues who also teach this course regularly over the past couple of years to streamline the story the course tells. I came up with a “layer cake” diagram to show the students how the topics unite and where various concepts fall in these layers. In my “week in review/weekly preview” videos last spring, I included this diagram to indicate what layer(s) we’d hit the previous week and in the coming week. I think this went a long way towards making the course feel less disjointed to the students.

Three layers of Software Design topics: Professionalism at the top, Design and Architecture in the middle, and tools at the bottom.
The “layer cake” model of Software Design topics. In retrospect, I missed an opportunity to make this look more like a cake.

And yet…this didn’t quite get us all the way to where I wanted to be. There’s still a lot going on in that model. Plus, I feel strongly that a huge part of “writing effective software” involves ethical and social reflection. How might this software cause harm, intentional or otherwise? Whom does this leave out? When, and why, might we choose not to bring a piece of software into the world? Do our teams embrace and interweave diverse perspectives and life experiences? In what ways can software development be an act or a practice of social justice?

So, back to the central question. Given all that’s going on in this course, what should that central question be?

The answer I settled on:

What are our responsibilities, as software developers, when putting software out into the world?

I’d like to use the same initial/final reflection assignment I used in the fall, which means I’ll need to shuffle around the first week’s deliverables (not a huge deal) and modify the current reflection I have students do at the end of this course (where they reflect on the process of software development they experienced over the term). And I think this question lends itself well to a first-day-of-the-course activity framing the course for students. (It’s more holistic than the exercise I’ve used forever, which has students reflect on examples of good and poor design in software and systems they use and work through the design outline of a mythical system.)

More importantly, I believe the question tightly ties in those ethical and social justice issues that I want students to grapple with. It reinforces the idea that software design and development is not a neutral activity. We don’t have the luxury of NOT critically examining ALL the things we bring to the process: our biases, life experiences, world views, identities, and beliefs. And this critical examination is as much a part of the software development process as using GitHub effectively, or writing solid unit tests, or constructing tightly cohesive functions, or gathering requirements.

I’m interested, and eager, to see how this experiment plays out — and I’m already looking forward to my students’ initial and final reflections on this central question.

*In a nod to universal design and flexibility, students chose the modality for this reflection. Many wrote a classic essay, some recorded videos, and others produced and narrated slide decks. My rubric accounted for these various modalities.

5 Lessons from Fall Term

Winter Term is underway (more on that next week)! Yet I still find myself processing and attempting to make sense of Fall Term. To be honest, I find myself dealing with what I can only describe as lingering and persistent trauma — not just over Fall Term, but over the state of the world more generally. It’s hard to process and analyze when everything feels so uncertain and impossibly hard.

On balance, Fall Term went…surprisingly well, given the circumstances. I had a small, engaged class of 15 students. No one unexpectedly disappeared, and everyone passed the course. My course revisions mostly worked, save for a project that went off the rails due to undocumented conflicts in different minor versions of Python. And I managed to make some forward progress on research and various other projects.

In thinking about the term, I found myself returning to five lessons I learned, or re-learned, over the course of the term.

Lesson 1: Everyone is struggling. And it’s ok to acknowledge that publicly.

Fall Term was hard for lots of us, for a variety of reasons. Time zone differences. Health, including mental health, issues. Worries over the election. Concern over the risk-taking behavior of other students. Racial trauma. Isolation and loneliness. Caregiving responsibilities. And while Carleton was not fully online, many of its courses were at least partially online, which meant everyone (students, faculty, and staff) spent much of their days interacting online — difficult even in the best of circumstances. In short, no one’s at their best.

I made checking in with my students a priority. I borrowed an idea from a staff colleague and started each synchronous class meeting with the same anonymous poll, asking them how they were doing. Originally I just summarized the responses, but as the term went on I started displaying the results as a percentage of respondents. I commented briefly, adding (truthfully) where I fell among the options, acknowledging the mindspace we collectively occupied that day, and reminded those who were struggling of various ways to reach out and seek help. Students indicated that they found this helpful — both to see that they were not alone wherever they fell on the continuum that week, and that I was honest about my own struggles. This is definitely something I will continue, including whenever we return to in-person instruction.

Poll window asking "how are you doing today?" with multiple choice options
Zoom editor view of the check-in poll I used at each synchronous class meeting.

Lesson 2: Teaching online is easier the second time around

Don’t get me wrong: Teaching online still feels unnatural, weird, and hard. But it felt way less so than it did in the spring. I was able to tap into the lessons I learned about organizing a week, a lesson, a class meeting, an explanation, and apply them to a very different course. Everything seemed to flow much better — even the project that went off the rails. It also helped that students had a term of online learning under their belts, and knew what to expect — from the modality, from each other, and from me.

I also appreciated even more all of the pedagogical work I put in this summer, and the pedagogical workshops I attended. It was time very much well spent and definitely made a huge difference in how the class ran, and worked.

Lesson 3: Specifications grading helped…a lot

Based on my reading of Specifications Grading and Grading for Equity, I completely revamped my course grading. Did it work? Hell yes!

I found this new-to-me style of grading freeing. Rather than agonizing over “is this exam answer worth 4 points or 5 points?”, I only had to ask “does this answer meet the expectations for the learning objective or concept?” Turns out, in most cases that’s a much easier question to answer. And knowing that students could revise and resubmit any summative work, I found it easier to make these judgment calls. Weirdly, I actually kind of enjoyed grading!

Most students took advantage of the revision opportunities — some multiple times. I found that a subset of the students were really invested in improving their learning through the revision process — and that this freed up some of them to take risks they might not have normally taken. Which, of course, is exactly what I want to happen in my courses! That said, from a grading management perspective, in the future I will likely limit the number of revisions, probably through some kind of token system, to prevent my workload from spiraling out of control.

I never quite figured out how to get Moodle to play nicely with this grading system. I ended up converting the expectations scale to a 4.0 scale and averaging things within categories to calculate the course grades. It was hard for students to figure out their own course grades because the averaging was somewhat opaque and was done outside of Moodle. In the future, I will invest the time to bake this into Moodle so that students have a better sense of how they’re doing in the course.

Lesson 4: Online pedagogy allows for some new collaborative learning opportunities

Computer Networks (the course I taught this fall) is conceptually tricky and often dense. In an in-person class, I make heavy use of office hours and class time to help students extract the important points of a concept, technique, protocol specification, or algorithm from the seemingly overwhelming details. After some success using Hypothes.is, an online annotation tool, in the spring, I experimented with Hypothes.is for some of the denser readings in the course. For a few of the daily targeted readings, I had students answer the reading questions in their small groups by annotating the reading with their answers. For a few others, I pre-annotated the reading to focus their attention on the main points, and had students comment on the annotations and/or add their own. I really liked how this worked out overall, and I think the students got more out of those readings. I plan to continue this practice in the spring and likely beyond. I could see it working really effectively for Intro CS and for Data Structures (our CS 2), where it’s really easy for students to get lost in the details of a reading.

Moving things online wasn’t always neat and contained, but sometimes that’s ok. I usually run an in-class simulation of Internet routing, where students act as autonomous systems in small teams: creating routing tables, entering into peering agreements with each other, and ultimately attempting to “route” data. What normally takes one class period in person spread over several days online. It was messy, and chaotic — and probably taught students about the messiness of real-world Internet routing more effectively and deeply than anything else I have attempted in my 17 years of teaching this topic.

Lesson 5: It’s really, really hard to troubleshoot virtually

When I can’t figure something out, I need to sit down and play around with it. When teaching in person, I spend a lot of time running to the computer lab so that I can see what the students see, in their coding environment, with the same tools and version of Python and all that good stuff.

When the rogue project went off the rails, I found myself flying blind. What version of Python were the students using? Were they all using the same version of Python? Is it the same as mine? Why does the code sometimes work when we ssh in to one of the servers, but not consistently? How do I help Windows users — most of my students — when I have a Mac? Ultimately, I was limited in how much troubleshooting I could do. I’m still not sure what I could have done better, other than perhaps requiring the students to run and develop the code within a virtual machine of some sort. But it’s something I continue to reflect upon how to improve — and particularly, how to better support Windows users in my courses.


I have a lighter teaching load this term — just our capstone, to make room for the heavier workload of my administrative role this term. But I’m already thinking ahead to how I can capture, consolidate, and integrate these lessons into my spring term course — the same course I taught last spring. I look forward to seeing how much better and more effective I can make that course based on what I learned this term.