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?
Storytelling
Building with LEGO supports playing out scenarios and storytelling, which is key to many Software Engineering learning activities centered around case studies
Building
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
Process
The process of constructing one or more LEGO models can mimic a real-world software process that consists of many inter-related activities
Change
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
- S. Kurkovsky, S. Ludi, L. Clark: Active Learning with LEGO for Software Requirements / ACM DL
- S. Kurkovsky: Teaching Software Engineering with LEGO Serious Play / ACM DL
- S. Kurkovsky: A LEGO-based Approach to Introducing Test-Driven Development / ACM DL
- S. Kurkovsky: Using LEGO to Teach Software Interfaces and Integration / ACM DL
- S. Kurkovsky: A Simple Game to Introduce Scrum Concepts / ACM DL
- S. Ludi: Active-Learning Activities that Introduce Students to Software Engineering Fundamentals / ACM DL
Project leads: Stan Kurkovsky and Stephanie Ludi
This work is supported in part by NSF awards 1611905 and
1709244.