The problem of finding and evaluating effective ways of integrating software testing concepts and related techniques into introductory programming courses is still an open research question. In this paper, we present multiple studies that assess our approach to integrating software testing in Computer Science (CS) and Software Engineering (SE) courses. Each study uses SEP-CyLE (Software Engineering and Programming Cyberlearning Environment), an external, web-based learning tool to help instructors integrate testing concepts into their courses. These empirical studies were conducted in eight CS/SE course sections at a medium-sized public university. The results show (1) SEP-CyLE can be efficiently used in the class-room to impact the testing knowledge gained by students, and (2) students find that SEP-CyLE is a useful learning resource that effectively helps them complete course tasks and better master course concepts.
Requirements Engineering (RE) is known to be critical for the success of software projects, and hence forms an important part of any Software Engineering (SE) education curriculum offered at tertiary level. In this paper, we report the results of an exploratory pilot study conducted to assess the effectiveness of Case-Based Learning (CBL) methodology in facilitating the learning of several RE concepts. The evaluation was made on the basis of graduate students' responses to a set of questions representing various key learning principles, collected after the execution of two CBL sessions at DA-IICT, Gandhinagar (India). We investigate the perceived effectiveness of CBL in students' learning of various RE concepts, based on factors like case difference, gender diversity, and team size. Additionally, we collect and analyze the Teaching Assistants' (TAs) opinions about the conducted CBL sessions. The outcome of this CBL exercise was positive as maximum students were able to achieve all the five stated learning objectives. The authors also report various challenges, recommendations, and lessons learned while experiencing CBL sessions.
Composing well-balanced, effective development teams for software engineering project courses is important for facilitating learning, fostering student motivation as well as obtaining a successful project outcome. However, team composition is a challenging task for instructors because they have to consider a variety of possibly conflicting criteria such as practical constraints, skill distribution, or project motivation.
In this paper, we describe our process for composing development teams based on a pre-defined set of criteria that we have established from our experience conducting project courses since 2008 and constantly refined since. We reflect on these criteria by analyzing the team synergy and project satisfaction of participating students as well as their perspective on challenges in their teams in one concrete instance of a multi-project capstone course. Our findings show that lack of motivation, problems with interpersonal relationships and communication issues affect the less satisfied teams more than the others.
The Tech Startup model is an approach where students in Software Engineering and Entrepreneurship courses form interdisciplinary teams to create businesses based on software products. The model combines Agile software development with compatible practices from Lean Startup to foster collaboration on real technology startup businesses (tech startups). This paper introduces learning activities for use in the Tech Startup model intended to improve adherence to Agile and Lean Startup methodologies.
This study describes a formative evaluation of the learning activities used for: project ideation, project planning, iterative delivery & feedback, and teamwork assessment. The study synthesizes responses to a questionnaire with feedback from three focus groups at the conclusion of an academic term. Based on our findings and observations, we report suggestions for encouraging innovative project ideas from Software Engineering students as well as approaches to holding students accountable for adhering to Agile practices.
Software engineering courses and internships aim to equip students with skills that are vital in the software engineering industry. Millennial students are expected to emerge from an undergraduate education ready to step directly into software developer positions and succeed. And yet, for a variety of reasons, these experiences often fail to adequately prepare students for the expectations of the industry. The capabilities of a typical undergraduate simply do not align well with the needs of the industry, resulting in disappointed employers, unhappy employees, and a poor reputation for the quality of a higher education in software engineering. This paper describes the Student Software Developers Program, where students are developing real-world applications that solve business needs for departments on campus, leveraging those departments as customers. Students are immersed in the program for a full year, providing them with adequate time to experience both the depth and breadth of skills desired by the curriculum and by industry. Our evaluation shows the program provided students with confidence in their engineering abilities, a wealth of hard and soft skills valuable in industry, all while learning software engineering in a way that aligns with the values of their generation.
Hackathons are currently a hot topic in industrial learning settings. Like intensive collaborative courses (e.g. code camps), hackathons have been shown to be successful tools for learning. However, current research has failed to adequately compare the two approaches with respect to who benefits, which stakeholders are involved, and what the practical arrangement differences are. We used a literature review, our own multi-year learning experiences, and written and interview material from students and industry participants to present an overview of hackathons and code camps. Based on the results of our analysis, we present a taxonomy, based on our experiences, to help practitioners decide which kind of intensive event approach is suitable for them, depending on their industry and educational needs. This synthesis and the study results provide the first steps towards a functional definition that covers intensive collaborative working events involving real-life problems, such as code camps, hackathons, and 24-hour innovation workshops. Currently, the terminology is diverse, but there are commonalities and differences across each of these events and their purposes.
Using university capstone courses to teach agile software development methodologies has become commonplace, as agile methods have gained support in professional software development. This usually means students are introduced to and work with the currently most popular agile methodology: Scrum. However, as the agile methods employed in the industry change and are adapted to different contexts, university courses must follow suit. A prime example of this is the Kanban method, which has recently gathered attention in the industry. In this paper, we describe a capstone course design, which adds the hands-on learning of the lean principles advocated by Kanban into a capstone project run with Scrum. This both ensures that students are aware of recent process frameworks and ideas as well as gain a more thorough overview of how agile methods can be employed in practice. We describe the details of the course and analyze the participating students' perceptions as well as our observations. We analyze the development artifacts, created by students during the course in respect to the two different development methodologies. We further present a summary of the lessons learned as well as recommendations for future similar courses. The survey conducted at the end of the course revealed an overwhelmingly positive attitude of students towards the integration of Kanban into the course.
Millennials prefer learning-by-doing and social learning, and project-based learning. At the same time, software engineering educators should take into account that software development projects require not only technical skills but also creativity---Design Thinking can help in achieving the latter. We conducted a workshop, following the Design Thinking approach of the d.school, to help students generate ideas for a mobile app development project course. In addition to the details for implementing the workshop, we report our observations and lessons learned. Moreover, we provide suggestions for further implementation of Design Thinking in similar courses.
Programming and software engineering courses in computer science curricula typically focus on both providing theoretical knowledge of programming languages and best-practices, and developing practical development skills. In a massive course --- several hundred students --- the teachers are not able to adequately attend to the practical part, therefore process automation and incentives to students must be used to drive the students in the right direction.
Our goals was to design an automated programming assignment infrastructure capable of supporting massive courses. The infrastructure should encourage students to apply the key software engineering (SE) practices --- automated testing, configuration management, and Integrated Development Environment (IDE) --- and acquire the basic skills for using the corresponding tools.
We selected a few widely adopted development tools used to support the key software engineering practices and mapped them to the basic activities in our exam assignment management process.
This experience report describes the results from the past academic year. The infrastructure we built has been used for a full academic year and supported four exam sessions for a total of over a thousand students. The satisfaction level reported by the students is generally high.
Software engineers need to manage both technical and professional skills in order to be successful. Our university offers a 5.5 year program that mixes computer science, software and computer engineering, where the first two years are mostly math and physics courses. As such, our students' first real teamwork experience is during the introductory SE course, where they modify open source projects in groups of 6-8. However, students have problems working in such large teams, and feel that the course material and project are "disconnected". We decided to redesign this course in 2017, trying to achieve a balance between theory and practice, and technical and professional skills, with a maximum course workload of 150 hrs per semester. We share our experience in this paper, discussing the strategies we used to improve teamwork and help students learn new technologies in a more autonomous manner. We also discuss what we learned from the two times we taught the new course.
We conducted a Project-Based Learning (PBL)-type exercise incorporating Japanese cartoon ("manga") techniques into Requirements Development (RD) processes. Manga has established techniques, such as those for character setting and story development, that we thought are also valid for RD processes. Using this manga-driven method, students were able to clarify high-level project goals early in the development life-cycle, and succeeded in defining high quality and unique system ideas.
This paper describes a novel design for an agile software engineering course that emphasizes keeping product artifacts updated throughout development. The signature transformative event in the course is the mid-semester project "hand-off," at which point teams trade projects with other student teams and must make immediate progress despite no prior knowledge of the new project's design, coding conventions, or documentation. Course features are described along with their implementation and assessment.