From Specifications to Implementation in the Gen-AI Era: Lessons from a Project-based Software Engineering Course
This paper investigates experiences, educational needs, and approaches for integrating Generative AI tools in an upper-level project-based undergraduate course on Software Engineering. We report on our course setup, our analysis of students' experience in the last offering of the course, and an independent case study that we conducted to identify strengths, weaknesses, and strategies for using IDE-embedded AI tools, specifically GitHub Copilot and Cursor, when implementing a project equivalent in size and complexity to those typically carried out by the students in the course.
Our results show that students utilize AI tools in all stages of project development: from requirements, through design, to implementation, testing, and code review, to generate and refine artifacts and to learn unfamiliar concepts. Students have mixed levels of satisfaction with using the tools, both as chat interfaces and as IDE-embedded solutions. We found no correlation between the degree of students' reliance on AI and their grades. While Generative AI tools simplify repetitive development tasks and help quickly ramp up when working with unfamiliar frameworks and programming languages, these tools are still far from replacing software engineers or rendering software engineering education unnecessary. In fact, in the new AI-empowered reality, skills such as requirements engineering, design, code review, and systematic testing become more relevant than ever. We conclude the paper with a set of suggestions for future offerings of this and similar Software Engineering courses and for using AI in Software Engineering more broadly. We see a promising future for AI-empowered Software Engineering, where humans lead creative work and AI manages repetitive implementation tasks and programming language nuances.