You are responsible for understanding every word of this document.
A course where students misrepresent what they know and what they have done is worse than no course at all. You, your instructors, and your classmates all deserve a learning environment built on basic respect for the integrity of this course. This document sets out a clear, shared understanding of what we expect, with the hope that it never becomes an issue.
If you are ever unsure how to represent the work you have done, do two things: ask first, and describe clearly what you did. If you are in doubt about whether a collaboration was appropriate, just include a short description of it with your submission. The worst that can happen is losing a little credit on an assignment, which is far better than the alternative.
If we receive submissions that are too similar to have been created independently, or that are derived from AI usage, we will pursue the maximum penalty allowed by the University.
You are encouraged to discuss course material, including homework problems. We all learn better by trading ideas with course staff and classmates. Unless told otherwise, however, assignments are completed individually: you may discuss a problem in general terms and how to approach it, but the code and other work you submit must be your own.
The intent is to let you get unstuck, not to walk you through a solution. You may not look at another student's solution, and you may not have anyone (a current or former student, tutor, friend, or anyone else) walk you through how to solve an assignment. Use online resources to learn concepts and get ideas, but do not copy solutions created or generated by others, human or otherwise.
Cheating is a very serious offense. If you are caught, you can expect a failing grade and a formal misconduct case in the University system. If you are struggling with the material, running out of time, or tempted to cheat for any other reason, talk with the instructor instead. Copying someone else's work is never the solution.
To avoid situations where copying can arise, never email or post your solution files, and do not post code on the discussion board that attempts to solve a homework problem. If you are unsure whether something counts as cheating, email the instructor describing the situation.
Beyond the risk of getting caught, cheating simply is not rational in the long run. In the short term, you might pick up a few points on this assignment. But this class is a prerequisite for others. The skills you skip building here are the ones you will need downstream: if you cheat to get through these assignments, you will likely need to cheat to get through the ones that depend on them. Each time, the material gets harder and the gap between what you can do and what is expected grows wider.
In the aggregate, students who cheat end up doing worse, not better. The only reliable way to come out ahead is to actually learn the material, even when that means struggling, asking for help, or losing a little credit along the way.
Generative AI tools are undoubtedly useful for software engineering, but they are outside the scope of this course. You may not use tools like ChatGPT, Claude, or Gemini to generate any part of your graded work, and you should avoid IDE features that auto-complete code. You may use AI to explain concepts from lecture or section, but never on graded assessments such as exercises, homeworks, and exams.
These tools were built for professional software engineers, whose job is to produce working code quickly. Your job in this course is different: you are here to learn, and learning happens precisely in the moments of struggle that an AI is designed to remove. When a tool hands you a finished answer, it also takes away the practice of working through pointers, memory, and tricky bugs yourself. These are the exact skills this course exists to build, and the skills later courses will assume you have. Used the wrong way, generative AI gives you a feeling of progress while quietly stealing your opportunity to grow.
The guiding principle is simple: it is fine to use AI to understand course concepts in general, but never to do your graded work for you, directly or indirectly. "Indirectly" is very relevant here: feeding an assignment's specification, starter code, or test cases into a tool counts as using it on graded work, even if you only ask it to "explain" or "check" things. Rewording part of a specification or asking it to talk through your ideas for an assignment are other forms of "indirect" help.
Asking conceptual questions, and asking for more detail on examples that we gave you in lecture or section, is encouraged:
printf and
fprintf, and why would I write errors to
stderr?"(We would also love to see questions like these in office hours or on Ed!)
Anything that connects the tool to a specific graded assignment, even indirectly, is off limits:
Asking an AI to explain what a compiler or runtime error message means is, in principle, close to a conceptual question. The problem is that these tools are overzealous: ask about an error and they will almost always try to rewrite your code to "fix" it, which is exactly what they were built to do for working engineers.
So much of this course is about learning to move from "I have no idea what is wrong" to "I figured it out," and that journey is where the real learning happens. The moment an AI blurts out the answer, you cannot un-hear it. You are no longer puzzling things out for yourself, and you have quietly traded away the practice that would have made you better. That also crosses the line from understanding a concept into doing your graded work.
For this reason we do not recommend using AI on your own code at all. If you choose to, you are responsible for staying on the right side of the policy: make clear that it is a course assignment, that you want a small hint and an explanation rather than a fix, and do not paste in code you intend to submit. When in doubt, bring the error to office hours or Ed instead.
We will not try to list every impermissible activity, since that only tempts people to look for loopholes. Instead, the rule is simple: the code you write must be your own. That means not using substantive material or solutions from similar assignments this term or any other, at UW or elsewhere, including anywhere on the Internet. Our policy is meant to convey the spirit of the law, understanding that its letter cannot anticipate everything someone might think of.
For additional information and a more detailed discussion, please refer to the Allen School Academic Misconduct Policy page.