Laboratory courses (labs) are an integral part of engineering education. They help students deepen the knowledge taught in lectures and support the application of this knowledge to concrete problems. However, labs do have several known problems such as a lack of resources (personnel, time, and equipment). This paper reports about the DistLab project at Stralsund University of Applied Sciences, Germany. DistLab aims at introducing a standardized concept for remote and virtual labs in engineering education. Remote labs allow students to work off-campus on systems that are located and running on-campus. Virtual labs, on the other hand, provide students with a virtual twin of an experiment that is a high- fidelity digital copy of its real counterpart. Students start working with the virtual twin and transfer their solution later to the real-world twin. First experiences and student feedback show that these concepts allow for learning independently of location and time, thus giving students more freedom in acquiring the material. On the other hand, freedom implies more self-discipline and self-organization.
{"title":"On Using Distance Labs for Engineering Education","authors":"C. Bunse, L. Kennes, Jan-Christian Kuhr","doi":"10.1145/3528231.3528355","DOIUrl":"https://doi.org/10.1145/3528231.3528355","url":null,"abstract":"Laboratory courses (labs) are an integral part of engineering education. They help students deepen the knowledge taught in lectures and support the application of this knowledge to concrete problems. However, labs do have several known problems such as a lack of resources (personnel, time, and equipment). This paper reports about the DistLab project at Stralsund University of Applied Sciences, Germany. DistLab aims at introducing a standardized concept for remote and virtual labs in engineering education. Remote labs allow students to work off-campus on systems that are located and running on-campus. Virtual labs, on the other hand, provide students with a virtual twin of an experiment that is a high- fidelity digital copy of its real counterpart. Students start working with the virtual twin and transfer their solution later to the real-world twin. First experiences and student feedback show that these concepts allow for learning independently of location and time, thus giving students more freedom in acquiring the material. On the other hand, freedom implies more self-discipline and self-organization.","PeriodicalId":296945,"journal":{"name":"2022 IEEE/ACM 4th International Workshop on Software Engineering Education for the Next Generation (SEENG)","volume":"78 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116836912","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Sirazum Munira Tisha, Rufino A. Oregon, Gerald Baumgartner, Fernando Alegre, Juana Moreno
Automatic grading systems help lessen the load of manual grading. Most existent autograders are based on unit testing, which focuses on the correctness of the code, but has limited scope for judging code quality. Moreover, it is cumbersome to implement unit testing for evaluating graphical output code. We propose an autograder that can effectively judge the code quality of the visual output codes created by students enrolled in a high school-level computational thinking course. We aim to provide suggestions to teachers on an essential aspect of their grading, namely the level of student com-petency in using abstraction within their codes. A dataset from five different assignments, including open-ended problems, is used to evaluate the effectiveness of our autograder. Our initial experiments show that our method can classify the students' submissions even for open-ended problems, where existing autograders fail to do so. Additionally, survey responses from course teachers support the importance of our work.
{"title":"An Automatic Grading System for a High School-level Computational Thinking Course","authors":"Sirazum Munira Tisha, Rufino A. Oregon, Gerald Baumgartner, Fernando Alegre, Juana Moreno","doi":"10.1145/3528231.3528357","DOIUrl":"https://doi.org/10.1145/3528231.3528357","url":null,"abstract":"Automatic grading systems help lessen the load of manual grading. Most existent autograders are based on unit testing, which focuses on the correctness of the code, but has limited scope for judging code quality. Moreover, it is cumbersome to implement unit testing for evaluating graphical output code. We propose an autograder that can effectively judge the code quality of the visual output codes created by students enrolled in a high school-level computational thinking course. We aim to provide suggestions to teachers on an essential aspect of their grading, namely the level of student com-petency in using abstraction within their codes. A dataset from five different assignments, including open-ended problems, is used to evaluate the effectiveness of our autograder. Our initial experiments show that our method can classify the students' submissions even for open-ended problems, where existing autograders fail to do so. Additionally, survey responses from course teachers support the importance of our work.","PeriodicalId":296945,"journal":{"name":"2022 IEEE/ACM 4th International Workshop on Software Engineering Education for the Next Generation (SEENG)","volume":"59 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134539671","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Malte Mauritz, Stefan Naujokat, Christian Riest, Till Schallau
In teaching and training the next generation of software engineers, programming labs with students working together in small groups provide the opportunity to obtain hands-on experience for software projects involving multiple developers. However, more than other types of courses, programming labs face some challenges in providing a similar learning outcome for all students. Based on feedback and own experience from various iterations of the programming lab at TU Dortmund University, we identified that the learning ex-perience varies significantly due to heterogeneous prior knowledge, experience levels, and personality traits of both students and tutors. In this experience report, we present our approach towards aligning the learning experience by applying three different didactic im-provements based on well-studied concepts: (1) the idea of worked-out examples is transferred to teaching the software development process by providing a small software application with all corre-sponding artefacts like diagrams, program code and documentation, focusing on their relationships and development activities. (2) Goal-oriented and structured learning is used to define learning outcomes for every group meeting as a common ground, while audience re-sponse systems are utilized to motivate the attendance and allow students to self-reflect on their knowledge and competence level. (3) We harmonize the role of tutors by holding dedicated teaching workshops for tutors' responsibilities in the programming lab. The different approaches are evaluated based on surveys for stu-dents and tutors over three iterations of the programming lab at TU Dortmund University. Both sides' positive responses and feedback resulted in an enumeration of lessons learned as recommendations and support for other similar courses.
{"title":"Aligning the learning Experience in a Project-Based Course: lessons learned from the Redesign of a Programming Lab","authors":"Malte Mauritz, Stefan Naujokat, Christian Riest, Till Schallau","doi":"10.1145/3528231.3528358","DOIUrl":"https://doi.org/10.1145/3528231.3528358","url":null,"abstract":"In teaching and training the next generation of software engineers, programming labs with students working together in small groups provide the opportunity to obtain hands-on experience for software projects involving multiple developers. However, more than other types of courses, programming labs face some challenges in providing a similar learning outcome for all students. Based on feedback and own experience from various iterations of the programming lab at TU Dortmund University, we identified that the learning ex-perience varies significantly due to heterogeneous prior knowledge, experience levels, and personality traits of both students and tutors. In this experience report, we present our approach towards aligning the learning experience by applying three different didactic im-provements based on well-studied concepts: (1) the idea of worked-out examples is transferred to teaching the software development process by providing a small software application with all corre-sponding artefacts like diagrams, program code and documentation, focusing on their relationships and development activities. (2) Goal-oriented and structured learning is used to define learning outcomes for every group meeting as a common ground, while audience re-sponse systems are utilized to motivate the attendance and allow students to self-reflect on their knowledge and competence level. (3) We harmonize the role of tutors by holding dedicated teaching workshops for tutors' responsibilities in the programming lab. The different approaches are evaluated based on surveys for stu-dents and tutors over three iterations of the programming lab at TU Dortmund University. Both sides' positive responses and feedback resulted in an enumeration of lessons learned as recommendations and support for other similar courses.","PeriodicalId":296945,"journal":{"name":"2022 IEEE/ACM 4th International Workshop on Software Engineering Education for the Next Generation (SEENG)","volume":"19 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127691130","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
This paper gives an overview of the software engineering activities of Siemens Healthineers that are related to education and learning. Our training activities have a long history and are done globally throughout the company. We expect that experience and lessons learned are useful for others. Our software engineering education activities range from onboarding of new employees to approaches for continuous learning for highly experienced professionals. We start already very early with training the “next generation” software engineers and focus on growing that talent throughout their career. We share here lessons learned that we have made over the past decades on this topic. This industrial experience report describes our approach by focusing on various “dimensions”. The dimensions include the experience level, the content, and the format. Especially due to the Corona situation, we have held many trainings virtually and we share also our insights. Finally, we include three concrete examples of an aspect of our education and learning activities. These are on applying and conveying the agile mindset to learning to attract young talents, virtual hackathons and systematic link between training and job profiles.
{"title":"Software Engineering Learning Landscape: an experience report from Siemens Healthineers","authors":"Matthias Backert, Ferose Khan Jeberla, Sheldon Kumar, Frances Paulisch","doi":"10.1145/3528231.3528356","DOIUrl":"https://doi.org/10.1145/3528231.3528356","url":null,"abstract":"This paper gives an overview of the software engineering activities of Siemens Healthineers that are related to education and learning. Our training activities have a long history and are done globally throughout the company. We expect that experience and lessons learned are useful for others. Our software engineering education activities range from onboarding of new employees to approaches for continuous learning for highly experienced professionals. We start already very early with training the “next generation” software engineers and focus on growing that talent throughout their career. We share here lessons learned that we have made over the past decades on this topic. This industrial experience report describes our approach by focusing on various “dimensions”. The dimensions include the experience level, the content, and the format. Especially due to the Corona situation, we have held many trainings virtually and we share also our insights. Finally, we include three concrete examples of an aspect of our education and learning activities. These are on applying and conveying the agile mindset to learning to attract young talents, virtual hackathons and systematic link between training and job profiles.","PeriodicalId":296945,"journal":{"name":"2022 IEEE/ACM 4th International Workshop on Software Engineering Education for the Next Generation (SEENG)","volume":"25 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133544892","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Undergraduate software engineering courses in higher education institutions usually cover many aspects of software development including software testing. In this experience paper, we collectively discuss our learning through realizations and reflections from both instructor's and students' perspectives of teaching and taking two separate courses in parallel, namely software engineering and soft-ware testing. Both courses had a mix of Millennial and Gen Z, junior-to-senior-level computer science students. The paper con-tributes by sharing the courses' design, its motivation behind the different pedagogical methodologies, tools and techniques used, and its recommendations in teaching similar courses to such a co-hort of students in the future for improved learning experience and outcome.
{"title":"Reflection Through Two Lenses: Experiences of Teaching and Taking Undergraduate Software Engineering and Testing Courses","authors":"Bradley Whitebread, Kseniia Gromova, Holly Schafer, Alok Ranjan, Ishtiaque Hussain","doi":"10.1145/3528231.3528354","DOIUrl":"https://doi.org/10.1145/3528231.3528354","url":null,"abstract":"Undergraduate software engineering courses in higher education institutions usually cover many aspects of software development including software testing. In this experience paper, we collectively discuss our learning through realizations and reflections from both instructor's and students' perspectives of teaching and taking two separate courses in parallel, namely software engineering and soft-ware testing. Both courses had a mix of Millennial and Gen Z, junior-to-senior-level computer science students. The paper con-tributes by sharing the courses' design, its motivation behind the different pedagogical methodologies, tools and techniques used, and its recommendations in teaching similar courses to such a co-hort of students in the future for improved learning experience and outcome.","PeriodicalId":296945,"journal":{"name":"2022 IEEE/ACM 4th International Workshop on Software Engineering Education for the Next Generation (SEENG)","volume":"34 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116825852","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Context: Problem-Based Learning (PBL) and Experiential Learning Theory (ELT) are convergent active learning approaches widely known for their competent integration between theory and practice. Problem/Objective: However, the usual implementation of PBL leaves out the final active experimentation stage of the experiential learning cycle. In this article, we intend to systematically investigate the impacts of this last stage on the learning outcomes of software engineering students. Methods: A quasi-experiment was designed and applied in three software engineering courses of an undergraduate course, in Rio Branco-Acre / Brazil. Results: students who participated in two of the three treatment groups scored significantly higher on measures of motivation, experience and learning, which means that the PBL method contains gaps that can be significantly improved with the help of ELT, benefiting the learning outcomes of software engineering students.
{"title":"Improving the PBL method with Experiential Learning Theory in Software Engineering Teaching","authors":"Cleuton Almeida, C. França","doi":"10.1145/3528231.3536382","DOIUrl":"https://doi.org/10.1145/3528231.3536382","url":null,"abstract":"Context: Problem-Based Learning (PBL) and Experiential Learning Theory (ELT) are convergent active learning approaches widely known for their competent integration between theory and practice. Problem/Objective: However, the usual implementation of PBL leaves out the final active experimentation stage of the experiential learning cycle. In this article, we intend to systematically investigate the impacts of this last stage on the learning outcomes of software engineering students. Methods: A quasi-experiment was designed and applied in three software engineering courses of an undergraduate course, in Rio Branco-Acre / Brazil. Results: students who participated in two of the three treatment groups scored significantly higher on measures of motivation, experience and learning, which means that the PBL method contains gaps that can be significantly improved with the help of ELT, benefiting the learning outcomes of software engineering students.","PeriodicalId":296945,"journal":{"name":"2022 IEEE/ACM 4th International Workshop on Software Engineering Education for the Next Generation (SEENG)","volume":"88 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132989832","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
M. Hofbauer, Christoph Bachhuber, Christopher B. Kuhn, E. Steinbach
Programming and software engineering differ by the aspect of time and scale. Going beyond just implementing software that fulfills requirements, software engineering also means writing code that can be maintained by multiple contributors over months, years or even decades. Due to the limited time of university projects, students mainly learn to focus on writing software that works once. In in-dustry, software lifetime is longer and the aspect of time becomes highly relevant. Professional software must be readable and modular to be maintainable. In this paper, we present an experience report on a novel university course in software engineering. The course teaches the concepts of unit testing, refactoring, and automation tools to novices with basic programming experience. We present those concepts for the example of C++,but they are applicable to any programming language. Our goal is to teach students the key con-cepts of software engineering early on, giving them the opportunity to benefit from these concepts in their further projects. We present these concepts in five plenary lectures with live coding sessions, and then student teams apply the concepts in five practical homework as-signments. All assignments contribute to a single project maintained and improved by the student groups for the duration of the course. Additionally, we present a teaching tool framework that can be used to automate tasks for student project management and examinations. Finally, we discuss the lessons learned from conducting this course for the first time. We believe this course is a valuable step towards including essential software engineering skills in the education of science and engineering students.
{"title":"Teaching Software Engineering As Programming Over Time","authors":"M. Hofbauer, Christoph Bachhuber, Christopher B. Kuhn, E. Steinbach","doi":"10.1145/3528231.3528353","DOIUrl":"https://doi.org/10.1145/3528231.3528353","url":null,"abstract":"Programming and software engineering differ by the aspect of time and scale. Going beyond just implementing software that fulfills requirements, software engineering also means writing code that can be maintained by multiple contributors over months, years or even decades. Due to the limited time of university projects, students mainly learn to focus on writing software that works once. In in-dustry, software lifetime is longer and the aspect of time becomes highly relevant. Professional software must be readable and modular to be maintainable. In this paper, we present an experience report on a novel university course in software engineering. The course teaches the concepts of unit testing, refactoring, and automation tools to novices with basic programming experience. We present those concepts for the example of C++,but they are applicable to any programming language. Our goal is to teach students the key con-cepts of software engineering early on, giving them the opportunity to benefit from these concepts in their further projects. We present these concepts in five plenary lectures with live coding sessions, and then student teams apply the concepts in five practical homework as-signments. All assignments contribute to a single project maintained and improved by the student groups for the duration of the course. Additionally, we present a teaching tool framework that can be used to automate tasks for student project management and examinations. Finally, we discuss the lessons learned from conducting this course for the first time. We believe this course is a valuable step towards including essential software engineering skills in the education of science and engineering students.","PeriodicalId":296945,"journal":{"name":"2022 IEEE/ACM 4th International Workshop on Software Engineering Education for the Next Generation (SEENG)","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123376868","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
W. Mauerer, Stefan Klessinger, Stefanie Scherzinger
Ascertaining reproducibility of scientific experiments is receiving increased attention across disciplines. We argue that the necessary skills are important beyond pure scientific utility, and that they should be taught as part of software engineering (SWE) education. They serve a dual purpose: Apart from acquiring the coveted badges assigned to reproducible research, reproducibility engineering is a lifetime skill for a professional industrial career in computer science. SWE curricula seem an ideal fit for conveying such capabilities, yet they require some extensions, especially given that even at flagship conferences like ICSE, only slightly more than one-third of the technical papers (at the 2021 edition) receive recognition for artefact reusability. Knowledge and capabilities in setting up engineering environments that allow for reproducing artefacts and results over decades (a standard requirement in many traditional en-gineering disciplines), writing semi-literate commit messages that document crucial steps of a decision-making process and that are tightly coupled with code, or sustainably taming dynamic, quickly changing software dependencies, to name a few: They all contribute to solving the scientific reproducibility crisis, and enable software engineers to build sustainable, long-term maintainable, software-intensive, industrial systems. We propose to teach these skills at the undergraduate level, on par with traditional SWE topics.
{"title":"Beyond the Badge: Reproducibility Engineering as a Lifetime Skill","authors":"W. Mauerer, Stefan Klessinger, Stefanie Scherzinger","doi":"10.1145/3528231.3528359","DOIUrl":"https://doi.org/10.1145/3528231.3528359","url":null,"abstract":"Ascertaining reproducibility of scientific experiments is receiving increased attention across disciplines. We argue that the necessary skills are important beyond pure scientific utility, and that they should be taught as part of software engineering (SWE) education. They serve a dual purpose: Apart from acquiring the coveted badges assigned to reproducible research, reproducibility engineering is a lifetime skill for a professional industrial career in computer science. SWE curricula seem an ideal fit for conveying such capabilities, yet they require some extensions, especially given that even at flagship conferences like ICSE, only slightly more than one-third of the technical papers (at the 2021 edition) receive recognition for artefact reusability. Knowledge and capabilities in setting up engineering environments that allow for reproducing artefacts and results over decades (a standard requirement in many traditional en-gineering disciplines), writing semi-literate commit messages that document crucial steps of a decision-making process and that are tightly coupled with code, or sustainably taming dynamic, quickly changing software dependencies, to name a few: They all contribute to solving the scientific reproducibility crisis, and enable software engineers to build sustainable, long-term maintainable, software-intensive, industrial systems. We propose to teach these skills at the undergraduate level, on par with traditional SWE topics.","PeriodicalId":296945,"journal":{"name":"2022 IEEE/ACM 4th International Workshop on Software Engineering Education for the Next Generation (SEENG)","volume":"15 50","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-03-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114044549","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}