You are allowed and encouraged to work together. Homework will the specify allowed team size. You may discuss the homework with other people to understand the problem and reach a solution. However, for non-coding homework, each student must write down the solution independently, without referring to written notes from others. I.e., you must understand the solution well enough in order to reconstruct it by yourself. Coding will generally be done in teams of at most two.
For the final project, you can work in groups of at most three and submit one solution.
On each assignment, you should try to work with a different set of people, to maximize learning, but this is optional, not mandatory.
The purpose of problem sets in this class is to help you think about the material, not just give us the right answers. You are encouraged to use online resources for learning more about the material covered in class; however, you should not look for or use found solutions to questions in the problem sets. Specifically, you must not look at any code that has been created to solve the assignment, including solutions found on the internet to questions in the problem sets, code created by a student in a previous class or code created by a current classmate. Cheating will be punished according to university regulations as determined by the Office of Student Conduct.
If one student shares code with another on a different team, both the donor and the recipient of the code are in violation of the Penn honor code and will be referred to the Office of Student Conduct.