Software architecture design is a key component in software engineering. Teaching it effectively requires instructors come up with challenging real world projects, in which students need to recognize the architectural problems, figure out solutions, compare alternatives and make decisions. On the other hand, keeping students motivated and interested in this topic is also critical. However, truly understanding and appreciating a certain software architecture are not easy for most undergraduate students. Most architecture courses either focus too much on the theoretical concepts or fail to immerse students enough in complex industrial level projects unless the instructors are practicing software engineers. In this paper, we propose a Project-Based Learning experience, which brings an open-source full-fledged system to classroom in order to effectively teach distributed software architecture. Students are introduced the best practices that are widely used in industry to solve some of today’s common architectural problems. Our ultimate goal is to establish a public code repository of realistic projects from popular industrial sectors, so that instructors can reference to improve software architecture’s learning experience even though they are not practicing software engineers.
[1]
Jennifer Pérez,et al.
Teaching software architectures and aspect-oriented software development using open-source projects
,
2009,
ITiCSE '09.
[2]
Paul Clements,et al.
Software architecture in practice
,
1999,
SEI series in software engineering.
[3]
William N. Bender,et al.
Project-Based Learning: Differentiating Instruction for the 21st Century
,
2012
.
[4]
Arie van Deursen,et al.
A Collaborative Approach to Teaching Software Architecture
,
2017,
SIGCSE.
[5]
Chandan Raj Rupakheti,et al.
Teaching Software Architecture to Undergraduate Students: An Experience Report
,
2015,
2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.