Introducing a comprehensive set of playful activities
to teach software engineering concepts

Playing with LEGO is appealing to many people of all age ranges and educational or social backgrounds. Clicking bricks together to form more complex objects requires neither artistic talent, nor technical knowledge. LEGO is a greatly underused conceptual tool that can help illustrate many aspects of software development.

Why do we use LEGO to teach software engineering?


Building with LEGO supports playing out scenarios and storytelling, which is key to many Software Engineering learning activities centered around case studies


Connecting LEGO bricks together and following certain rules about how they can and cannot be interconnected is not unlike writing program code and using software interfaces


The process of constructing one or more LEGO models can mimic a real-world software process that consists of many inter-related activities


Building with LEGO is not unlike real-world software projects, in which requirements can change, original designs can fail, and new properties can emerge

Available learning activities

Introduction to Scrum

A short game to introduce key concepts of scrum and compare/contrast plan-driven vs. iterative development

Clear Communication

Waterfall process is deconstructed to illustrate the importance of clear communication

LEGO Serious Play Skills Building

A short exercise serving as a prerequisite to any other activities utilizing the LEGO Serious Play methodology

Requirements and Use Cases

Design a use case diagram of a software system by identifying its actors, features, and system boundaries

Architectural Design

Focus on the tradeoffs of choosing different architectural styles (patterns) for design and development of a complex software system, such as a modern web browser

Requirements Elicitation

Students brainstorm, analyze, and identify a core set of features for a well-defined system software or hardware system

Software Processes

Compare and contrast waterfall and incremental processes while working with changing and emerging requirements

Interfaces and Integration

Design and build objects with interfaces that make it easier to integrate to them into a larger system

Managing Change

Students learn about the need for flexible design to accommodate stakeholder changes

Requirements Validation

Using an agile approach students design, refactor and validate a prototype

Publications and references

Project leads: Stan Kurkovsky and Stephanie Ludi

This work is supported in part by NSF awards 1611905 and 1709244.