CO7097 Programming Secure and Distributed Systems


CO7097 Programming Secure and Distributed Systems

Credits: 15 Convenor: Dr. N. Ghani Semester: 1

Prerequisites: essential: MSc in Software Engineering for the e-Economy students are assumed ot have the required background. Students should consult the convenor in case of any doubt.
Assessment: Coursework: 40% Three hour exam in June: 60%
Lectures: 30 Problem Classes: none
Tutorials: none Private Study: 100
Labs: 10 Seminars: none
Project: none Other: none
Surgeries: 10 Total: 150

Subject Knowledge

Aims

This course will equip students with the knowledge required to build secure and distributed applications in Java. The course covers both the fundamental problems facing distributed applications such as concurrency and security and more practical material describing how these problems can be tackled and implemented in Java.

Learning Outcomes

Students will be able to: build simple distributed applications using Java's networking and remote method invocation capabilities; build concurrent distributed applications using multiple threads; build distributed applications with security enhancements using Java's security and cryptographic extensions.

Methods

Class sessions together with lecture slides, recommended textbook, worksheets, printed solutions, and some additional hand-outs and web support.

Assessment

Marked coursework, traditional written examination.

Subject Skills

Aims

To teach students how to methodically solve problems given the techniques available to them.

Learning Outcomes

Students will be able to: breakdown a problem to identify essential elements; apply prior knowledge of subject to analyse problems; design a plan to solve a problem; implement a planned solution and evaluate the implementation.

Methods

Class sessions together with worksheets.

Assessment

Marked coursework, traditional written examination.

Explanation of Pre-requisites

None.

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:

Resources

Lecture slides, web page, study guide, worksheets, handouts, lecture rooms with two OHPs, past examination papers.

Module Evaluation

Course questionnaires, course review.


[University Home] [Faculty of Science] [MCS Home] [CS Home] CS Home Page [University Index A-Z] [University Search] [University Help]

Author: N. Rahman, tel: +44 (0)116 252 2593
Last updated: 2004-09-29
MCS Web Maintainer
This document has been approved by the Head of Department.
© University of Leicester.