CS521 Network Architecture II : Project Review


Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

CS521 Network Architecture II : Project Review

  1. 1. CS521: Projects A Review
  2. 2. CS521: Projects <ul><li>Prerequisites for doing the projects </li></ul><ul><ul><li>Understanding of any one Programming Language (e.g. C, C++, C# or Java) </li></ul></ul><ul><ul><li>Basic Socket Programming </li></ul></ul><ul><ul><li>Understanding of Protocols </li></ul></ul><ul><ul><li>Understanding of the Problem Statement (most important) </li></ul></ul><ul><ul><li>Ask questions of you don’t understand the Problem Statement! </li></ul></ul>
  3. 3. Project 1: RDP Implementation <ul><li>What was the major objective? </li></ul><ul><ul><li>Students should learn how to implement the sliding window protocol to get a feel of implementing Reliable data transfer over unreliable media or network. </li></ul></ul><ul><li>Generally the lab environment doesn’t provide unreliable data transfer. </li></ul><ul><ul><li>A “Virtual Router” process was given to provide unreliability </li></ul></ul><ul><ul><li>Introduced a protocol to talk with router so that we can test the sliding window implementation </li></ul></ul>
  4. 4. Project 1: RDP Implementation <ul><li>Things to be implemented </li></ul><ul><ul><li>Sliding Window Protocol </li></ul></ul><ul><ul><li>Communication with Router </li></ul></ul><ul><li>Implementation of both of them were equally important </li></ul>
  5. 5. Project 1: RDP Implementation <ul><li>Review of Project 1 submission </li></ul><ul><ul><li>Teams started very late to implement </li></ul></ul><ul><ul><ul><li>When you have less time to work or think your quality degrades </li></ul></ul></ul><ul><ul><li>Very few teams actually asked questions when they faced problems </li></ul></ul><ul><ul><li>Some Teams gave more importance to Router communication and forgot or neglected the importance of RDP implementation </li></ul></ul><ul><ul><li>Some implemented a completely different project that was not related with the project 1 ! </li></ul></ul>
  6. 6. Project 2: IPP Implementation <ul><li>What was the major objective? </li></ul><ul><ul><li>Students should learn how to design an Instant Messaging Protocol and implement the Presence part of IM. </li></ul></ul><ul><ul><li>The major focus was to come up with a simple and scalable design for your version of protocol </li></ul></ul>
  7. 7. Project 2: IPP Implementation <ul><li>Things to be implemented </li></ul><ul><ul><li>Presence Protocol </li></ul></ul><ul><ul><li>Application to demonstrate that your protocol works! </li></ul></ul><ul><li>Implementation of both of them were equally important </li></ul>
  8. 8. Project 2: IPP Implementation <ul><li>Review of Project 2 submission </li></ul><ul><ul><li>Most of the teams did well in the Application part of this project </li></ul></ul><ul><ul><li>Most of the implementations had Application and their Protocol mixed with each other when they submitted first draft </li></ul></ul><ul><ul><li>Most teams gave importance to GUI but that was not a major requirement. </li></ul></ul><ul><ul><li>Buddy list management should be with the help of protocol, some teams had delegated this to database or application </li></ul></ul>
  9. 9. Project 3: SIP <ul><li>What was the major objective? </li></ul><ul><ul><li>Students should learn how to understand and implement the real protocol (SIP in this case) from RFC. </li></ul></ul><ul><ul><li>The major focus was to implement as specified in the Standard RFC </li></ul></ul><ul><ul><li>Implementations from different groups should interoperate if they all follow the Standard RFC (that’s why standards are there !) </li></ul></ul>
  10. 10. Project 3: SIP <ul><li>Things to be implemented </li></ul><ul><ul><li>Atleast one of the Session Messages (e.g. INVITE, REGISTER, SUBSCRIBE) </li></ul></ul>
  11. 11. Project 3: SIP <ul><li>Review of Project 3 submission </li></ul><ul><ul><li>Most of the teams did good </li></ul></ul><ul><ul><li>Some teams implementation was not working properly </li></ul></ul><ul><ul><li>They did not have proper documentation of how to run their projects (especially with inputs that won’t crash your programs) </li></ul></ul>
  12. 12. Finally <ul><li>Design your implementation first </li></ul><ul><ul><li>Spending time in a good design is less likely to fail and more likely to finish earlier than an attempt to jump directly into coding </li></ul></ul><ul><ul><li>I have seen some teams that did brainstorming in their design before implementation performed well </li></ul></ul><ul><li>Know your tools </li></ul><ul><ul><li>Especially you should know what is the behavior of your language </li></ul></ul><ul><ul><ul><li>E.g. what is the size of int in your choice of language and operating system platform </li></ul></ul></ul><ul><ul><ul><li>How a struct or class is stored inside memory? If you want to send these objects? </li></ul></ul></ul><ul><ul><ul><li>Is the memory representation of these objects compatible with the representation you want in the Protocol you are using? (big-endian vs. little-endian) </li></ul></ul></ul><ul><ul><ul><li>Is your machine blocking incoming packets! Any firewall issues? </li></ul></ul></ul><ul><li>Handle Error conditions </li></ul><ul><ul><li>Exceptions are bad when they are not caught! </li></ul></ul><ul><li>Think from end-user perspective. </li></ul><ul><ul><li>How would the end-user can use your program if he/she was not in your development team and doesn’t know what you have done! </li></ul></ul><ul><ul><li>Asking user for input from command line or gui is good as compared to expecting user to change some variable inside your program ! </li></ul></ul>