This course studies the concepts and theoretical background of existing technologies for building distributed systems. The focus is on the design of aspect of distributed systems, which includes distributed design patterns, distributed technologies, etc.
The course can be split in a theoretical and more applied part. In the theoretical part, a number of distributed design principles will be studied, together with the algorithms that are needed to achieve them. These include:
- Algorithms for distributed transactions
- Algorithms for tackling concurrency
- Algorithms for avoiding distributed deadlocks
- Achieving security in distributed systems
- An introduction to cloud computing
Moreover, the applied part of this course will study the following distributed technologies:
- Web-based distributed systems based on REST, JSON, etc.
- Web Services
- Java-based distributed applications: EJB3, including its multi-tier architecture allowing it to couple it with RESTful Web Services.
- Front-end technology
- Android-based mobile application development for distributed systems.
The studied technologies present a gradual approach in which we increase the complexity and functionality of the particular technology. As such their applicability range from individual web sites to enterprise applications.