A structured approach to problem solving in CS1

Programming teaching is a complex task, mainly because of the students’ difficulties on building structured solutions and also on problems interpretation. At introductory courses, we need to develop on students, programming skills to help them to apply their knowledge effectively on solving problems. This led us to use an approach that will be followed from the problem presentation until the development of a properly structured program. Its application in CS1/2, which we have taught in recent years, allowed an increase in approval rating and in the quality of the solutions presented, it also has proved to be adapted to the needs of teaching programming with different imperative programming languages. In this work we illustrate the approach with a simple example. We also present an evaluation of the methodology done with a population of 130 students at introductory courses using C and Java languages.

[1]  Jeremy D. Frens,et al.  Object centered design for Java: teaching OOD in CS-1 , 2003, SIGCSE.

[2]  Miguel Ulloa,et al.  Teaching and learning computer programming: a survey of student problems, teaching methods, and automated instructional tools , 1980, SGCS.

[3]  John T. Stasko,et al.  Empirically evaluating the use of animations to teach algorithms , 1994, Proceedings of 1994 IEEE Symposium on Visual Languages.

[4]  Leen-Kiat Soh Incorporating an intelligent tutoring system into CS1 , 2006, SIGCSE '06.

[5]  Danijel Radošević,et al.  New Approaches and Tools in Teaching Programming , 2009 .

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

[7]  Joel C. Adams Object-centered design: a five-phase introduction to object-oriented programming in CS1–2 , 1996, SIGCSE '96.

[8]  Carmen Morgado,et al.  Presentation Problem in CS1 courses. , 2012, ITiCSE 2012.

[9]  Philip J. Burton,et al.  Teaching programming in the OOP era , 2003, SGCS.

[10]  Kirsti Ala-Mutka,et al.  A study of the difficulties of novice programmers , 2005, ITiCSE '05.

[11]  Janet Rountree,et al.  Learning and Teaching Programming: A Review and Discussion , 2003, Comput. Sci. Educ..

[12]  Mark Guzdial,et al.  Developing a validated assessment of fundamental CS1 concepts , 2010, SIGCSE.

[13]  Elizabeth Boese,et al.  ActionScript: a gentle introduction to programming , 2006 .

[14]  Atanas Radenski Digital support for abductive learning in introductory computing courses , 2007, SIGCSE '07.

[15]  Seppo Nevalainen,et al.  An experiment on short-term effects of animated versus static visualization of operations on program perception , 2006, ICER '06.

[16]  Carsten Schulte,et al.  What do teachers teach in introductory programming? , 2006, ICER '06.

[17]  Sandeep Mitra,et al.  An early software engineering approach to teaching cs1, cs2 and ai , 2008, SIGCSE '08.

[18]  Caitlin Kelleher,et al.  Lowering the barriers to programming: A taxonomy of programming environments and languages for novice programmers , 2005, CSUR.

[19]  Randy Pausch,et al.  Learning To Program With Alice , 2004 .

[20]  László Zsakó,et al.  Methods of teaching programming , 2003 .

[21]  Micaela Esteves,et al.  OOP-Anim, a system to support learning of basic object oriented programming concepts , 2003, CompSysTech '03.

[22]  Chris Beaumont,et al.  Programming, disciplines and methods adopted at Liverpool Hope University , 2007 .

[23]  Peter Brusilovsky,et al.  Mini-languages: a way to learn programming principles , 2004, Education and Information Technologies.

[24]  Mark Guzdial,et al.  From science to engineering , 2011, Commun. ACM.

[25]  Jr. E. Giangrande CS1 programming language options , 2007 .

[26]  Haibin Zhu,et al.  Methodology first and language second: a way to teach object-oriented programming , 2003, OOPSLA '03.