St Andrews HCI Research Group


Jan 2020

Seminar: Blocks-based programming for fun and profit

Event Details

  • When: Friday 06 March 2020, 2-3pm

  • Where: JCB:1.33b – Teaching Laboratory


Visual programming environments have long been applied in an educational context for encouraging uptake of computer science, with a more recent focus on blocks-based programming as a means to teach computational thinking concepts.  Today, students in primary, secondary and even tertiary education are learning to code through blocks-based environments like Scratch and App Inventor, and studies in these settings have shown that they ease the transition to ‘real’ programming in high-level languages such as Java and Python.  My question is, do we need to bother with that transition?  Can we accomplish more with blocks than just programming for its own sake?  More ‘serious’ visual programming environments like LabVIEW for engineers, and Blueprints embedded in the Unreal Engine for game developers are testament to visual programming producing more than just toy programs, so how far could blocks go?  In this talk, I’ll give an overview of blocks-based programming and its applications outside education, including its role in my PhD project and current postdoctoral research in allowing end-users with no programming experience to tailor spoken dialog systems.


Daniel is a postdoctoral research fellow working in the HCI group in UCD on the B-SPOKE project with Dr Ben Cowan.  The goal of this project is to open up the development of Spoken Dialog Systems to the end-user without programming experience, through techniques from the field of end-user development.  Prior to this, Daniel completed his PhD at the University of St Andrews, focusing on the adoption of an end-user development tool for psychology researchers to create their own data collection apps.  Daniel is especially interested in applying blocks-based programming (the visual approach to learning code used in well-known tools like Scratch) to domain-specific applications, allowing end-users to customise their software experiences without writing a single line of code.