SlideShare a Scribd company logo
1 of 3
ECE 477 Bitstuffing
Created Fall 2010 Revised: Fall 2010
Objectives
Understand the bitstuffing technique in-depth.
Write two C-language programs. One that performs bit stuffing on a sequence of ASCII
represented zeros and ones and the other that unstuffs the ASCII formatted frame.
Become more proficient in C-programming.
Discussion
Consider the bit stuffing technique described in class and in the textbook. In this technique, we use
the special bit pattern, 01111110, as a flag to delimit the start and end of frames. Bit stuffing allows
arbitrary data patterns to be used in a frame and still allow a receiver to determine where a frame
begins and ends. In summary, after every 5 consecutive 1's in the data, an extra 0 is inserted by the
sender. This process is reversed at the receiver. If there are two consecutive back-to-back frames,
then assume that there is a separate flag for the end of the first and a separate flag for the start of
the second. Any frames that do not start or end with a valid flag are discarded. One of the most
common applications that uses bit stuffing is USB interfaces.
The bit stuffing/unstuffing procedure can be efficiently implemented using a finite-state machine.
The state diagram for a bit unstuffing finite-state machine is shown below:
ECE 477 Bitstuffing
Created Fall 2010 Revised: Fall 2010
Implementation
Since the objective of this assignment is to understand the bitstuffing technique, I have some
simplifications that will make the assignment easier. We will represent the data bits in a frame as the
ASCII characters ‘0’ (hex 0x30) and ‘1’ (hex 0x31). This will allows us to process and view the input and
output data using a terminal or text editor rather than going through the steps of manipulating the
individual bits themselves, which is somewhat complicated in software. Your sending program will read
the data from an input text file that contains the ASCII represented bits that will be framed and
“stuffed” by your sending program and its output saved to an output text file. Likewise your receiving
program will read an input text file, detect the start-of-frame and end-of-frame delimiters, and “unstuff”
the stuffed bits as necessary. To further simplify things, we can use an input/output method called
standard-I/O (stdio) redirection what will eliminate the need for you to learn and use file I/O operations.
To jump-start you on this task, I have made a sample program available that illustrates the
implementation of a finite-state machine, the processing of ASCII data, and the usage of I/O redirection.
All files necessary for this assignment can be found at:
http://www.ee.siue.edu/~bnoble/classes/ece477/lab/bitstuff/files/
At this URL, there are two directories of interest. The directory named sample contains a C-program that
detects a simple ASCII sequence by use of a finite-state machine implemented in C. To use and learn
from it, save the source file, seqdetect.c, to your account on your lab computer and open it with a text
editor. Contained in the comments are the instructions for both compiling it as well as examples of using
it with I/O redirection. For this task you will need to open a terminal program. The terminal gives you
access to the UNIX shell where you can execute commands on your operating system. You need to
become familiar with the shell since later labs will require you to modify the behavior of your lab system
using commands executed within the shell.
ECE 477 Bitstuffing
Created Fall 2010 Revised: Fall 2010
Assignment
Write two C-programs.
Sender: Reads ASCII 0's and 1's from a file and frames them with the 01111110 sequence
appropriately. A file can contain multiple frames with each frame corresponding to a single line
of ASCII 0’s and 1’s. A carriage-return or new-line means the end of that data to be framed. Each
subsequent line represents a new set of data to be framed. The output of the sender program
should not place any carriage-returns or new-lines between the frames; the output should only
be one long line of zeros and ones terminated by a single carriage-return/new-line at the end.
Receiver: Reads a bitstuffed ASCII string of 0’s and 1’s from a file, in the format described in the
sender program description, and breaks it up into the data contained in each of the frames. Your
output should be a sequence of frames (1 per line) with all start/end sequences and stuffed bits
removed. If an error is detected, it should print "Error Detected" and exit immediately.
Both programs should be thoroughly commented in such a way that its logic and flow can be
followed by reading the comments and the source code alone.
Demonstration and Report
On the due date you need to schedule a demonstration time with the TA. During the demonstration, you
will be expected to show your programs operation and may be asked to run it on a frame supplied by
the TA. You will also be expected to answer questions about its operation. Credit for this assignment will
only be earned if you can demonstrate complete knowledge of your programs implementation and
operation, even if the program works correctly.
You must include the output of your sender program when it is given the files named sinput and the
output of your receiver program when it is given the files named rinput, both of which are located in the
directory named data at the URL given above.
Your report should describe the logic you used in implementing the program as well as its operation.
You should also describe how you determined that it was functioning correctly and how you verified
that all states within your program were tested for correct operation. You must include a state diagram
for your sender program.

