Project topic: This is an individual project. You are going

Project topic:

This is an individual project. You are going to implement and research on two generic forms of pipelined approaches in transport service, go-Back-N (GBN) and selective repeat (SR), through software simulations. As you may already know, these two approaches have their advantages and disadvantages. In nature, some upcoming packets may be lost or have to be re-sent due to premature timeout or delayed ACK. Since the behavior of data transfer is not fully predictable, it is hard to tell which approach is superior. Through this project, you investigate the performance difference from the simulated results between these two methods.

There are several factors, such as window size, transmission delay, propagation delay, timeout setting, and packet loss rate, which may affect the performance. You will record the simulated results by adjusting relevant variables such as those mentioned above. Finally, you summarize your findings in a report.

General guideline and policy:

You can use any programming language of your choice for implementation. If you think you are not good at programming at all, you can either (1) consider a purely mathematical approach (but in this way you may find it even harder), or (2) borrow the software program from only one of the classmate. If you choose option (1), the maximum grade you will get is 80% of the total grade. If you choose option (2), you must tell from whom you have borrowed the program and the maximum grade you will get is 60% of the total grade.

For option (2): borrowing programs from a classmate, if you borrow the program but fail to mention the name of the classmate who contributes the program to you, you will be subject to the discipline of academic dishonesty (see course policy on syllabus). Any student who lends the program can give it to only one individual and he/she must state who is the beneficiary. If you borrow the program from another student, you cannot pass the program to any third student. If any two individuals decide to share the code or the program, both will be subject to the discipline of academic dishonesty. No student has any obligation to give his/her own program to others.

At all times, you are not allowed to share the individual report, even if you may have borrowed other's program. You are not allowed to use any existing programs on the Internet. Although this project may be hard for you, please try your best to complete it as much as you can. There is no absolutely correct answer for this project. You will be graded largely based on the efforts you have made.


You need to submit the following two items separately:

1) A typed report with 5-10 pages (single space paragraph) including figures and citations. The report should contain all necessary/applicable introduction, assumptions, definitions, arguments, experimental design, discoveries, comparisons, discussions, and conclusion. Neither source code nor plain screenshot shall appear in the report. Pseudo-code is okay provided that it catches the core functions of the program. Performance results should be made with computer generated charts or figures.

2) A compressed file (e.g. .zip) that includes all source codes of your program. Only source code is needed. No compiled objects, no executable files, no debug files, and no runtime environment. At this moment, a read-me file is not needed in this submission. However, your program must be working and you should be ready to execute your program in class by the end of the semester if you are chosen for demonstration