Algorithms and Data Structures

Applied Computer Vision

Artificial Cognitive Systems

Business Operations

C++ and Object-Oriented Programming

Computer Graphics

Computer Interfaces

Computer Systems - An Introduction

Operating Systems

Principles of Computer Programming

Relational Database Systems

A Short Introduction to Robotics and AI

Software Engineering

Project Management for PhD Students

Project Manual for Final Year Students

Scientific Theory in Informatics

A Brief Guide to Writing a Thesis

A Short Guide to the System Development Lifecycle

Algorithms & Data Structures

Complexity of algorithms: Performance of algorithms, Time and space tradeoff, Worst case and average case performance, Big O notation, Recurrence relationships, Analysis of complexity of iterative and recursive algorithms, Tractable and intractable algorithmic complexity.

Simple searching algorithms: Linear search, Binary search.

Simple sorting algorithms: Bubblesort, Quicksort.

Abstract Data Types (ADTs)

Lists, stacks, and queues: ADT specification, Array and linked-list implementations.

Trees: Binary trees, Binary search trees, Depth-first and breadth-first traversals, Applications of trees (e.g. Huffman coding), Height-balanced trees (e.g. AVL Trees, Red-Black Trees).

Priority queues, heaps, graphs, and sets: Shortest-path algorithms (e.g. Dijkstra's and Floyd's algorithms), Minimum spanning tree (e.g. Prim's and Kruskal's algorithms), Topological sort.

Combinatorics: Ways of counting, permutations, combinations.

Algorithmic strategies: Brute-force, Greedy, Divide-and-conquer, Backtracking, Branch-and-bound.

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

Applied Computer Vision

Overview of human and computer vision.

Optics, sensors, image formation, image acquisition and image representation.

Image processing: point & neighbourhood operations, image filtering, convolution, Fourier transform.

Image processing: geometric operations, morphological operations.

Segmentation: region-based approaches, connected component analysis, edge detection.

Segmentation: Hough transform - line, circle, and generalized transform; extension to codeword features.

Segmentation: colour-based approaches - colour histogram matching and back-projection, k-means clustering.

Object detection and recognition in 2D; Template matching, normalized cross-correlation, chamfer matching.

Statistical pattern recognition; 2D features.

Features: interest point operators: Harris and Difference of Gaussian; gradient orientation histogram, SIFT descriptor.

3D vision: Homogeneous coordinates and transformations. Perspective transformation. Camera model and inverse perspective transformation.

Stereo vision. Epipolar geometry.

Structured light & RGB-D cameras.

Optical flow.

Visual attention. Saliency. Bottom-up and top-down attention.

Clustering, grouping, and segmentation revisited. Gestalt principles. Clustering algorithms.

Object recognition in 2D and 3D. Object detection, object recognition, object categorisation. Affordances.

Haar features. Histogram of Oriented Gradients (HOG) feature descriptor.

Point cloud methods.

Computer vision and machine learning

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

Artificial Cognitive Systems

The nature of cognition: models, definitions, autonomy, Marr's levels of abstraction.

Paradigms of cognitive science: cognitivism and artificial intelligence, emergent systems, connectionism, dynamical systems, enaction.

Cognitive architectures: cognitivist, emergent, and hybrid architectures, desirable characteristics, example cognitive architectures.

Autonomy: robotic, biological, behavioural, & constitutive autonomy, homeostasis, allostasis, self-organization and emergence, autopoiesis, self-maintenance, continuous reciprocal causation, autonomic systems.

Embodiment: the three hypotheses, the mutual dependence of perception and action, off-line embodied cognition, situated, embedded, grounded, extended, and distributed cognition.

Development and learning: motives, imitation, supervised, unsupervised, and reinforcement learning, phylogeny and ontogeny, developmental psychology.

Memory and prospection: short-term, long-term, declarative, procedural, semantic, episodic, symbolic, sub-symbolic, modal, amodal, & associative memory, internal simulation, prospection, mental imagery, functional imagination, forgetting.

Knowledge and representation: memory and knowledge, representation, anti-representation, sharing knowledge, radical constructivism, symbol grounding, co-joint representation, Theory of Event Coding, learning from demonstration.

Social cognition: interaction, intentionality, theory of mind, instrumental helping, collaboration, joint action, shared intention, shared goals, joint attention, development and interaction dynamics.

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

Business Operations (written by Keelin Vernon)

Operations: A review of different types of operations, Manufacturing strategy, Production planning and inventory control, Just-In-Time, Quality systems

Marketing and Service: Introduction to marketing, Marketing management process, Service

Firm Infrastructure: Firm infrastructure, The management process, Organizational theory and design, Organizational structure, Human resource management

Organizational Aspects: Motivation and leadership, Communications, Culture, Innovation and Entrepreneurship, Strategic management, Change management

298 Slides, 450 kb:

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:

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:

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

The computer model and representations. Elementary C programming example.

Software development environment and tools: UNIX, CDE, textedit, gcc, and other UNIX commands; more elementary C programming

C programming examples (input, output, types, if-else construct)

Structured problems solving, pseudo-code, program design, and elementary programming (loops, assignments, types)

The C language: types, variables, values, assignment statements, I/O, logical operators, conditional statements, iteration, functions and parameter passing, arrays, structures, file I/O

The software development process and software life-cycle

270 Slides, 1 Mb:

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.

A Short Introduction to Robotics and AI

Nature of robotics

Types of robots: manipulators, mobile robots, entertainment, education, AI robotics

Robotic applications: Parts handling, Assembly, Painting, Surveillance, Security, Home help.

Principal engineering issues: Mechanical Construction, Control, Manipulation, Task Specification, Sensing, Path planning, Interaction, Reasoning, Autonomy and Adaptive Behaviour

Principal AI issues

The future of robotics

79 Slides, 2 Mb:

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 Management for PhD Students

Principles of project management

Project lifecycle

Planning and setting goals

Task definition and scheduling

Critical path analysis

Optimal work practices and time management

Risk assessment and mitigation

Project monitoring

Project leadership

Research infrastructure and administration

Academic leadership and strategic management

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

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

Overview & Introduction to Informatics

Modelling Methodology

Complexity Theory

Automata Theory and Computability Theory

Discrete Probability

Algorithmic Strategies

Paradigms of Cognitive Science

Cognitive Architectures

Decision Theory

Embodied and Social Cognition

Organizational Theory

Management Theory



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

A Brief Guide to Writing a Thesis

Getting Started

Moving Along


Writing: Good Writing Discipline, Good Writing Style

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 Short Guide to the System 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: