June 15, 2014
June 15, 2014
June 18, 2014
Software Engineering Constituent Committee
24.522.1 - 24.522.11
Enhancing Computer Science Programming Courses to Prepare Students for Software Engineering Many existing Computer Science (CS) undergraduate programs include an introductoryprograming course intended to establish a student’s foundation for his/her future study of the CSmajor. The curriculum of the majority of these courses is to teach specific programing languageswithout any introductory concepts of software engineering. For example, such programmingcourses often teach students the syntax and semantics of Java or C/C++ to the extent thatstudents can write code for simple problems, but without any introduction to the concept of codetesting. The lacking of testing concepts would cause the following scenario. The code submittedby students for the course homework might look nice syntactically, but it might not run properlyaccording to various test cases. It may work for one test case, but not for others. Without anyintroduction to some basic software engineering concepts, such as test case creation, executionand etc., the student would not necessary understand the need to code testing and would notknow how to test their code properly before submission. Their training in the programmingcourse might give them an unhealthy habit of focusing on coding without regard for propertesting, which will adversely hinder their future learning of real software engineering in higherlevel courses. To overcome the issue of not taking testing into consideration in programming courses, weproposed to incorporate a chapter on an essential software engineering concept, test-drivendevelopment, into the programing course to enhance the existing curriculum. The chapter shouldbe added in the beginning of the second half of the semester, by which time the students shouldbe able to or have written a real runnable program. At this point, the students can use eitherconventional approach or test-driven approach to start their next coding project and will be ableto compare their outcomes. Through the comparison study, they will be able to better understandand appreciate software engineering testing concepts. We tried out this new curriculum in an ongoing Java course for sophomore CS students. Wefirst had students working on a project, A, without any discussion of testing concepts and we thenintroduced the concept of test-driven-development, followed by their working on another project,B. From each project, we collected the following time measurements: 1) planning time (theduration from the student receiving the problem to the time (s)he starting to write code), 2)coding time, 3) testing time, and 4) revision time until the program runs as required. We foundnoticeable improvement in the measurements from project A to B, of which details will bepresented in the paper. Overall our trials of augmenting basic test-drive-development concepts into programingcourse curriculum showed that the software development time reduces by half for the students toachieve runnable code that is compliance to test cases. Another advantage of this enhancedcurriculum with testing concepts is to better prepare students for future software engineeringcourses such as software assurance and software testing. One future research direction is tofollow up with the students at their later stage of their undergraduate study to confirm thisadvantage.
Li, J. J., & Morreale, P. (2014, June), Enhancing Computer Science Programming Courses to Prepare Students for Software Engineering Paper presented at 2014 ASEE Annual Conference & Exposition, Indianapolis, Indiana. https://peer.asee.org/20414
ASEE holds the copyright on this document. It may be read by the public free of charge. Authors may archive their work on personal websites or in institutional repositories with the following citation: © 2014 American Society for Engineering Education. Other scholars may excerpt or quote from these materials with the same citation. When excerpting or quoting from Conference Proceedings, authors should, in addition to noting the ASEE copyright, list all the original authors and their institutions and name the host city of the conference. - Last updated April 1, 2015