From Specifications to Implementation in the Gen-AI Era: Lessons from a Project-based Software Engineering Course
By early 2025, AI code assistants had evolved into sophisticated collaborators capable of generating, explaining, reviewing, and modifying substantial portions of a software system. In February 2025, as we were delivering an upper-level undergraduate course on Software Engineering in our university, the term vibe coding emerged and quickly became popularized, referring to a practice in which developers describe a project or task in a prompt to an AI model that then generates code artifacts automatically.
In this paper, we first report on the course setup and our analysis of students' experience using AI assistants for developing open-ended software engineering projects in the Spring 2025 offering of the course. We then discuss our independent follow-up exploratory study that we conducted in Summer 2025, investigating approaches and strategies for working with AI tools, specifically GitHub Copilot and Cursor, to implement a project equivalent in size and complexity to those typically carried out by the students in the course. The goal of our studies is to better understand whether and how to teach Software Engineering in the AI era, i.e., which skills are essential for effective human–AI collaboration.
Our results show that students utilized 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 had 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, hypothesizing that other factors, such as groups' knowledge and commitment play a more major role in producing high-quality results.
While Generative AI tools simplified repetitive development tasks and helped quickly ramp up when working with unfamiliar frameworks and programming languages, these tools were 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 are becoming more relevant than ever. 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. 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.
This website provides additional information about the paper.The preprint of the paper is available here. To cite the paper:
@article{Wang:Rizi:Khashei:Rubin:2026,
title = {{From Specifications to Implementation in the Gen-AI Era: Lessons from a Project-based Software Engineering Course}},
author = {Yingying Wang and Masih Beigi Rizi and Fatemeh Khashei and Julia Rubin},
journal = {Proceedings of the ACM Software Engineering Conference},
number = {FSE},
year = {2026}
}