The other documents for each assignment will vary. You may be given test plans, detailed design documents, abstract design documents, requirements specifications, needs lists, and/or user stories. In general, these documents will require less of you early in the semester (e.g., just code construction) and more of you later in the semester (e.g., design, construction, and testing). Depending on the course and the learning objectives of the assignment, these professional-style documents may be unclear and/or contain errors, as they do in practice. So, ask if you are unsure, though you may not always get the kind of answer you are hoping for.
Note that specifications are often numbered. This does not mean that the specifications correspond to steps (or an order). Instead, the numbers are used as identifiers (so that the specifications can be referred to). When the numbering system is hierarchical (e.g., 1, 1.1, 1.1.1), the hierarchy indicates additional detail. So, specification 1.1.1 adds detail to specification 1.1 which adds detail to specification 1.
Then, change roles and start thinking like a programmer and/or software engineer. That is, read the other relevant documents and complete the various tasks.
After you think that you have satisfied everything that is required of you as a software engineer, start thinking like a student again. Re-read the main document and make sure that you have followed all course/assignment policies and satisfies all of the course/assignment requirements.
Single-part assignments, on the other hand, are used to help you become more independent. That is, they give you the freedom to choose a process and, often, experience the disadvantages of bad processes.
One way to combine the two is as follows.
This may happen within one course or across multiple courses.
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