CIT 593 Assignment 13: Collaboration Requirements
Collaboration Requirements
Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: THEend8_
CIT 593 Assignment 13: Collaboration Requirements
You are not required to have a teammate. Points will not be deducted if you choose to
work alone. If you would like to work as a team, you may only have one teammate.
Groups of 3 or more are not permitted. You have 3 options for collaboration:
1. No collaboration – complete the assignment independently. No README file.
2. Collaboration and splitting up the work – after each teammate completes their
LinkedList functions, you work together to complete the rest of the assignment.
You must include a README file.
3. Collaboration with independent submissions – if you simply want to be able to
discuss your code with a classmate, but prefer to work independently, you may
have a teammate but turn in your own work. You must still include a README.
If you choose to work as a team, please follow these additional assignment
requirements:
• Each teammate must complete all 5 functions supporting the LinkedList data
structure independently. This is a core learning experience of the project and
conquering it on your own will serve you well in your future work. The remainder of
the work – steps 2 through 5 below -may be split between you. The entire file
“lc4_memory.c” must be written by you alone as an individual project.
• After you have attempted the LinkedList file on your own, you may work with
your partner to finalize a version of lc4_memory.c that will be used by your
submitted program. You will likely find that you need to make changes to your
“lc4_memory.c” file as a result of tests conducted by you and your partner. We
believe that creating this file is an invaluable learning experience, but once you have
had that experience, you may discuss and work with your partner to refine the final
version for submission.
• Each function must include a comment at the top with the name of the person
who authored that function. If there’s anything more you think we should know
about your submission, it should be in your README file.
• Each team must submit a very brief README document within Codio that
describes your division of labor – that is, who wrote which functions – and the
name of your teammate. For example, “Tom will write the open_file() function.” This
should not be more than one page in length. We recommend using a bulleted list.
• Extra credit: you may complete the extra credit portion independently or with your
teammate. Your README document must include the name of the teammate(s)
who attempted the extra credit. If your teammate attempts the extra credit alone
then only their name should be listed.
2
It is strongly recommended that you and your teammate work together to test, debug,
and fix memory leaks in your code.
How to submit
You have two options for submission if you collaborated; it is up to you to decide:
1. Submit a single workspace (mark as completed). Both students will receive the
grade for that workspace.
2. Submit two separate workspaces. Both students will receive the grade
associated with their own workspace.
Each Codio submission should include a README with the name of your collaborator
and your work breakdown.
What if something goes wrong?
In the case that you experience issues during collaboration – for example, if your
partner is unexpectedly unable to help you finish the project, or if there is anything that
you want the course team to consider when grading your project, you should describe
this in your README. You can also make a private Ed Discussion post to flag the
situation for the course team. Collaboration issues will be handled on a case-by-case
basis. Be assured that the Instruction staff is more interested in supporting your
learning than punishing your mistakes. If you have a concern about your grades or
are looking for feedback on your submission, please make a private post on ED-D.
Project overview
This homework project involves the following high-level steps:
1. Create a pointer-based framework in C to hold a LinkedList by writing the
following functions:
1) A function to create a new node in the LinkedList. If this is the first node in
the List, this function will create a new List. If there is already an identical
node in the list, this function updates the contents of that existing node.
2) A function to search the LinkedList for a node with a specific memory
address value.
3) A function to search the LinkedList for a node with a specific opcode which
has not yet been assigned an assembly instruction.
4) A function to print the elements in the list in the specified format.
5) A function to delete the entire list and free() the memory it was using.
2. Write the open_file() function to open a .OBJ file specified by the user via the
command line.
3
3. Write the parse_file() function to extract information from the open file, place the
information into your LinkedList, and close the file.
4. Write the reverse_assemble() function which updates each node in your
LinkedList with the assembly language equivalent of the binary strings extracted
by parse_file().
5. Print your LinkedList. Debug and resolve memory leaks.
Tips for collaboration
Here are some suggestions to discuss with your partner before starting. These are
ideas that other students have found helpful, but they are not required.
• Discuss your preferred communication platforms. Do you like to use Slack? Email?
Text messages? Set up regular video calls on Slack or Zoom? Pick something you
will be able to check daily to help your collaborator with debugging challenges as
they arise.
• Most people appreciate updates about when you plan to work on the assignment.
Letting your teammate know that you plan to do most of your work over the
weekend, for example, demonstrates a commitment to the work and helps set
expectations for people with different working schedules. If you prefer to leave work
until the last minute, your teammate deserves to know this (we recommend starting
as early as possible).
• Assign roles as soon as possible. It should be clear who is responsible for writing
which sections of code before you start the project. Consider writing the README
first.
• Review the assignment instructions and consider which parts you think will be the
most challenging and which parts you feel the most confident in. Try to split up the
work so that each person has at least one challenging section and one section they
feel confident in. This allows each person to contribute their individual skills while
also having opportunities to learn new things.
• Due to the size of this project, plan to check in multiple times.
• Have a plan for submitting the assignment. Who is responsible for marking as
completed?
• Plan at least one day to debug and fix memory leaks before turning in the
assignment. While functionality is the focus of the auto-grader, the process of
testing your code and finding memory leaks is likely to result in better design, deeper
comprehension, and help you avoid losing points for memory leaks and other small
errors.
4
• Whenever possible, try to explain your work to your partner in your own words.
Explaining your code to someone else is a great learning tool for both people!
• Back up your work to Codio frequently.
• Before making changes to code your partner has written, check in with them and
discuss the change; you both may learn something by discussing their
implementation.