Distributed Systems for Information Systems Management
Description: Objective: With the emergence of the internet as a computing platform, distributed applications are being widely deployed by organizations. Understanding the principles and the technologies underlying distributed computing and distributed systems design is increasingly important. Examples of technologies supporting such deployment include the JEE architecture and the .Net 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 architectural 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 develop and use technologies such as RESTful Web services, JEE application servers, Hadoop, cryptographic protocols, mobile platforms and blockchains. Finally it seeks to endow students with the capacity to analyze, design, evaluate, and recommend distributed computing solutions in response to business problems. > Distributed Computing Principles > Distributed computing architectures: P2P and client server Inter-process communication > Distributed objects and remote invocation > Naming and Name services > Time and Global State Management > Transactions and Concurrency control > Distributed Transactions Material on principles of distributed systems will be taught from the Coulouris et al. book on Distributed Systems. Internet-enabled Distributed Computing Technologies Application Server architectures: > JEE > Extensions of the Java Distributed Object model and Java RMI > Component-based architectures Web Services > REST, WSDL UDDI SOAP XML > HTTP-based RPC combined with standards for interface definition and naming. Discussion and application of select APIs from the API layer of the J2EE architecture to illustrate distributed transactions, middleware access protocols (MQ Series API), and Messaging services (JMS). Project oriented teaching with implementation components to get students hands on skills with JEE frameworks.
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.