A software craftsman's approach to data structures

Data Structures (CS2) courses and course books do not usually put much emphasis in the process of how a data structure is engineered or invented. Instead, algorithms are readily given, and the main focus is in the mathematical complexity analysis of the algorithms. We present an alternative approach on presenting data structures using worked examples, i.e., by explicitly displaying the process that leads to the invention and creation of a data stucture and its algorithms. Our approach is heavily backed up by some of the best programming practices advocated by the Agile and Software Craftsmanship communities. It brings the often mathematically oriented CS2 course closer to modern software engineering and practical problem solving, without a need for compromise in proofs and analysis.

[1]  Robert Sedgewick,et al.  Algorithms, 4th Edition , 2011 .

[2]  Pete McBreen Software craftsmanship : the new imperactive , 2002 .

[3]  Joel Adams Test-driven data structures: revitalizing CS2 , 2009, SIGCSE '09.

[4]  Kent Beck,et al.  Extreme Programming Explained: Embrace Change (2nd Edition) , 2004 .

[5]  Ronald L. Rivest,et al.  Introduction to Algorithms, 3rd Edition , 2009 .

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

[7]  Joshua Bloch Effective Java (2nd Edition) (The Java Series) , 2008 .

[8]  David Thomas,et al.  The Pragmatic Programmer: From Journeyman to Master , 1999 .

[9]  Alfred V. Aho,et al.  Data Structures and Algorithms , 1983 .

[10]  P. Gács,et al.  Algorithms , 1992 .

[11]  Toni R. Black Helping novice programming students succeed , 2006 .

[12]  Mark Allen Weiss,et al.  Data structures and algorithm analysis in C , 1991 .

[13]  Michael Kölling,et al.  Enhancing apprentice-based learning of Java , 2004 .

[14]  Arto Vihavainen,et al.  Extreme apprenticeship method in teaching programming for beginners , 2011, SIGCSE.

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

[16]  Robert C. Martin Clean Code - a Handbook of Agile Software Craftsmanship , 2008 .

[17]  R. K. Shyamasundar,et al.  Introduction to algorithms , 1996 .

[18]  Ronald L. Rivest,et al.  Introduction to Algorithms, third edition , 2009 .

[19]  Pm Jenkinson,et al.  Cognitive , 2020, Definitions.