Asee peer logo

Enhancing Computer Science Programming Courses to Prepare Students for Software Engineering

Download Paper |

Conference

2014 ASEE Annual Conference & Exposition

Location

Indianapolis, Indiana

Publication Date

June 15, 2014

Start Date

June 15, 2014

End Date

June 18, 2014

ISSN

2153-5965

Conference Session

Software Engineering Constituent Committee Division Technical Session 1

Tagged Division

Software Engineering Constituent Committee

Page Count

11

Page Numbers

24.522.1 - 24.522.11

DOI

10.18260/1-2--20414

Permanent URL

https://strategy.asee.org/20414

Download Count

349

Request a correction

Paper Authors

biography

J. Jenny Li Kean University

visit author page

Prior to joining Kean as a faculty member last month, Dr. J. Jenny Li had been a research scientist at Avaya Labs, formerly part of Bell Labs, for 13 years. She is an experienced industrial researcher with more than 70 papers published in technical journals and conferences, and holder of over 20 patents with five pending applications. Her specialties are in automatic failure detection, with particular emphasis on reliability, security, performance and testing. Before Avaya, she worked at Bellcore
(formerly Telcordia and now Applied Communication Science) for 5 years. She received her Ph.D from University of Waterloo in 1996.

visit author page

biography

Patricia Morreale Kean University Orcid 16x16 orcid.org/0000-0002-7954-2122

visit author page

Patricia Morreale is an Associate Professor in the Department of Computer Science at Kean University, Union, NJ.

visit author page

Download Paper |

Abstract

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. 10.18260/1-2--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