Research on source code mining has been explored to discover interesting structural regularities, API usage patterns, refactoring opportunities, bugs, crosscutting concerns, code clones and systematic changes. In this paper we present a pattern mining algorithm that uses frequent tree mining to mine for interesting good, bad or ugly coding idioms made by undergraduate students taking an introductory programming course. We do so by looking for patterns that distinguish positive examples, corresponding to the more correct answers to a question, from negative examples, corresponding to solutions that failed the question. We report promising initial results of this algorithm applied to the source code of over 500 students. Even though more work is needed to fine-tune and validate the algorithm further, we hope that it can lead to interesting insights that can eventually be integrated into an intelligent recommendation system to help students learn from their errors.
Acquiring soft and project skills during their studies is of paramount importance for computer science students to integrate large development teams after graduating. Project-oriented learning offers interesting opportunities for teachers to tutor students, and allows them to acquire and train those skills in addition to the core topics of the course. However, since most existing curricula require courses to be as independent as possible (for organizational reasons for instance), some topics are covered in different courses in slightly different ways. This repetition is interesting for understanding difficult notions appropriately, but may also hamper students' understanding when closely related concepts are embedded in different ways. We report here on our teaching approach: we propose a series of projects that share a common theme, in order to (i) provide a transversal understanding of common notions seen in separate courses, and (ii) introduce soft and project skills in a progressive way, enabling students to iteratively experience and learn skills that are necessary for professional life. We report on the results of interviews conducted with the students and extract valuable lessons for reproducing this approach in different curricula.
Software systems become increasingly complex and testing is a vital component of the development process. Teaching software testing concepts are now more than ever acknowledged as essential.
The aim of this paper is to report on our software testing teaching approach, using game-based activities to engage students and facilitate learning, making them aware of their actions and related testing concepts. Agile testing and Session-Based Test Management are learned through lego-based context, exploratory testing is learned through a dice-based game, and various testing concepts are learned during the laboratory using storification.
We report on the results of activities with students, extracting valuable lessons for reproducing this approach in teaching software testing: game-based learning motivated students to participate in the activities, reflection on their actions allowed them to self-discover the testing concepts encapsulated into the game. In addition, we adapt and analyse an industry-like environment that serves as experience for their future careers.
Computer science studies are more and more popular, and teachers must face and adapt to the increasing number of students. Whereas small groups allowed more interactions between teachers and students, the resulting overcrowding takes away closeness and forces teachers to spend less time with each student. Therefore, the student can quickly feel submerged and helpless against the difficulty of the course. This paper proposes a solution that aims to reduce drop-out in programming courses. It offers an accurate feedback on the quality of students' Python code to deepen their understanding, together with a playful interface to boost their interest in programming. This solution developed under the name of "METAssistant" has two objectives. It allows students to use it to evaluate their programs and to get an accurate feedback, and teachers to have an overview of the understanding of the matter by their students.
Education has suffered multiple changes due to technological progress. Even though the current generation of preschoolers (aged 3 to 6 years in our country) is called digital natives, the education in using technology lacks from their current teaching activities. This paper presents our approach in introducing fundamentals of digital systems and supporting the development of digital skills of preschoolers by proposing a curriculum for an optional class in technology and by implementing it and assessing its results.
Agile methodologies have been recently proposed to be used in education. In this paper, we propose a rephrasing of the 12 Agile principles for learning context, and we provide concrete application-oriented interpretations for them. Additionally, a practical agile learning methodology is proposed to offer a framework where these principles could be applied. The principles together with the proposed methodology were applied to a concrete use case which is described and the resulting impact is analysed.
Nowadays, when the changes that appear in programming paradigms and in software process development methodologies are extremely frequent, teaching a Software Engineering related course has become a demanding task. To all these are added changes caused by the dynamics of the society and the traits of the current learners and how they learn.
To cope with the challenges mentioned above, the paper proposes a complementary method for Project Based Learning in teaching two Software Engineering related courses, at undergraduate and master level at Babeş-Bolyai University. Its contribution is twofold: firstly, it frames a new pedagogical approach based on “Students Generating Questions” as a learning strategy, defined in a collaborative way. The approach is supported by an e-learning platform designed as smart learning environment. Secondly, it investigates through a quantitative and qualitative analysis, the students perceptions, their feedback and learning experiences on the use of applying this learning method.
The results of the survey indicate that the proposed learning method helped students to better regulate their learning and to achieve their goals. It also revealed some advantages reported by the students such as reduction of test anxiety, productive collaborative learning and the creation of a question bank which represents a consistent and comprehensive material for training during the semester and for their exam preparation.
In the past few years, we have made several pedagogical changes to the way we teach and assess student knowledge in our courses.These courses are undergraduate software engineering courses taken in the third or fourth years, and graduate (non-research) courses taken as part of a master’s degree. They are taken by software engineering majors and computer science majors. This paper focuses on a specific technique–allowing students to retake weekly quizzes.We use weekly quizzes to offer more frequent, yet lower stakes,assessments than the traditional midterm exam. Quizzes are usually given at the beginning of class meetings. We offer students who under-performed or who missed a quiz the chance to try again. A major contribution of this paper is a description of scheduling soft-ware we developed to facilitate the retake process. Retake quizzes are different from the original quizzes, but cover the same material and are of similar difficulty. Our goal is to improve student learning and retention. This paper presents a post-hoc retrospective analysis of student performance on retake quizzes. In such a scenario, only limited conclusions can be drawn. Nonetheless, we see encouraging signs that students not only achieve higher overall scores when retaking quizzes, but that some students perform better on the final exam.
Authentic undergraduate research experiences have been shown to be very effective at sustaining students’ learning motivation and enhancing students’ theoretical knowledge and practical skills. However, there still exists some common challenges in undergraduate research. In this paper, we describe an approach that offers undergraduate students authentic and immersive research experience focusing on applied machine learning for software engineering and discuss our experiences with example undergraduate research projects and outcomes. A survey was designed to assess students’ overall experience of participating in authentic undergraduate research projects in machine learning for software engineering. Preliminary results from this survey are provided.
This report presents observations from two semesters of the same course, Software Testing, within the same department, in different school years. The first semester, Fall 2019, was the last semester completely in-person before the COVID-19 pandemic made it so that our courses changed to a virtual setting. The second semester, Spring 2021, is the most recent virtual semester at the time that this report is being written (in May of 2021). Though the course was modified to some extent for the purpose of it being online, we had a goal for it to remain largely the same. In both versions of the course, there was a heavy emphasis on interactive exercises as a means to increase engagement and performance within the class and in regards to software testing as a whole. The virtual semester gave us an opportunity to try out a variety of new avenues of learning and an exercise in trying to keep consistency from an in-person environment to a virtual one. This report will address added benefits of the virtual settings, consistencies that we managed to maintain throughout the transition, and lost exercises from the course along with ideas of how to mitigate the loss in any future virtual semesters. It will also address feedback from a survey given to students as we consider the results of the semesters.