More Related Content

What's hot

Intel x86 Architecture
Intel x86 ArchitectureIntel x86 Architecture
Intel x86 Architecture
ChangWoo Min
 
Performance Comparison Between x86 and ARM Assembly
Performance Comparison Between x86 and ARM AssemblyPerformance Comparison Between x86 and ARM Assembly
Performance Comparison Between x86 and ARM Assembly
Manasa K
 
Lecture 2
Lecture 2Lecture 2
Lecture 2
Mr SMAK
 

What's hot (20)

Esp8266 NodeMCU
Esp8266 NodeMCUEsp8266 NodeMCU
Esp8266 NodeMCU
 
Microprocessor 8086 instruction description
Microprocessor 8086 instruction descriptionMicroprocessor 8086 instruction description
Microprocessor 8086 instruction description
 
Intel x86 Architecture
Intel x86 ArchitectureIntel x86 Architecture
Intel x86 Architecture
 
PCIe and PCIe driver in WEC7 (Windows Embedded compact 7)
PCIe and PCIe driver in WEC7 (Windows Embedded compact 7)PCIe and PCIe driver in WEC7 (Windows Embedded compact 7)
PCIe and PCIe driver in WEC7 (Windows Embedded compact 7)
 
Performance Comparison Between x86 and ARM Assembly
Performance Comparison Between x86 and ARM AssemblyPerformance Comparison Between x86 and ARM Assembly
Performance Comparison Between x86 and ARM Assembly
 
Lecture 2
Lecture 2Lecture 2
Lecture 2
 
Intel core i5
Intel core i5Intel core i5
Intel core i5
 
AD-IP-JESD204 JESD204B Interface Framework
AD-IP-JESD204 JESD204B Interface FrameworkAD-IP-JESD204 JESD204B Interface Framework
AD-IP-JESD204 JESD204B Interface Framework
 
Embedded firmware
Embedded firmwareEmbedded firmware
Embedded firmware
 
Internal architecture-of-8086
Internal architecture-of-8086Internal architecture-of-8086
Internal architecture-of-8086
 
Unit II Arm 7 Introduction
Unit II Arm 7 IntroductionUnit II Arm 7 Introduction
Unit II Arm 7 Introduction
 
SPI Protocol
SPI ProtocolSPI Protocol
SPI Protocol
 
Microprocessor 8086
Microprocessor 8086Microprocessor 8086
Microprocessor 8086
 
Pci express technology 3.0
Pci express technology 3.0Pci express technology 3.0
Pci express technology 3.0
 
I2C
I2CI2C
I2C
 
AMBA 2.0 REPORT
AMBA 2.0 REPORTAMBA 2.0 REPORT
AMBA 2.0 REPORT
 
Report on arduino
Report on arduinoReport on arduino
Report on arduino
 
LECT 1: ARM PROCESSORS
LECT 1: ARM PROCESSORSLECT 1: ARM PROCESSORS
LECT 1: ARM PROCESSORS
 
PCIe DL_layer_3.0.1 (1)
PCIe DL_layer_3.0.1 (1)PCIe DL_layer_3.0.1 (1)
PCIe DL_layer_3.0.1 (1)
 
Computer Architecture – An Introduction
Computer Architecture – An IntroductionComputer Architecture – An Introduction
Computer Architecture – An Introduction
 

Viewers also liked

Rospau entrevistabona
Rospau entrevistabonaRospau entrevistabona
Rospau entrevistabona
PauRos99
 
Rospau esquemes tema 4
Rospau esquemes tema 4Rospau esquemes tema 4
Rospau esquemes tema 4
PauRos99
 
Pau rosbouesquemestema1 i 2
Pau rosbouesquemestema1 i 2Pau rosbouesquemestema1 i 2
Pau rosbouesquemestema1 i 2
PauRos99
 
El planeta terra(activitats)
El planeta terra(activitats)El planeta terra(activitats)
El planeta terra(activitats)
PauRos99
 
