A portal to catalog worked examples extracted from open source software projects to support the teaching of Software Engineering
DOI:
https://doi.org/10.5753/jserd.2024.4027Keywords:
Software Engineering Education, Open Source Software Projects, Worked ExamplesAbstract
Software Engineering is continually evolving, with new techniques, tools, and processes emerging to enhance software development. However, finding real-life examples that reflect this evolution can be challenging for instructors. Open Source Software (OSS) projects offer a valuable resource in this context, as they provide access to actual development projects and environments. Despite their potential, integrating these projects into the classroom involves several hurdles, including selecting suitable projects, preparing classes, and adapting to the open-source environment. This study aims to alleviate the challenges instructors face in adopting OSS projects for teaching Software Engineering. We developed an open portal to catalog worked examples from OSS projects, thereby supporting instructors in demonstrating real-world Software Engineering concepts and techniques. Utilizing Design Science Research, we followed the Relevance, Design, and Rigor cycles to construct this solution. The primary contribution of this work is the portal itself, which helps reduce the time instructors spend searching for relevant materials and resources. Additionally, we proposed a template to create, structure, and catalog these examples and developed guidelines to assist instructors in using the worked examples effectively. We conducted a series of studies with experienced Software Engineering instructors, which indicated that the portal could significantly mitigate the challenges associated with sourcing and updating real examples. The effectiveness of the examples was also assessed based on student perceptions, revealing that exposure to worked examples from OSS projects could engage students with real projects and challenges.
Downloads
References
ACM (2015). Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering. ACM.
Akhuseyinoglu, K., Hardt, R., Barria-Pineda, J., Brusilovsky, P., Pollari-Malmi, K., Sirkiä, T., and Malmi, L. (2022). A study of worked examples for sql programming. In Proceedings of the 27th ACM Conference on Innovation and Technology in Computer Science Education Vol. 1, pages 82–88.
Atkinson, R. K., Renkl, A., and Merrill, M. M. (2003). Transitioning from studying examples to solving problems: Effects of self-explanation prompts and fading worked-out steps. Journal of educational psychology, 95(4):774.
Baltes, S., Dumani, L., Treude, C., and Diehl, S. (2018). Sotorrent: Reconstructing and analyzing the evolution of stack overflow posts. In Proceedings of the 15th international conference on mining software repositories, pages 319–330.
Bofferding, L., Kocabas, S., Aqazade, M., Haiduc, A.-M., and Chen, L. (2022). The effect of play and worked examples on first and third graders’ creating and debugging of programming algorithms. In Computational Thinking in PreK-5: Empirical Evidence for Integration and Future Directions, pages 19–29.
Booth, J. L., McGinn, K. M., Young, L. K., and Barbieri, C. (2015). Simple practice doesn’t always make perfect: Evidence from the worked example effect. Policy Insights from the Behavioral and Brain Sciences, 2(1):24–32.
Bourque, P. and Fairley, R. E. (2014). Guide to the software engineering body of knowledge (SWEBOK (R)): Version 3.0. IEEE Computer Society Press.
Buchta, J., Petrenko, M., Poshyvanyk, D., and Rajlich, V. (2006). Teaching evolution of open-source projects in software engineering courses. In 2006 22nd IEEE International Conference on Software Maintenance, pages 136–144. IEEE.
Carroll, W. M. (1994). Using worked examples as an instructional support in the algebra classroom. Journal of educational psychology, 86(3):360.
Chen, X., Mitrovic, A. T., and Matthews, M. (2019). Learning from worked examples, erroneous examples and problem solving: towards adaptive selection of learning activities. IEEE Transactions on Learning Technologies.
Davis, F. D. (1989). Perceived usefulness, perceived ease of use, and user acceptance of information technology. MIS quarterly, pages 319–340.
Demeyer, S., Ducasse, S., and Nierstrasz, O. (2008). Object-oriented reengineering patterns.
Deng, L., Dehlinger, J., and Chakraborty, S. (2020). Teaching software testing with free and open source software. In 2020 IEEE International Conference on Software Testing, Verification and Validation Workshops (ICSTW), pages 412–418. IEEE.
Dorodchi, M. and Dehbozorgi, N. (2016). Utilizing open source software in teaching practice-based software engineering courses. In 2016 IEEE Frontiers in Education Conference (FIE), pages 1–5. IEEE.
Ellis, H. J., England, W. N., Morgan, B., Oregon, W., Hislop, G. W., Coleman, B., and Pulimood, S. M. (2015). Software engineering learning in hfoss: A multi-institutional study. age, 26:1.
Ellis, H. J., Morelli, R. A., and Hislop, G. W. (2008). Work in progress-challenges to educating students within the community of open source software for humanity. In 2008 38th Annual Frontiers in Education Conference, pages S3H–7. IEEE.
Garces, S., Vieira, C., Ravai, G., and Magana, A. J. (2022). Engaging students in active exploration of programming worked examples. Education and Information Technologies, pages 1–18.
Gaweda, A. M., Lynch, C. F., Seamon, N., Silva de Oliveira, G., and Deliwa, A. (2020). Typing exercises as interactive worked examples for deliberate practice in cs courses. In Proceedings of the Twenty-Second Australasian Computing Education Conference, pages 105–113.
Gehringer, E. F. (2011). From the manager’s perspective: Classroom contributions to open-source projects. In 2011 Frontiers in Education Conference (FIE), pages F1E–1. IEEE.
Hevner, A. and Chatterjee, S. (2010). Design science research in information systems. In Design research in information systems, pages 9–22. Springer.
Hevner, A., March, S. T., Park, J., Ram, S., et al. (2004). Design science research in information systems. MIS quarterly, 28(1):75–105.
Hevner, A. R. (2007). A three cycle view of design science research. Scandinavian journal of information systems, 19(2):4.
Holmes, R., Allen, M., and Craig, M. (2018). Dimensions of experientialism for software engineering education. In Proceedings of the 40th International Conference on Software Engineering: Software Engineering Education and Training, ICSE-SEET ’18, pages 31–39, New York, NY, USA. ACM.
Hu, Z., Song, Y., and Gehringer, E. F. (2018). Open-source software in class: Students’ common mistakes. In Proceedings of the 40th International Conference on Software Engineering: Software Engineering Education and Training, ICSE-SEET ’18, pages 40–48, New York, NY, USA. ACM.
Jaccheri, L. and Osterlie, T. (2007). Open source software: A source of possibilities for software engineering education and empirical software engineering. In First International Workshop on Emerging Trends in FLOSS Research and Development (FLOSS’07: ICSE Workshops 2007), pages 5–5. IEEE.
Jaspers, M. W., Steen, T., Van Den Bos, C., and Geenen, M. (2004). The think aloud method: a guide to user interface design. International journal of medical informatics, 73(11-12):781–795.
Kontio, J., Lehtola, L., and Bragge, J. (2004). Using the focus group method in software engineering: obtaining practitioner and user experiences. In Proceedings. 2004 International Symposium on Empirical Software Engineering, 2004. ISESE’04., pages 271–280. IEEE.
Lessa, M. S. B. and von Flach G. Chavez, C. (2020). An approach for selecting floss projects for education. In Proceedings of the 34th Brazilian Symposium on Software Engineering, pages 463–472.
McGinn, K. M., Lange, K. E., and Booth, J. L. (2015). A worked example for creating worked examples. Mathematics Teaching in the Middle School, 21(1):26–33.
Metrôlho, J., Ribeiro, F., Graça, P., Mourato, A., Figueiredo, D., and Vilarinho, H. (2022). Aligning software engineering teaching strategies and practices with industrial needs. Computation, 10(8):129.
Montagner, I. d. S. and Kurauchi, A. T. N. (2022). Learning professional software development skills by contributing to open source projects. In 2022 IEEE Frontiers in Education Conference (FIE), pages 1–7. IEEE.
Morgan, B. and Jensen, C. (2014). Lessons learned from teaching open source software development. In IFIP International Conference on Open Source Systems, pages 133–142. Springer.
Müller, M., Schindler, C., and Slany, W. (2019). Engaging students in open source: Establishing foss development at a university. In Proceedings of the 52nd Hawaii International Conference on System Sciences.
Nandigam, J., Gudivada, V. N., and Hamou-Lhadj, A. (2008). Learning software engineering principles using open source software. In 2008 38th Annual Frontiers in Education Conference, pages S3H–18. IEEE.
Nascimento, D. M., Chavez, C. F., and Bittencourt, R. A. (2018). The adoption of open source projects in engineering education: a real software development experience. In 2018 IEEE Frontiers in Education Conference (FIE), pages 1–9. IEEE.
Nievelstein, F., Van Gog, T., Van Dijck, G., and Boshuizen, H. P. (2013). The worked example and expertise reversal effect in less structured tasks: Learning to reason about legal cases. Contemporary Educational Psychology, 38(2):118–125.
Papadopoulos, P. M., Stamelos, I. G., and Meiszner, A. (2013). Enhancing software engineering education through open source projects: Four years of students’ perspectives. Education and Information Technologies, 18(2):381–397.
Pereira, J. (2021). Leveraging final degree projects for open source software contributions. Electronics, 10(10):1181.
Pereira, J. and Díaz, Ó. (2022). Open-source software in the classroom: Empowering students to self-select projects to contribute. IEEE Transactions on Education, 65(4):553–561.
Pereira, J. and Pitxitxi, C. R. M. (2020). Capstone projects aimed at contributing to consolidated open source projects: a practical experience. education, 2:6.
Pinto, G. H. L., Figueira Filho, F., Steinmacher, I., and Gerosa, M. A. (2017). Training software engineers using open-source software: the professors’ perspective. In 2017 IEEE 30th Conference on Software Engineering Education and Training (CSEE&T), pages 117–121. IEEE.
Raj, R. K. and Kazemian, F. (2006). Using open source software in computer science courses. In Proceedings. Frontiers in Education. 36th Annual Conference, pages 21–26. IEEE.
Rourke, A. and Sweller, J. (2009). The worked-example effect using ill-defined problems: Learning to recognise designers’ styles. Learning and Instruction, 19(2):185–199.
Sadiku, M. N. O., Olasupo, K., and Nelatury, S. R. (2012). What professors do. IEEE Potentials, 31(3):10–11.
Schwonke, R., Renkl, A., Krieg, C., Wittwer, J., Aleven, V., and Salden, R. (2009). The worked-example effect: Not an artefact of lousy control conditions. Computers in Human Behavior, 25(2):258–266.
Silva, D., Tsantalis, N., and Valente, M. T. (2016). Why we refactor? confessions of github contributors. In Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pages 858–870.
Silva, F. G., Brito, M. S., Tavares, J. V. T., and Chavez, C. v. F. G. (2019). Floss in software engineering education: Supporting the instructor in the quest for providing real experience for students. In Proceedings of the XXXIII Brazilian Symposium on Software Engineering, pages 234–243. ACM.
Silva, F. G., dos Santos, P. E. D., and von Flach G. Chavez, C. (2020a). Do we use floss in software engineering education? mapping the profiles and practices of higher education teachers from brazil. In Proceedings of the 34th Brazilian Symposium on Software Engineering, pages 473–482.
Silva, F. G., Lessa, M. S. B., da Luz Lopes, N., and von Flach G. Chavez, C. (2020b). Teaching uml models with floss projects: A study carried out during the period of social isolation imposed by the covid-19 pandemic. In Proceedings of the 34th Brazilian Symposium on Software Engineering, pages 483–492.
Skudder, B. and Luxton-Reilly, A. (2014). Worked examples in computer science. In Proceedings of the Sixteenth Australasian Computing Education Conference-Volume 148, pages 59–64. Australian Computer Society, Inc.
Smith, T. M., McCartney, R., Gokhale, S. S., and Kaczmarczyk, L. C. (2014). Selecting open source software projects to teach software engineering. In Proceedings of the 45th ACM technical symposium on Computer science education, pages 397–402. ACM.
Sweller, J., Van Merrienboer, J. J., and Paas, F. G. (1998). Cognitive architecture and instructional design. Educational psychology review, 10(3):251–296.
Tan, S. H., Hu, C., Li, Z., Zhang, X., and Zhou, Y. (2021). Github-oss fixit: Fixing bugs at scale in a software engineering course. In 2021 IEEE/ACM 43rd International Conference on Software Engineering: Software Engineering Education and Training (ICSE-SEET), pages 1–10. IEEE.
Tonhão, S., Colanzi, T., and Steinmacher, I. (2021). Using real worked examples to aid software engineering teaching. In Proceedings of the XXXV Brazilian Symposium on Software Engineering, pages 133–142.
Tonhão, S. d. F., Colanzi, T. E., and Steinmacher, I. (2020). A portal for cataloging worked examples extracted from open source software. In Proceedings of the XXXIV Brazilian Symposium on Software Engineering, pages 493–498.
Toukiloglou, P. and Xinogalos, S. (2022). Ingame worked examples support as an alternative to textual instructions in serious games about programming. Journal of Educational Computing Research, page 07356331211073655.
Van Gog, T. and Kester, L. (2012). A test of the testing effect: acquiring problem-solving skills from worked examples. Cognitive Science, 36(8):1532–1541.
Van Gog, T., Kester, L., and Paas, F. (2011). Effects of worked examples, example-problem, and problem-example pairs on novices’ learning. Contemporary Educational Psychology, 36(3):212–218.
Wang, M., Yang, Z.-K., Liu, S.-Y., Cheng, H. N., and Liu, Z. (2015). Using feedback to improve learning: Differentiating between correct and erroneous examples. In 2015 International Symposium on Educational Technology (ISET), pages 99–103. IEEE.
Wieringa, R. (2009). Design science as nested problem solving. In Proceedings of the 4th international conference on design science research in information systems and technology, pages 1–12.
Yaacoub, E. E., Groves, R. M., Dawy, Z., Fowler Jr, F. J., Couper, M. P., Lepkowski, J. M., Singer, E., and Tourangeau, R. (2004). Survey Methodology, volume 337. John Wiley & Sons.
Yamaguti, M. H., de Oliveira, F. M., Trindade, C. A., and Dutra, A. (2017). Ages: An interdisciplinary space based on projects for software engineering learning. In Proceedings of the 31st Brazilian Symposium on Software Engineering, pages 368–373. ACM.
Downloads
Published
How to Cite
Issue
Section
License
Copyright (c) 2024 Simone Tonhão, Igor Steinmacher, Thelma Colanzi
This work is licensed under a Creative Commons Attribution 4.0 International License.