ICSE 2013 Tutorial

The Company Approach to Teaching Software Engineering Project Courses

Presenter: David Broman, UC Berkeley, USA and Linköping University, Sweden
Where: ICSE 2013, San Francisco, CA, USA
When: 8.30am, May 25, 2013
Duration: 90 min

(Tutorial cancelled due to few registered participants)


Incorporating well-defined software engineering projects within a computing curriculum is currently common practice. In particular, conducting a larger capstone project at the end of a curriculum is an effective way of learning how to apply, for example, design methods, testing theory, and configuration management. Such courses are, however, often performed in smaller teams, giving only a limited perspective of how it is to work in real industrial software projects.

This tutorial demonstrates a practical approach to teaching software engineering courses. The aim is to give students a broader and more realistic view of software engineering projects, thus preparing them better for a transition to industry. We call this teaching methodology the company approach to software engineering projects. Key components are: i) students are organized in simulated companies, ii) the simulated companies face an organizational transition from project management to agile development, and iii) students are exposed to constrained time budgets. We have used this approach for teaching Master's students for several years, with very good course evaluations. The approach has also been scientifically studied by conducting closed questionnaire-based surveys during the course and open question surveys seventeen months after the course ended.

If you are a teacher or a software engineer who is interested in how software engineering should be taught at the university level, this tutorial offers insights to a new and different approach to teaching software engineering projects. The tutorial is highly interactive; presentations of basic ideas of the approach are interleaved with discussions. There are no formal prerequisites for the tutorial—only a strong interest in teaching and learning software engineering practices.

Biography - David Broman

David Broman is currently a visiting scholar at UC Berkeley, USA, working in the Electrical Engineering & Computer Science department. He is an assistant professor at Linköping University in Sweden, where he also received his Ph.D. in computer science in 2010. David's research interests include software engineering, language theory, and compiler technology—especially for cyber-physical systems. He has worked five years within the software security industry, co-founded the EOOLT workshop series, and has been certified both Scrum Master and CISSP. David has been teaching software engineering since 2005 and his course in software engineering was in 2010 awarded for excellency by the student organization at Linköping university.

Tutorial Overview

This section describes, at a high level, the main parts of the tutorial. Details of the approach can be found in: The overall objective of this tutorial is to introduce, to both the software engineering research and teaching community, an alternative way of teaching software engineering courses. In contrast to classic software engineering capstone projects, this approach distinguishes itself in three areas: The main contribution of this approach is the unique combination of these three key components. We have been teaching according to this approach at Linköping University during the last four years, with exceptionally good feedback from the students. During 2009 and 2010 we conducted questionnarie-based surveys with closed questions during the course and a questionnarie-based survey with open questions 17 months after completion of the course. The company approach together with this study is recently published in IEEE Transactions on Education.

Why Attend?

Teaching practical aspects of software engineering is vital for successful transition of students from taking courses to working in industry. Our approach addresses aspects other than pure technical techniques in software engineering. In particular, collaboration, communication, organization, and leadership are emphasized in the context of software engineering. We believe that this subject is of great interest, for teachers (leading software engineering courses), students (assisting in software engineering courses), and professional software engineers in industry (recruiting graduated students).

Learning Objectives

The intended learning outcomes include (but are not limited to) the participant being able to do the following:


The tutorial is highly interactive, where the participants should also share their experiences and reflections on the topic. The schedule will consist of a mixture of shorter lecture segments and discussion sessions. Example of questions that may be addressed and discussed during the workshop are:


A course in software engineering is currently being taught at Linköping University—using the company approach. (See http://www.ida.liu.se/~TDDC88/). The participants of this tutorial will receive materials related to how we are currently running this course as well as access to the accepted version of the journal paper describing the company approach.


See the ICSE 2013 webpage for registration


This work was funded by the Swedish Research Council #623-2011-955 and the Department of Computer and Information Science, Linköping University, Sweden. Additional support was provided by the Center for Hybrid and Embedded Software Systems (CHESS) at UC Berkeley.