Skip to content

Latest commit

 

History

History

Assignments

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

EECS 489: Computer Networks (W’25)

Assignments and Policies

Four projects will be assigned during the semester. Each project will require a substantial time commitment on your part.

Project Released Due Solo/Group Link
1 Jan 13 Jan 29 Solo https://github.com/eecs489staff/a1-sockets-mininet
2 Jan 29 Feb 21 Group TBA
3 Feb 26 Mar 26 Group TBA
4 Mar 26 Apr 22 Group TBA

The Autograder for a particular assignmnent will be released several days after the assignment itself; this is to encourage you to write your own test cases.

Use of GitHub

EDIT: For Project 1, we will not require any GitHub interfacing. Please see the Project 1 spec for submission instructions.

We will expect everyone to create a private GitHub repository for each project, shared with your team members and the eecs489wn25 GitHub account. Please note that creating a public GitHub repository and posting your code there will be a violation of the Honor Code.

Please sign up for a free github account if you don't already have one, then register your GitHub username with us. When you submit assignments, you will submit a link to your GitHub repository; we will clone it and use the main branch to run your code.

Group Work

Project 1 will be done individually, while Projects 2-4 can be done in groups of up to 3 students. Although we allow individual submissions for Assignments 2-4, we highly encourage you to work in groups. Groups may be drawn from the entire EECS 489 population; members of a group need not all be in the same discussion section.

Choose your group members carefully. You should discuss topics such as prior experience, course background, goals for this course, workload and schedule for this semester, and preferred assignment management and work style. Make sure you can find several blocks of time during the week to meet to discuss or carry out the assignment. Students who have worked on any EECS 489 assignment in a past semester should talk with an instructor before joining a group. You may switch groups between projects.

All group members should be familiar with all aspects of each assignment, irrespective of their role on the assignment. We expect all group members to contribute their fair share, and we expect to assign the same assignment grade to all members of a group. In case of major conflicts within your group, please reach out to the course staff. In such cases, we may interview group members and examine the commit history on your GitHub repository to evaluate group dynamics.

We encourage everyone to read Coping with hitchhikers and couch potatoes on teams.

Late Days

We understand that unexpected circumstances may occaisonally prevent you from finishing projects on time. For this reason, each individiual will have a total of 3 late days throughout the semester across assignments 2 to 4. Note that Assignment 1 does not have late days.

These late days should only be used to deal with unexpected problems such as illness. They should not be used simply to start later on a assignment or because you are having difficulty completing the assignment. Once late days are used up, submissions received after the due date will not count (even if they are just one second late). Weekend days are counted in the same way as weekdays (e.g., if the assignment deadline is Friday and you turn it in Sunday, that's two days late). Late days interact in complex ways with groups; a summary of the policy is described here.

To request an extension beyond the free late days, you must discuss your situation with an instructor before the deadline and provide written documentation. If a family/personal emergency causes you to miss a significant number of days, please see an instructor to decide the best course of action. If you are having trouble understanding the material or starting a assignment, please come to office hours for help right away.

Contact an instructor at the beginning of the semester if you have a disability that might interfere with your ability to participate in class, submit assignments, or take exams.

Honor Code

All assignments in this course are to be done by your own group and in accordance with the College of Engineering Honor Code. Violation will result in a zero on the assignment in question and initiation of the formal procedures of the Engineering Honor Council.

At the same time, we encourage students to help each other learn the course material. As in most courses, there is a boundary separating these two situations. You may give or receive help on concepts covered in lecture or discussion and on the specifics of C/C++ syntax or a particular library. You may consult with other students to help you understand the assignment specification (i.e., the problem definition). However, you may not collaborate in any way when constructing your solution; the solution to the assignment must be generated by your group working alone. Any misrepresentation of another person's work as your own is unacceptable and is a violation of the honor code. You are not allowed to work out the programming details of the problems with anyone or to collaborate to the extent that your programs are identifiably similar. You are not allowed to look at or in any way derive advantage from solutions or code that you did not write. If you worked on the assignments in the past (e.g., if you are repeating EECS 489), you are not allowed to re-use code that your group wrote from the prior semester.

If you have any questions as to what constitutes unacceptable collaboration, please talk with an instructor. You are expected to take reasonable precautions to protect your work. You may not post your work in a publically accessible location, such as public code repositories. Don't let other students borrow your account or computer; don't leave your program in a publicly accessible directory; and don't discard printouts in a public place.

Tips for Success on the Assignments

The most common reason for doing poorly on the assignments is starting them late. You will be given plenty of time to complete each assignment. However, if you wait until the last minute to start, you may not be able to finish. Start early, and plan to have it finished a few days ahead of the due date. Expect to spend more time debugging the code than you did writing it.

The most common reason for spending too much time on a assignment is coding before thinking through the entire assignment. Resist the urge to start writing code as your first step; you are likely to code yourself into a corner. Meet with your group and plan out the architecture of your solution. Expect to revise this architecture several times before settling on a plan. Read the assignment description carefully, and list the behaviors the specifications require of your solution. The more you think through and understand what needs to be programmed before you write code, the better. Design your assignment with independently and incrementally testable subsystems rather than saving all testing for the end. Assign one assignment member as the Testing Czar; that member's job is to see how he or she can break the group's solution with the simplest possible test. Another common reason for spending too much time on a assignment is debugging by trying things at random, just to see if they work. If you find a workaround without understanding why it fixes the problem, you may be masking the problem rather than fixing it, and it will probably cause more problems later and be harder to fix. If you find yourself in this position, step away from the computer and think about what is happening, or come see an instructor in office hours.

There are many sources of help on which you can draw. Most questions can be submitted to the teaching staff and your fellow classmates via the discussion forum. These will typically be answered within the day, often more quickly during working hours. However, some types of questions cannot be answered without seeing your assignment. If you have detailed questions about your program, speak to an instructor during office hours. Students are also encouraged to help one another on the course concepts (but not the implementation of the assignments). One of the best ways for you to make sure that you understand a concept is to explain it to someone else. Keep in mind, however, that you should not expect anyone else to do any part of your assignment for you. The assignment that you turn in must be your own.

Many computing sites have consultants who are available to help you. They can often help with questions about the computers, printers, and installed software (e.g., UNIX, AFS, e-mail). However, they probably will not be able to help you with questions about operating systems, C, or specific errors in your program.