Assignment 2

Teaming Up for Bigger Things

In this assignment you will team up with 2 or 3 other students to unify the work each of you developed independently for a Unix shell. Only teams of 3 or 4 students will be allowed, so make sure select your teammates to meet this constraint.

The general idea is as follows.

  1. One member in the team will create a new project in gitlab called exactly unixShell. This person will add to this gitlab repository, in the role of developer: their teammates and also their lecture instructor.
  2. The team mates will work together to consolidate the work that each one has completed individually for Assignment 1 into one single deliverable of the myshell command interpreter. To this end, you should be able to look at the code produced by your colleagues so that you can have a discussion, as a team, about coding styles and different ways to accomplish the task. Make good use of the opportunity to learn some C and Unix programming from each other!
  3. The consolidated version of your myshell implementations needs to meet the basic goals specified in the previous phase of the project (Assignment 1). Additionally, it needs to have a number of “extra” features equal to the number of members in the team. If your team has 3 people, your team’s myshell needs to have 3 “extra” features.Note that your team may not necessarily need to develop new “extra” features. First, combine what each of you have done individually and verify that the number of extra features in your shell is equal to the number of people in the team. If two or more members have developed the same feature for Assignment 1 (“collision of features”), your team will need to decide on something new to add and implement. If there is no collision of features, just combining the teammates contributions will meet this requirement.

Keep in mind that you and your team can work concurrently on the same file, each in their own account with a clone of the project’s git repo. Each teammate can make local commits and push them to the remote repo when their contribution is ready to be seen by teammates. If more than one person works on the same source code file and each person’s contribution is on a section of code that is disjoint from that of the others, git will merge the work for you automagically. Each teammate should do a git pull before starting their work and pay attention to any notices about having to resolve merges manually (git minimizes the occurrence of this type of event, but it is still possible). Or… your team can decide not to do concurrent work at all; it is entirely up to you!

When you have finished debugging your program, you should do something like what is indicated below. Of course you can create additional files, if you want to keep things compartimentalized in a way that makes the most sense to you. In that case, remember to add all those files to your git repo, so that the instructor can build your executable!

  • cd ~/unixShell/Assignments/Assignment2
  • git add myshell.c
  • git add Makefile
  • git commit -m “Assignment 2 completed”
  • git push



If your program does not compile and link with a Makefile provided by your team, you cannot earn any points for this assignment.

  • The myshell basic functionality specified in Assignment 1 will account for 70 points. 
  • The remaining 30 points will be earned by the extra features the team implemented. You must place comments at the beginning of your myshell.c file stating what your extra features are and how they work.


Print Friendly