How much professional assistance can I receive on an undergraduate capstone design project without cheating? I'm taking the undergraduate capstone design course in electrical engineering at a university in the U.S. and I've been receiving some programming help from a friend who is not, nor ever has been, a student at the school. I understand that a certain amount of professional assistance is acceptable, however, there was a significant programming snag that I encountered that I would not have been able to solve on my own without this person's help. I have not asked my professor directly about this yet (there's still time, though!) since I've been afraid of self-incriminating and that I may be asked to remove the code which would put me back to my major snag that I can't solve. At this late point in the course, this solution is essential as removing it would likely force our group to alter direction/scope. This is a design project and not a programming project (I'm currently using plenty of acceptable open-source code from GitHub) and I feel my group has legitimately created original design work. Obviously, I have no problems at all citing any sources I used for the project as my goal is to avoid cheating.

My question is this:

Can I use code that was created specifically for my capstone design project by a knowledgeable person (with my assistance) without cheating if I cite the source? Would it make it more acceptable if this person posted this same code to GitHub as well since other GitHub resources have already been deemed acceptable?
I have not asked my professor directly about this yet (there's still time, though!) since I've been afraid of self-incriminating and that I may be asked to remove the code which would put me back to my major snag that I can't solve.


There is not a lot of guidance that we can give you on this question as outsiders.  Your professor is the one who has set the assignment, and he/she is the proper person to determine what level of assistance is allowed while meeting the learning/assessment goals of the assignment.  In cases like these, where you have doubt over the allowable scope for assistance, you need to speak to your professor for guidance.  Since you have already received assistance, this conversation will involve disclosure of previous assistance, so you should be open to the possibility that you may have to discard some of that work.

The other issue here is the importance of learning how things work.  If you have been provided with code by an outside professional that solves some problem in your assignment, then you need to take the time to understand how and why that code solves the problem.  You say that if you are asked to remove the code then that will put you back to a point where you can't solve the problem.  This suggests to me that you don't actually understand what that code is doing, and so it is not appropriate for you to use it in your assignment.  The best approach here would be to take the time to learn the reasoning behind the code that was used, and why it works to solve your problem.  Once you understand this, it should not be a major problem if you had to remove that code and write your own replacement code in a different form.