School of Electronic Engineering and Computer Science

Mr Ercüment ilhan


Room Number: Peter Landin, CS 335


Artificial Intelligence in Games (Postgraduate)

This module covers a range of Artificial Intelligence techniques employed in games, and teaches how games are and can be used for research in Artificial Intelligence. This module has a strong programming component. The module explores algorithms for creating agents that play classical board games (such as chess or checkers) and real-time games (Mario or PacMan), including single agents able to play multiple games. The module gives an overview of multiple techniques, such as Monte Carlo Tree Search, Evolutionary Computation, Deep and Machine Learning applied to games.

Compilers (Undergraduate)

In this module, the students will learn how modern compilers work. A compiler is a tool for translating computer programs written in a higher-level programming language (such as Java or C) to a lower-level language or machine code. Major components of a compiler are lexical and syntactic analysis, semantic analysis, code generation and optimization. The module will provide an introduction to a range of concepts in programming language design and implementation, including runtime organization, memory management, assembler, linker, loader, static vs dynamic types and scopes, compilers vs interpreters, just-in-time compilation, bootstrapping, data-flow analysis, and link-time optimizations. The coursework includes 3-5 programming assignments, each of which builds a different component of the compiler. The students are encouraged to work in small teams. At the end of the semester, each team will have implemented a working (albeit simple) compiler from basic blocks and templates provided. Most students find it very rewarding experience.

Computer Programming (Postgraduate)

This module provides an introduction to the principles of programming in the context of designing and constructing complete programs. Programming techniques will be introduced and practical work will form an integral part of the course and of the assessment of students. The first half of the course will concentrate on program structures. The second half will cover representation of abstract types such as lists and trees using the types such as records and arrays provided in imperative programming languages.

Machine Learning for Visual Data Analysis (Postgraduate)

The module will cover the following topics: The Discrete Fourier Transform and the frequency content of images. The design and use of Gabor filters. Principal Component Analysis for denoising and compression. Unsupervised classification via feature space clustering. Texture segmentation with Gabor filters.

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.