As a TA, I should review undergraduate students’ works, containing reports and computer codes in order to find out whether plagiarism or cheating occurred or not. I tried to use online and offline plagiarism tools without success. Finally, I decided to ask them a couple of questions about their works.

I was wondering if anyone suggests a couple of questions which can help me to find out whether they did their project by themselves or borrowed from a “friend”. In addition, I would like to weight their knowledge. How can I do that?

UPDATE: The course is "computer programming".

  • That's too broad to be answered in general. At least, could you specify the subject you are teaching?
    – svavil
    Commented Nov 3, 2015 at 17:58
  • 2
    If you standardize the questions it will do no good, because the questions and their answers will get distributed the same ways as the reports and programs. To be effective, you need to read each work and ask specific questions about the choices made in that work. Commented Nov 3, 2015 at 21:37
  • @PatriciaShanahan, but as a new TA, I would like to know what the base question should ask to at least find my way to ask further questions.
    – David
    Commented Nov 4, 2015 at 20:38
  • @David I think you should first read the report or program, and pick anything that you don't understand, or might have done differently, and ask about that. The question will arise out of a combination of your own experience and the material you are evaluating, and be quite unpredictable. Commented Nov 4, 2015 at 21:00

3 Answers 3


Asking alot of questions can generally rack out the ones who did the projects themselves and ones who didn’t.

Questions can be just simple ones like “how did you this?” or you can ask further questions based on their replies, e.g., if they answer with “Using technique A”, you reply with, "Oh I see, how do you use technique A?” or “How does it work?”


I don't know if you also give them quizzes, but if so, here is my way of handling this situation:

Suppose that I have asked students to take the derivative of a function f(x) = 5x^2+3x+4.

In quiz, I either ask the very same question or I slightly change the question such as

Take the derivative of f(x) = 3x^2+4x+5.

If the student did his homework on his own, then he will surely solve the question with ease. If not, then he will either give the exact same answer or write an answer carelessly that will make cheating obvious.

The third option, if he both took the homework and answered the question correctly, then the homework has reached its course and taught something to the student. Since the student actually knows something, he deserves the credit.

  • I think asking questions like these can be helpful: "how this part of your solution works?" or "how that part of your solution does?" But I do not know whether asking question like "how you got this solution" can work.
    – David
    Commented Nov 6, 2015 at 20:00

As the class you TA is a programming class, I'll suggest two options I've used - that have worked well for me (after Googling Stack Overflow and Github of course). Both these options start by asking conversational questions ("How are you doing? Are you enjoying class?") to help relax the student - when talking about the code in the next part hesitations and mistakes can be used as an indicator for a lack of knowledge but not if it is just nerves.

Option 1: better for mid-level to advance classes: Look at their coding before hand, make sure you have some notes on their coding style, preferred methods, and level of knowledge. Then select one of their programs and ask them to write out on paper/chalkboard/whiteboard some code that solves a similar problem. Let them know that you don't expect error-free code and that if they can't remember an exact method to just use something close (depending on the class pseudo-code may be acceptable). The point is that a person who has done the assignment should come up with something that follows the basic logic and coding style that was seen in their assignments - if it is way off you know they likely did not write it themselves - many times leading me to start option 2 with them.

Option 2: I would honestly use 2 or 3 assignments for this method. As it is easier to see if the progression makes sense this way (a person does not typically go from if/else to building generators and decision trees in the span of a class or two*) and it gives more material to discuss.

Starting with one of the programs, I would then ask very open-ended questions about how the student came up with their solution. You want to avoid fact questions as your trying to see the knowledge and thought process not just a memorization of quiz answers. You can ask follow-up questions here but keep them limited and still open ("can you explain that more", "why did you use that particular method", "did you try anything else"). Your looking for a few things here:

  • Someone who wrote the code for themselves should flow through the conversation naturally - without having to pause and think about their answers as often.

  • The student should be able to explain each method. If it is a complex method they may get lost or make a few minor mistakes - but they should be able to explain all the concepts.

  • The thought process they describe should make sense. This should include both the method used and the reasoning for using that method: "I decided on a for loop over the dictionary keys as that just seemed more elegant and easier to maintain then the massive if/elif/else statements".

I'm probably missing a few here, but the point is that your experience and knowledge will usually make it pretty obvious if someone actually wrote the code or not based on just how they explain it.

* I had one student who did just this. Turns out he had been programming for a few years and was picking up the language at a much faster pace.

You must log in to answer this question.

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