As a practical matter, programming assignments will also help you get better at using a specific set of tools, make you more efficient, improve your planning, and improve your scheduling.
Other courses you take may provide two different kinds of documents, one document that addresses the academic issues and multiple documents that look like "real world" software engineering documents.
All-or-nothing grading helps students realize that "almost working" is often not good enough. For example, would you fly in an airplane in which the avionics software is "almost working"? It also helps students realize that "almost working" is a nebulous concept. If, in fact, a software product is "almost working" then it shouldn't be hard (and shouldn't take much time) to make it "work". However, students often say that something is "almost working" when, in fact, there is still a considerable amount of work to do.
Partial-credit grading, when done carefully, helps students assess the topics they do and don't understand. Good partial-credit grading schemes award credit for particular concepts, not for the percentage of the assignment that was completed.
Partial-credit grading should not be confused with effort-grading. While everyone appreciates effort, in computer science/software engineering it is expected, not rewarded. In computer science/software engineering, results are rewarded.
Because style is so important (e.g., it is very difficult to read code that doesn't satisfy style requirements) and because it is so easy to comply with a style guide, it is common to give a grade of 0 to programming assignments that do not comply.
The main argument in favor of allowing collaboration on programming assignments is that it helps you learn. It does this by allowing you to learn by doing. That is, you can learn the material while you are using it. Collaboration can also reduce the stress associated with an assignment, allowing you to focus on learning rather than on completing the assignment so that your grade doesn't suffer.
There are two main arguments against collaboration. First, it makes it harder for the instructor to assess your ability to complete a "sizable" assignment (i.e., an assignment that can't be completed within an examination period). Second, it makes it harder for you to assess your own abilities. That is, you might delude yourself into thinking that you know something when, in fact, you don't, because someone else has really done the work. (This is particularly problematic in programming courses, because later courses rely heavily on prerequisite courses.)
Hence, even in a course that allows you to collaborate, you should do so sparingly and in ways that are appropriate and help you learn. Excessive and/or inappropriate collaboration will not help you in the long run, even if it seems to in the short run.
Of course, it is your responsibility to know and follow the collaboration policy for a particular course. See the course "Policies" page for more information about this course.
Copyright 2022