How to make computers work together towards a common goal
Today many problems are too big or complex to be solved on just one computer. In this course we study how separate computers can work together towards common goals.There are many situations where it is useful to distribute information across different computers. For example to have many copies of a central database in order to cope with one copy going down. Another of the copies can then be accessed guaranteeing that the database is always on-line. Distributed systems come with their own problems: Ensuring that each replica of a database has the same information as the others. Deciding who accesses a resource first. Locating a computer offering a particular service. Constructing safe and reliable mobile code. Ensuring that every machine in a network is synchronized to the same time.
A fundamental concept in Distributed systems is middleware which frees the programmer from low level tasks in order to program a distributed system. This course will examine the concepts needed to construct middlewareThe course combines theoretical studies of algorithms used in distributed systems and a practical project in which the students construct a distributed database. Prerequisites: Computer networks (40p computer science and 10p mathematics) Goal: To give an understanding of the special issues in the design and running of distributed systems and how they can be addressed.