ICSE 2013 Tutorial
The Company Approach to Teaching Software Engineering Project CoursesPresenter: 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)
AbstractIncorporating 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 BromanDavid 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 OverviewThis section describes, at a high level, the main parts of the tutorial. Details of the approach can be found in:
- David Broman, Kristian Sandahl, and Mohamed Abu Baker. The Company Approach to Software Engineering Project Courses. IEEE Transactions on Education Vol. 55, No. 4, Pages 445-452, IEEE, Nov, 2012 [IEEE Link] [PDF] [BibTeX]
- Instead of organizing the projects in small teams, students are organized in simulated companies. Each company consists initially of two departments with elected leaders. There are approximately 30 students in each simulated company. By organizing the students into larger groups, new challenges arise that are not present in smaller organizations. For instance, in a 30 person company, informal structures and communication are no longer effective.
- The simulated companies are initially organized in a project organization, with several departments and different groups. During the course, the students are exposed to agile methodologies, thus learning and experiencing pros and cons between project management and agile methodologies. Gradually, the students transition into an agile way of working, including working with iterations, using self-organization, and working in cross-functional teams.
- The students are required to plan their work within constrained time budgets. Each student should work a fixed number of hours during the project, regularly create time reports, and continuously re-prioritize their work. By exposing the students to time reporting, the need for prioritization is emphasized.
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 ObjectivesThe intended learning outcomes include (but are not limited to) the participant being able to do the following:
- Explain the main teaching/learning activities of the company approach.
- Reflect on particularly challenging topics of teaching software engineering projects, including grading and assessments of large projects.
- Analyze the pros and cons between the company approach and classic capstone projects.
StructureThe 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:
- What skills should a software engineering student have when graduating?
- Which are the main teaching/learning activities in the company approach?
- How can we teach the fundamentals of agile methodologies realistically in a class project setting?
- How can we assess and grade software engineering projects?