Event-driven Programming in Programming Education

During the past two decades, event-driven programming (EDP) has emerged as a central and almost ubiquitous concept in modern software development: Graphical user interfaces are self-evident in most mobile and web-based applications, as well as in many embedded systems, and they are most often based on reacting to events. To facilitate both teaching practice and research in programming education, this mapping review seeks to give an overview of the related knowledge that is already available in conference papers and journal articles. Starting from early works of the 1990s, we identified 105 papers that address teaching practices, present learning resources, software tools or libraries to support learning, and empirical studies related to EDP. We summarize the publications, their main content, and findings. While most studies focus on bachelor’s level education in universities, there has been substantial work in K-12 level, as well. Few courses address EDP as their main content—rather it is most often integrated with CS1, CS2, or computer graphics courses. The most common programming languages and environments addressed are Java, App Inventor, and Scratch. Moreover, very little of deliberate experimental scientific research has been carried out to explicitly address teaching and learning EDP. Consequently, while so-called experience reports, tool papers, and anecdotal evidence have been published, this theme offers a wide arena for empirical research in the future. At the end of the article, we suggest a number of directions for future research.

[1]  Ken Halland,et al.  Reflections by teachers learning to program , 2003 .

[2]  Sharon M. Tuttle i YO quiero Java!: teaching Java as a second programming language , 2001 .

[3]  Hiroshi Ishii,et al.  A tangible interface for controlling robotic toys , 2000, CHI Extended Abstracts.

[4]  Scott Grissom A pedagogical framework for introducing Java I/O in CS1 , 2000, SGCS.

[5]  Deborah A. Fields,et al.  The programmers’ collective: fostering participatory culture by making music videos in a high school Scratch coding workshop , 2015, Interact. Learn. Environ..

[6]  Eric Roberts,et al.  A portable graphics library for introductory CS , 2013, ITiCSE '13.

[7]  Rosalee Wolfe New possibilities in the introductory graphics course for computer science majors , 1999, COMG.

[8]  Randy F. Pausch,et al.  Teaching objects-first in introductory computer science , 2003, SIGCSE.

[9]  Valentina Dagiene,et al.  From Android games to coding in C—An approach to motivate novice engineering students to learn programming: A case study , 2018, Comput. Appl. Eng. Educ..

[10]  Diana Franklin,et al.  Starting from Scratch: Outcomes of Early Computer Science Learning Experiences and Implications for What Comes Next , 2018, ICER.

[11]  Magy Seif El-Nasr,et al.  Learning through game modding , 2006, Comput. Entertain..

[12]  Katerina Perdikuri Students' Experiences from the use of MIT App Inventor in classroom , 2014, Panhellenic Conference on Informatics.

[13]  Thomas P. Murtagh Squint: barely visible library support for CS1 , 2007, SIGCSE '07.

[14]  H. James Nelson,et al.  Exploring the Difficulties of Learning Object-Oriented Techniques , 1997, J. Manag. Inf. Syst..

[15]  Kim B. Bruce,et al.  A library to support a graphics-based object-first approach to CS 1 , 2001, SIGCSE '01.

[16]  Mordechai Ben-Ari,et al.  Enhancing Robot Programming with Visual Feedback and Augmented Reality , 2015, ITiCSE.

[17]  Martin Osborne,et al.  Easy, realistic GUIs with Java in CS1 , 2000 .

[18]  Mark Guzdial,et al.  Mediating programming through chat for the OLPC , 2009, CHI Extended Abstracts.

[19]  Lubomir Salanci Object-Oriented Programming at Upper Secondary School for Advanced Students , 2006, ISSEP.

[20]  J. Paul Gibson,et al.  RoboCode & problem-based learning: a non-prescriptive approach to teaching programming , 2006, ITICSE '06.

[21]  Hisham M. Haddad,et al.  Instrumentation: a multi-science integrated sequence , 2000, SIGCSE '00.

