Collaboration

Computer science should be a highly collaborative discipline. It is exceedingly rare that you find yourself implementing an entire project alone, and unheard of to do so without looking at any work from anyone else. As such, its important to know how to collaborate and use research tools, while adhering to integrity guidelines.

For this course you are allowed to use tools such as stack-overflow and generative AI (sparingly). Using outside resources can be very useful in understanding why some things work or don't work. You are also encouraged to work with classmates. Study groups, pair-programming, and code-reviews can be invaluable tools in improving your own skills.

Still, your goal should be to internalize course material, so you want to immerse yourself in the details. Ultimately, you will only learn what you actively engage with. Additionally, it is important to hold yourself to a high standard of integrity and honesty. So, there are rules:

  1. Cite everything. If you used something from a web source, add a note. If you worked with a partner, add a note.
  2. Type your own code. For real - do not ever copy and paste directly. My reason for this is two fold - yes, it helps prevent direct plagiarism, and also, it helps ensure you know what you are putting into your solution.
  3. If you are working with a partner take turns working on a section of code - do not rely on one person to be the creative agent and the other person to just review. Considering sketching out a solution together on paper, and then each implementing your own version. Describe what you are doing to your partner verbally, including why you chose certain functions- or approaches. If you are the reviewer, ask open ended questions and exercise compassion instead of jumping directly to criticism.
  4. Use Generative AI sparingly. Web sources are best when you have a clearly formulated question that you want answered, not as resources for entire solutions. Use them when you get stuck, not as a starting point. Ask small directed questions, not for general solutions. If any weboutisde source suggests an answer, look up the functions involved - what are they? what are their signatures? are they available on our machines? Understand the answer, and THEN WRITE YOUR OWN CODE/ANSWERS FROM SCRATCH.
  5. Not sure you are doing it right? Delete all your code and recreate it - if you have truly internalized the material recreating it will be much faster and easier. Describe what you are doing to someone else verbally, including why you did what you did.
  6. We have noticed that students using GAI (or finding solutions anywhere on line) end up having a harder time debugging their code. Program structures are often less straight forward and clear, and sometimes obscure solutions are used that are hard to follow or inconsistently implemented. I would not prevent you from using those types of tools entirely, but I would suggest that it is often not in your best interest to rely on them.
  7. If course staff notices inconsistencies in your work, they may ask you to verbally describe what you have done. Before you submit something, be sure that you can answer questions about the solution. This is also a good way to prepare for the assessments.
  8. And, it is still a rule that if we identify clearly copied pieces of code or text (from other students OR a GAI), or you are unable to answer questions about your work satisfactorally, you are liable for disciplinary action in accordance with the academic integrity guidelines laid out by the Allen School: https://www.cs.washington.edu/academics/misconduct