DIGITAL LIBRARY
AN OPEN EDUCATIONAL RESOURCE FOR TEACHING SOFTWARE DESIGN
1 FH JOANNEUM (AUSTRIA)
2 Letterkenny Institute of Technology (IRELAND)
About this paper:
Appears in: EDULEARN18 Proceedings
Publication year: 2018
Pages: 4265-4272
ISBN: 978-84-09-02709-5
ISSN: 2340-1117
doi: 10.21125/edulearn.2018.1074
Conference name: 10th International Conference on Education and New Learning Technologies
Dates: 2-4 July, 2018
Location: Palma, Spain
Abstract:
Teaching software design in a part-time bachelor program is based on the theory of design, architectural patterns [1] and practical implementation. Students often experience problems when attempting to understand software design when studying from books or journals. Worked examples can improve understanding of software design patterns. Analysis of running programs can provide a testbed to determine the runtime impacts of a design and to modify various elements of the software. Simultaneously, worked solutions help define and identify design issues for students where one or more design patterns are implemented. This results in a broadened experience for students and in a consolidation of their knowledge. A set of automated test cases formulated as a problem-based learning exercise can be used as a design checklist during the implementation phase.

While books and articles about design are commonplace, a comprehensive set of examples is a rarity. Open Educational Resources (OER) [3] which can be found in OER repositories like Merlot [2] are focused principle on documentation.

We have implemented an exemplar library of design and architectural patterns. This library has been developed iteratively over a 10-year period as a teaching tool on part-time bachelor programs. Starting with 2016, we published these examples on GitHub in three open source projects:
• Software Design: 16 demo examples; 20 exercises and model solutions: https://github.com/teiniker/teiniker-lectures-softwaredesign
• Design Patterns: 13 demo examples; 19 exercises and model solutions: https://github.com/teiniker/teiniker-lectures-designpatterns
• Software Architectures: 35 demo examples: https://github.com/teiniker/teiniker-lectures-softwarearchitectures

We are happy to share these resources with teachers, students, and practitioners. We developed different example types suitable for self-study and in-class usage:
• Demo examples: These examples are indented for code reviews and pattern mining. They represent concrete examples of pattern implementations including automated test cases to study the runtime impacts.
• Exercise examples and model solutions: Exercises are small programs which should be extended by students to make them work. A set of automated tests together with a TODO file specifies the missing parts. For every exercise there is a corresponding model solution.

In the paper we will present details about the OER for teaching software design which we actively use in our own classes. Based on years of experiences we have created usage scenarios for different example types. In particular, the adoption of the inverted class room concept has confirmed the importance of having such resources available in public repositories.

References:
[1] Gamma, Helm, Johnson, Vlissides (1995). Design Patterns, Elements of Reusable Object-Oriented Software. Addison-Wesley
[2] Merlot. https://www.merlot.org/
[3] UNESCO and Commonwealth of Learning (2015). Guidelines for Open Educational Resources (OER) in Higher Education. UNESCO, Paris, France.
Keywords:
Open Educational Resource (OER), software design, higher education, inverted classroom.