[22]  Anthony V. Robins,et al.  My Program is Correct But it Doesn t Run: A Preliminary Investigation of Novice Programmers Problems , 2005, ACE.

[23]  Rudolf Pecinovský,et al.  Let's modify the objects-first approach into design-patterns-first , 2006, ITICSE '06.

[24]  Kim B. Bruce,et al.  Resolved: objects early has failed , 2005, SIGCSE '05.

[25]  Carl Alphonce,et al.  Using graphics to support the teaching of fundamental object-oriented principles in CS1 , 2003, OOPSLA '03.

[26]  Pearl Brereton,et al.  Evidence-Based Software Engineering and Systematic Reviews , 2015 .

[27]  Amruth N. Kumar,et al.  Collateral learning of mobile computing: an experience report , 2018, ITiCSE.

[28]  Dianne P. Bills,et al.  The role of programming in IT , 2005, SIGITE '05.

[29]  Barry Burd,et al.  Educating for mobile computing: addressing the new challenges , 2012, ITiCSE-WGR '12.

[30]  Laszlo Szuecs Creating Windows applications using Borland's OWL classes , 1996, SIGCSE '96.

[31]  Roy D. Pea,et al.  Using a discourse-intensive pedagogy and android's app inventor for introducing computational concepts to middle school students , 2013, SIGCSE '13.

[32]  Soleda Leung,et al.  How to creatively communicate Microsoft.NET technologies in the IT curriculum , 2003, CITC4 '03.

[33]  Yasmin B. Kafai,et al.  Programming in the wild: trends in youth computational participation in the online scratch community , 2014, WiPSCE.

[34]  Jessica Miller,et al.  A "CS 1.5" introduction to web programming , 2009, SIGCSE '09.

[35]  Kim B. Bruce Controversy on how to teach CS 1: a discussion on the SIGCSE-members mailing list , 2004, SGCS.

[36]  Mark Sherman User models of reasoning and understanding in app inventor , 2014, ICER '14.

[37]  Sylvia Stuurman,et al.  The design of mobile apps: what and how to teach? , 2014, CSERC.

[38]  Sue Fitzgerald,et al.  Debugging: a review of the literature from an educational perspective , 2008, Comput. Sci. Educ..

[39]  R. Benjamin Shapiro,et al.  BlockyTalky: New programmable tools to enable students' learning networks , 2018, Int. J. Child Comput. Interact..

[40]  László Böszörményi,et al.  Introduction OO Design and Programming with Special Emphasis on Concrete Examples , 1999, ECOOP Workshops.

[41]  Ian Utting Problems in the initial teaching of programming using Java: the case for replacing J2SE with J2ME , 2006, ITICSE '06.

[42]  Vibha Sazawal,et al.  Chief Chefs of Z to Alloy: Using a Kitchen Example to Teach Alloy with Z , 2009, TFM.

[43]  Yu Guo,et al.  Frogs to Think with: Improving Students' Computational Thinking and Understanding of Evolution in A Code-First Learning Environment , 2016, IDC.

[44]  Leen-Kiat Soh,et al.  A Placement Test for Computer Science: Design, Implementation, and Analysis , 2006, Comput. Sci. Educ..

[45]  Fu-Shing Sun,et al.  Teaching Design Patterns Through Computer Game Development , 2008, JERC.

[46]  Andrew Mertz,et al.  Using the ACM Java libraries in CS 1 , 2008 .

[47]  Jonathan de Halleux,et al.  MakeCode and CODAL: intuitive and efficient embedded systems programming for education , 2018, LCTES.

[48]  Michael E. Caspersen,et al.  Frameworks in CS1: a different way of introducing event-driven programming , 2002, ITiCSE '02.

[49]  Randy Pausch,et al.  Alice: a 3-D tool for introductory programming concepts , 2000 .

[50]  Ok-Kyoon Ha,et al.  A Taxonomy of Concurrency Bugs in Event-Driven Programs , 2011, FGIT-ASEA/DRBC/EL.

[51]  E. Whitehead,et al.  Introduction to game design in the large classroom , 2008, GDCSE.

[52]  Jogesh K. Muppala Teaching embedded software concepts using Android , 2011, WESE '11.

[53]  Michael H. Goldwasser,et al.  A graphics package for the first day and beyond , 2009, SIGCSE '09.

[54]  Scott T. Leutenegger A CS1 to CS2 bridge class using 2D game programming , 2006 .

[55]  Peter Shirley,et al.  A top-down approach to teaching introductory computer graphics , 2003, SIGGRAPH '03.

[56]  Myles F. McNally Using image processing as a laboratory theme in CS1 and CS2 (poster) , 1998, ITiCSE '98.

[57]  Kim B. Bruce,et al.  Introducing concurrency in CS 1 , 2010, SIGCSE.

[58]  Gabriela Marín Raventós,et al.  Effects of oral metaphors and allegories on programming problem solving , 2018, Comput. Appl. Eng. Educ..

[59]  Ilenia Fronza,et al.  Teaching Software Design Engineering Across the K-12 Curriculum: Using Visual Thinking and Computational Thinking , 2016, SIGITE.

[60]  Ivan Zupic,et al.  Bibliometric Methods in Management and Organization , 2014 .

[61]  Wu-chun Feng,et al.  Parallel Programming with Pictures in a Snap! , 2016, 2016 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW).

[62]  David L. Mills,et al.  Teaching objects first using Lego Robots: a Tri-P-LETS initiative , 2006 .

[63]  Brendan Burns A new approach to computer science in the liberal arts , 2005 .

[64]  Jeffrey D. Helm,et al.  A required mechanical engineering course in microprocessors , 1995 .

[65]  Michael Conlon,et al.  Engaging students in programming fundamentals using alice 2.0 , 2008, SIGITE '08.

[66]  Linda M. Seiter,et al.  Modeling the learning progressions of computational thinking of primary grade students , 2013, ICER.

[67]  Robert B. Allen,et al.  The Impact of Different Teaching Approaches and Languages on Student Learning of Introductory Programming Concepts , 2016, ACM Trans. Comput. Educ..

[68]  Christopher Scaffidi,et al.  Skill Progression Demonstrated by Users in the Scratch Animation Environment , 2012, Int. J. Hum. Comput. Interact..

[69]  Wanda Dann,et al.  Integrating console and event-driven models in CS1 , 1999, SIGCSE '99.

[70]  Elliot B. Koffman,et al.  simpleIO: a Java package for novice interactive and graphics programming , 1999, ITiCSE '99.

[71]  Marian Sherwood Access in Seattle , 1996, SG3C.

[72]  Reza Kamali,et al.  A different approach of teaching introductory visual basic course , 2004, CITC5 '04.

[73]  J. Bishop,et al.  Developing principles of GUI programming using views , 2004, SIGCSE '04.

[74]  David Weintrop,et al.  The CCL-Parallax Programmable Badge: Learning with Low-Cost, Communicative Wearable Computers , 2015, SIGITE.

[75]  Scott Rixner,et al.  An environment for learning interactive programming , 2014, SIGCSE '14.

[76]  Joint Task Force on Computing Curricula Computer Science Curricula 2013: Curriculum Guidelines for Undergraduate Degree Programs in Computer Science , 2013 .

[77]  Eric Roberts,et al.  Designing a Java graphics library for CS 1 , 1998, ITiCSE '98.

[78]  Richard Noss,et al.  Playing Beowulf: Bridging computational thinking, arts and literature through game-making , 2017, Int. J. Child Comput. Interact..

[79]  Andrey Soares Reflections on Teaching App Inventor for Non-Beginner Programmers: Issues, Challenges and Opportunities. , 2014 .

[80]  Kim B. Bruce,et al.  Event-driven programming is simple enough for CS1 , 2001, ITiCSE '01.

[81]  David Wolber,et al.  Events-first programming in APP inventor , 2014 .

[82]  ZanderCarol,et al.  Assessing the ripple effect of CS1 language choice , 2000 .

[83]  Nancy L. Martin,et al.  Teaching Non-Beginner Programmers with App Inventor: Survey Results and Implications , 2015 .

[84]  Peter L. Liu Using open-source robocode as a Java programming assignment , 2008, SGCS.

[85]  Peter Shirley,et al.  Experiencing aspects of games programming in an introductory computer graphics class , 2007, SIGCSE '07.

[86]  Derek Riley,et al.  Using mobile phone programming to teach Java and advanced programming to computer scientists , 2012, SIGCSE '12.

[87]  Saquib Razak,et al.  From Alice to Python. Introducing Text-based Programming in Middle Schools , 2016, ITiCSE.

[88]  Stephen Cooper,et al.  The Design of Alice , 2010, TOCE.

[89]  James P. Cohoon,et al.  EcoSim: a language and experience teaching parallel programming in elementary school , 2012, SIGCSE '12.

[90]  Martin Smith,et al.  JavaScript as a first programming language for multimedia students , 1998, ITiCSE '98.

[91]  Kathi Fisler,et al.  Programming Paradigms and Beyond , 2019, The Cambridge Handbook of Computing Education Research.

[92]  Tom Rogers,et al.  No sensor left behind: enriching computing education with mobile devices , 2013, SIGCSE '13.

[93]  Michail N. Giannakos,et al.  Using Eye-Tracking to Unveil Differences Between Kids and Teens in Coding Activities , 2017, IDC.

[94]  R.R. Lang,et al.  Introducing high school students to event driven programming , 1999, FIE'99 Frontiers in Education. 29th Annual Frontiers in Education Conference. Designing the Future of Science and Engineering Education. Conference Proceedings (IEEE Cat. No.99CH37011.

[95]  Martin L. Barrett,et al.  A hypertext module for teaching user interface design , 1993, SIGCSE '93.

[96]  Henry Sowizral,et al.  Adapting computer graphics curricula to changes in graphics , 2000, Comput. Graph..

[97]  Diana Franklin,et al.  Initialization in Scratch: Seeking Knowledge Transfer , 2016, SIGCSE.

[98]  Richard Wicentowski,et al.  Using image processing projects to teach CS1 topics , 2005, SIGCSE '05.

[99]  Benjamin Xiang-Yu Xie,et al.  Progression of computational thinking skills demonstrated by App Inventor users , 2016 .

[100]  Mark Sherman,et al.  The assessment of mobile computational thinking , 2015 .

[101]  Rocky Ross,et al.  Resources for next generation introductory CS courses: report of the ITiCSE'99 working group on resources for the next generation CS 1 course , 1999, ITiCSE-WGR '99.

[102]  Stephen Schaub Teaching CS1 with web applications and test-driven development , 2009, SGCS.

[103]  Deborah A. Fields,et al.  Youth Computational Participation in the Wild , 2017, ACM Trans. Comput. Educ..

[104]  Soojin Kim,et al.  Adapting higher-order list operators for blocks programming , 2015, 2015 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[105]  Richard Rasala,et al.  Java power tools: model software for teaching object-oriented design , 2001, SIGCSE '01.

[106]  Juha Sorva,et al.  Classifying the tools of contextualized programming education and forms of media computation , 2016, Koli Calling.

[107]  Stuart Reges,et al.  Back to basics in CS1 and CS2 , 2006, SIGCSE '06.

[108]  Kim B. Bruce,et al.  Event-driven programming facilitates learning standard programming concepts , 2004, OOPSLA '04.

[109]  Antonio Abad Civit Balcells,et al.  A game-based approach to the teaching of object-oriented programming languages , 2014, Comput. Educ..

[110]  Lauren E. Margulieux,et al.  Review of measurements used in computing education research and suggestions for increasing standardization , 2019, Comput. Sci. Educ..

