Welcome back to yet another teaching reflection. This time around, I’m sharing a reflection on my fourth semester of teaching. Spoiler alert: I taught a different class!
Table of Contents
Like last semester, I taught CSE 2221, a software components course at The Ohio State University. Of course, this time around, I ran the course! In other words, I taught every lecture and ran every lab. In addition, I even had my own graders.
In terms of schedule, I had the evening slot that ran 4:10 – 5:05 PM from Tuesday to Friday. On Tuesdays and Thursdays, I had a lecture. On Wednesdays and Fridays, I had a lab. Conveniently, I also held my office hours immediately after class Tuesday through Thursday. Outside of that, I planned for class.
In terms of material, I taught mostly object oriented programming (OOP) and software craftsmanship with some data structures sprinkled in. Specifically, I covered the following topics:
- Natural Numbers
- Expression Trees
- Design by Contract
If that seems like an odd collection of topics, I definitely agree. That said, we made it work. Unfortunately, there wasn’t a lot of theory to back up these topics, so students often learned them only at a surface level.
Weirdly enough, this course served as a bit of a weed out class for students. In particular, they had to pass this course to get into the major, so I held an awfully large amount of power over the future of my students. As a result, I took great care to ensure that everyone had a chance to pass.
That said, final grades were fairly poor overall:
As you can see, a handful of students didn’t even manage to finish the course. Obviously, I’m not super proud of these grades, and I do think most of the students deserved better. Unfortunately, this is sort of what happens when you have such an exam-heavy course without a curve.
In the future, I’ll be looking for ways to improve student morale and success, but I’ll talk about that more later.
This semester of teaching was by far the hardest on me emotionally. In fact, there was little good I could lean on here, but I’ll share my holistic reflection anyway.
One of my favorite parts of this semester was passing off grading to a couple of undergraduate students. As you may recall, I really, really don’t like grading, so I was thankful to have some help. Of course, working with other people always comes with some messiness, but we’ll chat about that later.
In addition, I really enjoyed working with my students this semester. Since I was able to cover more challenging topics, my students typically had more insightful questions. In fact, I think this was my most active class so far. At least half of my students answered questions on a regular basis.
On top of that, I learned about a cool teaching technique called Peer Instruction (PI) which I leveraged literally every class after learning it. In particular, I follow a style of PI which works in a question format. Recently, I shared my process in another article.
Finally, I took a practicum course which helped me learn a ton of new ways to support my students. For instance, I learned about Classroom Assessment Techniques (CATs) which helped me figure out what my students weren’t learning.
All that said, I’m slightly less happy with the material I’m teaching. Much of it is practical without a good theory background. As a result, most of the students hit a roadblock in their understanding of the material which can be frustrating.
In addition, we have a lot of software craftsmanship rules which aren’t necessarily realistic, and the students tend argue about them a lot—especially if it factors into their grade. Likewise, I have a hard time rationalizing the rules sometimes. For example, why aren’t we allowed to have multiple return statements in a method?
Finally, I’m not sure I like working with computer science students. While I enjoyed their insight, I didn’t really have to do much to motivate them. They were all there because they wanted to be there, so I didn’t get much of that excitement you get when you introduce something cool to someone for the first time. Oh well!
By far, this was my worst semester of teaching to date. In general, there were basically three main issues I faced:
- I didn’t know the material well enough
- I wasn’t prepared to manage graders
- I didn’t love the culture
Coming into this class, I wasn’t ready to teach some of the topics. Either, I wasn’t all that interested in the subject, or it was pretty new to me. As a result, I spent a lot of time this semester brushing up on topics which is hard to do while balancing classes and research.
In addition, this was the first semester that I had to manage people other than my own students. As a result, I had to deal with a lot of the messiness that comes up. If you’re interested in learning more about my struggles with managing my graders, I wrote an entire article about it. Likewise, I’ve had some issues with mentorship as well.
Finally, as I’ve hinted in the previous section, it can be hard to work directly in the culture of elitism and gatekeeping. As someone who is trying to bring some compassion to the engineering space, I find it demoralizing to work with people who are already in too deep.
All that said, I think next semester will be better, but we’ll see!
If you thought things couldn’t get any worse, think again. This semester, I had the displeasure of dealing with a few mischievous students. If you recall, I had a similar issue in my first semester where a student routinely manipulated me for their own gain. Well, it happened again. If you’re interested, I’ve already written a premium article which shares all the details, but I’m happy to summarize.
Throughout the semester, I had a handful of students try to get away with plagiarizing their work. In particular, we caught a few students working in groups and/or stealing code from online. To make matters worse, when they were caught, we couldn’t even get a hold of them to report it.
On another occasion, I had a student plead for some additional exam time—not once but twice. First they showed up late to a midterm then they showed up late to a final. Of course, I didn’t know how to handle the situation in either case, so I told them there was nothing I could do. After all, I didn’t want other students to feel like I was giving their peer some special privilege. At the same time, however, I like to give students the benefit of the doubt. Unfortunately, there is no right answer.
By far, the worst part of teaching has been these little situations that crop up where I don’t necessarily know how to properly handle them. There were too many of those this semester.
One thing that I never thought to do with my reflections was think about how I could make changes going forward. Of course, I feel some of those changes were implied, but I think it might be even better if I documented them explicitly.
To be honest, I was inspired to include this section by the prompt for a reflection I had to write for a course. In it, we had to talk about changes we wanted to make in the future. Here’s my response if you’re interested. Of course, I’ll more or less be outlining the same responses below.
Setting Up Better Grader Expectations
One of the things I majorly failed to do this semester was setup grading expectations with my undergraduate teaching assistants. For whatever reason, I felt a short meeting explaining my teaching philosophy and discussing course logistics would be enough. Unfortunately, I was wrong.
As mentioned previously, I ran into issues throughout the semester where my graders—through no fault of their own—handed out less than fair grades to our students. On several occasions, I had to play mediator between my students and my graders as grades continued to come back negative.
In the future, I’d like to share some examples of how I grade with my graders. Right now, I have several projects already graded that I could pass off as examples. Perhaps if I could gather an example of each appropriate grade tier, it would help my future graders properly assess future students.
In addition, I’d like to put together a set of rubrics—even if I only use them for a semester. That way, I can publish these rubrics, so my graders and students are on the same page. Nothing is worse than a mismatch of expectations between graders and students.
Establishing Better Alternatives to Plagiarism
While I feel like I’m good at developing positive relationships with my students, that doesn’t always make me approachable in every scenario. For example, the pressure of deadlines can sometimes compel students to cheat rather than to ask for help. Next semester, I want to ensure that students feel comfortable reaching out to me for help like extensions when they’re in need.
First, I’ll make sure to take a more serious stance on academic integrity. In the past, I sort of blew it off because I figured students wouldn’t consider it if they felt like they were breaching my trust. In other words, if I could connect with my students, they wouldn’t feel comfortable cheating. Unfortunately, that’s not the case. As a result, I want to outline the policy better in my first lecture.
Then, I’ll probably add a little snippet to the course policies about plagiarism where I’ll give them a few alternatives. Obviously, I don’t want students abusing these opportunities, but it sure beats cheating. No one enjoys going through the academic integrity process.
Including Real-World Examples in My Curriculum
One of the things I got dinged on in my teaching reviews this semester was my lack of real-world examples. Oddly enough, I feel like everything we do in programming courses is related to real-world processes, but we’re not always explicit in where new concepts apply. As a result, I want to make sure I tie in lessons with real-world examples.
At this point, I’m not sure what that’ll look like. For example, when I teach about trees, I also teach about a real-world application of trees like XML. Is that enough? After all, we take this a step further and use this knowledge of XML and trees to read RSS feeds. Is that enough? Honestly, I’m not sure.
In the future, I’ll have trouble figuring out what constitutes a real-world example in programming. Perhaps I’ll eventually have to dig into a real-world codebase. Who knows?
As always, I like to share a bit of feedback from my students. Like usual, I’ll share all the results from my personal survey as well as the university sanctioned Student Evaluation of Instruction (SEI).
Once again, I’m too lazy to extract the latest reviews, so I’ll just show everything in aggregate. That said, at some point, I’ll probably do a semester breakdown. At any rate, here’s the cumulative course breakdown:
As you can see, I already have more responses to my personal survey from the new class than the class I taught for two semesters. With that in mind, let’s get into it!
Level of Effort
To kick off the survey, I like to ask the students how much effort they felt they had to put into the course to do well:
As you can see, students often feel that they have to work pretty hard. Not once in my last four semesters has a student claimed the course was easy. Apparently, learning to program is tough.
Contribution to Learning
The next question I like to ask is about how much the student felt the course contributed to their learning. In particular, I ask questions about their knowledge of the material before and after the course. Then, I ask them how much knowledge is needed to complete the course and how much they felt the course contributed to that knowledge:
One thing that really sticks out to me is how much stronger my students feel at the end of the course than at the beginning. Of course, I suspect that’s because I teach a sophomore course now.
For the first time, I’m finding that students don’t think the course contributes anything to their learning. Honestly, that’s a bit rough to hear, but I’m sure there are things I can improve.
In addition, this is the first time a student felt they didn’t really learn much. Perhaps there are things I can be doing to ensure all my students get something out of the course.
All that said, I still think these curves are great. There’s a clear distinction between where students were at the start of the course and where they ended up. In addition, many of the students felt the course contributed a lot to their growth.
Skill and Responsiveness of Instructor
At this point in the survey, I like to ask a few questions about my abilities as an instructor.
This is one of those charts that I’m always really proud to share as it isolates how students feel about me by ignoring uncontrollable issues like course structure and curriculum. That said, this is the first semester I’m seeing red, so that’s unfortunate.
One thing I noticed is that students almost unanimously agree that I’m available and helpful which is awesome. After all, I might not be the best lecturer or grader, but I make up for it in being supportive and approachable.
Once I get my selfish fill, I like to ask a few questions about the curriculum. For example, was the course workload appropriate? And, were the learning objectives clear?
This time around, I got quite a bit of diversity in responses. For example, this is the first time students felt the learning objectives weren’t clear. In addition, a few students felt like they couldn’t participate fully. I’d be curious to know why!
All that said, I still feel pretty good about these curves. If anything, I figure I’ll be more comfortable with this course next semester, so a lot of these confusion issues should be addressed.
At this point, I like to ask students why they took the course. Unfortunately, this chart is slowly losing its value because the course I teach now (CSE 2221 – Software Components) is a major requirement. That said, I figure I’ll continue to share it for historical purposes:
As you can see, that yellow slice of the pie continues to shrink.
At this point, we get to the fun stuff! First, I open up the opportunity for students to tell me what they felt was the most valuable part of the course.
Every semester, I get a handful of people who really like the labs:
Projects/LabsAnonymous, Fall 2019
Labs and the interactive class activities were the most helpful.Anonymous, Fall 2019
The lectures were great for being exposed to the knowledge that was going to be taught, but the labs really helped by actually being able to put that knowledge into real examples and programs.Anonymous, Fall 2019
At least one of my students appreciated my attempts at clarifying our course discipline:
Helping to be straightforward with the course expectations (no break, no multiple returns, etc.) as well as explaining which ones were more important.Anonymous, Fall 2019
In addition, a few students appreciated the office hours:
I liked the office hours and being able to ask questions directly to the person that was grading my assignments in order to get back points or avoid mistakes in the future.Anonymous, Fall 2019
The office hours and meeting with graders to really understand the shortcomings of the projects.Anonymous, Fall 2019
Finally, one student just straight up enjoyed my effort:
The instructor was extremely good and put lots of effort into overall engagement.Anonymous, Fall 2019
Overall, I’d say it’s nice to receive a bit of validation for the work you put into a course. I always like to look back on these quotes when I’m having a rough day.
When you collect feedback, it’s always a good idea to take some good with some bad. After asking students about their favorite part of the course, I like to ask them what they would like to see in terms of improvements.
One of the biggest critiques I got from students this semester was grading, so naturally I expected to see that a bit here as well:
Better grading on projects (from TAs)Anonymous, Fall 2019
The comments on the projects didn’t always match up with the scores. (There were times when I got extra comments critiquing my coding style, but they were not factored into my grade). This made comments confusing because I don’t understand what is actually wrong with my code and what is a style suggestion. I also felt that studying for exams was more difficult than it should’ve been. I appreciate when the homework correlated to the labs or the labs correlated to the projects. It was helpful for completing the labs and projects and for studying for the exam.Anonymous, Fall 2019
This doesn’t have much to do with you as an instructor, but the project grades got so picky and harsh it started to become hard to actually want to do them and learn from them because it felt like no matter how much work was put into [them], a bad or subpar grade would be the result. It became hard to be motivated about the projects after so much of this.Anonymous, Fall 2019
Outside of grading, I got a lot of insightful feedback around course organization:
I would make it so that the projects weren’t so heavily graded but at the same time encourage more time on projects that everyone struggled with instead of moving on.Anonymous, Fall 2019
I would use more practical aspects of Java rather than use osu components like Queue and NaturalNumberAnonymous, Fall 2019
Make the labs relate to the project, or add on in similar ways. The labs seemed kind of random and randomly placed.Anonymous, Fall 2019
I would make sure that the students had a little more time to do the projectsAnonymous, Fall 2019
Overall, I think most of this is manageable. Of course, I don’t have control over all of it, but I can make steps toward improving most of it.
At the end of the survey, I like to leave the space open for honest testimonials. For me, these serve two purposes:
- I have something to look at on a rough day.
- I have something to reference in future employment opportunities.
This time around, I got quite a few responses, so I’ll try to keep this short by sharing my favorites:
Jeremy absolutely carried the course. For anyone from a beginner to someone using this as a refresher, this is ideal in most (if not all) ways. The in-class coding challenges and subsequent discussions were very useful in gathering some alternative perspectives, and explanations were clear and concise.Anonymous, Fall 2019
Mr. Grifski is an awesome teacher who seems really interested in what he has to teach to the class. He is fun and keeps the class engaging while also being informative.Anonymous, Fall 2019
I enjoy the interactive sections of class (where you ask a question on Tophat then we work with people around us to solve the answer). I wish I had the opportunity to look back at those questions to review for exams as well. I also really like the interactive activities because its a way I can check for understanding and it’s simpler than the labs or projects (because there are a lot of small details to check for in them). I think having extra problems like these is really helpful for learning about different components because it’s a way to test more information than what might be reviewed in the homework, labs or projects.Anonymous, Fall 2019
I thought you did an amazing job teaching the course and rolling with the punches that the graders threw in terms of our project grades being so harsh. It’s clear that you have a real passion for teaching and a great understanding of how teaching should be done to make students interested in learning about the topics provided. I enjoyed the in class questions and game at the end of the year. I thought your grading of the one project (project 10) and the exams was fair and helpful for the future. Overall, while this class can be a pain with the course guidlines and discipline, you handled the material and questions having to do with this very well and you made even the dry subjects worth showing up to lecture for. I hope you continue down the current teaching path your on because I really enjoyed being a part of itGriffen, Fall 2019
Every semester, I seem to get one of these really supportive testimonials that reminds me why I do what I do. Despite how hard this semester was, I’m thankful for the students who supported me along the way.
Since a lot of my students know about my website, I like to give them an opportunity to share article ideas. For the first time, I actually had a single taker:
How coding has changed so far, how you expect it to change in the future…Anonymous, Fall 2019
Unfortunately, I don’t know much history of programming, but it sounds like a great article. Any takers?
Student Evaluation of Instruction
If you look back through the previous reflections, you’ll notice that this section is called “Student Evaluation of Instructor.” As it turns out, that’s not what SEI stands for. Instead, it stands for “Student Evaluation of Instruction” which implies that the review is somehow more holistic. As a result, I’ll review the results as such.
As always, I like to dump the table of results below, but you’re welcome to check out the complete report:
|The subject matter of this course was well organized||4.57||4.25||4.25||4.27|
|This course was intellectually stimulating||4.39||4.20||4.17||4.18|
|This instructor was genuinely interested in teaching||4.87||4.31||4.43||4.46|
|The instructor encouraged students to think for themselves||4.83||4.29||4.38||4.40|
|The instructor was well prepared||4.74||4.28||4.35||4.38|
|The instructor was genuinely interested in helping students||4.96||4.32||4.44||4.44|
|I learned a great deal from this instructor||4.74||4.08||4.15||4.17|
|The instructor created an atmosphere conducive to learning||4.87||4.14||4.22||4.28|
|The instructor communicated the subject matter clearly||4.78||4.11||4.18||4.22|
|Overall, I would rate this instructor as||4.91||4.24||4.36||4.37|
While I thought I had a really rough semester, my students were extremely supportive. In fact, these are some of my best SEIs to date. I guess that shows that as long as you put your students’ needs first, your shortcomings don’t really matter.
All that said, I’d like to share some of the great feedback I got:
Although there were some difficulties associated with this being his first time teaching the course, Jeremy is clearly passionate about teaching, and wanted us to succeed. If he had more control over the course material I think it would’ve been a much smoother experience overall. That being said, he worked really hard to make sure we understood what was going on –great professor.Anonymous, Fall 2019
Really enjoyed this professor throughout this course. He genuinely cared about his students and his teaching philosophy is great. One of the best teachers I’ve encountered and being able to have someone like that in a class that matters is much appreciated. Overall amazing teacher.Anonymous, Fall 2019
Fantastic teacher and I wish he taught software 2 and foundations as well just so I could have him againAnonymous, Fall 2019
Amazing instructor. He was involved with students and was very understanding.Anonymous, Fall 2019
If stuff like this doesn’t make you feel good after such a hard semester, nothing will. I’m thankful for these opportunities to get some candid feedback from students; it always makes for a great end to a semester.
At this point, my reflection is already quite long (4000+ words), so I think I’ll cut it off there. After all, I’d prefer not to spend my whole break writing!
Anyway, thanks again for taking some time to follow me on this journey. In addition, special thanks to all my past students who have helped me grow and develop. I’m really looking forward to teaching full time—if only this pesky PhD wasn’t in the way.
While all this support is great, I have to ask for a little more. In particular, I’d love it if you hopped on my mailing list or even became a patron. Right now, I’m comfortably supported by five patrons, but I’d love to grow that number in the coming year.
In the meantime, you might find some of the following books from Amazon valuable:
- The Spark of Learning: Energizing the College Classroom with the Science of Emotion
- How Humans Learn: The Science and Stories behind Effective College Teaching
Likewise, stick around and check out some of my previous reflections:
- Reflecting on My First Semester of Teaching
- Reflecting on My Second Semester of Teaching
- Reflecting on My Third Semester of Teaching
- Looking Back on My First Year of Teaching
Otherwise, thanks again for your support! I appreciate it.
Did you know you don't have to deal with those nasty tuples from sqlite. Try converting the data to actual Python objects!
I've seen a lot of folks share code on Discord, but some ways are better than others. Let's compare a few of the different ways.