Article Preview
TopIntroduction
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.