Distributed Systems (6CC505)
This module is intended to provide an understanding of the technical issues involved in the design of modern distributed systems. Besides conveying the central principles involved in designing distributed systems, this module also aims to present some of the major current paradigms.
A distributed system is broadly categorised as a collection or network of loosely coupled, autonomous computers that can communicate with each other and execute logically separate computations, though these may be related to concurrent computations on other nodes.
Distributed systems have become pervasive—many applications now require the cooperation of two or more computers–yet the design and implementation of such systems remain challenging and complex tasks. Difficulties arise from the concurrency of components, the lack of a global clock and the possibility of independent failure of components. Moreover designs must aim to provide inter-operability, transparency and autonomy. The emphasis of this module is on gaining understanding of the principles and concepts that are used to design distributed systems and experience of software platforms which underpin their development.
Software Engineering (5CC516)
The module will explore some of the fundamentals of software engineering. Topics will include: an introduction to software engineering: the software life cycle and methodologies for software development. The module is particularly suitable for students who have little previous background in Computer Science.