SWEN7303: Software Engineering for Distributed Systems

Design and engineering principles of distributed systems. It includes in-depth study on how large-scale, distributed computational systems are designed and built, and mechanisms to evaluate them and the design considerations of Distributed Systems: Scalability, Openness, Heterogeneity, Concurrency, Fault-tolerance, Transparency, Performance and Management, It covers distributed software architectures, including transaction oriented, message oriented, with focus on design mechanisms and approaches for remote invocation, naming, synchronization, consistency and replication, and fault tolerance. The course places focus on the engineering of distributed systems and their applications within the context of real world distributed systems, including cloud and grid computing.
The course aims to provide students with advanced understanding and analysis of engineering methods and techniques of distributed systems, and apply these techniques through team project work and research investigations.