Applied Computer Vision

Artificial Cognitive Systems

C++ and Object-Oriented Programming

Computer Graphics

Cognitive Robotics

Computer Interfaces

Computer Systems - An Introduction

Data Structures and Algorithms for Engineers

Introduction to Probability

Operating Systems

Principles of Computer Programming

Project Management for PhD Students

Relational Database Systems

Software Development

Software Engineering

Scientific Theory in Informatics

A Brief Guide to Research Methods

A Brief Guide to the Software Development Lifecycle

Applied Computer Vision

Click here for the full course description, notes, and readings.

Artificial Cognitive Systems

Click here for the full course description, notes, and readings.

C++ and Object-Oriented Programming

Abstract Data Types (ADTs)

The syntax and semantics of C and C++

Object-oriented design and programming:

Classes, encapsulation, constructors, destructors, operator overloading, friend functions, deep and shallow copying, interface, implementation, and application files, derived classes, inheritance, virtual function, late binding, abstract classes, virtual base classes, static class members, polymorphism, and reusability

392 Slides, 450 kb:

Cognitive Robotics

Click here for the full course description, notes, and readings.

Computer Graphics

Graphics Architectures and Display Technologies.

3-D Modelling: linear algebra and affine transformations, homogeneous transformations, Euler angles and arbitrary axes of rotation.


Viewing Systems: geometry pipeline & camera model, projection transformations, viewport transformation.

Raster Methods: Line drawing algorithms, circle drawing algorithms, polygon scan conversion, Z buffering.

Illumination, ray tracing, radiosity, colour, animation, applications.

Computer Interfaces

Digital data communication standards - Serial communications: Devices, RS232 and RS422 protocols, handshaking signals, implementing an RS232 communications link on IBM PC.

Universal Serial Bus: USB standards. Types and elements of USB Transfers. Development procedure of USB application.

Parallel communications: The General Purpose Interface Bus (GPIB), GPIB signals and lines, handshaking and interface management. Implementing a GPIB link with IBM PC.

Digital Interfacing: Digital I/O ports, Interfacing external signals to digital I/O ports, optical isolation.

Analogue Interfacing: Revision of A/D and D/A conversion techniques, multiplexing, analogue I/O cards, data acquisition and control using the IBM-PC.

218 Slides, 4.9 Mb:

An Introduction to Computer Systems

Overview: Key Concepts, Components of a computer system, input, output, storgae, hardware, software, operating systems, applications.

Processor architecture and operation: CPU, Control Unit, ALU, Registers, Memory, Instruction cycle, Register Transfer Language.

Information Representation: Text, ASCII, Numbers, Binary, Hex, 2s complement.

Digital Design: Analogue and digital signals, Boolean algebra, Logic gates (AND, OR, NOT, XOR, NAND, NOR), DeMorgan's Laws, Simplification of Boolean expressions, Minterms, Karnaugh maps, Binary Arithmetic, half adder, full adder, 4 bit binary adder.

358 Slides, 652 kb:

Data Structures & Algorithms for Engineers

Click here for the full course description, notes, and readings.

Introduction to Probability

Probability: frequentist vs Bayesian approaches, joint probability, conditional probability, probability distributions (uniform, binomial, normal/Gaussian, Poisson), random variables, Bayes' theorem

Application to classification using naive Bayes' classifier

Application to discrete event simulation of queues using the Poisson distribution

95 Slides, 10.7Mb:

Operating Systems

Historical overview: Motivation for operating systems, historical perspective.

OS concepts, functions and structure: Basic functions and components of a general purpose operating system. OS concepts and system calls.

Processes and Threads: process model, process table, and process state diagram. Thread model.

Interprocess communication: race condition and critical regions, mutual exclusion with busy waiting, sleep and wakeup, semaphores, message-passing. Producer/consumer and read/write problems and solutions.

Process scheduling: goals of process scheduling, preemptive and non-preemptive scheduling. Scheduling in batch and interactive system. Round-robin, priority scheduling, starvation and aging.

Memory Management: functions of memory manager, basic management techniques, multiprogramming modeling and issues, swapping. Virtual memory with paging, address translation, page tables, multi-level tables, TLB, page replacement algorithms, page fault handling. Segmentation of memory.

Device management: I/O hardware, role of OS. I/O operations, polling, interrupt-driven, and DMA. I/O software goals and layers. Examples such as disks, clocks, and power management.

File management: file system characteristics; file naming, structure, types, access, attributes, and operations. Directories organization and operations. File system implementation, allocation methods.

230 Slides, 226 kb:

Principles of Computer Programming

Basic principles of computer programming in the C language: types, variables, values, assignment statements, I/O, logical operators, conditional statements, iteration, functions and parameter passing, arrays, structures, file I/O, pointers.

251 Slides, 1 Mb:

Project Management for PhD Students

Click here for the full course outline, notes, readings, and links.

Relational Database Systems

Introduction: file-based systems, database systems, DBMS, hardware, software, users; function of the Database Administrator and Data Administrator.

Data Models & Architecture: object-oriented logical models, record based logical models (hierarchical, network, relational), physical models, ANSI/SPARC architecture

Entity-Relationship Model: entities, relationships, mappings, keys, E-R diagrams.

Relational Model: data structure, data integrity, data manipulation, relational terminology, relational algebra.

Structured Query Language (SQL) : Create, Drop, Select, Insert, Update, data definition, keys, data manipulation, queries (the where, order and group by clauses), aggregate functions, nulls, self-joins, union, subqueries, domains, base tables and views, DDL.

Data Integrity: superkeys, candidate keys, foreign keys, referential integrity.

Normalisation: functional dependencies, 1st, 2nd and 3rd normal form.

Storage Access: buffer management, file organization.

Software Development

Marr's hierarchy of abstraction / levels of understanding framework

Programming paradigms

Software development lifecycle and process models
Procedural approaches
Object-oriented approaches

Software development vs. software engineering

170 Slides, 2.3Mb:

Software Engineering

Software process and project metrics: measures vs. metrics, process improvement, LOC metrics, FP metrics, metrics for quality (correctness, maintainability, integrity, usability, defect removal efficiency).

Software project planning: resources, estimation, decomposition, COCOMO estimation model. Project scheduling and tracking: human resources and effort, task definition, task networks, schedules.

Software quality assurance (SQA): quality attributes, software reviews, statistical quality assurance, software quality standards, McCall's quality factors, FURPS, metrics for analysis, design, implementation, testing, maintenance.

Object-oriented analysis, design, and testing: OOD concepts, analysis and design issues, classes, inheritance, and polymorphism, testing strategies, metrics.

Social, ethical and professional issues: code of ethics, copyright & security.

289 Slides, 560 kb: 89 Pages, 557 kb:

Project Manual for Final Year Students

The Importance of Final Year Projects

Choosing Your Project.

Planning, Executing, and Managing Your Project: Problem Identification. Requirements Elicitation. Problem Modelling. Systems Analysis and Specification. System Design. Module Implementation and System Integration. Testing and Evaluation. Documentation. Good Engineering Practice and Safety Regulations. Back to the Beginning. Managing Your Project.

Documenting Your Project: Project Specification. Interim Progress Report. Final Report. Presentations. A Very Short Guide to Good Writing.

Project Assessment and Marking.

25 Pages, 264 kb:

Scientific Theory in Informatics

Click here for the full course outline, notes, readings, and links.

A Brief Guide to Research Methods

Getting Started

Moving Along


Writing: Good Writing Discipline, Good Writing Style

Writing a Literature Survey

Writing Scientific Papers

Ph.D. and M.Sc. Dissertations

Looking Forward


Further Reading

Appendix I - Some Rules of English Usage

Appendix II - Typical Structure of a Thesis

Booklet, 324 kb: ; Slides, 1.6 Mb:

A Brief Guide to the Software Development Lifecycle


The Software Development Lifecycle

Problem Identification

Requirements Elicitation

Problem Modelling

Systems Analysis and Specification

System Design

Module Implementation and System Integration



13 Pages, 111 kb: