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 supportin
g 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.