Year:11/12
Department:Computing and Communications (School of)
Level:Part II (any yr)
Learning Hours:150
Credit Points:15
Weight:0.5
Course Convenor:Professor GS Blair
Status:Live
Syllabus Rules
back to top
The student must take the following modules:
Assessment Rules
back to top
Curriculum Design: Outline Syllabus
back to top
The fundamental stream introduces fundamental principles that underpin modern distributed systems. This consists of 20 hours of lectures covering the following topics:
Introduction to distributed systems; Key underlying mechanisms: RPC/ RMI, clocks and synchronisation, group communication); Non-functional aspects in distributed systems: scalability, fault-tolerance and dependability, security; Applications and services: mobile code and agents, distributed file systems.
The practical stream in contrast covers both the practical development of distributed systems using Java RMI and J2EE and also associated tools and techniques that can be employed. This consists of 10 hours of lectures as follows:
Introduction to Java RMI; security and Java RMI, the Java Messaging Service, Java Groups, Aspect J and distributed programming, agent-based programming through aglets, resource discovery using Jini, enterprise component architectures and EJB.
Educational Aims: Subject Specific: Knowledge, Understanding and Skills
back to topTo provide an understanding of the fundamental principles underpinning modern distributed systems including the client-server model, RPC/ RMI, clock synchronisation, etc. To supplement this with studies of practical tools and techniques currently available in distributed programming, focussing in particular Java RMI and associated Java-based software. To be able to provided key non-functional properties such as scalability, dependability and security. To provide an insight into current research issues in the distributed systems community.
Learning Outcomes: Subject Specific: Knowledge, Understanding and Skills
back to top
You should have a strong understanding of what is meant by a distributed system, why people are developing such systems, and what are their potential problems. You should understand the client-server paradigm and the role of middleware technology and be able to relate these to the concepts introduced in the practical stream. You should have a good understanding of RPC, its role in middleware, issues in its design (e.g. transparency), and how it is implemented. You should also be able to compare the RPC service with alternatives such as publish-subscribe or distributed shared memory. You should understand principles of clock synchronisation and also group communication in distributed systems and why these are fundamental underlying services. You should understand the importance of scalability in distributed systems and also core techniques to build scalable services. You should be able to appreciate the security vulnerabilities in a modern distributed system, and general security principles to address such threats including cryptography and access control (with special focus on Kerberos). You should understand principles and protocols underlying dependable distributed computing including replication and consistency. You should be able to develop relatively complex distributed systems using Java RMI. You should be aware of and able to use added value software such as JMS, Jini and EJB. You should have an awareness of the new developments in the field of distributed systems in such areas as mobile code and agents.
Curriculum Design: Select Bibliography
back to top
[A] Tanenbaum, van Steen, "Distributed Systems: Principles and Paradigms", Prentice Hall, 2002.
ISBN 0-13-088893-1
[B] Coulouris, G., Dollimore, J., Kindberg, T., "Distributed Systems: Concepts and Design" (third edition), Addison-Wesley, 2001.
ISBN 0-201-61918-0