CS201 Data Structures F25 Collaboration Policies
Overview
This page provides an overview of the types of ways you’ll be engaging in the course, and what types of collaboration are and are not allowed.
Types of Activities and Allowed and Non-Allowed Collaboration
There are a number of different types of activities in this class. Below, I describe the main ones, what kind of engagement I expect, and what collaboration is and is not allowed (and with whom). If you’re ever unsure what’s expected, please don’t hesitate to reach out on the Q&A forum, email, or in office hours.
- Textbook and other readings: You are highly encouraged to discuss the textbook readings with others. You are expected to do the readings before the class for which they are assigned, since they prepare you for the lab.
- Reading checks: On Moodle there will be reading checks after each reading. You can get help from anyone and anything on these reading checks though you must type the answers yourself. These count for engagement credits in your grade and are evaluated on completeness of your answer. If your answer is nonsensical, indicating that generative AI might have been used to write it, I will have to refer it to the Academic Standing Committee.
- Labs: You should complete all labs. You will often be partnered with another student in class and ideally you will complete the lab with them during class. If you don’t finish the lab in class, you should complete it yourself. There will be something associated with most labs that you can submit for an engagement credit. You are welcome to get help on labs from anyone, though you should be sure that you can solve them ultimately without help.
- Homework: Homework generally consists of larger projects than labs and gives you the chance to creatively problem solve and apply ideas from class. You will often be allowed to work with a partner on an assignment, but you must still type the code all yourself and submit individually. The only people you should be discussing code with in detail for homework are your partner, me, the prefect, and the lab assistants. Any of those people are welcome to look at your code and make suggestions. You may have higher level discussions with other students. You will be required to list any student with whom you discussed the assignment in a collaboration statement in your submission. See the section Academic Honesty Policies for more details on what is and is not allowed on programming homework.
- Exams: In-class exams are intended to assess your understanding of the course content up to that point (they are cumulative). They will include conceptual and written code questions. You should not discuss these exams with anyone in the class until the exams are returned, although you may ask me about them privately via email or CampusWire.
Collaboration During Class Time
During class time, we will often have lots of time for working on activities, such as labs or worksheets and you will be paired with another student during that time. You should work together, possibly using pair programming techniques. You will usually have some aspect of the work to submit individually for engagement credit.
Other Collaborations and Ways to Work Together and Get Help
There are lots of resources to get help. If you have questions, please consider any or all of the following:
- Prefect sessions: Our prefect holds prefect sessions at designated times for you to work through ideas collaboratively. Prefect session times are listed at the top of Moodle.
- Prefect 1:1 tutoring: Our prefect has some 1:1 tutoring time available; our prefect can work a maximum of 10 hours per week total. Contact the prefect to schedule this - contact information is at the top of Moodle.
- Lab assistants: The lab assistants are available at a variety of times to help with homework or labs. They’re great at helping you debug your code or think through ideas. Information on the lab assistant schedule and how to access help is available at the top of Moodle.
- Class time: There’s time for question and answer during every class. This time is usually best for questions that might be relevant to multiple people, like difficulty understanding a concept or wanting to know about a particular snippet of code from the reading. It’s less good for detailed help debugging your code unless we’ve designated that class time as an office hours time.
- Drop-in hours: Drop-in hours are available throughout the week and I’m happy to talk to you about class concepts, activities, homework, or anything else. With code, I can help you regardless of where you’re currently at, from brainstorming about approaches to a problem to testing and debugging. During drop-in hours you may need to wait while I talk with someone else. Look at the top of Moodle for a list of drop-in hours times and instructions on how to access them. You can also schedule 1-on-1 meetings with me outside of these times.
- Q&A Forum: There is a Q&A forum that is a great way to communicate with everyone in the class. If something is confidential or you’re worried it gives away too much about a homework (or involves more than a line or two of homework code), please mark it as for Instructors & TAs only. Otherwise, you’re welcome to post to everyone (anonymously to your classmates if you choose, but I encourage you to use your name so that we can get to know one another). Forum questions are often answered quickly because everyone can answer them. I typically check the forum a minimum of twice per week day (once in the morning, once in the afternoon).
Academic Honesty Policies
We’ll be doing a lot of collaboration in this course and using online resources is an important skill in computer science. Please look at the information above to know about how you’ll be collaborating for each part of this course. However, plagiarism is not the same as collaboration, and plagiarism violates our academic honest policies. In particular, you may not search for code to solve your homework problem on the internet (including but not limited to explicitly searching for exact homework solutions), ask generative AI such as GitHub CoPilot or Google Gemini (unless allowed in the assignment), or post online about any homework problem anywhere but our class forum.
StackOverflow (and such)
Learning how to search the web for solving errors or performing simple programming tasks is a valuable skill in computer science. However, it’s sometimes difficult to tell the difference between what is allowed and not allowed when solving homework and lab assignments. Sometimes, it’s fine to use material from external sources like StackOverflow, but only with proper attribution, and only if the assignment allows it. In particular, if the assignment says “implement X,” then you must create your own X, not reuse one from an external source, including a generative AI.
For example, looking at an example of a for-loop in Kotlin on StackOverflow may or may not be allowed depending on the assignment. If the assignment is “implement a for-loop”, then looking on StackOverflow for a for-loop would not be allowed. However, if the assignment is “implement breadth-first search” and you can’t remember exactly how the for-loop syntax works, it might be allowed to look on StackOverflow, though it would be better to use the textbook and references from the course. What would absolutely not be allowed would be to look up and copy a Kotlin implementation of breadth-first search from StackOverflow or any other site, since the point of the assignment was for you to implement it yourself.
Examples
Here are some examples of behaviors that violate our academic honesty policies:
- Modifying someone else’s code and putting your name on it. That code might be your classmate’s, from a previous student, from a generative AI, or found on the internet, and it’s still plagiarism if you make some changes. You should always be either starting from scratch or starting from files that I provide, not working off of someone else’s solution (or your solution from a previous course). Copying even one line of code is plagiarism!
- Having a friend or generative AI debug your code for you and then turning in the revised code.
- Looking at a friend’s code (or code on the internet/from AI for a similar purpose) and then using what you see to write your own code.
- Looking at code from someone in class and then reproducing it verbatim in your own files.
- Asking a homework question on an external online forum (or searching for someone else asking a similar question) and turning in the answer as your own.
- Directly copying code out of the book, or relying heavily on book code and not citing your use of it in the comments when the assignment does not specifically state that you may do so.
Specific Scenarios
Adapted from Academic Integrity at MIT. Note all of these scenarios assume the students aren’t assigned as pair programming partners and don’t have a pair programming partner (if they did, they should be working with their partner).
Example 1
Alyssa and Ben sit next to each other with their laptops while working on a problem set. They talk in general terms about different approaches to doing the problem set. They draw diagrams on the whiteboard. When Alyssa discovers a useful function in a C library, she mentions it to Ben. When Ben finds a StackOverflow answer that helps solve an error (but doesn’t have code directly relating to the problem set), he sends the URL to Alyssa. OK.
As they type lines of code, they speak the code aloud to the other person, to make sure both people have the right code. INAPPROPRIATE.
In a tricky part of the problem set, Alyssa and Ben look at each other’s screens and compare them so that they can get their code right. INAPPROPRIATE.
Example 2
Juan already finished the problem set, but his friend Boris is now struggling with a nasty bug. Juan sits next to Boris, looks at his code, and helps him debug (but doesn’t do the debugging for him). OK.
Juan opens his own laptop, finds his solution to the problem set, and refers to it while he’s helping Boris correct his code. INAPPROPRIATE.
Example 3
Yun-En had three problem sets and two quizzes this week, was away from campus for several days for a track meet, and then got sick. He’s already in the revision period for the assignment and has made almost no progress. Sven feels sorry for Yun-En and wants to help, so he sits down with Yun-En and talks with him about how to do the assignment while Yun-En is working on it. Sven already handed in his own solution, but he doesn’t open his own laptop to look at it while he’s helping Yun-En. OK.
Sven opens his laptop and reads his own code while he’s helping Yun-En. INAPPROPRIATE.
Sven has by now spent a couple hours with Yun-En, and Yun-En still needs help, but Sven really needs to get back to his own work. He puts his code in a Dropbox and shares it with Yun-En, after Yun-En promises only to look at it when he really has to. INAPPROPRIATE.
Example 4
Amir and Prajna both worked on their problem sets separately. They exchange their test cases with each other to check their work. INAPPROPRIATE. Test cases are part of the material for the assignment, and part of the learning experience of the course. You are copying if you use somebody else’s test cases, even if temporarily.
These are just some examples of academic dishonesty - if you’re unsure whether something is permitted, please ask.
The above policy is borrowed from Anna Rafferty and Aaron Bauer