Hu, M., Winikoff, M. & Cranefield, S. (2012). Teaching novice programming using goals and plans in a visual notation. In de Raadt, M. & Carbone, A. Eds. Proceedings of the 14th Annual Australasian Computing Education Conference (pp. 43-52). New South Wales: Australian Computer Society Inc.
In the past, introductory programming courses have suffered from high rates of failure and/or dropouts. The authors of this paper seek to develop a more effective method of teaching programming based on three key ideas: using a visual programming language, using "goals" and "plans" to develop programming strategies, and having a well-defined process.
The authors define goals as "certain objective[s] programs must achieve in order to solve a problem" while "plans" are described as "[corresponding] to fragments of code that perform actions to achieve a goal".
The paper cites another study by Winslow (1996), who observed "novice programmers know the syntax and semantics of individual statements, but they do not know how to combine these features into valid programs." This is common among programming courses; students are able to grasp the basic semantics, etc. but have a harder time understanding how these fundamentals can be applied.
The authors attempt to develop a model that is based on a "process that students can follow, along with a structured means of representing the parts of the solution". The programming language they choose to test their model with is n00b-friendly Scratch, which I wrote about last week. Scratch has a feature called BYOB, or Build Your Own Block, with blocks categorized as input, output, or processing blocks, which are essentially the building blocks of any program. These blocks all contain different features within them, but the beauty is you can build programs in much the same way as you would a puzzle. Blocks fit into other valid blocks, and in this way users never have to worry about getting coding semantics wrong (must be nice).
The blocks used in this particular study come from an existing "visual plan library" designed to support "novices in designing and implementing their programs".
After implementing their model in a beginning programming class, the authors conclude that it "has the potential to significantly improve learning of programming skills" due to its "detailed process that guides novices through the process of developing a program using goals and plans" and the decision to employ a visual programming language (Scratch), which allows for "earlier feedback and support testing and debugging".
This is the second article I've done on teaching programming, so I'm wondering if other people think that a basic understanding of coding will be a core competency for students and those entering the job market in, say, 10 years. The job market is flooded with coding jobs of various skill levels, and if that's the trend, schools should be making more of a push to get students familiar with the fundamentals of programming. Presently, the bar is lower than ever for anyone who wants to learn who to code. Does anyone have other examples of beginner programming course with a relatively high success rate?