Lectures; tutorials; seminars; laboratory sessions; optional career planning workshops. Assessed through: coursework; written examinations; final project report.
To describe some techniques employed in the characterisation of agents and multi-agent systems. To provide a critical introduction to theories and methods regarding multi-agent computer systems and their component agents.
On completion of the module, you will be expected to have acquired: A thorough, systematic understanding of key features of current theories and methods regarding multi-agent systems and their component agents; A sound appreciation of the conceptual issues involved in the characterisation of agents and their abilities; Knowledge of some of the main techniques employed in the formal characterisation of agents and multi-agent systems; An ability to critically evaluate current work in this field, and to evaluate the principal theories and methods.
Topics will be selected from:
Intelligent agents and their design
Knowledge in multi-agent systems
The Belief-Desire-Intention model of rational agents
Reactive and hybrid agent architectures
Agent Communication: KQML, FIPA
Auctions and Negotiations Game Theory Argumentation based Reasoning and Communication
Agent-based methodologies Applications
This module will cover different approaches for building internet applications and the choice of design techniques and technologies involved from a software engineering perspective, considering issues of efficiency, modularity and maintainability.
You will gain the ability to design and implement internet-based applications in a modular manner, using appropriate languages and techniques. You will also gain the ability to specify and design medium-sized enterprise information systems using appropriate languages and techniques.
Model-driven architecture and application to internet applications
Server-side processing techniques: JSP, Servlets, database interfaces, sessions, connection pools
Modularity and maintainability of internet applications
Java EE architecture and patterns
To introduce both theoretical and practical aspects of cryptography, authentication and information security.
On successful completion of this module, you should be able to understand the relevant mathematical techniques associated with cryptography; understand the principles of cryptographic techniques and perform implementations of selected algorithms in this area; appreciate the application of security techniques in solving real-life security problems in practical systems.
You should note that this module contains several advanced mathematical techniques. For students having a reasonable mathematical background, it should not be a problem. Explanations are given during the lectures/tutorials and examples are studied in details. Nevertheless, an in-depth understanding of these techniques is required for the examination and personal work has to be anticipated.
Basic terminology and concepts:
Goals of cryptography, terminology and notation players; Basic cryptographic functions
Number theory preliminaries:
Congruent modulo n, equivalent class modulo n; Integer modulo n (Zn):
Relatively prime; Euler‟s theorem; Fermat‟s little theorem:
EEA (Extended Euclidean Algorithm)
CRT (Chinese Remainder Theorem)
Block ciphers (substitution, transposition, product); Stream ciphers; Modes of operation (ECB, CBC, CFB, OFB)
Block cipher: DES (Data Encryption Standard), AES (Advanced Encryption Standard)
Public-key: RSA (Rivest-Shamir-Adelman), El gamal
One-way hash function: SHA and MD5 (Message Digest 5)
Symmetric and asymmetric techniques (Diffie-Hellman, Needham-Schroeder, Otway-Rees)
Public-key encryption, basic and advanced Kerberos protocols
Authentication and identification:
Concepts; Fiat-Shamir and Feige-Fiat-Shamir protocols; Zero-knowledge identification protocol
Classification; Digital signature schemes: RSA; El-Gamal; DSA (Digital Signature Algorithm) and DSS (Digital Signature Standard)
Password systems: number of acceptable passwords for a given password policy, exhaustive search
Introduction to viruses, secure communication, social engineering (phishing), firewalls, buffer overflow, denial of services
The aims of this module are to study methods for handling and compressing various kinds of data, such as text, images, audio and video data and understand data compression techniques for multimedia and other applications, in particular to the Internet.
On successfully completing this module you should have depth and systematic understanding of the principles of data compression, be able to apply different compression methods for text, image, audio, and video data, and extend their applications in different aspects of computing.
Raw multimedia data representation
Transmission medium characteristics
Adaptive and non-adaptive methods
Lossy and lossless compression
Theoretical limits of compressibility
Entropy coders: Huffman coding, arithmetic coding
Dictionary coding methods: LZ77, LZW
Other text compression methods: PPM
Standard text compression utilities: compress, zip
Monochrome and grayscale compression
Image formats: PCX, TIFF, BMP, DIB, GIF, EPS, WMF, TGA, CGM, HPGL, JPEG and PNG
JPEG compression (using Discrete Cosine Transform)
JPEG 2000 (using wavelets)
Frame-by-frame compression: M-JPEG
Inter-frame compression: MPEG
Video formats: M-JPEG, MPEG, AVI and MOV
Speech coding: ADPCM, LPC
CD-quality audio: MPEG layer 3
Audio formats: WAV, VOC, SND and MIDI
Computer system applications
Communication network applications
Broadcast media applications
Consumer electronics applications
Managing compressed data:
Self-identifying compressed data
Error-proofing compression algorithms
Interaction between compression and other functions
Interaction between compression algorithms
Operating on compressed data
Archiving compressed data
Hypermedia and interactive applications, MHEG
Interactive virtual reality, VRML
To explore the practice of software architecting as applied to the development of enterprise systems. To learn about software architecture, architecture patterns, frameworks, design patterns, pattern languages, layers of change, the architecting process and the practical process of software design and implementation. Ideas are put into practical perspective through an introduction to the UML2 superstructure, enterprise component middleware.
To be able to function as a software architect; to have an advanced knowledge of the issues, techniques and processes involved in architecture design; ability to design .NET-based enterprise software systems; expert proficiency in the UML2 superstructure to design architectures; to be able to work with and design metamodels and model transformations.
Components and connectors in the UML2 superstructure Architectural styles Domain-specific metamodels and case studies A metamodel for enterprise components
Semantics through the OCL
Metamodelling with the Meta Object Facility Model driven engineering and model-driven architecture
To provide an overall understanding of the communication model used on the Internet. To provide an in-depth understanding of the main underlying software components of the Internet. To provide an overview of the main languages used on the Internet. To provide an understanding of security threats to Internet application and the main technologies used to tackle them. To give you an understanding of the motivations behind internet technologies, suitable for you to evaluate current and future options.
On successfully completing this module you will:
Development of Knowledge and Understanding
Have a comprehensive and detailed knowledge of the computational model underlying the Internet and recent developments in this area.
Know some of the languages used to display, represent, and manipulate information on the Internet.
Understand the security mechanisms used to protect Internet applications from unauthorised use.
Understand how protocols and languages combine to solve communication problems.
Be aware of the issues concerning privacy of personal information on the internet, and be able to apply techniques to protect privacy in any Internet applications you develop.
Be able to analyse Internet-related problems using appropriate techniques and evaluating alternatives.
Be able to design solutions to such problems and evaluate the success of those solutions, possibly developing novel approaches.
Apply your knowledge of the Internet and its languages to these solutions.
Know how to access and evaluate different sources of information regarding Internet standards, and technology standards more generally.
Have experience of solving technical, Internet-related, problems, and arguing for solutions to them.
Be able to apply your knowledge of languages to meet appropriate software requirements.
Introduction to the Internet
Historical perspective and current context
Architecture of the Internet
Internet reference model
IPv4 and IPv6
Connection handling and flow control
HTTP and other application layer protocols
Web languages fundamentals
XML validation with schemas
Web service languages
Security on the Internet
Public and private key encryption
Introduction to Web models of information