image

95702 - Distributed Systems

With the emergence of the Internet as a computing platform, distributed applications are being widely deployed by organizations. Understanding the principles/theory and the technologies underlying distributed computing and systems design is increasingly important. Examples of technologies supporting such deployment include JEE architecture and Web services.

This course has three major objectives. First, it is designed to introduce students to the principles underlying distributed computing and the design of distributed systems. Second, it aims to provide students with the opportunity to exercise these principles in the context of real applications by having the students use technologies such as XML, SOAP, Web services, and JEE-based application servers. Finally, it seeks to endow students with the capacity to analyze, design, evaluate and recommend distributed computing solutions skills in response to business problems.

Learning Outcomes:

• Describe the non-functional characteristics of distributed applications and differentiate between different types of middleware systems.
• Design, implement, and deploy distributed systems using the prevalent models of web applications, web services, remote objects, and asynchronous messaging.
• Understand the function and interplay of network protocols from ARP to application protocols that enable distributed systems on the Internet.
• Demonstrate the technical ability to code solutions with core networking protocols.
• Program solutions to run on all ranges of devices, including mobile, desktop, and cloud-based servers.
• Understand the Network File System (NFS), the Andrew File System (AFS), and the Hadoop Distributed File System (HDFS)
• Understand the challenge of time in a distributed system, and implement a means of assessing a distributed system's state.
• Understand transactions and implement a two phase commit protocol.
• Describe the difference and similarities between symmetric key and asymmetric key cryptography.
• Describe the reasoning behind each step of several cryptographic protocols including variations on Kerberos and SSL.
• Demonstrate deploying containers to cloud infrastructure
• Understand the problem of distributed consensus and design solutions

Major Assignments:

• Implementation of Client-Server interaction using screen scrapping. Client would search for a KeyWord. Then server displays related bird names. Then client chooses the actual bird that he wants to see. Then server finds the images of that bird with screen scrapping and displays one image from it. Built a web application that searches for images of migratory birds from the Smithsonian's National Zoo &Conservation Biology Institute'sbird photo gallery at
• UDP and TCP based client server interactions
• Devised blockchain –(View basic blockchain status, Add a transaction to the blockchain, Verify the blockchain, View the blockchain, Corrupt the chain,Hide the Corruption by recomputing hashes), TCP based client server interaction. Implementation of proof of work strategy for verification. Used RSA public private key for signing the Hash.
• Devised android app that uses fun translation API to translate a given string to Dothraki or valyrian (option provided)

  • Used MongoDB cluster to store data of each transaction
  • Used Android Gradle to design the app
  • API provided data in json format
  • Deployed a web service using Heroku
  • Android Makes an HTTP request
  • Web service is a HTTP servlet that uses third party API in RestFul Manner
  • Used MongoDB-as-a-Service to host my database in the cloud.
  • Created dashboard on different parameters on logged data

Responsive image

• HDFS, map-reduce