meBigHoleAdjustedI am an Emeritus Reader in the Department of Computing, having retired in 2025. Among many other activities I was the Department’s Director of Undergraduate Studies for over 15 years.

My main research was in performance engineering, with a particular emphasis on performance modelling using a combination of analytical methods and stochastic simulation. I taught stochastic modelling for over 35 years. I still dabble.

I also spent 25 years teaching Haskell programming to first-year undergraduates, which was a complete joy, and co-authored a number of research papers relating to functional programming (type systems and run-time memory management in particular). I remain an active user of the Haskell language.

I have devoted much of my spare time over the last few years to the development of Morse, a cryptic crossword solver built entirely in Haskell. The main objective is to explain the logic of a clue, in particular the wordplay, instead of merely guessing the answer. It’s a non-trivial problem! Here’s some sample Morse output:

An ogre is squashing me!”, the little prince yelled (8)    [Guardian #26494]

yelled -> SHRIEKED(SHRIEK(insert[is squashing] I=me into SHREK=an ogre) + ED(abbreviation[the little] EDWARD=prince))

Rough loo paper’s leaving one’s rear tender (8)    [Azed slip No 2,378]

tender -> PROPOSAL(subtract[leaving] E(last letters[rear] onE=one’s) from EPROPOSAL(anagram[rough] LOO PAPERS(LOO + PAPERS=paper’s)))

Brought up breakfast cereal, bypassing the beginning of stomach and small intestine (5)   [Guardian #28060]

small intestine ->[and] ILEUM(reversal[brought up] MUELI(subtract[bypassing] S(first letters[the beginning of] Stomach) from MUESLI=breakfast cereal))


								
Delicious Twitter Digg this StumbleUpon Facebook