Unreliable Data Transfer - Phase 1
Unreliable Data Transfer - Phase 1
(a) An imagination of the communication scenario between A and B over an unreliable channel.
(b) The communication scenario between A and B through a server simulating the unreliable channel.
D. Learning Outcomes:
Below is a list of targeted learning outcomes from this phase of the project:
1. Understand the basics of UDP socket programming in JAVA.
2. Gain practical experience with simulating network conditions such as packet loss and delay.
3. Learn to implement controlled randomness and probability calculations in code.
4. Develop skills in error handling and providing informative feedback for debugging.
5. (Optional) Explore advanced technique for simulating diverse network behaviors.
E. Resources:
➢ Java socket programming documentation:
https://docs.oracle.com/javase/tutorial/networking/sockets/index.html
➢ Random number generation in Java:
https://docs.oracle.com/cd/E17802_01/j2se/j2se/1.5.0/jcp/beta1/apidiffs/java/util/Ran
dom.html
➢ Implementing sleep in Java:
https://docs.oracle.com/javase/tutorial/essential/concurrency/sleep.html
➢ Command-line arguments in Java:
https://www.tutorialspoint.com/Command-Line-arguments-in-Java-programming
!! IMPORTANT REMARKS !!
1. It is absolutely forbidden to copy any code from the Internet.
2. Being explicit about the used resources (including but not limited to web tutorial, YouTube
videos, AI-generated code, among others) is a must.
F. Hand-In Material:
The project’s due date is as specified on Moodle. Soft copies of the following material must be zipped
and uploaded to Moodle by the due date. Late submissions are accepted for the first three days with
a penalty of 15 points per late day. No late submissions shall be accepted beyond that point. The
following grading scheme shall be adopted:
Material Grade Weight
Very well documented solution within a
professional report of a maximum of ten pages
encompassing explanations and visual illustrations
along with adequate elaborations pertaining to 10%
these illustrations as well as any encountered
problems throughout the development of this
project phase and their found resolutions.
Very well commented source code pertaining to the ➢ 80% for well-organized and correct code.
user clients as well as the developed simulation ➢ 60% for messy yet working code.
server application UnreliableChannel.java ➢ 20% for bogus code.
➢ 05% for incomplete code.
Execution output snapshots explicitly showing the ➢ 10% for correct output.
contents of the standard output. ➢ 05% for output minor errors.
➢ 00% for incorrect/incomplete output.
Total Points 100%