A Family of Tools for Supporting the Learning of Programming
"> Figure 1
<p>Example task from the WebTasks database.</p> "> Figure 2
<p>Schematic workflow for a student submission to WebTasks.</p> "> Figure 3
<p>Example student code for a given WebTasks task.</p> "> Figure 4
<p>Example validation failure output for code submitted to the WebTasks database.</p> "> Figure 5
<p>Example screenshot from the <span class="html-small-caps">Animal</span> user front-end animating BubbleSort.</p> "> Figure 6
<p>Example screenshot of a hypertextbook with an included <span class="html-small-caps">Animal</span> animation.</p> ">
Abstract
:1. Introduction
2. WebTasks: Programming Tasks Database
3. Visualizing and Animating Algorithms and Data Structures
- Even novices can generate contents manually using drag and drop. While this may initially seem to be almost as time-consuming as doing it in programs such as PowerPoint, the support for data structures makes the process faster. Additionally, since each animation frame builds on the previous frame, the user does not have to copy all current elements to the next slide, as would be needed in presentation software such as PowerPoint or Keynote.
- Content can be written directly in AnimalScript. Animal provides an online reference to the language, so that writing a syntactically correct program is not difficult.
- Animations can be generated from a program by adding appropriate statements that will create AnimalScript output at “interesting places”.
- Programs can also be enriched by using the AlgoAnim API. This API will also create AnimalScript output, but provides a far cleaner interface than incorporating the associated output statements into existing code [32].
- By placing output-producing programs into the generator framework, the associated programs can be run directly inside Animal [33]. Additionally, this allows the end-user to adjust parameters, such as the concrete values to be sorted or inserted, as well as visual properties, such as the color chosen for individual elements.
4. Tutorials for Teaching the Use of Eclipse
- Eclipse Basics presents the basics of using Eclipse: starting the IDE, explaining the initially visible icons, and taking a walk through the “Hello World” tutorial. During the programming, we have intentionally introduced a bug, in order to illustrate how Eclipse will highlight errors and how they can be fixed using the “Quick Fix” option.
- Implementing a new class shows the implementation of a class, based on a basic piece of code. We show how code can be indented and formatted, and how mistakes can be addressed (in this case, by renaming a mistyped variable). We also implement the toString() method and use code completion as well as the generation of get- and set-methods including comments. The use of the code outline and the “Problems” and “JavaDoc” view is explained. The tutorial ends by discussing the look-up of definitions using the F3 key, using quick fixes, formatting source code, adding and organizing imports, and sorting members.
- Implementing and testing a sample calculator presents a simple implementation of a basic calculator that is developed “live”. The tutorial starts by creating a new project, package, and class, and implementing several simple calculator methods, complete with some intentional bugs. We then show how a JUnit test can be implemented in a separate package, and how test methods are annotated with the @Test notation. The development of tests is done in parallel with re-runs of the existing and new tests. We then add an initialization method and show how methods not yet ready for testing can be ignored, how expected exceptions can be checked, and how infinite loops can be prevented during testing.
- Extending classes illustrates how a new class can be defined to extend an existing class. We show one example each using an abstract and a concrete base class. We then repeat this by having a class implement an interface.
- Debugging is illustrated in a separate video. Here, we use JUnit tests to pinpoint the offending method and code line, and then use breakpoints to narrow down the possible lines of code. The tutorial also shows how variables can be inspected and how (changed) method code can be re-run.
5. Summary and Conclusions
Acknowledgements
References
- McCracken, M.; Almstrum, V.; Diaz, D.; Guzdial, M.; Hagan, D.; Kolikant, Y.B.D.; Laxer, C.; Thomas, L.; Utting, I.; Wilusz, T. A multi-national, multi-institutional study of assessment of programming skills of first-year CS students. SIGCSE Bull. 2001, 33, 125–180. [Google Scholar] [CrossRef]
- Pillay, N.; Jugoo, V.R. An investigation into student characteristics affecting novice programming performance. SIGCSE Bull. 2005, 37, 107–110. [Google Scholar] [CrossRef]
- Kouznetsova, S. Using BlueJ and Blackjack to teach object-oriented design concepts in CS1. J. Comput. Small Coll. 2007, 22, 49–55. [Google Scholar]
- Kölling, M. Using BlueJ to introduce programming. In Reflections on the Teaching of Programming: Methods and Implementations; Springer-Verlag: Berlin, Heidelberg, Germany, 2008; pp. 98–115. [Google Scholar]
- Barnes, D.J.; Kölling, M. Objects First with Java: A Practical Introduction Using BlueJ, 4th ed.; Prentice Hall: Upper Saddle River, NJ, USA, 2008. [Google Scholar]
- Dann, W.P.; Cooper, S.; Pausch, R. Learning to Program with Alice; Prentice Hall: Upper Saddle River, NJ, USA, 2006. [Google Scholar]
- Rodger, S.H.; Hayes, J.; Lezin, G.; Qin, H.; Nelson, D.; Tucker, R.; Lopez, M.; Cooper, S.; Dann, W.; Slater, D. Engaging middle school teachers and students with Alice in a diverse set of subjects. In SIGCSE ’09: Proceedings of the 40th ACM Technical Symposium on Computer Science Education; ACM: New York, NY, USA, 2009; pp. 271–275. [Google Scholar]
- Page, R.; Eastlund, C.; Felleisen, M. Functional programming and theorem proving for undergraduates: a progress report. In FDPE ’08: Proceedings of the 2008 International Workshop on Functional and Declarative Programming in Education; ACM: New York, NY, USA, 2008; pp. 21–30. [Google Scholar]
- Bieniusa, A.; Degen, M.; Heidegger, P.; Thiemann, P.; Wehr, S.; Gasbichler, M.; Sperber, M.; Crestani, M.; Klaeren, H.; Knauel, E. HtDP and DMDA in the battlefield: A case study in first-year programming instruction. In FDPE ’08: Proceedings of the 2008 International Workshop on Functional and Declarative Programming in Education; ACM: New York, NY, USA, 2008; pp. 1–12. [Google Scholar]
- Felleisen, M.; Findler, R.B.; Flatt, M.; Krishnamurthi, S. How to Design Programs—An Introduction to Programming and Computing; MIT Press: Cambridge, MA, USA, 2001. [Google Scholar]
- Gallant, R.J.; Mahmoud, Q.H. Using Greenfoot and a Moon Scenario to teach Java programming in CS1. In ACM-SE 46: Proceedings of the 46th Annual Southeast Regional Conference; ACM: New York, NY, USA, 2008; pp. 118–121. [Google Scholar]
- Al-Bow, M.; Austin, D.; Edgington, J.; Fajardo, R.; Fishburn, J.; Lara, C.; Leutenegger, S.; Meyer, S. Using Greenfoot and games to teach rising 9th and 10th grade novice programmers. In Sandbox ’08: Proceedings of the 2008 ACM SIGGRAPH Symposium on Video Games; ACM: New York, NY, USA, 2008; pp. 55–59. [Google Scholar]
- Kölling, M. Greenfoot: a highly graphical IDE for learning object-oriented programming. In ITiCSE ’08: Proceedings of the 13th Annual Conference on Innovation and Technology in Computer Science Education; ACM: New York, NY, USA, 2008; pp. 327–327. [Google Scholar]
- Academic Java. Availible online: http://academicjava.com/ (accessed on 25 March 2010).
- Moreno, A.; Myller, N.; Sutinen, E.; Ben-Ari, M. Visualizing Programs with Jeliot 3. In Proceedings of the Working Conference on Advanced Visual Interfaces (AVI 2004); ACM Press: New York, NY, USA, 2004; pp. 373–380. [Google Scholar]
- Demetrescu, C.; Finocchi, I. A portable virtual machine for program debugging and directing. In SAC ’04: Proceedings of the 2004 ACM Symposium on Applied Computing; ACM: New York, NY, USA, 2004; pp. 1524–1530. [Google Scholar]
- Rößling, G.; Freisleben, B. Animal: A System for Supporting Multiple Roles in Algorithm Animation. J. Visual Lang. Computing 2002, 13, 341–354. [Google Scholar] [CrossRef]
- Naps, T. JHAVÉ – Addressing the Need to Support Algorithm Visualization with Tools for Active Engagement. IEEE Comput. Graph. Appl. 2005, 25, 49–55. [Google Scholar] [CrossRef] [PubMed]
- Rice IV, W.H.; Nash, S.S. Moodle 1.9 Teaching Techniques - Creative ways to build powerful and effective online courses; Packt Publishing: Birmingham, UK, 2010. [Google Scholar]
- Joy, M.; Griffiths, N.; Boyatt, R. The Boss online submission and assessment system. J. Educ. Resour. Comput. 2005, 5, 2. [Google Scholar] [CrossRef]
- Higgins, C.A.; Gray, G.; Symeonidis, P.; Tsintsifas, A. Automated assessment and experiences of teaching programming. J. Educ. Resour. Comput. 2005, 5, 5. [Google Scholar] [CrossRef]
- Edwards, S.H.; Pérez-Quiñones, M.A. Experiences using test-driven development with an automated grader. J. Comput. Small Coll. 2007, 22, 44–50. [Google Scholar]
- Rößling, G.; Hartte, S. WebTasks: Online Programming Exercises Made Easy. In Proceedings of the 13th Annual SIGCSE Conference on Innovation and Technology in Computer Science Education (ITiCSE 2008); ACM Press: New York, NY, USA, 2008; p. 363. [Google Scholar]
- Wick, M.; Stevenson, D.; Wagner, P. Using testing and JUnit across the curriculum. In SIGCSE ’05: Proceedings of the 36th SIGCSE Technical Symposium on Computer Science Education; ACM: New York, NY, USA, 2005; pp. 236–240. [Google Scholar]
- Object Mentor. JUnit.org Resources for Test Driven Development. Availible online: http://www.junit.org (accessed on 25 March 2010).
- Burn, O. Checkstyle 5.0. Availible online: http://checkstyle.sourceforge.net/ (accessed on 25 March 2010).
- Naps, T.L.; Rößling, G.; Almstrum, V.; Dann, W.; Fleischer, R.; Hundhausen, C.; Korhonen, A.; Malmi, L.; McNally, M.; Rodger, S.; Velázquez-Iturbide, J.Á. Exploring the Role of Visualization and Engagement in Computer Science Education. ACM SIGCSE Bullet. 2003, 35, 131–152. [Google Scholar] [CrossRef]
- Grissom, S.; McNally, M.; Naps, T.L. Algorithm Visualization in Computer Science Education: Comparing Levels of Student Engagement. In Proceedings of the First ACM Symposium on Software Visualization; ACM Press: New York, NY, USA, 2003; pp. 87–94. [Google Scholar]
- Urquiza-Fuentes, J.; Velázquez-Iturbide, J.A. A survey of successful evaluations of program visualization and algorithm animation systems. Trans. Comput. Educ. 2009, 9, 1–21. [Google Scholar] [CrossRef]
- Rößling, G. Animal-Farm: An Extensible Framework for Algorithm Visualization; VDM Verlag Dr. Müller: Saarbrücken, Germany, 2008. [Google Scholar]
- Rößling, G.; Gliesche, F.; Jajeh, T.; Widjaja, T. Enhanced Expressiveness in Scripting Using AnimalScript V2. In Proceedings of the Third Program Visualization Workshop, Warwick, UK, July 2004; pp. 15–19.
- Rößling, G.; Mehlhase, S.; Pfau, J. A Java API for Creating (not only) AnimalScript. Electron. Note Theor. Comput. Sci. 2009, 224, 15–25. [Google Scholar] [CrossRef]
- Rößling, G.; Ackermann, T. A Framework for Generating AV Content on-the-fly. Electr. Note Theor. Comput. Sci. 2007, 178, 23–31. [Google Scholar] [CrossRef]
- Rößling, G.; Naps, T.; Hall, M.S.; Karavirta, V.; Kerren, A.; Leska, C.; Moreno, A.; Oechsle, R.; Rodger, S.H.; Urquiza-Fuentes, J.; Velázquez-Iturbide, J.Á. Merging Interactive Visualizations with Hypertextbooks and Course Management. SIGCSE Bullet. inroad 2006, 38, 166–181. [Google Scholar] [CrossRef]
- Rößling, G.; Vellaramkalayil, T. A Visualization-Based Computer Science Hypertextbook Prototype. ACM Trans. Comput. Educat. 2009, 9, 1–13. [Google Scholar] [CrossRef]
- Aman, J.; Wilson, B.; Shirvani, S. Maintaining lecture context in a blended course. J. Comput. Small Coll. 2007, 23, 56–63. [Google Scholar]
© 2010 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open-access article distributed under the terms and conditions of the Creative Commons Attribution license ( http://creativecommons.org/licenses/by/3.0/).
Share and Cite
Rößling, G. A Family of Tools for Supporting the Learning of Programming. Algorithms 2010, 3, 168-182. https://doi.org/10.3390/a3020168
Rößling G. A Family of Tools for Supporting the Learning of Programming. Algorithms. 2010; 3(2):168-182. https://doi.org/10.3390/a3020168
Chicago/Turabian StyleRößling, Guido. 2010. "A Family of Tools for Supporting the Learning of Programming" Algorithms 3, no. 2: 168-182. https://doi.org/10.3390/a3020168