Teaching Agile Software Engineering Using Problem-Based Learning

Teaching Agile Software Engineering Using Problem-Based Learning

Nuha H. El-Khalili (Petra University, Amman, Jordan)
DOI: 10.4018/jicte.2013070101
OnDemand PDF Download:
No Current Special Offers


Many studies have reported the utilization of Problem-Based Learning (PBL) in teaching Software Engineering courses. However, these studies have different views of the effectiveness of PBL. This paper presents the design of an Advanced Software Engineering course for undergraduate Software Engineering students that uses PBL to teach them Agile software development methods- particularly Scrum. The course also aims to develop entrepreneurial skills needed for software engineering graduates to better prepare them for the software industry. The assessment process designed for this course is illustrated. The paper shows that Scrum practices correlate with the characteristics of the PBL approach, which has resulted in a successful experience of PBL as reported by students in an end of a semester survey.
Article Preview


Most software development projects can be characterized by “wicked problems” (DeGrace & Stahl, 1990). Lack of clear and complete requirements and fast technological changes are among reasons behind this assumption. This wickedness has led to the evolution and recognition of Agile software methodology and its various approaches such as Scrum, Extreme Programming, etc. Agile software development is a group of software development methods based on iterative and incremental development. It promotes adaptive planning, a time-boxed iterative approach, and customer collaboration. It also encourages rapid and flexible response to change (Ambler, 2012). A recent survey conducted in 2011 about the state of Agile development shows that 80% of the respondents work in organizations that adopt Agile practices. Furthermore, 66% of those organizations use Scrum or Scrum variations (Version One, 2011). Thus, teaching Agile development methodology to software engineering students is essential.

Furthermore, teaching software engineering students the necessary skills needed for work in the software development industry does not only require the acquisition of theoretical knowledge and technical skills, but it also necessitates other entrepreneurial skills that have been recognized by the National Academy of Engineering in its book “The Engineer of 2020”. These skills are: strong analytical skills, ingenuity, creativity, communication, lifelong learning, agility and flexibility, leadership, business and management and high ethical standards (National Academy of Engineering, 2004).

Transferring these skills to students is not possible with traditional lecturing teaching techniques. Problem –based learning has been acknowledged as a learning approach that is suitable for transferring such skills in ill-structured, multidisciplinary domains such as Software Engineering (Jonassen & Hung, 2008).

Kolmos and Du (2008) had evidence that PBL is effective in achieving the following qualities:

  • Developing management, collaboration and communication skills;

  • Developing criticality of learners;

  • Promoting deep learning;

  • Developing professional identity and responsibility development.

This paper presents the design of an Advanced Software Engineering course that has two main objectives: (1) the practice of software development using scrum, which is one of the Agile development methods, and (2) the development of entrepreneurial skills needed for software engineers. The next section will report other work that has used PBL for teaching software engineering courses. Afterwards we will present the details of the course design. Then we discuss the correlation between Scrum practices and PBL characteristics will be illustrated. Followed by the assessment methods used in the course will be presented. Finally, we then will report the results of implementing the course and present the students' feedback.

Complete Article List

Search this Journal:
Volume 17: 4 Issues (2021): 3 Released, 1 Forthcoming
Volume 16: 4 Issues (2020)
Volume 15: 4 Issues (2019)
Volume 14: 4 Issues (2018)
Volume 13: 4 Issues (2017)
Volume 12: 4 Issues (2016)
Volume 11: 4 Issues (2015)
Volume 10: 4 Issues (2014)
Volume 9: 4 Issues (2013)
Volume 8: 4 Issues (2012)
Volume 7: 4 Issues (2011)
Volume 6: 4 Issues (2010)
Volume 5: 4 Issues (2009)
Volume 4: 4 Issues (2008)
Volume 3: 4 Issues (2007)
Volume 2: 4 Issues (2006)
Volume 1: 4 Issues (2005)
View Complete Journal Contents Listing