I was a TA for an undergraduate programming course and I've been considering doing it again. Since I'm sure some of my students would be requesting solutions to their homework here, I've been thinking about how I would handle it.

My first thought was "it would be easy to search here for people asking for answers," where the obvious course of action is approaching the student about academic integrity. However, after further thought I came to another conclusion: I teach because I want to help the students who care to be the most capable developers then can be. As such, I think I would simply move towards grading on "passion" when I find a student getting the answers online. Summarized, "If you're going to be asking around for other people to give significant input on your homework, you'd better be doing it for the purpose of training yourself to see elegant solutions to problems you face."

My personal teaching philosophy: Identify the students with a desire to learn and procede to utilize their individual stregths to maximize their learn:time ratio. Assign grades based solely on (demonstration of known subset + curve of the "expected to know after the course" as listed in the syllabus from the beginning of the semester), where curve is created to cover cases where it's clear I expected more than was reasonable for a single-semester course. Clearly, based on this I would allow the replacement of the assigned work with work of significantly greater material coverage for capable students - I don't like wasting their time and if they'll put in overtime to still make the course worthwhile for themselves I'm not going to stop them.

This leads me to two key questions:

  1. What would you use for a written policy regarding students seeking homework answers online.
  2. What would you use for an unwritten policy "addendum" to the written policy. Personally, I think the mechanisms I use for subjective grading go here.
  3. Am I off my rocker for the final philosophy paragraph?

Edit: Before voting to close:

  1. I believe this information could be helpful to people genuinely interested in helping their students learn.
  2. I'm open to feedback on how to improve this question - so try to make a suggestion before a close vote.
  3. I made it community wiki and gave it proper tags.

5 Answers 5


Since you have been specifically looking at homework questions here, you might have noticed how differently the questions are asked. From the way your student asks the question, you may judge his or her understanding and the amount of work performed.

For example, some people post compilable code with the questions hitting the essence of the task, mark it with homework tag, and gladly accept answers that only direct them, without giving complete solutions. I am sure that in class they'll exhibit understanding of the subject and, if they really have the aptitude and wish to learn, this experience will be useful for them.

Others post a large piece of code, barely even formulating their question, just whining, "My code doesn't work, I need to do The Stuff, please help it's urgent!!!1" and then, having conceived nothing, having not gotten the exact solution, provide an equally low level of understanding in their next question on the same matter. Then, someone gets pissed off and posts the answer and they pass that work to you.

Since you clearly do have a way of observing this matter, you could easily distinguish people who learn from experience exchange from those who just "get the answers". While the latter is a major hindrance of educational process, the former is a natural and valuable part of it.

In general, SO users, especially those who are not greedy and willing to get easy rep from the homework help, follow the natural policy of not giving the answers to those who ask for homework help, but rather directing them in the ways they can learn what's needed. So, your worries about abuse of SO for learning are a bit overestimated.

About policies

The scheme was used by one of my teachers whom I think was the best one I ever had.

A written policy may include the requirement to cite all the external sources that helped people to solve the task, whether any sources is cited not influencing the overall mark the student receives. Advise them that looking in external sources, including social networks, is a natural part of studying and is of countenance.

An unwritten policy is to determine whether the student has the understanding, but in no way should this be associated with the sources the student used--at least in what you tell them. But you'll know whom to look closer at since you read the SO homework requests. Well, that's teacher's stuff, you know it for sure.

Anyway, after some time you'll clearly distinguish students that learn all on their own from slackers. Checking SO is just one way to accomplish this among all others.


