Teaching software development skills early in the Curriculum through software engineering

Software engineering is commonly taught as an upper level course in students in computer science. There are many software development skills that can be taught in a software engineering course that are useful in other courses. The development of this course has greatly influenced the types of projects and assignments that are required in the upper level courses. The upper level courses have been able to (1) develop more challenging projects and (2) reduce or eliminate the time spent on teaching development skills.

[1]  Renée McCauley,et al.  Teaching software engineering early - Experiences and results , 1998 .

[2]  John F. Dooley,et al.  Software engineering in the liberal arts: combining theory and practice , 2003, SGCS.

[3]  Ivar Jacobson,et al.  The Unified Software Development Process , 1999 .

[4]  Watts S. Humphrey The Personal Software Process , 1997, Proceedings Frontiers in Education 1997 27th Annual Conference. Teaching and Learning in an Era of Change.

[5]  Ivar Jacobson,et al.  Object-Oriented Software Engineering , 1991, TOOLS.

[6]  Watts S. Humphrey,et al.  Introduction to the Personal Software Process , 1996 .

[7]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[8]  John Strang Programming with Curses , 1986 .

[9]  Kent L. Beck,et al.  Extreme programming explained - embrace change , 1990 .

[10]  Bill Z. Manaris,et al.  Strategies for effective integration of software engineering concepts and techniques into the undergraduate computer science curriculum , 1997, SIGCSE '97.

[11]  Fred P. Brooks,et al.  The Mythical Man-Month , 1975, Reliable Software.

[12]  David R. Musser,et al.  STL tutorial and reference guide - C++ programming with the standard template library , 1996, Addison-Wesley professional computing series.

[13]  Eric Harlow Developing Linux Applications with GTK+ and GDK , 1999 .

[14]  Barry W. Boehm,et al.  Software Engineering Economics , 1993, IEEE Transactions on Software Engineering.

[15]  Jr. Frederick P. Brooks,et al.  The mythical man-month (anniversary ed.) , 1995 .

[16]  Stuart I. Feldman,et al.  Make — a program for maintaining computer programs , 1979, Softw. Pract. Exp..

[17]  Colin Potts,et al.  Design of Everyday Things , 1988 .

[18]  K. Beck,et al.  Extreme Programming Explained , 2002 .

[19]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[20]  William J. Collins,et al.  Data Structures and the Java Collections Framework , 2001 .

[21]  Steve McConnell,et al.  Code complete - a practical handbook of software construction, 2nd Edition , 1993 .

[22]  David R. Musser,et al.  STL tutorial and reference guide, second edition: C++ programming with the standard template library , 2001 .

[23]  Walter F. Tichy,et al.  Rcs — a system for version control , 1985, Softw. Pract. Exp..

[24]  Rajiv Tewari,et al.  Software reuse and object-oriented software engineering in the undergraduate curriculum , 1995, SIGCSE.

[25]  Kent L. Beck,et al.  Test-driven Development - by example , 2002, The Addison-Wesley signature series.

[26]  Troels Mørch Test Driven Development , 2005 .

[27]  Geri Schneider,et al.  Applying use cases (2nd ed.): a practical guide , 2001 .