Combining Dynamic Program Viewing and Testing in Early Computing Courses

Dynamic program viewing is a form of visual verification in which a student executes one or more statements in a program and interactively observes the behavior in basic viewers (e.g., an object with its fields) and/or conceptual viewers (e.g., the structural display of binary search tree). This activity can be extremely useful from a program understanding perspective as well as a debugging perspective. In contrast, testing (e.g., with JUnit) provides a way to create persistent test cases and then run and re-run them in an efficient way. We have observed that dynamic program viewing and testing are quite complementary. When test cases are written and executed, dynamic program viewing becomes a valuable aid in traditional debugging as well. Since most test cases are written at the functional level (e.g., did a method return the expected value?), dynamically viewing test methods as they execute can provide students with a deeper level of understanding. The jGRASP IDE has been extended to allow students to combine dynamic program viewing with JUnit testing. In this paper, we discuss both the technical success of this effort and several examples that demonstrate the potential for student use in early computing courses.

[1]  T. Dean Hendrix,et al.  The Effectiveness of Control Structure Diagrams in Source Code Comprehension Activities , 2002, IEEE Trans. Software Eng..

[2]  Alessio Gaspar,et al.  Restoring "coding with intention" in introductory programming courses , 2007, SIGITE '07.

[3]  Errol Thompson,et al.  Exploring learner conceptions of programming , 2006 .

[4]  Stephen H. Edwards,et al.  Using software testing to move students from trial-and-error to reflection-in-action , 2004, SIGCSE '04.

[5]  Scott Grissom,et al.  Supporting the rapid development of pedagogically effective algorithm visualizations , 2007 .

[6]  S. Diehl,et al.  Software visualization , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[7]  Brenda C. Parker,et al.  Effective methods for learning: a study in visualization , 2006 .

[8]  Thomas L. Naps,et al.  Exploring the role of visualization and engagement in computer science education , 2003, ITiCSE-WGR '02.

[9]  T. Dean Hendrix,et al.  Providing Data Structure Animations in a Lightweight IDE , 2007, Electron. Notes Theor. Comput. Sci..

[10]  Thomas L. Naps JHAVE: supporting algorithm visualization , 2005, IEEE Computer Graphics and Applications.

[11]  Hossein Saiedian,et al.  A Leveled Examination of Test-Driven Development Acceptance , 2007, 29th International Conference on Software Engineering (ICSE'07).

[12]  T. Dean Hendrix,et al.  Experimental evaluation of animated-verifying object viewers for Java , 2006, SoftVis '06.

[13]  A. A. Andrews Editortial: New EIC Introduction , 2002 .

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

[15]  N. Hari Narayanan,et al.  Authority and convergence in collaborative learning , 2003, Comput. Educ..

[16]  T. Dean Hendrix,et al.  Qualitative comparison of systems facilitating data structure visualization , 2005, ACM-SE 43.

[17]  Susan H. Rodger,et al.  Merging interactive visualizations with hypertextbooks and course management , 2006, ITiCSE-WGR '06.

[18]  Martin Dick,et al.  Adopting XP practices for teaching object oriented programming , 2006 .

[19]  Stephen H. Edwards,et al.  Algorithm visualization: a report on the state of the field , 2007, SIGCSE.

[20]  David S. Janzen,et al.  On the Influence of Test-Driven Development on Software Design , 2006, 19th Conference on Software Engineering Education & Training (CSEET'06).

[21]  Lauri Malmi,et al.  MVT: a system for visual testing of software , 2004, AVI.

[22]  J. Bransford,et al.  How students learn : history, mathematics, and science in the classroom , 2005 .

[23]  Marco Torchiano,et al.  On the effectiveness of the test-first approach to programming , 2005, IEEE Transactions on Software Engineering.

[24]  Michael Kölling,et al.  Introducing unit testing with BlueJ , 2003, ITiCSE '03.

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

[26]  T. Dean Hendrix,et al.  The Control Structure Diagram: An Overview and Initial Evaluation , 1998, Empirical Software Engineering.

[27]  Viera K. Proulx,et al.  Test-driven design for introductory OO programming , 2009, SIGCSE '09.

[28]  Mordechai Ben-Ari,et al.  The Jeliot 2000 program animation system , 2003, Comput. Educ..

[29]  C. Dudley Girard,et al.  Tools and techniques for test-driven learning in CS1 , 2007 .

[30]  David S. Janzen,et al.  Test-driven learning in early programming courses , 2008, SIGCSE '08.

[31]  Stephen Edwards,et al.  IDE Support for test-driven development and automated grading in both Java and C++ , 2005, eclipse '05.

[32]  Barbara Ericson,et al.  Introduction to Computing and Programming in Python - a Multimedia Approach, 4th Edition , 2016 .

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

[34]  Lauri Malmi,et al.  MatrixPro - A Tool for On-The-Fly Demonstration of Data Structures and Algorithms , 2004 .

[35]  Stephen H. Edwards Rethinking computer science education from a test-first perspective , 2003, OOPSLA '03.

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

[37]  Tobias Lauer,et al.  Learner interaction with algorithm visualizations: viewing vs. changing vs. constructing , 2006, ITICSE '06.

[38]  David S. Janzen,et al.  Implications of integrating test-driven development into CS1/CS2 curricula , 2009, SIGCSE '09.

[39]  Ari Korhonen,et al.  Taxonomy of effortless creation of algorithm visualizations , 2005, ICER '05.

[40]  David S. Janzen,et al.  Test-driven learning: intrinsic integration of testing into the CS/SE curriculum , 2006, SIGCSE '06.

[41]  T. Dean Hendrix,et al.  Robust Generation of Dynamic Data Structure Visualizations with Multiple Interaction Approaches , 2009, TOCE.

[42]  Steven Hansen,et al.  Designing Educationally Effective Algorithm Visualizations , 2002, J. Vis. Lang. Comput..

[43]  Bernd Freisleben,et al.  ANIMAL: A System for Supporting Multiple Roles in Algorithm Animation , 2002, J. Vis. Lang. Comput..

[44]  Thomas L. Naps Instructional interaction with algorithm visualizations , 2000 .

[45]  T. Dean Hendrix,et al.  Dynamic object viewers for data structures , 2007, SIGCSE '07.

[46]  Susan H. Rodger,et al.  Animation and visualization in the curriculum: opportunities, challenges, and successes , 2006, SIGCSE '06.