Which of the following approaches to assignments would you use:

  • Do the assignment in class - In this case, while one can use SO, Google and other resources, the key factor is what is submitted and how well does the student understand what they are submitting. While it isn't practical to consider this, it may be reasonable to consider changing the assignment near the end to reveal one more question or something to answer given what was done that should be rather straightforward to answer before they are done with the assignment. So, a students writes the program to change temperatures from one scale to another and has to run various test cases to show the code works and does meet the requirements of the assignment. An additional question may be to break down various parts of the program, e.g. what is the input or output of the program. Time is a key factor when it comes to doing assignments this way and can work for introductory classes to my mind.

  • Do the assignment on your own - Now this can be trickier as the student can use whatever they want. The key is to evaluate if what they submit makes sense and possibly do they do little things to show that, "Yes, I do get the point of this assignment and here it is in my own words," as to borrow the same example as above, while one can probably find examples of this program, wrapping that program is likely much more important to my mind. Why is this program the right one? Do you show me in a simple manner that this does do the right thing in each case of input? Have you considered various error cases,e.g. someone wants to convert X in a literal sense, the input is the letter X, that should be handled somehow. This is what I'd expect in upper year courses.

I'd think the main concern is Plagiarism or students being able to repeat what they read somewhere without understanding its meaning, which is why how the answer is communicated is where I'd focus my attention and possibly consider giving a follow-up to the assignment to see if things have stuck or not, but that is just a quarter-baked idea to my mind.


As someone who's both a SO-participant and a (former) TA, I have experience here...

If someone is plz send meh teh codes, I will categorically deny their request, possibly with prejudice, depending on how begging they are.

If someone is up front with the homework question and its a reasonable question that does not request the specific answer, I am likely to give them help.

If someone is careful enough to request only the help that they need, it is indistinguishable from the rest of the questions and does not particularly matter.


At the end of the day I don't see prowling SO for people asking about your assignment helping. The students who legitimately know about SO will be using it for legitimate guidance and not just to have the work done for them. Those that are looking for someone else to do their homework are going to use whatever site Google tells them to - are you going to police them all?

And when it comes to comp-sci assignments, what about the students who just ask/pay/"bribe" the smart students to write the assignment for them (or just copy or steal it the other students work outright)? I've found that the big difference in skill creates a situation where assignments are embarassingly easy for the smart students, removing the normal barrier of it being a lot of extra work to do someone elses assignment.

If you really feel that the comp-sci equilivent of plagiarism needs to be stopped at the level you are grading, the assignment and grading needs to be structured around that. Either do the assignment entirely in class, or force the student to be able to talk about what they did and why - it becomes really obvious which students did their assignments and which ones just copied.

One on one grading is unfortunately not very practical in a university environment except for term assignments and the like. What can be practical is oral presentations - students submit code, but must also give a 5 minute presentation in front of the class and answer 1 or 2 questions (this can also help the student learn from each other, both from mistakes and from insights)


I would say the important things are that they learn the material and that they learn how to learn. Asking for and receiving an answer that you regurgitate without thought is not learning and I wouldn't encourage that.

My feeling is to grade the homework, but give it a low overall impact on the actual course grade. You want to encourage them to do the homework because it is in doing that we learn best, so you make it count. You might also want to make it a requirement that to pass the course you must turn in at least 75% (or 80% or 90%) of the homework with a passing grade to receive a passing mark in the course.

Then, make your tests such that you actually have to know the material to pass the test. Ideally, you'd make it such that the student who does the homework will do as well on the test as they have on the homework, but a student who has the homework done for them will fail the test. Use the test scores (and projects, where you can more closely observe whether the work is the student's) as the primary course grade components.

Emphasize that this is how the grading will work. Encourage collaborative thought on the homework, but don't allow people to turn in exactly the same work if possible. Working together is one way that we learn, but discourage them from simply co-opting someone else's work. Warn them that while they might be able to fool you and turn in someone else's homework, they are only harming themselves when it comes to their overall grade since they won't be learning the material well enough that way to pass the exams.

I'd also pass on the advice that while the grade may seem to be the most important issue in their minds, it's a short-term goal at best. The ultimate test of their educational experience is whether they have learned the fundamentals of their craft/science and whether they have learned how to extend and apply them to future problems. That's the key to whether they will be successful in their career or simply turn into another drone copying code off the net without understanding it.

  • Your answer got me thinking it'd be interesting to grade the homework based on a Q&A session over it that they're required to schedule during any of my 20 lab hours/week. Sep 17, 2009 at 21:03

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .