The aim of this course is to introduce students to the basic principles of distributed systems and provide them with some practical experience of implementing distributed applications using contemporary software development tools. The course has the following main objectives: To introduce students to the principles underlying distributed computing and to the design of distributed systems, to enable practice in the context of development of real applications and, finally, to foster the participants skills analysis, design and evaluation formulating appropriate operational solutions associated with the use of distributed systems.
After completion of the course, students should be able to:
- Apply to distributed systems basic design principles for concurrency (concurrency) and synchronization (synchronization)
- Understand and appreciate alternative paradigms and technologies for distributed systems
- Design distributed applications based on contemporary software life cycle models
- Develop distributed applications using modern frameworks and development tools
- Choose appropriate middleware and integration technologies for the development of specific distributed applications
- Utilize security and reliability features in the design of distributed applications
- Be able to design and publish services as building blocks of service-oriented applications
The course addresses fundamental concepts of distributed systems, which form the basis of the design and development of distributed web applications. Specifically, the course includes the study of distributed systems architectures, paradigms and middleware and integration technologies. Specialized issues like synchronization and security will are also discussed.
Particular emphasis is placed on the development of web applications using contemporary widely used frameworks and technologies: Java, REST, XML, JSON, service-oriented software development (WSDL, SOAP), etc.
- Shklar, R. Rosen. “Web Application Architecture: Principles, Protocols, and Practices”, Wiley, 2003.
- Tanenbaum, M. Steen, “Distributed Systems”, Prentice Hall, 2005.
- G. Coulouris, J. Dollimore, T. Kindberg, “Distributed Systems: Concepts and Design, 4th Edition, Addison Wesley, 2005.
- I. Crab, I. Probe, C. Xylomenos, K. Roukounaki, “Distributed Systems with Java”, Prentice Hall, 2005.
- Y. Chen, W.T. Tsai, Service-Oriented Computing and Web Software Integration, Third Edition, Kendall / Hunt Publishing, 2011.