What Makes an Exceptional AI-Assisted Programmer? Definitions, Skills, and a Research Agenda for Computer Science Education
Abstract
AI coding agents enable novice and upper-division students to practice concrete computational thinking and requirement elicitation without needing to learn abstract programming languages. As computer programming is abstracted to natural language, writing well-specified requirements becomes increasingly important, since underspecified prompts reduce AI-generated code accuracy significantly. Thus, the ability to elicit and articulate system requirements is imperative to AI-assisted programming pedagogy. However, previous work conflates historical definitions of requirement engineering with prompt engineering, behavior-driven testing, and software specification probing, making it difficult to define precise learning objectives for specification pedagogy. Additionally, requirement engineering and software testing have traditionally been framed as refinement and confirmatory activities, respectively. In practice, these are also the primary mechanisms for eliciting requirements from an ill-specified problem. This paper presents a review of requirement engineering, establishes canonical definitions and learning objectives across these areas, and outlines the implications for CS education and directions for future work.
Full paper under review.