Development environments for education

We are developing a web‐based system for Python programming (called “Pytch”) that targets beginning programmers (see the screenshot below). Because the system is web based a lot of the work will involve JavaScript, TypeScript and React but it’s not necessary to have experience of these at the outset.

We have a number of ideas for developing this system. I am happy to discuss some of these ideas with an interested student and selecting a suitable project area based on that. As examples of the kind of ideas we are discussing:

  • Evaluating the effectiveness of Pytch in the classroom (developing user trials, gathering data, and analysing it). This would require you to be quite organised to get the work done within the time bound of such a project (we have REC approval to do this, but if you are developing your own trials then you would need to get fresh approval for them which would require up-front work).
  • Integration of test‐driven development ideas into the framework (both for user testing and potentially for a form of automated assessment),
  • Integrating external sensors and actuators, probably via web-usb (we’re thinking of small SBC’s and microcontrollers that could be used to provide input or physical computing interfaces for users).
  • Improvement of the editing experience with syntax‐directed or syntax‐aware editors that would help learners build programs without having to wrestle with basic text editing (there were some projects on this last year which could form a basis for more work),
    • A related project to this would be to investigate either how useful some of our tutorial presentation ideas are, or to look at how the auto-detection of context for tutorial instructions could work (e.g. automatically determining that the user should add specific lines of code to a certain method).
  • Checkpoints/simplified version control for allowing learners to manage the development of their program (there are some interesting papers on this that could be the basis of some work)
  • Interactive debugging; there was a previous project that produced a proof-of-concept debugger for Pytch but there is more work needed
  • Supports for remote/online teaching, for example a central dashboard for a class where a tutor can observe students progress, perhaps contribute comments or even edit their code (a previous M.Sc. has some design guidelines for this)
  • Support for specific learning activities such as Parsons Problems (a kind of interactive drag-and-drop arrangement puzzle), or interactive quizzes. There was a previous project that explored Parsons problems but there is more to do before this could be used ‘live’.