![[The University of Leicester]](http://www.le.ac.uk/corporateid/departmentresource/000066/unilogo.gif) | Department of Mathematics & Computer Science |
 |
Next: Year 4
Up: Year 3
Previous: MC396 Compression Methods for Multimedia
MC397 Programming Secure and Distributed Systems
Credits: 20 |
Convenor: N Ghani |
Semester: 2 |
Prerequisites: |
essential: MC103,MC104,MC111 |
desirable: MC115,MC206,MC307 |
Assessment: |
Continual assessment: 40% |
Three hour exam in May/June: 60% |
Lectures: |
36 |
Problem Classes: |
none |
Tutorials: |
none |
Private Study: |
90 |
Labs: |
12 |
Seminars: |
none |
Project: |
none |
Other: |
none |
Surgeries: |
12 |
Total: |
150 |
Explanation of Pre-requisites
A significant aspect of the module will be the reinforcement of
material delivered in lectures with practicals involving students
implementing distributed systems in Java. Hence a basic knowledge of
Java, as provided in MC103 and MC104, will be essential. A basic
grounding in discrete mathematics will assumed during the lectures
on security.
Although not essential, students will benefit from prior knowledge
of SQL as obtained from MC115 when integrating databases into
distributed systems. Similarly, software design as found in MC206
will aid the design of distributed systems while the close
relationship between distributed computing and concurrency means
that knowledge of MC307 will also be of benefit.
Course Description
The internet has caused a revolution in the way we use and think
about computers. One of the key technologies underlying the internet
is distributed computing which allows individual computing
agents to be located, or distributed, on a network of
computers but nevertheless work together on cooperative tasks.
There are many motivations for distributing applications including:
- Inherent Parallelism: In distributed systems, many
computers can work together at the solution of a problem
simultaneously. Although this can be done using parallel
computers, it is often cheaper to distribute applications over
cheaper networks of PCs.
- Inherent Distribution: In many applications,
distribution arises naturally. For example, in a traffic control
system, data may be gathered at different measuring facilities,
analysed at a central location and, depending upon the results of
this analysis, commands sent back to improve the flow of traffic.
- Scalability: Distributed systems are easier to scale
than centralised systems. For example, increasing computing power
of a centralised system to cope with increasing demand is usually
much more expensive than increasing the number of computer nodes
in a distributed system.
- Data Access: It is often difficult and expensive to move
large data sets between different locations. Instead, it can be
more efficient to store data in locally and allow other users to
remote access using a data server.
- Resource Sharing: In distributed systems, expensive
resources such as printers can be used by devices distributed
across a network. Again, this sharing can produce significant
cost savings.
The development and programming of distributed systems is
considerably more complex than that of local applications.
Distributed applications usually run on spatially separated
computers, consist of different components which need to communicate
with each other and must ensure a consistent management of shared
resources. In addition, of increasing importance is the issue of
security in distributed systems, eg how can a component of a system
detect security breaches elsewhere in the system. This course will
introduce these and other fundamental problems in distributed
computing, explain some of the solutions available and cover their
implementation in the Java programming language. Students will thus
gain insight into distributed computing as well as practical skills
of immediate use.
Aims
The aim of this course is to equip students with the knowledge
required to build secure and distributed applications in Java. This
will involve theoretical material concerning the fundamental
problems, and possible solutions, that distributed applications face
with particular attention being paid to the issues arising from
concurrency and security. In addition, this will be complemented and
reinforced by more practical material describing how these ideas are
implemented in Java.
Objectives
- To build simple distributed applications using Java's
networking and remote method invocation capabilities.
- To build concurrent distributed applications using multiple threads.
- To build distributed applications with security enhancements
using Java's security and cryptographic extensions.
Transferable Skills
- To understand the limitations of the basic model of computation
as provided in elementary programming courses and the consequent
development of more sophisticated programming paradigms such as
distributed, concurrent, and secure programming.
- To use the theoretical perspectives offered by this module to
implement distributed applications in other programming languages.
- To further develop design and implementational skills as taught
during the degree.
- Students who master the material offered will be prepared not
only to write distributed applications or to read the research
literature, but also to evaluate systems, algorithms and languages
from a broad perspective.
Syllabus
- Distributed Programming: Networking in Java using
sockets and streams, multi-threaded computation, liveness, safety,
deadlock, livelock, mutual exclusion, communication protocols,
semaphores and monitors, synchronous and asynchronous message
passing in Java, client-server architectures.
- Security: Security issues and concerns. Key management
including generation, translation, agreement protocols and
management paradigms. Authentication including message digests,
MAC's, signatures, certificates. Symmeteric and antisymmetric
ciphers, eg DES, IDEA, RSA.
- Java Support: Java security, Java Cryptography
Architecture (JCA), Java Cryptography Extension (JCE), Database
integration using Java Database Connectivity (JDBC) and SQL, Java
remote method invocation (RMI).
Reading list
Essential:
J. Farley,
Java Distributed Computing,
O'Reilly. 1998..
S. Hartley,
Concurrent Programming, The Java Programming Language,
OUP. 1998..
D. Lea,
Concurrent Programming in Java: Design Priciples and
Patterns,
Addison-Wesley. 1997..
Recommended:
S. Oaks,
Java Security,
O'Reilly. 1999..
M. Boger,
Java in Distributed Systems,
Wiley. 2001..
Background:
Details of Assessment
The coursework for the continual assessment consists of five
worksheets containing problems that test the ability to understand,
analyse and write distributed applications, as well as the
conceptual aspects of the course.
The written May/June examination contains six questions, and
candidates can obtain full marks from four questions.
Next: Year 4
Up: Year 3
Previous: MC396 Compression Methods for Multimedia
Author: S. J. Ambler, tel: +44 (0)116 252 3884
Last updated: 2001-09-20
MCS Web Maintainer
This document has been approved by the Head of Department.
© University of Leicester.