About Me
I am a principal lecturer in Computer Science at the University of Westminster with interests in distributed event-based systems and functional programming languages and type systems. I received my PhD on type-based static analysis of functional programming languages from University College London (UCL) in 1995. Before working as a lecturer, I really enjoyed working on software development and working as part of a development team. In my last two positions, I was team and technical lead. Now, in addition to my day job, I continue developing software by working on open source projects.
Contact me at: courtenage@gmail.com
Key Skills
- Programming languages: C++ (H, but a bit rusty!), Haskell (I), Python (I-), Javascript (I-), PHP (H)
- Databases: MySQL (I), PostgresSQL (I-)
- Web Frameworks: Django/Python (L+), Backbone/Javascript (I), Laravel/PHP (I), CodeIgniter/PHP (H)
(Key: H = High, I = Intermediate, L = Low)
Open Source Projects
A full list can be found on my github profile. My main OS project is QuantHas, which aims to use Haskell to re-implement the open source quantitative finance library QuantLib (written in C++).
Work Experience
03/2000 – to date Principal Lecturer at University of Westminster
I teach advanced topics in web development to UG students, and object-oriented software development to PG students, as well project supervision to UG and PG students. I am also course leader for the MSc Advanced Software Engineering degree. My research interests have covered distributed event-based systems (research funding from UK research council 2003-05) and typed-based static analysis of functional programming languages (see education below).
02/2000-03/2000 Senior software engineer and team leader at Reuters PLC
I was employed on a fixed 1-month freelance contract to lead a team at Reuters tasked with developing e-commerce proofs-of-concept for the various business areas within Reuters. This was part of a high profile initiative within the company. My role was, on the basis of my technical expertise and experience, to set up the technical infrastructure for the team, liasing with senior members of Reuters’ own research division, as well as advise the project manager on team recruitment and initiate development on a key proof-of-concept ecommerce prototype for the images division of Reuters.
08/1999 – 02/2000 Senior software developer (team leader) at Hyperlink
At Hyperlink, I was quickly promoted from a C++ developer role to being technical lead developer of the company’s most valuable project, a price comparison website they had developed for ASDA. This was a large and technically complex project, written using C++ and XML, and which used a cluster of load-balanced servers to perform real-time screen-scraping of partner ecommerce websites to deliver prices to customers for comparison. I led a team of 10-13 developers, and was responsible for key development tasks, producing the development plan, advising the project manager, and liasing and consulting with the external client on technical requirements for the site.
03/1997 – 08/1999 Senior software developer (freelance) at British Telecom PLC
At British Telecom, I worked as a freelance C++ software developer on their misson-critical network management system for the UK-wide optical data (SDH) network infrastructure. The SDH network carried VPNs for a number fo FTSE100 companies, as well as mobile data traffic for companies sucha s Vodafone, so the network management system was a key element of BT’s business plan. My role was as the senior developer in charge of developing the interface between the circuit planning and configuration GUI and the actual network elements. I was also responsible for the alarm monitoring subsystem. Both parts required careful attention to design, C++ development, performance optimisation and testing. My contract was renewed every six months for three years, reflecting my success within the team. I also took part in code reviews and mentoring of new recruits to the team.
12/1995 – 03/1997 Research assistant (post-doc) on EU-funded image database project at University of Westminster
Research assistant (post-doc) on EU-funded image database project. I was employed as a research assistant within the Dept. of Artificial Intelligence to work on an EU-funded project (Historia). The aim of the project was to develop from scratch in C++ an image database with a query-by-content facility. Given an image of a heraldic symbol, the database was able to analyse the image for its key features and produce a list of matching images.
01/1994 – 12/1995 Research assistant (post-doc) on functional database programming languages project at King’s College London
I worked as a research assistant at KCL to develop the type inference subsystem of a database system based on a prototype functional programming language. My task was to introduce object-oriented features into the language and type-checker. The interpreter and type-checker were written in C++ on unix. The project also required me to learn Yacc and Lex.
01/1985-07/1989 COBOL Programmer at Inland Revenue, Statistics Division
I was employed, after leaving university, as a COBOL programmer in the Statistics Division of the Inland Revenue. My section was involved in collection and processing of sampled Corporation Tax data from tax districts. After two years, I was promoted to head my own team, which involved managing two developers, liasing with Inland Revenue statisticians preparing forecasts to feed into Treasury budget projections, and designing data collection forms.
Education
PhD Computer Science University College London, 1991-95
Thesis topic: static analysis of functional programming languages using type inference. My thesis focussed on the problem of memory use in functional programming languages as a result of enforcing referential integrity. Many approaches have been proposed to analyse functional programs in order to find points at which data structures can be updated in place rather than copied in order to optimise memory use. One particular approach involved use of logic via a version of Hindley-Milner type inference augmented with numeric annotations that detailed, in essence, how many uses there were of a data structure. My work analysed the limitations of this approach, using a new computational semantics of the lambda calculus and its translation, under the Curry-Howard isomorphism, into the logic of types. Examiners: Prof. Chris Hankin (Imperial College London), Prof. Simon Thompson (University of Kent at Canterbury)
MSc Computer Science (Distinction) University College London, 1989-90
My interest in functional programming and program analysis began during my MSc course. As well as achieving high marks in subjects such as assembler and machine architecture, and compiler design, I also excelled at and was deeply interested in, functional programming. I was therefore very grateful to be able to do my MSc dissertation in static analysis of functional programs in what was, at the time, one of the UK’s leading centres of FP research. My dissertation involved hand-writing an LR parser in a functional programming language (Miranda) to parse and then analyse a simple lambda calculus-based FP language. On the basis of the excellent quality of my dissertation, I was given an EPSRC scholarship for PhD study.
BA Business Studies II.ii University of Greenwich, 1981-85
My honours subject was econometrics, the study of the mathematics and statistics behind economics and economic forecasting, while my dissertation was on the subject of the International Monetary Fund and Third-World country debt.