[111]  Diana Franklin,et al.  Ecological Design-Based Research for Computer Science Education: Affordances and Effectivities for Elementary School Students , 2018, Cognition and Instruction.

[112]  Sue Sentance,et al.  .NET gadgeteer: a new platform for K-12 computer science education , 2013, SIGCSE '13.

[113]  Susan H. Rodger,et al.  The ACM java task force: final report , 2006, SIGCSE '06.

[114]  Timothy V. Fossum,et al.  Events not equal to GUIs , 2004, SIGCSE '04.

[115]  Paulo Martins,et al.  Using Second Life in Programming's Communities of Practice , 2009, CRIWG.

[116]  Michael de Raadt Introductory programming in a web context , 2010, ACE '10.

[117]  Yingjun Cao,et al.  Developing Assessments to Determine Mastery of Programming Fundamentals , 2017, ITiCSE.

[118]  Cynthia Breazeal,et al.  Designing a relational social robot toolkit for preschool children to explore computational concepts , 2015, IDC.

[119]  Peter Chalk Java in the computing curricula , 1999, SIGP.

[120]  David M. Arnow XDP: a simple library for teaching a distributed programming module , 1995, SIGCSE '95.

[121]  Alice E. Fischer That's neat -- how do i do it?: demonstration , 2011 .

[122]  Diana Franklin,et al.  Assessment of computer science learning in a scratch-based outreach program , 2013, SIGCSE '13.

[123]  James M. Purtilo,et al.  Experiences with CCB-Directed Projects in the Classroom , 1994, CSEE.

[124]  Richard T. Guy,et al.  Mobile apps for the greater good: a socially relevant approach to software engineering , 2012, SIGCSE '12.

[125]  Maria J Grant,et al.  A typology of reviews: an analysis of 14 review types and associated methodologies. , 2009, Health information and libraries journal.

[126]  Kim B. Bruce,et al.  Why structural recursion should be taught before arrays in CS 1 , 2005, SIGCSE '05.

[127]  Mark F. Russo DoodlePad: next-gen event-driven programming for CS1 , 2017 .

[128]  Jun Hu,et al.  AdMoVeo: A Robotic Platform for Teaching Creative Programming to Designers , 2009, Edutainment.

[129]  Sylvia Stuurman,et al.  Beautiful JavaScript: how to guide students to create good and elegant code , 2014, CSERC.

[130]  P. Maes,et al.  subTextile: Reduced event-oriented programming system for sensate actuated materials , 2007, IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC 2007).

[131]  Matthew E Falagas,et al.  Comparison of PubMed, Scopus, Web of Science, and Google Scholar: strengths and weaknesses , 2007, FASEB journal : official publication of the Federation of American Societies for Experimental Biology.

[132]  Theo Pavlidis,et al.  How to teach graphics using X (and live to tell about it) , 1996, COMG.

[133]  Mira Mezini,et al.  EScala: modular event-driven object interactions in scala , 2011, AOSD '11.

[134]  Mark Goadrich Incorporating tangible computing devices into CS1 , 2014 .

[135]  Brian C. Ladd,et al.  The curse of Monkey Island: holding the attention of students weaned on computer games , 2006 .

[136]  Acm Ieee-Cs Joint Curriculum Task Force Computing curricula 2001, computer science : final report, December 2001 , 2002 .

[137]  Michael P. Conlon,et al.  Using Alice 2.0 as a first language , 2009 .

[138]  Lisa Quirke,et al.  Combining Big Data and Thick Data Analyses for Understanding Youth Learning Trajectories in a Summer Coding Camp , 2016, SIGCSE.

[139]  David Hovemeyer,et al.  Using terminal window graphics in CS1 , 2009 .

[140]  Haodong Wang Engendering excitement and interest in computer science courses by using emerging wireless sensors , 2014 .

[141]  Ricardo Jiménez-Peris,et al.  Adding breadth to CS1 and CS2 courses through visual and interactive programming projects , 1999, SIGCSE '99.