Experiences from placing Stack Overflow at the core of an intermediate programming course

Objectivist methodologies do not align well the learning requirements of modern‐day computer science and software engineering, and major universities are moving from the old standards towards “learning by doing” approaches. We discuss the redesign of an intermediate Computer Programming course taught at the University of Vigo (Spain), seeking to promote question‐and‐answer websites for programmers as the main source of reference for the students, and turning the teacher into a permanent observer who delivers pertinent advice. The change of programming language, from Java to JavaScript, is also justified. A comparative experiment was conducted with 126 undergraduate students in Vigo (Spain) and Cuenca (Ecuador), revealing advantages in terms of understanding (22% increase in comprehension of new programming constructs), problem‐solving capabilities (16% improvement in correct operation of the developed systems) and even greater clarity in communication and documentation (53% better), along with positive perceptions by the students (19% increase).

[1]  Mordechai Ben-aft,et al.  Constructivism in computer science education , 1998, SIGCSE '98.

[2]  Neena Thota,et al.  Holistic approach to learning and teaching introductory object-oriented programming , 2010, Comput. Sci. Educ..

[3]  A. Cain,et al.  Toward constructive alignment with portfolio assessment for introductory programming , 2012, Proceedings of IEEE International Conference on Teaching, Assessment, and Learning for Engineering (TALE) 2012.

[4]  Jens Bennedsen,et al.  Revealing the programming process , 2005, SIGCSE '05.

[5]  Yifat Ben-David Kolikant Gardeners and Cinema Tickets: High School Students' Preconceptions of Concurrency , 2001, Comput. Sci. Educ..

[6]  G. Boulton‐Lewis Teaching for quality learning at university , 2008 .

[7]  F. Deek,et al.  Pedagogical Changes in the Delivery of the First‐Course in Computer Science: Problem Solving, Then Programming , 1998 .

[8]  Luca Cardelli Bad engineering properties of object-orient languages , 1996, CSUR.

[9]  Maria Adler,et al.  Science and human behavior , 2017 .

[10]  Michael Kölling,et al.  The Problem of Teaching Object-Oriented Programming, Part I: Languages , 1999, J. Object Oriented Program..

[11]  Helene Gelderblom,et al.  A blended learning approach for teaching computer programming: design for large classes in Sub-Saharan Africa , 2014, Comput. Sci. Educ..

[12]  John Paxton,et al.  Live programming as a lecture technique , 2002 .

[13]  J. Biggs Enhancing teaching through constructive alignment , 1996 .

[14]  Maura Borrego,et al.  Constructive Alignment of Interdisciplinary Graduate Curriculum in Engineering and Science: An Analysis of Successful IGERT Proposals , 2010 .

[15]  Wu-Yuin Hwang,et al.  A pilot study of cooperative programming learning behavior and its relationship with students' learning performance , 2012, Comput. Educ..

[16]  Andrew Cain,et al.  Focusing on learning through constructive alignment with task-oriented portfolio assessment , 2018 .

[17]  J. L. Gould Ethological and Comparative Perspectives on Honey Bee Learning , 1993 .

[18]  Lauri Malmi,et al.  A survey of literature on the teaching of introductory programming , 2007, ITiCSE-WGR '07.

[19]  Kleanthis Thramboulidis A Constructivism-Based Approach to Teach Object- Oriented Programming , 2003 .

[20]  Anthony Robins,et al.  Learning and Teaching Programming , 2016 .

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

[22]  Jocelyn Armarego,et al.  Constructive alignment in SE education: aligning to what? , 2009 .

[23]  Mehdi Khosrowpour,et al.  Emerging Trends And Challenges in Information Technology Management , 2006 .

[24]  Peter Seibel,et al.  Coders at work , 2009 .

[25]  Alessio Gaspar,et al.  An experience report on improving constructive alignment in an introduction to programming , 2012 .

[26]  C. Fosnot Constructivism : theory, perspectives, and practice , 1996 .

[27]  Heidi Ellis Software engineering: effective teaching and learning approaches and practices , 2007, SOEN.

[28]  M. Brussoni,et al.  The perils of overprotective parenting: fathers' perspectives explored. , 2013, Child: care, health and development.

[29]  Daiva Vitkute-Adzgauskiene,et al.  Problems in Choosing Tools and Methods for Teaching Programming , 2012, Informatics Educ..

[30]  Scott Grissom,et al.  An Empirical Evaluation of Using Constructive Classroom Activities to Teach Introductory Programming , 2001, Comput. Sci. Educ..

[31]  Peter Seibel Coders at Work: Reflections on the Craft of Programming , 2009 .

[32]  Claus Brabrand,et al.  Constructive Alignment for Teaching Model-Based Design for Concurrency , 2008, Trans. Petri Nets Other Model. Concurr..

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

[34]  Marc J. Rubin The effectiveness of live-coding to teach introductory programming , 2013, SIGCSE '13.

[35]  Tom Wulf,et al.  Constructivist approaches for teaching computer programming , 2005, SIGITE '05.