Block Python

This project would produce a development environment for beginners which uses a block-based editing environment using drag-and-drop to build Python programs. There are a number of open research problems in building such environments that might be interesting to someone, particularly to do with how to manage the complexity of scoped variables and rich libraries. We … Read more

Frame based Python editing

Frame based editing is an interesting approach to program editing that seeks to support programmers (especially beginners) in program editing by offering a form of syntax-directed editing that lets users write code by essentially filling in the blanks (“slots”) in templates (“frames”) that ensure programs are always syntactically correct. The syntax-directed element allows the system … Read more

Technology and Learning

I am happy to supervise projects in the general area of technology and learning. My particular focus includes: eLearning (general) Online learning Including integrating online and face-to-face Blended learning Learning analytics Virtual worlds for learning Outside of these areas I’m happy to discuss any ideas in the general area of technology and education. Tim

Lambda-calculus animated visualiser

An implementation (likely in Haskell or Elm) of David Keenan’s graphical animated Lambda Calculus notation, with a reduction engine, as described in his paper “To Dissect A Mockingbird“. Here is an example from that paper of how that could look: In his paper Keenan suggests that an animation engine for this trace would be useful. … Read more

Functional programming for Creative Arts

There are a number of Haskell embedded DSL’s for creative coding of music and animation, for example TidalCycles, LSystems, a port of the processing language, and so on. There is a lot of scope to improve these languages and make them available to a wider range of users. A project in this area would require some knowledge of Haskell … Read more