<p>I have taught the same programming class a couple of times. While I let the TA(s) do the grading, I</p>
<ul>
<li>have kept notes from previous iterations teaching, describing most of the common errors / inelegancies, and the TAs get this from me. I don't just give them the &quot;perfect&quot; solution.</li>
<li>still make a cursory pass through homework submissions, half an hour before class time, so that I can show the class the various approaches that were taken, and what I like/dislike about them. Students actually like that: &quot;Hey, he showed our solution as as good one!&quot;</li>
</ul>
<p>I think this approach catches most of your objections that grading requires deeper understanding.</p>

CC BY-SA 4.0
2022-05-01T03:12:53.923Z
2022-05-01T05:33:28.210Z
2022-05-01T05:33:28.210Z
Victor Eijkhout
<p>I hate to say that &quot;it depends&quot;, but it really does depend.  Brian's comment about cultural norms being different is well taken, but if you have the choice available to you, and you are the person running the course, and the workload is reasonable either way, then you are best positioned to decide which aspect of the course you want to have the most control over.</p>
<p>Personally, I would always choose lecture, but partly that's because I lecture well, and partly because I feel that the lecturer is the person that students think of as their teacher.</p>
<p>However, that would be <em>my</em> choice.  You could always come to the first day, do the general course introduction, introduce (and praise!) the TA you are leaving the students with, let the students know about your office hours and email address, and then be off about your way.</p>
<p>If you take that path, I would make it a point to visit many of the classes, both to make sure that the TAs are doing a good job, and to keep a presence among the students.</p>

CC BY-SA 4.0
2022-04-27T14:47:42.380Z
2022-04-27T14:47:42.380Z
Ben I.
<p>I'm going to jump in with an answer that doesn't really apply to your situation. It does however address a key point that you made -- Each solution is unique.</p>
<p>The short answer is &quot;both&quot;. Ideally the class is taking place in a teaching lab, and each student (or small group of students) is seated at a computer and they are trying out the ideas as the teacher demonstrates the concept through live coding. After the initial introduction, the students are then given a task to accomplish with the professor and TA's circulating to answer questions, give suggestions, and evaluating results. All of this happening as the students are working on the problems. This kind of live milestone / monitor grading provides the best feedback and chance for understanding. Formative assessment at its finest.</p>
<p>Now, with 200 students in the room, I am imaging the classes are lectures held in a large hall and that there are few if any computers present. I would still propose that the students would be best served with the six of you maintaining office hours in the lab and evaluating code while the students are present at a computer instead of collecting the code and staring at a cold and unresponsive display.</p>
<p>And I say this as an AP reader who has done exactly that for endless hours.</p>

