Teaching
DCS Teaching
Compilers 4
In the academic year 2009-2010 I will be teaching Compilers 4.
Rationale:
This module is intended for students who understand compiler structure and basic compiling algorithms but wish to learn how to engineer production-quality compilers. Such compilers generally employ sophisticated techniques for register allocation and assignment, instruction scheduling, and local and global code optimisation. Many compiler components are constructed with the aid of tools. The module will introduce these techniques and tools, and the principles underlying them. It will include study of a real compiler, and practical work based on that.
Aims:
This module aims to elucidate the principles, techniques, and tools used for engineering production-quality compilers.
Objectives:
By the end of the module, the student should:
- understand the principles of finite-state automata ;
- be able to use scanner and parser generation tools;
- understand basic algorithms for generating real machine code, including register allocation, register assignment, and instruction scheduling;
- understand the principles of vectorisation;
- be familiar with the code optimisations commonly used in compilers, and understand how to use data flow information to implement selected optimisations.
iSLI Teaching
In the academic year 2009-2010 I will be teaching Embedded Operating Systems at the Institute for System Level Integration (iSLI). For the past 4 years I taught two other Embedded Software courses there. These modules are part of the curriculum for the MSc in System Level Integration.
Embedded Operating Systems
This course introduces the concepts of operating systems and embedded systems and uses the RTEMS real-time operating system to demonstrate the fundamental elements of real-time embedded operating systems and apply RTOS techniques in a practical manner.
Sensor Networks
This course is very hands-on and teaches the student how to use TinyOS on MoteIV's TMote Sky "motes". The course covers basic sensor data acquisition, wireless networking, TinyDB and use of the simulator TOSSIM as well as touching upon more advanced topics such as security and the Mate virtual machine.
Networked Applications
This course introduces network programming in C using the POSIX socket library. The student will learn techniques for programming TCP/IP client and server applications, including multiplexing and threading. The course also covers application protocols such as SMTP and HTTP.
