School of Electronic Engineering and Computer Science

Mr Francesco Soave


Room Number: Peter Landin, CS 419


Graphical User Interfaces (Undergraduate)

Computers are tools that people interact with and through for work and pleasure. Nowadays computers are ubiquitous and are fundamental to all sorts of devices such as washing machines, cars, mobile phones, airplanes, televisions, and musical instruments. However, it is still very difficult to design user interfaces which are simple, intuitive, and easy to use; you only have to look at the number of help books (eg the proliferation of books with titles such as 'the idiots guide to') to realise that designers often simply fail to make interfaces usable. This module introduces you to basic concepts of psychology and communication, which inform the way in which interfaces should be designed. The centre of the module is the hands-on coursework undertaken in small teams where you will design, prototype, and evaluate interactive user interfaces for a specific set of user requirements. The module comprises lectures, problem classes, and lab sessions.

Procedural Programming (Undergraduate)

This is an introductory module in computer programming using Java. You will learn the basic concepts of programming and learn to write and reason about simple programs. The main topics covered are: storing and manipulating data, control structures, methods and recursion, and algorithms for searching and sorting data. Classes include weekly lectures and lab sessions. You will be assessed by coursework throughout the term and by an end-of-term exam. Both will require you to demonstrate that you can write programs and understand theory.

Web Programming (Undergraduate)

Many computer systems are now accessed through a web interface. This module provides an in-depth and practical study of techniques for programming the web. Students will become proficient in a modern web development framework using PHP for sever programming and Javascript for client programming. The strengths and weaknesses of the framework are evaluated considering issues including authentication, security, session management, cross languages (PHP, SQL, Javascript) consistency and abstraction of the server-client interface. Different architecture styles are compared, including REST and AJAX and the use of JSON. Techniques for testing and for engineering web systems that behave robustly under high load are also covered.