Piràmides pau ros3erd
Piràmides pau ros3erdPiràmides pau ros3erd
Piràmides pau ros3erd
PauRos99
 
Esquemes tema 8
Esquemes tema 8Esquemes tema 8
Esquemes tema 8
PauRos99
 
Rospau esquemes tema 4
Rospau esquemes tema 4Rospau esquemes tema 4
Rospau esquemes tema 4
PauRos99
 
ทีม
ทีมทีม
ทีม
7112536
 
Activitats tema3 pauros3er_d
Activitats tema3 pauros3er_dActivitats tema3 pauros3er_d
Activitats tema3 pauros3er_d
PauRos99
 
Planol urba mallorca_pau_ros3erd
Planol urba mallorca_pau_ros3erdPlanol urba mallorca_pau_ros3erd
Planol urba mallorca_pau_ros3erd
PauRos99
 

Viewers also liked (16)

Обучающий комикс Приключения льва Лявона: «Платёжная карточка»
Обучающий комикс Приключения льва Лявона: «Платёжная карточка»Обучающий комикс Приключения льва Лявона: «Платёжная карточка»
Обучающий комикс Приключения льва Лявона: «Платёжная карточка»
 
Rospau entrevistabona
Rospau entrevistabonaRospau entrevistabona
Rospau entrevistabona
 
Rospau esquemes tema 4
Rospau esquemes tema 4Rospau esquemes tema 4
Rospau esquemes tema 4
 
Pau rosbouesquemestema1 i 2
Pau rosbouesquemestema1 i 2Pau rosbouesquemestema1 i 2
Pau rosbouesquemestema1 i 2
 
El planeta terra(activitats)
El planeta terra(activitats)El planeta terra(activitats)
El planeta terra(activitats)
 
Halloween
HalloweenHalloween
Halloween
 
Обучающий комикс Приключения льва Лявона «Обмен валют»
Обучающий комикс Приключения льва Лявона «Обмен валют»Обучающий комикс Приключения льва Лявона «Обмен валют»
Обучающий комикс Приключения льва Лявона «Обмен валют»
 
Piràmides pau ros3erd
Piràmides pau ros3erdPiràmides pau ros3erd
Piràmides pau ros3erd
 
Esquemes tema 8
Esquemes tema 8Esquemes tema 8
Esquemes tema 8
 
Mace
MaceMace
Mace
 
Rospau esquemes tema 4
Rospau esquemes tema 4Rospau esquemes tema 4
Rospau esquemes tema 4
 
ทีม
ทีมทีม
ทีม
 
Activitats tema3 pauros3er_d
Activitats tema3 pauros3er_dActivitats tema3 pauros3er_d
Activitats tema3 pauros3er_d
 
Real Time
Real TimeReal Time
Real Time
 
Planol urba mallorca_pau_ros3erd
Planol urba mallorca_pau_ros3erdPlanol urba mallorca_pau_ros3erd
Planol urba mallorca_pau_ros3erd
 
Classroom engagement
Classroom engagementClassroom engagement
Classroom engagement
 

Similar to Bitstuffing

CS 23001 Computer Science II Data Structures & AbstractionPro.docx
CS 23001 Computer Science II Data Structures & AbstractionPro.docxCS 23001 Computer Science II Data Structures & AbstractionPro.docx
CS 23001 Computer Science II Data Structures & AbstractionPro.docx
faithxdunce63732
 
Project 2 Assigned Tuesday February 21tst2023 Due Tuesd.pdf
Project 2 Assigned Tuesday February 21tst2023 Due Tuesd.pdfProject 2 Assigned Tuesday February 21tst2023 Due Tuesd.pdf
Project 2 Assigned Tuesday February 21tst2023 Due Tuesd.pdf
abhaykush25
 
This project explores usage of the IPC in the form of shared.pdf
This project explores usage of the IPC in the form of shared.pdfThis project explores usage of the IPC in the form of shared.pdf
This project explores usage of the IPC in the form of shared.pdf
adinathfashion1
 
Assembly language programming(unit 4)
Assembly language programming(unit 4)Assembly language programming(unit 4)
Assembly language programming(unit 4)
Ashim Saha
 
Program 1 – CS 344This assignment asks you to write a bash.docx
Program 1 – CS 344This assignment asks you to write a bash.docxProgram 1 – CS 344This assignment asks you to write a bash.docx
Program 1 – CS 344This assignment asks you to write a bash.docx
wkyra78
 

Similar to Bitstuffing (20)

CS 23001 Computer Science II Data Structures & AbstractionPro.docx
CS 23001 Computer Science II Data Structures & AbstractionPro.docxCS 23001 Computer Science II Data Structures & AbstractionPro.docx
CS 23001 Computer Science II Data Structures & AbstractionPro.docx
 
Mp lab manual
Mp lab manualMp lab manual
Mp lab manual
 
ARM Embeded_Firmware.pdf
ARM Embeded_Firmware.pdfARM Embeded_Firmware.pdf
ARM Embeded_Firmware.pdf
 
Project 2 Assigned Tuesday February 21tst2023 Due Tuesd.pdf
Project 2 Assigned Tuesday February 21tst2023 Due Tuesd.pdfProject 2 Assigned Tuesday February 21tst2023 Due Tuesd.pdf
Project 2 Assigned Tuesday February 21tst2023 Due Tuesd.pdf
 
Bcsl 031 solve assignment
Bcsl 031 solve assignmentBcsl 031 solve assignment
Bcsl 031 solve assignment
 
This project explores usage of the IPC in the form of shared.pdf
This project explores usage of the IPC in the form of shared.pdfThis project explores usage of the IPC in the form of shared.pdf
This project explores usage of the IPC in the form of shared.pdf
 
Input-output
Input-outputInput-output
Input-output
 
Flex
FlexFlex
Flex
 
C question
C questionC question
C question
 
What is algorithm
What is algorithmWhat is algorithm
What is algorithm
 
Input and output in c++
Input and output in c++Input and output in c++
Input and output in c++
 
Alp 05
Alp 05Alp 05
Alp 05
 
Porting is a Delicate Matter: Checking Far Manager under Linux
Porting is a Delicate Matter: Checking Far Manager under LinuxPorting is a Delicate Matter: Checking Far Manager under Linux
Porting is a Delicate Matter: Checking Far Manager under Linux
 
Embedded concepts
Embedded conceptsEmbedded concepts
Embedded concepts
 
Mp &mc programs
Mp &mc programsMp &mc programs
Mp &mc programs
 
A Project Based Lab Report On AMUZING JOKE
A Project Based Lab Report On AMUZING JOKEA Project Based Lab Report On AMUZING JOKE
A Project Based Lab Report On AMUZING JOKE
 
Assembly language programming(unit 4)
Assembly language programming(unit 4)Assembly language programming(unit 4)
Assembly language programming(unit 4)
 
Program 1 – CS 344This assignment asks you to write a bash.docx
Program 1 – CS 344This assignment asks you to write a bash.docxProgram 1 – CS 344This assignment asks you to write a bash.docx
Program 1 – CS 344This assignment asks you to write a bash.docx
 
2600 v08 n1 (spring 1991)
2600 v08 n1 (spring 1991)2600 v08 n1 (spring 1991)
2600 v08 n1 (spring 1991)
 
ArduinoWorkshop2.pdf
ArduinoWorkshop2.pdfArduinoWorkshop2.pdf
ArduinoWorkshop2.pdf
 

Recently uploaded

The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
heathfieldcps1
 

Recently uploaded (20)

The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POS
 
How to Add New Custom Addons Path in Odoo 17
How to Add New Custom Addons Path in Odoo 17How to Add New Custom Addons Path in Odoo 17
How to Add New Custom Addons Path in Odoo 17
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docx
 
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan Fellows
 
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
 
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptxHMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
 
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptx
 
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptxExploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)
 
Plant propagation: Sexual and Asexual propapagation.pptx
Plant propagation: Sexual and Asexual propapagation.pptxPlant propagation: Sexual and Asexual propapagation.pptx
Plant propagation: Sexual and Asexual propapagation.pptx
 
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptxCOMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
 
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptxOn_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
 
Single or Multiple melodic lines structure
Single or Multiple melodic lines structureSingle or Multiple melodic lines structure
Single or Multiple melodic lines structure
 
Food safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfFood safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdf
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 

Bitstuffing

  • 1. ECE 477 Bitstuffing Created Fall 2010 Revised: Fall 2010 Objectives Understand the bitstuffing technique in-depth. Write two C-language programs. One that performs bit stuffing on a sequence of ASCII represented zeros and ones and the other that unstuffs the ASCII formatted frame. Become more proficient in C-programming. Discussion Consider the bit stuffing technique described in class and in the textbook. In this technique, we use the special bit pattern, 01111110, as a flag to delimit the start and end of frames. Bit stuffing allows arbitrary data patterns to be used in a frame and still allow a receiver to determine where a frame begins and ends. In summary, after every 5 consecutive 1's in the data, an extra 0 is inserted by the sender. This process is reversed at the receiver. If there are two consecutive back-to-back frames, then assume that there is a separate flag for the end of the first and a separate flag for the start of the second. Any frames that do not start or end with a valid flag are discarded. One of the most common applications that uses bit stuffing is USB interfaces. The bit stuffing/unstuffing procedure can be efficiently implemented using a finite-state machine. The state diagram for a bit unstuffing finite-state machine is shown below:
  • 2. ECE 477 Bitstuffing Created Fall 2010 Revised: Fall 2010 Implementation Since the objective of this assignment is to understand the bitstuffing technique, I have some simplifications that will make the assignment easier. We will represent the data bits in a frame as the ASCII characters ‘0’ (hex 0x30) and ‘1’ (hex 0x31). This will allows us to process and view the input and output data using a terminal or text editor rather than going through the steps of manipulating the individual bits themselves, which is somewhat complicated in software. Your sending program will read the data from an input text file that contains the ASCII represented bits that will be framed and “stuffed” by your sending program and its output saved to an output text file. Likewise your receiving program will read an input text file, detect the start-of-frame and end-of-frame delimiters, and “unstuff” the stuffed bits as necessary. To further simplify things, we can use an input/output method called standard-I/O (stdio) redirection what will eliminate the need for you to learn and use file I/O operations. To jump-start you on this task, I have made a sample program available that illustrates the implementation of a finite-state machine, the processing of ASCII data, and the usage of I/O redirection. All files necessary for this assignment can be found at: http://www.ee.siue.edu/~bnoble/classes/ece477/lab/bitstuff/files/ At this URL, there are two directories of interest. The directory named sample contains a C-program that detects a simple ASCII sequence by use of a finite-state machine implemented in C. To use and learn from it, save the source file, seqdetect.c, to your account on your lab computer and open it with a text editor. Contained in the comments are the instructions for both compiling it as well as examples of using it with I/O redirection. For this task you will need to open a terminal program. The terminal gives you access to the UNIX shell where you can execute commands on your operating system. You need to become familiar with the shell since later labs will require you to modify the behavior of your lab system using commands executed within the shell.
  • 3. ECE 477 Bitstuffing Created Fall 2010 Revised: Fall 2010 Assignment Write two C-programs. Sender: Reads ASCII 0's and 1's from a file and frames them with the 01111110 sequence appropriately. A file can contain multiple frames with each frame corresponding to a single line of ASCII 0’s and 1’s. A carriage-return or new-line means the end of that data to be framed. Each subsequent line represents a new set of data to be framed. The output of the sender program should not place any carriage-returns or new-lines between the frames; the output should only be one long line of zeros and ones terminated by a single carriage-return/new-line at the end. Receiver: Reads a bitstuffed ASCII string of 0’s and 1’s from a file, in the format described in the sender program description, and breaks it up into the data contained in each of the frames. Your output should be a sequence of frames (1 per line) with all start/end sequences and stuffed bits removed. If an error is detected, it should print "Error Detected" and exit immediately. Both programs should be thoroughly commented in such a way that its logic and flow can be followed by reading the comments and the source code alone. Demonstration and Report On the due date you need to schedule a demonstration time with the TA. During the demonstration, you will be expected to show your programs operation and may be asked to run it on a frame supplied by the TA. You will also be expected to answer questions about its operation. Credit for this assignment will only be earned if you can demonstrate complete knowledge of your programs implementation and operation, even if the program works correctly. You must include the output of your sender program when it is given the files named sinput and the output of your receiver program when it is given the files named rinput, both of which are located in the directory named data at the URL given above. Your report should describe the logic you used in implementing the program as well as its operation. You should also describe how you determined that it was functioning correctly and how you verified that all states within your program were tested for correct operation. You must include a state diagram for your sender program.