Test-First Programming and Problem Visualization

TitleTest-First Programming and Problem Visualization
Publication TypeTAR Project
AuthorsWinger J
InstitutionVanderbilt
Year of Publication2011
Abstract In the late 1990’s a new style of software development called Extreme Programming or XP was developed by Ward Cunningham, Kent Beck and Ron Jeffries [1]. This radical departure from the classical models ushered in an era of debate over which practices are best for designing software for today’s rapidly changing market. Among these new practices was Test-driven development or Test-first programming. As the name suggests, Test-first programming requires developers to write software code tests before and during module development. This is in direct opposition to traditional design methods that test only after one or more modules have been fully coded. What’s more, research has provided mixed results as to the value and efficacy of the method among both professionals and students [2][3][4][5]. We believe the value of Test-first programming for students may lie not in the finished product but in the effect it has on their problem solving skills, confidence and overall enjoyment in the exercise. For this reason, we propose to study the consequences of teaching test-first programming to engineering students with little or no prior programming experiences. More specifically, we will examine changes in the students’ ability to critically examine a problem, their confidence in their skills and enjoyment during the class. We hypothesize that there is a correlation between the ability of a problem solver to visualize possible errors within a problem space and confidence in solving problems with an early introduction to test-first program design. Other levels of problem solving skills related to programming may also be considered, including length of solutions, time spent on solutions and solution modularity (i.e. improved structure through decomposition). The course to be examined is ES140, Introduction to Engineering. The course is divided into three identical modules each lasting five weeks. Students who request a CS focus are randomly assigned to one of the three modules. This provides a control group and two treatment groups to observe the result of introducing test-first design at an introductory level. This population differs from those of previous studies because they are not necessarily CS majors and the course takes place before the traditional CS1 programming course. In this quantitative study, the first class will be used as a control group. These students will be introduced to the concepts of program development within the traditional process model. The next class will be introduced to test-first principles. The final class treatment will be similar to the second, but changes to the content may be introduced based on early results provided by the second group. With IRB approval, students will be notified of their are part in the experiment and given written pre and post- tests and surveys to evaluate gain in confidence, critical problem examination and expected versus actual class enjoyment. These tests will be based on the Academic Behavioural Confidence Scale [6], Motivated Strategies for Learning Questionnaire [7] and simple problem solving tests. Student assignments will also be collected to examine other aspects of performance. Personal experience of the researchers in grading and instructing other classes has shown that students struggle with creating critical tests for software modules through classes at least as late as CS201. We plan to maintain student contact information and follow up studies conducted to measure related long-term progress within the Vanderbilt CS curriculum.
Keywordsteaching-as-research, Vanderbilt TAR Fellow
Department/DisciplineComputer Sciences