I'm currently a computer science graduate student on a low stipend, and have started spending a few hours per week tutoring undergraduates to help make ends meet. I love teaching and want to be a help to students, but I also want to make sure that I don't personally cross any ethical boundaries in doing so, or be complicit in students doing so.
Some obvious transgressions are tutoring for a class for which I am also a TA (conflict of interest), and writing code or otherwise outright doing work for students (plagiarism), but what other ethical considerations do I need to keep in mind to remain above-board in doing this?
Students sometimes ask me questions about their assignments. How much help is too much help? If a student is asked a "trick" or unclear question, is it appropriate for me to clarify it? If they're having trouble debugging a program, can I help them localize the issue to a few lines of code, or do I need to remain very general about things? Can I review code they've already submitted to help them improve by, for example, showing a better way of managing memory in C, or showing how to optimize or shorten their programs? Can I write short code snippets illustrate a point in a lesson?
I've also noticed that some questions on homework assignments are very basic. For example, in our systems course, the students were asked "True or False: a register is a small location in RAM". The answer was in the lecture slides. It makes me nervous to not be able to distinguish a request for a basic fact from a request for a homework answer. The assignments are only visible to students during the term, so I can't tell unless they show me (as was the case here). Should I give an indirect answer like "I can't just tell you that; did you review the lecture notes on CPU architecture?" as I did this time? Was doing that unethical?