![]() | Department of Mathematics & Computer Science | |||
![]() |
Credits: 20 | Convenor: Dr. N. Ghani | Semester: 2 |
Prerequisites: | essential: CO1003,CO1004,CO1011 | desirable: CO2006,CO3007 |
Assessment: | Coursework: 40% | Three hour exam in June: 60% |
Lectures: | 36 | Problem Classes: | none |
Tutorials: | none | Private Study: | 78 |
Labs: | 24 | Seminars: | none |
Project: | none | Other: | none |
Surgeries: | 12 | Total: | 150 |
Subject Skills
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 CO1003 and CO1004, will be essential. A basic
grounding in discrete mathematics will assumed during the lectures
on security.
Although not essential, software design as found in CO2006 will aid
the design of distributed systems while the close relationship
between distributed computing and concurrency means that knowledge
of CO3007 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:
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 communicate with another component in such away that malicious eavesdroppers cannot interfere. 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 and security as well as practical skills of immediate use.
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. Symmetric and antisymmetric ciphers, eg DES, IDEA, RSA.
Java Support: Java security, Java Cryptography
Architecture (JCA), Java Cryptography Extension (JCE), Java remote
method invocation (RMI).
Reading list
Essential:
J. Farley, Java Distributed Computing, O'Reilly. 1998..
M. Boger, Java in Distributed Systems, Wiley. 2001..
J. Knudsen, Java Cryptography, O'Reilly. 1998..
Recommended:
S. Oaks, Java Security, O'Reilly. 1999..
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 Principles and Patterns, Addison-Wesley. 1997..
Background:
Author: N. Rahman, tel: +44 (0)116 252 3902Resources
Lecture slides, web page, study guide, worksheets, handouts, lecture
rooms with two OHPs, past examination papers.
Module Evaluation
Course questionnaires, course review.
Next: MSc
Up: Year 3
Previous: CO3096 Compression Methods for Multimedia
Last updated: 2003-09-23
MCS Web Maintainer
This document has been approved by the Head of Department.
© University of Leicester.