If you weren’t aware, I’m currently a Graduate Teaching Assistant for the Computer Science and Engineering Department at The Ohio State University. I’m writing this article on December 5th, my last day of teaching the Introductory Java course, so I figured it might be fun to try reflecting on my first semester of teaching.
Table of Contents
To put everything into perspective, let’s start by talking logistics. In other words, let’s talk about hours, assignments, number of students, and those sort of things.
The introductory Java course was a 3-credit course which ran Monday, Wednesday, and Thursday every week for about 15 weeks. I was fortunate enough to have an afternoon class (1:50 – 2:45 PM), so my students were often alert and engaged.
On Mondays and Wednesdays, I held a regular 55-minute lecture with about 40 students. Meanwhile, on Thursday, I held a 55-minute lab section with those same students plus 40 additional students from another class. With a school as massive as OSU, there were definitely other sections of the same class. In fact, I believe there were 17 sections in total, so about 680 total students were taking the same course.
In addition to teaching, I graded all assignments including labs, projects, and homework. To put that into perspective, I ended up grading roughly 120 assignments a week. On top of that, I administered three exams: two midterms and a final. All of which I graded myself. In case you’re curious, here’s the high-level breakdown of final grades for my first course:
Over the course of the semester, I taught many topics from branching to file IO. If you’re interested, you can check out the entire schedule on the course website.
While all those numbers above are nice to look at, they don’t really give you an idea of how my semester actually went. So, let’s talk about it.
I know I mentioned a few months ago that I decided to go into teaching on a whim—thanks to an intern—but I’ve been very happy with that decision. In fact, I love teaching. It’s just about the only part of going back to school that I’ve really enjoyed.
Perhaps the best part of the job has been seeing students who are genuinely interested in learning (more on that later). With all the regular bullshit in the news lately, it’s nice to know that there are still smart, hard-working people in this world.
In addition, I have really enjoyed being in front of a classroom teaching Computer Science. It always feels good to be in a position where you can have a positive influence on people, and I got that opportunity several times a week.
Overall, I was pleasantly surprised by the experience, and I hope I can do it again soon!
To be honest, there were really only two things I didn’t like about the job: grading and the course material (more on that later). For now, let’s talk a little bit about grading.
As much as I know it’s important for the students to get good feedback, I found it hard to stay positive about the activity when it’s so overwhelming. At times, I felt like I needed my own GTA to assist with the grading.
To put the amount of grading I did into perspective, students were asked to complete roughly four assignments a week: a quiz, a lab, a project, and a homework. Of those four assignments, I graded 3 of them with the expectation that I was done before the next one was due. As a result, I graded roughly 120 assignments a week.
Things got worse around exam time as I had to grade those as well. Typically, I graded all of the exams by problem, so I could limit the bias from exam to exam. As a result, I finished grading all exams at the same time which could take several hours.
In any given week, grading ate up about 10-15 hours of my time. Beyond that, I spent about 3 hours in the classroom, 3 hours in the office, and 1 hour in meetings. In other words, the bulk of my time was spent grading which wasn’t ideal.
Alright, I lied. There are other parts of the job I don’t like, but they rarely happen: plagiarism and disrespect.
Let’s talk about the first one because it’s easy. Plagiarism occurs when a student or group of students decide to borrow work from somewhere else and represent it as their own. For example, let’s say I ask my students to individually write a solution to Fizz Buzz. Plagiarism could fall under any of the following cases:
- Copying a solution to Fizz Buzz from an online source or another student
- Slightly modifying a solution from an online source or another student
- Writing code as a group of students
And, I’m sure there are countless other cases, but these are the ones that I find are most common.
Over the past semester, I noticed a few students that had plagiarized some of their work. Luckily, all of them dropped the class, so I didn’t have to deal with any of the academic integrity processes. However, I didn’t enjoy discovering the plagiarism. It does hurt a little bit as a teacher because you know they can do better than that. I get the same feeling when I watch my favorite sports teams perform poorly.
Another thing I’m struggling with is the blatant disrespect of certain students. I tend to be a nice guy, so I like to cut people a break every now and then:
That’s typically how I operate. Unfortunately, some students think this is an invitation to take advantage of me. In particular, I’ve had students ask for extensions only to turn work in past those extensions. Other students have skipped every class and still expected a good attendance grade. Obviously, these are not actions that I appreciate.
At this point, I would like to share a few stories that have played a positive role in my first semester of teaching.
Most of the time, I felt like office hours were a waste. After all, students typically only came close to deadlines and exams, so I spent a majority of the time grading.
When students did come, they often wanted solutions to homework that they waited until the last minute to start. Of course, I value teaching, so I tried to avoid handing out solutions. Instead, I opted for the socratic method where I would quiz students on their knowledge of the subject to try to guide them toward a possible solution.
However, there’s always a balance between guiding students to the solution and outright handing it to them in the interest of time. After all, I had 40 students and using the socratic method on all of them individually would have been a major time sink.
Fortunately, some students would come to me with their own set of questions prepared. In particular, I had a pair of students who started coming to my office hours right before the final. They asked me questions about the inner workings of everything they’ve learned even though they weren’t going to be tested on most of it. How cool is that?
It was nice to see students who had insatiable curiosity; they wanted to know the why not just the how. Instead of asking “how do I do that,” they were asking questions like “why does it work like that?” For example, here were a few of their questions:
- Why do we make fields private?
- What’s the point of classes? Why do we use them?
- What’s the difference between a static and an instance method?
- How does try/catch work? When would we use one?
- What’s the difference between catching and throwing an exception?
All of these would be great exam questions, by the way, if this were a more theoretical course. Unfortunately, we tend to teach the algorithmic steps to solving certain types of problems without teaching the intuition behind those algorithms.
To see what it’s like to take a class that covers the “how” but not the “why, consider the following: how many of your family member hate common core math because it doesn’t just teach the algorithms? Now, think about how many of them actually understand math. I’d imagine not many of them.
I suppose that was why it was so refreshing to see students who really wanted to understand how things work under the hood.
As many of you may know, I have a love/hate relationship with Python. It’s a wonderfully beautiful and powerful language, but it has some nasty drawbacks in packaging and portability. That said, I’d love to teach it. Well, fortunately for me, I got to this past semester.
One of my students happened to pick up a coding job in Python despite having no experience with the language. Luckily for them, I’d been there, so I was perfectly equipped to help them in their troubles.
To start, I tried comparing Python to a language they more or less knew, Java. If you’re familiar with these languages, you’d know that there are probably more differences than similarities, so I started with the big picture differences:
- Compiled vs. Interpreted
- Static vs. Dynamic Typing
- Braces vs. White Space
After that, we dug into the project they were working on. I tried my best to reserve my judgment about the code organization and implementation while simultaneously helping my student make sense of it all.
Overall, it was a lot of fun! We even chatted a little about Git which is always tough the first time around. I hope they are doing well.
Alright, enough about me! Let’s talk about some of the feedback I received from my students. The following sections cover a few of the questions I asked in an exit survey:
Level of Effort
Actually, I should probably preface by revealing the fact that I used the default course review template in Google Forms. However, I did add one section for testimonials (more on that later).
At any rate, one of the questions on the survey asked the students to rate their level of effort they put into the course. In other words, I asked them to tell me how hard they felt they worked:
As you can see, of the students that chose to answer the survey, all of them felt that they put in at least a satisfactory level of effort. So, they at least tried to do well which is all I can ask as a teacher.
Contribution to Learning
In a following section, students were asked to answer a series of question to indicate their knowledge of the material throughout the course and how the course did or didn’t contribute to their learning.
More specifically, students were asked to rank their thoughts on the following statements just as before:
- Level of Skill/Knowledge at the Start of the Course
- Level of Skill/Knowledge at the End of the Course
- Level of Skill/Knowledge Required to Complete the Course
- Contribution of Course to Your Skill/Knowledge
Based on these statements, I received the following graph:
In general, most students had almost no programming knowledge coming into the course and many of them felt like their knowledge had grown considerably over the course of the semester. That’s exciting!
What’s even more exciting is that almost all of the students attribute their knowledge gain to the course itself and not outside sources.
On a side note, it appears many of the students felt that they learned more than they needed to know to be successful in the course. I take that as a personal success as I like to sneak tidbits of extra content in the course. As we’ll see later, however, not all students appreciate that.
Skill and Responsiveness of the Instructor
In the following section, I asked a series of questions about my own abilities as an instructor. In particular, I asked my students to rank their thoughts on the following statements:
- Instructor was an effective lecturer/demonstrator
- Presentations were clear and organized
- Instructor stimulated student interest
- Instructor effectively used time during class periods
- Instructor was available and helpful
- Grading was prompt and had useful feedback
The following graph gives an overview of those results:
To be honest, I’m surprised by these results. Often times, I felt students were disengaged, so it’s odd to see green and purple dominate these charts. That said, that’s why it’s important to do these surveys. After all, I’m no mind reader.
Of all these questions, it seems the area I could improve the most is in content organization, and I totally agree. I didn’t always come to class prepared, and I think that showed in a few of my lectures.
In addition to everything up to this point, I also asked my students about the course content. Of course, almost all of this was out of my control, but I was curious to see if the students had some of the same feelings as me. In particular, I was curious about the students’ thoughts on the following statements:
- Learning objectives were clear
- Course content was organized and well planned
- Course workload was appropriate
- Course organized to allow all students to participate fully
Let’s check out the graph:
As we can see, the breakdown is pretty similar to the last section, but it looks like there’s a bit of a shift toward the middle range of options.
In general though, I’m not sure what to make of the results. After all, I have a bit of a negative relationship with the course material. For instance, I think it focuses too much on silly concepts (like string formatting) in the name of practicality. Ironically, I’ve never really used string formatting for more than lazy debugging, but I’m sure it’s useful somewhere.
I’ve also made some criticisms on how the material is scaffolded. In particular, there’s a lot of focus on imperative programming in a language (Java) that is entirely made up of objects. Without understanding objects, a lot of the syntax can seem bizarre, and I often had to dodge questions to avoid lengthy discussions (i.e. what are the private and public keywords?).
Finally, I felt the use of Eclipse was an added layer of complexity that often frustrated students. That’s why I often advocate for the use of Dr. Java as a learning tool. I feel it’s much easier to teach Java when it can be used like a scripting language.
At any rate, let’s keep moving!
Before I asked any open ended questions, I made sure to ask students why they chose the course. The following graph shows the breakdown of their responses:
As you can see, the results were split pretty evenly between general interest and degree requirements. In general, I feel that accurately reflects my experience with the students. Some seemed interested and others were just trying to pass.
At this point, I asked each student to share an open-ended response to the following question: what aspects of this course were most useful or valuable? In other words, I asked the perfect minimalist question: how did this course bring value to your life? Below, you’ll find some of my favorites:
The Value of Not Teaching to the Test
One of my favorite responses talks a bit about the value of learning over teaching to the test.
I really liked that Jeremy taught us the content so we actually learned and understood it rather than just teaching so we could pass a test.Anonymous, Fall 2018
As a teacher, I love to hear this kind of thing, but I’m not surprised when I get the opposite critique. After all, we’re in a metric-driven society. GPA matters. SAT, ACT, and GRE scores matter. Apparently, three-letter acronyms also matter.
The Value of a Course Website
Another one of my favorite responses covers the value of a course website and their associated resources.
The slideshows that were went over during class were posted on the course website so they could be easily reviewed at a later time. The entire course website was very well made with the syllabus and additional information included as well.Anonymous, Fall 2018
Shout out to the course coordinator for creating such a great resources for the students. Course websites really are a great way to organize and present content.
The Value of Hands-on Learning
As another student mentions, labs are an excellent way to offer risk-free learning with easy access to instructor aid.
The projects, the lectures, and the labs were the best parts of this course to me. I especially liked the labs because it was clear that they were for our purpose mostly. What we put in to the lab is what we would get out of it every week. I used them as an opportunity to learn that content and get to work directly with the TA which I appreciated.Anonymous, Fall 2018
In this class, we held weekly labs which were more or less graded on completion. Of course, I added an extra rule which forced students to work in pairs, but I think labs work great in either cases. Clearly, at least one of the students felt the same way.
The Value of Transferable Skills
One of the lessons I tried to teach this semester was that this course was more about problem solving than it was about Java. As it turns out, that philosophy stuck with one of my students.
The fact that a lot of the information we learned will help with learning other programming languagesAnonymous, Fall 2018
As many programmers know, learning the first couple languages is hard, but eventually the skills start to transfer. I’m happy to see that at least one student is already looking ahead.
In addition to the feedback above, I also asked my students to submit testimonials. Below, you’ll find some of my favorites:
Perhaps one of my most annoying qualities—depending on who you ask—is that I tend to bounce from topic to topic based on what I find exciting or interesting in the moment. Naturally, this silly behavior can manifest itself as what some students may call a “coding tangent” (patent pending on the podcast name by the way) in the classroom. Luckily for me, it seems at least one of my students got some value out of these coding tangents.
I really enjoy [Jeremy’s] teaching style. [He] seemed to actually enjoy teaching which seems to be a rare occurrence. I felt like [he] tried to teach so that I actually understood Java which I think is the most important thing. I enjoyed the coding tangents where [he] would detail some of how java is used in the real world.Tony, Fall 2018
Since Tony mentioned it, I do think it’s rare to find teachers who actually enjoy teaching which is a bit odd. How did so may people stumble into a profession they don’t even like?
One of the skills I’ve grown to develop is patience. To be honest, I’m not sure where the skill came from, but my dad used to call me the Zen Master. Apparently, it was a lot more common for people to lose their temper in the 80s, and he was honestly surprised I was able to maintain my composure in many of the situations I had experienced growing up.
Well, as it turns out, that patience appears to be paying off in my current role as an instructor:
I thought that Professor Grifski did really well teaching the class. I came into Java without having any coding background while nearly half of my class already did. However, he still spent time going through each detail which quickly allowed me to catch up. Despite the numerous times that I emailed him questions, he answered promptly and patiently. I also really appreciated the fact that he didn’t simply assign grades to our assignments, but provided comments that would point out mistakes and how they could be corrected and avoided in the future.Anonymous, Fall 2018
I’m very thankful that students appreciated the feedback they received on their homework. At times, grading was very challenging, so I’m glad some people were getting value out of it.
While many of the testimonials were overwhelmingly positive, I did receive a few that were more practical. For instance, one of my students called me out for introducing complex topics too early, and I think that’s so true:
I was really amazed at how well [Jeremy] taught considering it was [his] first semester. While it obviously isn’t easy to get a classroom to participate all the time, [he] never failed to encourage us to think independently and be involved in [the] lectures. [He] always had the best interest of the students at the forefront of [his] priorities and I think we all appreciated that. [He] tried [his] best to simplify the somewhat complex and confusing nature of this course and I was appreciative of that. Personally, I am a biomedical engineering student planning to go into the medical field after graduation, so coding most likely won’t be a big part of my life in the future. However, I always appreciated when [Jeremy] discussed real world examples from [his] career and academic studies. Also, while it didn’t always interest me personally, I thought it was cool when [he] would get into more detail than the course allotted with certain aspects of the class. In the future though, I think it might be worth considering saving those types of discussions until later in the semester to avoid confusing students. In general, if teaching is what [Jeremy is] planning on doing in life, then I think Ohio State is very lucky to have [him].Anonymous, Fall 2018
What a great way to end a series of testimonials than with that wonderful line “Ohio State is very lucky to have [him].” I’m so fortunate to have been put in this position, and I’m excited to get back to it next semester.
Student Evaluation of Instruction
But wait, there’s more! In addition to the feedback form I provided my students, the university also runs it’s own student evaluation of instruction (SEI) survey. I know I’ve already dug into the feedback quite a bit already, but the results just came in (December 18, 2018).
In this survey, students were asked to rank to the following 10 statements similar to my own survey:
- The subject matter of this course was well organized
- The instructor was well prepared
- The instructor communicated the subject matter clearly
- This instructor was genuinely interested in teaching
- The instructor was genuinely interested in helping students
- The instructor created an atmosphere conducive to learning
- This course was intellectually stimulating
- The instructor encouraged students to think for themselves
- I learned a great deal from this instructor
- Overall, I would rate this instructor as…
In addition, there was a comment section where students could drop testimonials as I had in my own survey. As a result, I won’t share any of the results here, but you can imagine they’re content was similar.
What was particularly cool about the SEI report was that it showed my score relative to my department (Computer Science and Engineering), college (Engineering), and university. For the sake of time, I’ll share those results below in a table of means between 0 (poor/strongly disagree) and 5 (excellent/strongly agree). Keep in mind that the sample size was much better in this survey (32 vs. 8), so the results should give you a more complete picture.
|The subject matter of this course was well organized||4.13||4.19||4.16||4.22|
|This course was intellectually stimulating||4.38||4.14||4.09||4.14|
|This instructor was genuinely interested in teaching||4.72||4.23||4.37||4.44|
|The instructor encouraged students to think for themselves||4.75||4.23||4.32||4.37|
|The instructor was well prepared||4.50||4.21||4.27||4.34|
|The instructor was genuinely interested in helping students||4.72||4.27||4.37||4.42|
|I learned a great deal from this instructor||4.53||4.02||4.06||4.12|
|The instructor created an atmosphere conducive to learning||4.53||4.07||4.14||4.24|
|The instructor communicated the subject matter clearly||4.44||4.00||4.07||4.17|
|Overall, I would rate this instructor as||4.63||4.17||4.27||4.34|
Overall, I’d say I’m pretty happy with how everything turned out. In general, my students felt that I was well above average in almost every category which inspires me to keep working hard. I know my students appreciate it.
If you’re interested in learning more about this feedback, here’s the actual report as a PDF. The information doesn’t seem confidential, so I’m cool with releasing it.
As far as I know, I’ll be teaching the same class next semester, so I’m excited to take what I’ve learned and apply it to the next course. Perhaps I’ll be able to grow into a real professor role someday.
In the meantime, why not tell your friends to check out The Renegade Coder. If this website has been at all beneficial to you, share it with a friend. I always appreciate the help!
Magic numbers are numerical constants that have no clear meaning in the code and therefore make code harder to read. Anything that makes code harder to read is something we can use to obfuscate our...
Type hinting is a nice tool that dynamic typing languages employ to make code more readable. As you can probably imagine, readability is not the goal with obfuscating code, so we ought to get rid of...