Lean Learning - Applying Lean Techniques to Improve Software Engineering Education

Building a programme of education that reflects and keeps pace with industrial practice is difficult. We often hear of a skills shortage in the software industry, and the gap between what people are taught in university and the "real world". This paper is a case study showing how we have developed a programme at Imperial College London that bridges this gap, providing students with relevant skills for industrial software engineering careers. We give details of the structure and evolution of the programme, which is centred on the tools, techniques and issues that feature in the everyday life of a professional developer working in a modern team. We also show how aligning our teaching methods with the principles of lean software delivery has enabled us to provide sustained high quality learning experiences. The contributions of this paper take the form of lessons learnt, which may be seen as recommendations for others looking to evolve their own teaching structures and methods.

[1]  Ken Schwaber,et al.  Agile Software Development with SCRUM , 2001 .

[2]  Michael C. Feathers Working Effectively with Legacy Code , 2004, XP/Agile Universe.

[3]  Jez Humble,et al.  Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment Automation , 2010 .

[4]  Andrew Glover,et al.  Continuous Integration: Improving Software Quality and Reducing Risk (The Addison-Wesley Signature Series) , 2007 .

[5]  James P. Womack,et al.  Lean Thinking: Banish Waste and Create Wealth in Your Corporation , 1996 .

[6]  Blair MacIntyre,et al.  RoomAlive: magical experiences enabled by scalable, adaptive projector-camera units , 2014, UIST.

[7]  Kent L. Beck,et al.  Extreme programming explained - embrace change , 1990 .

[8]  Steve Roach,et al.  Computer Science curricula 2013: getting involved and getting ready , 2013, SGCS.

[9]  Susan Eisenbach,et al.  Changing the marks-based culture of learning through peer-assisted tutorials , 2009 .

[10]  Andreas S. Andreou,et al.  Empirical evidence and state of practice of software agile teams , 2014, J. Softw. Evol. Process..

[11]  Morgan Ericsson,et al.  Teaching Agile - Addressing the Conflict between Project Delivery and Application of Agile Methods , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C).

[12]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[13]  Laurie A. Williams,et al.  In Support of Pair Programming in the Introductory Computer Science Course , 2002, Comput. Sci. Educ..

[14]  Vasile G. Teodorovici Practical object-oriented design in ruby: an agile primer by Sandi Metz , 2014, SOEN.

[15]  Andreas Meier,et al.  New sustainable teaching approaches in software engineering education , 2014, 2014 IEEE Global Engineering Education Conference (EDUCON).

[16]  Mark Guzdial,et al.  Learner-Centered Design of Computing Education: Research on Computing for Everyone , 2015, Synthesis Lectures on Human-Centered Informatics.

[17]  David Lorge Parnas,et al.  Software aging , 1994, Proceedings of 16th International Conference on Software Engineering.

[18]  Frank Maurer,et al.  An Experience Report at Teaching a Group Based Agile Software Development Project Course , 2015, SIGCSE.