All things considered, the first class I’ve ever taught went well. Originally I’d been assigned to a different course this semester as a teaching assistant, but 2 days before the start of the semester, I got an email from the department chair informing me that because of a last-minute emergency, I would be teaching a section of our undergraduate algorithms course. In fact, the notice was so short that it took a few days for the university’s system to show me as the course instructor.
Fortunately, the lecturer teaching the other section reached out to me and shared some of her course materials, which helped me get started. Although the materials helped, everybody has their own teaching style, and after a couple of weeks, I realized the way I wanted to teach the course was different from the other lecturer’s approach. This meant that even though we were covering mostly the same material, I still had to come up with my own slides, homework assignments, etc.
In fact, my biggest act of borrowing ended up being from my advisor. He has a set structure for all his exams, and I ended up using that same basic structure for my exams. I haven’t asked him how he evolved that structure, but I suspect it was a mix of making sure the students are appropriately challenged and not making things too difficult to grade.
I knew from the beginning that I’d probably have to flunk at least a few students, which I did. But as cold-hearted as it sounds, I don’t feel as bad about it as I thought I would. It’s not my favorite part of working with students, but I think part of our job is to weed out the unqualified.
Since there’s been so much talk about the lack of diversity at all stages of the tech pipeline, I want to be perfectly clear about what I mean by unqualified. It’s not people who don’t look like the stereotypical programmer (i.e., white or Asian male). It’s not people who didn’t have access to computer science courses in high school. It’s people who don’t put in the work.
Earlier today I was talking to my dad, who taught for several years himself. He said that most of the time if a student came to class regularly, turned in all the homework, and showed some semblance of effort, he’d try to find a way to ensure they got at least a C.
What’s interesting is that the grades pretty much shook out that way on their own. The conversation with my dad took place after I’d already posted my grades. It’s not like I had to do any unexpected intervention to make that happen.
I do want to add one caveat to that, though. Most students are probably aware that if they show some effort, instructors will at least try to work with them. So some people try to take shortcuts and do things that look like effort but aren’t. If you’re one of those people, here’s a public service announcement: we can spot the difference a mile away.
Several years ago, I took a Java programming course, and as the instructor went through the syllabus, he said that every semester he had to flunk somebody for an academic integrity violation. The way he explained it was that if you’re an experienced driver, it’s easy to spot an inexperienced driver on the road. Programming is no different. If you’ve struggled with fundamental concepts and are suddenly turning out enterprise-level code, that’s going to raise a red flag. Fortunately, I didn’t have to deal with anything like that this semester, but I have in the past, and it’s not fun.
So things went pretty well under the circumstances. I might feel differently once I see the student evaluations, but right now I feel satisfied with how things turned out.