CC BY-SA 4.0
2022-05-11T14:50:17.420Z
2022-05-11T14:50:17.420Z
codingCat
<p>First, the scenario you describe isn't workable as it is the professor who is ultimately responsible for the course. A problem that is likely to arise is that the quality of lectures would be spotty, with some being fine and others not. I'd guess that students would notice this and complain about the variability. It is also an imbalance of time and effort. Lecturing takes up relatively little time compared to grading. A professor personally grading 200 programs seems impossible if any feedback is to be given. And with five TAs or so, I don't see a way that work load can be balanced. Five lecturers every day? Probably not. TAs only working one day a week for an hour or so while the professor grades 200 papers every week? Unworkable.</p>
<p>A deeper problem in STEM fields is that graduate students may have an imperfect understanding of the topic (though professors might also, I suppose) and, through lack of deep insight mislead students. I developed very deep insight into real analysis (I'm trained in maths), but not really until I'd finished my doctoral research. Up until then I had a somewhat mechanical understanding. But it is that insight that lets a professor guide students toward a goal.</p>
<p>Related to this is that TAs, assuming that they are students, may have the misconception that lectures are about facts rather than about driving the learning of the students. It is too easy to make assumptions about students (and their understanding) if you are one yourself and are biased by your own learning modes and practices. New professors sometimes have the same problems, as I did. Experience, however, gives you a better and more productive view. I've given one absolutely &quot;perfect&quot; lecture from which the students learned exactly nothing. I learned my lesson. One hard lesson for professors to learn, though they must if they are to be effective, is that nearly every one of their students is not like themselves and learns differently than they did and has different goals than they do. TAs are unlikely to have this sophistication about teaching and leaning.</p>
<p>To answer your objections to the &quot;standard&quot; practice, note that it is the responsibility of the professor not only to lecture, but to provide a proper grading rubric that can be followed by those less adept in the subject and that can be justified to students. Lacking that, chaos can ensue. One way to develop a rubric is for the professor to look at a few papers randomly before making the rubric so as to see what sort of guidance the TAs need to follow and what sorts of messages need to be given to the students.</p>
<p>Another adaptation that reduces the variability of grades given by TAs is to have each TA responsible for some of the questions for all of the students, rather than all of the questions for some of the students. That is how we handled major exams back in the day (last century).</p>
<p>Another good practice is to have the professor meet with the TAs as a group and encourage them to bring up any difficult issues they have seen since the prior meeting. The professor and TAs become a team.</p>
<p>However, there is some value in letting (or requiring) TAs to conduct occasional lectures. If a professor gives a TA a couple of weeks to prepare a lecture on a specific topic, reviews their lecture notes, and attends the lecture then it can be beneficial to the training of the TA without being disruptive to the students. I was given such a task by a professor even as an ordinary student in a course. As an undergraduate it was a very difficult task, done fairly poorly, but a good experience. I got feedback from both peers and the professor.</p>

CC BY-SA 4.0
2022-04-29T13:46:32.533Z
I love this answer.
Ben I.
CC BY-SA 4.0
2022-04-29T13:51:42.533Z
@BenI. Note that the answer might be quite different if it were one professor and one TA. But, thanks. Fun to think about these issues again.
Buffy
CC BY-SA 4.0
2022-04-29T14:06:00.643Z
Good point regarding the experience needed to give lectures that drive the learning of the students. Regarding the grading, my concern was not about variability of grading, it was about the quality of feedback. For example, when I see students that write messy code, I can explain to them very clearly why this is bad, because I have written a lot of messy code myself, and I know how much trouble it can cause down the road... But the TAs do not have enough "down the road" experience.
Erel Segal-Halevi
CC BY-SA 4.0
2022-04-29T12:27:36.857Z
2022-04-29T12:45:20.040Z
2022-04-29T12:45:20.040Z
Buffy
<p>I've been thinking about this for a few days now, and I realize that I need to post another answer.  I now affirmatively do not believe that you should make the switch that you propose, and I see it as potentially harmful to the students.</p>
<p>If you are coming to the conclusion that the grading must be done at a deeper level of understanding than <em>the people who you believe should lecture the course could understand</em>, then you are grading at an inappropriately deep level for the learning objectives of the course.</p>
<p>You are setting up students to do well or do poorly based upon criteria that you do not expect them to understand prior to entering the course, nor wish to explain to them in the course itself.  The grading will, then, seem (rightfully!) arbitrary to the students, who are, after all, coming into the class to learn the <em>course material</em>.</p>
<p>If your TAs can't understand what differentiates a strong lab from a weak one, then your assignment is not being clearly defined for your target audience (your students).</p>
<p>Instead, then, I propose that you pour your energies into defining for both student and TA alike what you would hope to get out of a strong answer, and what criteria they will be judged by, in detail.  If there is enough detail in the information that you provide to the students that your TAs can then grade closely to the standard that you would like, a basic fairness will have been maintained, and everyone involved (students, TA, and, honestly, even you as the instructor!) will learn more from the experience.</p>

CC BY-SA 4.0
2022-05-01T05:41:42.613Z
The objection to overly harsh grading is right, but I take it into account when I grade. If a solution is imperfect based on criteria that the students could not have known, then I can give it full mark, but still give verbal feedback on what should be improved. IMO, the verbal feedback is more important than the actual grade.
Erel Segal-Halevi
CC BY-SA 4.0
2022-05-01T11:16:18.160Z
@ErelSegal-Halevi That makes more sense.  You might want to mention to students that if anyone is interested in more detailed feedback in order to improve, you might be willing, time permitting.  It wouldn't impact their grade, then, it would just be to get thoughts about how to make the best code that they can make.
Ben I.
CC BY-SA 4.0
2022-05-01T03:48:52.667Z
2022-05-01T03:48:52.667Z
Ben I.
<p>In most courses, the professor's job is to give the lectures, while the TAs' job is to grade the homework. But in some courses, giving the lectures is often a routine and repetitive task: the material is almost the same each year, the slides are already available. A good graduate student can probably give the lectures relatively well. In contrast, grading the homework is a much deeper task. In programming, there is no single &quot;correct answer&quot;. Each solution is unique - particularly in advanced courses, in which the homework involves creativity and ingenuity (e.g. programming a game or a GUI). Grading homework requires reading each particular piece of work and giving individual feedback - both on code correctness and on software engineering practices. This requires deep understanding of the material, as well as a lot of experience in programming.</p>
<p>Question: does it make sense, in advanced programming courses, to switch the roles between the professor and the TAs: let a TA give the lectures (based on material prepared by the professor), and have the professor use the teaching time for grading homework and providing feedback?</p>
<p>EDIT: My course has about 200 students, one professor in charge, and about 5 TAs (it changes from year to year, but this is the scale).</p>

CC BY-SA 4.0
2022-04-27T07:42:50.993Z
I feel you have just started with a cultural assumption which is location specific There is an FAQ for this in Academia.SE: https://academia.meta.stackexchange.com/questions/4471/academia-varies-more-than-you-think-it-does-the-movie
Brian Tompsett - 汤莱恩
CC BY-SA 4.0
2022-04-29T13:48:04.920Z
I have noticed that you ask great questions.  This isn't really a comment about this question specifically, so it doesn't really belong here and I'll delete it in a day or so.  I just wanted to say that I really appreciate your posts.
Ben I.
<programming><homework><course-design>
In programming courses, should homework grading be the job of the TA or the professor?
# In programming courses, should homework grading be the job of the TA or the professor?

(Asked by: username_0 on 2022-04-27)

In most courses, the professor's job is to give the lectures, while the TAs' job is to grade the homework. But in some courses, giving the lectures is often a routine and repetitive task: the material is almost the same each year, the slides are already available. A good graduate student can probably give the lectures relatively well. In contrast, grading the homework is a much deeper task. In programming, there is no single "correct answer". Each solution is unique - particularly in advanced courses, in which the homework involves creativity and ingenuity (e.g. programming a game or a GUI). Grading homework requires reading each particular piece of work and giving individual feedback - both on code correctness and on software engineering practices. This requires deep understanding of the material, as well as a lot of experience in programming.

Question: does it make sense, in advanced programming courses, to switch the roles between the professor and the TAs: let a TA give the lectures (based on material prepared by the professor), and have the professor use the teaching time for grading homework and providing feedback?

EDIT: My course has about 200 students, one professor in charge, and about 5 TAs (it changes from year to year, but this is the scale).

**Tags:** programming, homework, course-design

> **Comments:**
> **username_1**: I feel you have just started with a cultural assumption which is location specific There is an FAQ for this in Academia.SE: https://academia.meta.stackexchange.com/questions/4471/academia-varies-more-than-you-think-it-does-the-movie  
> **username_2**: I have noticed that you ask great questions.  This isn't really a comment about this question specifically, so it doesn't really belong here and I'll delete it in a day or so.  I just wanted to say that I really appreciate your posts.  

---

## 5 answers

### Answer by username_3 on 2022-05-01. Score: 3

I have taught the same programming class a couple of times. While I let the TA(s) do the grading, I

* have kept notes from previous iterations teaching, describing most of the common errors / inelegancies, and the TAs get this from me. I don't just give them the "perfect" solution.
* still make a cursory pass through homework submissions, half an hour before class time, so that I can show the class the various approaches that were taken, and what I like/dislike about them. Students actually like that: "Hey, he showed our solution as as good one!"

I think this approach catches most of your objections that grading requires deeper understanding.


---

### Answer by username_2 on 2022-04-27. Score: 2

I hate to say that "it depends", but it really does depend. Brian's comment about cultural norms being different is well taken, but if you have the choice available to you, and you are the person running the course, and the workload is reasonable either way, then you are best positioned to decide which aspect of the course you want to have the most control over.

Personally, I would always choose lecture, but partly that's because I lecture well, and partly because I feel that the lecturer is the person that students think of as their teacher.

However, that would be *my* choice. You could always come to the first day, do the general course introduction, introduce (and praise!) the TA you are leaving the students with, let the students know about your office hours and email address, and then be off about your way.

If you take that path, I would make it a point to visit many of the classes, both to make sure that the TAs are doing a good job, and to keep a presence among the students.


---

### Answer by username_4 on 2022-05-11. Score: 1

I'm going to jump in with an answer that doesn't really apply to your situation. It does however address a key point that you made -- Each solution is unique.

The short answer is "both". Ideally the class is taking place in a teaching lab, and each student (or small group of students) is seated at a computer and they are trying out the ideas as the teacher demonstrates the concept through live coding. After the initial introduction, the students are then given a task to accomplish with the professor and TA's circulating to answer questions, give suggestions, and evaluating results. All of this happening as the students are working on the problems. This kind of live milestone / monitor grading provides the best feedback and chance for understanding. Formative assessment at its finest.

Now, with 200 students in the room, I am imaging the classes are lectures held in a large hall and that there are few if any computers present. I would still propose that the students would be best served with the six of you maintaining office hours in the lab and evaluating code while the students are present at a computer instead of collecting the code and staring at a cold and unresponsive display.

And I say this as an AP reader who has done exactly that for endless hours.


---

### Answer by username_5 on 2022-04-29. Score: 1

First, the scenario you describe isn't workable as it is the professor who is ultimately responsible for the course. A problem that is likely to arise is that the quality of lectures would be spotty, with some being fine and others not. I'd guess that students would notice this and complain about the variability. It is also an imbalance of time and effort. Lecturing takes up relatively little time compared to grading. A professor personally grading 200 programs seems impossible if any feedback is to be given. And with five TAs or so, I don't see a way that work load can be balanced. Five lecturers every day? Probably not. TAs only working one day a week for an hour or so while the professor grades 200 papers every week? Unworkable.

A deeper problem in STEM fields is that graduate students may have an imperfect understanding of the topic (though professors might also, I suppose) and, through lack of deep insight mislead students. I developed very deep insight into real analysis (I'm trained in maths), but not really until I'd finished my doctoral research. Up until then I had a somewhat mechanical understanding. But it is that insight that lets a professor guide students toward a goal.

Related to this is that TAs, assuming that they are students, may have the misconception that lectures are about facts rather than about driving the learning of the students. It is too easy to make assumptions about students (and their understanding) if you are one yourself and are biased by your own learning modes and practices. New professors sometimes have the same problems, as I did. Experience, however, gives you a better and more productive view. I've given one absolutely "perfect" lecture from which the students learned exactly nothing. I learned my lesson. One hard lesson for professors to learn, though they must if they are to be effective, is that nearly every one of their students is not like themselves and learns differently than they did and has different goals than they do. TAs are unlikely to have this sophistication about teaching and leaning.

To answer your objections to the "standard" practice, note that it is the responsibility of the professor not only to lecture, but to provide a proper grading rubric that can be followed by those less adept in the subject and that can be justified to students. Lacking that, chaos can ensue. One way to develop a rubric is for the professor to look at a few papers randomly before making the rubric so as to see what sort of guidance the TAs need to follow and what sorts of messages need to be given to the students.

Another adaptation that reduces the variability of grades given by TAs is to have each TA responsible for some of the questions for all of the students, rather than all of the questions for some of the students. That is how we handled major exams back in the day (last century).

Another good practice is to have the professor meet with the TAs as a group and encourage them to bring up any difficult issues they have seen since the prior meeting. The professor and TAs become a team.

However, there is some value in letting (or requiring) TAs to conduct occasional lectures. If a professor gives a TA a couple of weeks to prepare a lecture on a specific topic, reviews their lecture notes, and attends the lecture then it can be beneficial to the training of the TA without being disruptive to the students. I was given such a task by a professor even as an ordinary student in a course. As an undergraduate it was a very difficult task, done fairly poorly, but a good experience. I got feedback from both peers and the professor.

> **Comments:**
> **username_2**: I love this answer.  
> **username_5**: @BenI. Note that the answer might be quite different if it were one professor and one TA. But, thanks. Fun to think about these issues again.  
> **username_0**: Good point regarding the experience needed to give lectures that drive the learning of the students. Regarding the grading, my concern was not about variability of grading, it was about the quality of feedback. For example, when I see students that write messy code, I can explain to them very clearly why this is bad, because I have written a lot of messy code myself, and I know how much trouble it can cause down the road... But the TAs do not have enough "down the road" experience.  

---

### Answer by username_2 on 2022-05-01. Score: 1

I've been thinking about this for a few days now, and I realize that I need to post another answer. I now affirmatively do not believe that you should make the switch that you propose, and I see it as potentially harmful to the students.

If you are coming to the conclusion that the grading must be done at a deeper level of understanding than *the people who you believe should lecture the course could understand*, then you are grading at an inappropriately deep level for the learning objectives of the course.

You are setting up students to do well or do poorly based upon criteria that you do not expect them to understand prior to entering the course, nor wish to explain to them in the course itself. The grading will, then, seem (rightfully!) arbitrary to the students, who are, after all, coming into the class to learn the *course material*.

If your TAs can't understand what differentiates a strong lab from a weak one, then your assignment is not being clearly defined for your target audience (your students).

Instead, then, I propose that you pour your energies into defining for both student and TA alike what you would hope to get out of a strong answer, and what criteria they will be judged by, in detail. If there is enough detail in the information that you provide to the students that your TAs can then grade closely to the standard that you would like, a basic fairness will have been maintained, and everyone involved (students, TA, and, honestly, even you as the instructor!) will learn more from the experience.

> **Comments:**
> **username_0**: The objection to overly harsh grading is right, but I take it into account when I grade. If a solution is imperfect based on criteria that the students could not have known, then I can give it full mark, but still give verbal feedback on what should be improved. IMO, the verbal feedback is more important than the actual grade.  
> **username_2**: @ErelSegal-Halevi That makes more sense.  You might want to mention to students that if anyone is interested in more detailed feedback in order to improve, you might be willing, time permitting.  It wouldn't impact their grade, then, it would just be to get thoughts about how to make the best code that they can make.  

---

