Wednesday, 29 December 2010

One of the best blogs of 2010

The blog Confessions of a mediocre programmer by Alan Norton is one of the most interesting blogs I read in 2010. Including a great definition of a Mediocre Programmer:

"Mediocre programmer - A programmer who has a limited toolset. He knows the syntax of only the simplest commands, but he knows where to find the syntax for more complex commands. He doesn’t know how to write the most efficient code, but he knows how to rewrite and test the code for greater efficiency if he must. He runs into more roadblocks along his passage to success, but he views each as a challenge and is confident that he will find a path around each roadblock. He may take longer to get there, but he always reaches his goal. He doesn’t know how to create a DLL, but he knows he can if necessary. Like most programmers, he doesn’t particularly like documenting his work but does so anyway because he is a professional." Alan Norton (2010)
A definition which in their heart of hearts a lot of successful people would see themselves in.
The basic point being from the perspective of this blog is good problem-solving skills are central to being successful. Getting the basics right - understanding the requirements, good analysis and design, project management and perseverance can get an average/mediocre programmer through.
I really enjoyed this blog posting and there is a lot there professional and students alike. The posting includes the following: " Yes, I am a mediocre programmer, primarily because I never needed to be a great programmer." Alan Norton (2010)

Sunday, 19 December 2010

More computing. more interaction

One of the criticism of the robot programming part of the Junkbots project is not everyone necessarily gets a go at the programming. To address this a new feature has been added to the project. There are now two parallel activities  as well as programming a robot; there is a separate programming exercise carried out at the same time which replicates some of the same actions of the robot but this time on screen.
Figure: Robot pushing a barrel

These exercises are based around the increasngily popular Greenfoot software ( which is free to download and use. This can be put on as many machines as are need enabling more people to have a go at programming.

The exercises initially gets participants to set-up the world, place a robot within it and get the robot to move across the screen. Building on the each previous exercise, the complexity increases and includes challenges (such as in the figure) where the robot pushes a piece of rubbish (in this case a barrel) off the screen.

Some of the material can be found at:


Problem-Solving and Creativity in Engineering

Jonathan Adams, Phil Picton and Stefan Kaczmarczyk from the School of Science and Technology, University of Northampton in collaboration with Peter Demian from Loughborough University have recently published a paper in the Journal  Enhancing the Learner Experience in Higher Education entitled "Problem solving and creativity in Engineering: turning novices into professionals".


Recent UK and European benchmarks for both undergraduate and professional engineers highlight the importance of problem solving skills. They additionally identify creativity as an important capacity alongside problem solving for both novices and professionals. But, how can we develop and encourage these important skills in undergraduate engineers?

For many years researchers have explored how the differences between novices and experts might show educators techniques for improving the problem solving abilities of their students. Whilst it is often appreciated that knowledge and experience have a large influence on problem solving ability, it is not feasible to develop these fully in a three or four year degree course. There are, however, a number of other capacities relating to problem solving process skills that can be usefully developed, such as strategy, attitude and motivation.

A number of semi-structured interviews have been undertaken with engineering undergraduates at The University of Northampton, Loughborough University and Birmingham University in order to explore these issues. Analysis has been in the form of a phenomenographic study. The interviews extend their questioning and comparison beyond problem solving skills into creative thinking. This paper provides a brief summary of previous published research alongside interesting findings from the interviews. Early findings have been used to inform an action research project to develop a problem-based learning (PBL) module to improve creative problem solving skills in undergraduate engineers. Emerging themes that have been identified include: identification of problem solving processes in the case of professionals as opposed to simply identifying skills required in the case of students, confusion with the concept of ‘creativity’ in the context of engineering; issues with motivation and ownership with regard to academic problems and significance being placed on real life activities involving groupwork as an effective way of teaching and learning creative problem solving.

More details can be at this link including downloadable resusable learning objects. 

Two of the authors are part of STRiPe research group based on the School of Science and Technology, University of Northampton, UK.


Adams J, Picton P, Kaczmarczyk S, Demian P (2009) "Problem solving and creativity in Engineering: turning novices into professionals" Enhancing the Learner Experience in Higher Education pp. 4-8 Volume 1, Number 1,  ISSN 1234-1234

Saturday, 11 December 2010

Computational thinking is for everyone

Problem solving is not trivial (Beaumont and Fox, 2003).  In fact, if we think about Bloom’s Taxonomy’s (Bloom 1956) and the Cognitive Domain, problem-solving involves the high-level skills of synthesis, evaluation, analysis and applications, so perhaps it is not surprising that student’s often struggle in this area and with subjects based around problem-solving (such as programming). A much discussed and related area of Computational Thinking (Wing, 2006) has raised the profile of areas such as problem-solving, by highlighting the importance of “thinking like a computer scientist” (Wing 2006). The thought processes involved in being a computer scientist are more complicated than just being able to program, “Computational thinking is reformulating a seemingly difficult problem into one we know how to solve, perhaps by reduction, embedding, transformation, or simulation.” (Wing, 2006). The skills of computer scientists are applicable to a much wider range of areas or as Wing states:One can major in computer science and go on to a career in medicine, law, business, politics, any type of science or engineering, and even the arts.” (Wing, 2006).

Characteristics of Computational Thinking (Wing 2006):
“Conceptualizing, not programming. Computer science is not computer programming. Thinking like a computer scientist means more than being able to program a computer. It requires thinking at multiple levels of abstraction;
Fundamental, not rote skill. A fundamental skill is something every human being must know to function in modern society. Rote means a mechanical routine. Ironically, not until computer science solves the AI Grand Challenge of making computers think like humans will thinking be rote;
A way that humans, not computers, think. Computational thinking is a way humans solve problems; it is not trying to get humans to think like computers. Computers are dull and boring; humans are clever and imaginative. We humans make computers exciting. Equipped with computing devices, we use our cleverness to tackle problems we would not dare take on before the age of computing and build systems with functionality limited only by our imaginations;
Complements and combines mathematical and engineering thinking. Computer science inherently draws on mathematical thinking, given that, like all sciences, its formal foundations rest on mathematics. Computer science inherently draws on engineering thinking, given that we build systems that interact with the real world. The constraints of the underlying computing device force co puter scientists to think computationally, not just mathematically. Being free to build virtual worlds enables us to engineer systems beyond the physical world;
Ideas, not artifacts. It’s not just the software and hardware artifacts we produce that will be physically present everywhere and touch our lives all the time, it will be the computational concepts we use to approach and solve problems, manage our daily lives, and communicate and interact with other people; and
For everyone, everywhere. Computational thinking will be a reality when it is so integral to human endeavors it disappears as an explicit philosophy.”(Wing 2006)

Carnegie Mellon now has a Centre of Computational Thinking 

Beaumont, C., & Fox, C. (2003). Learning Programming: Enhancing Quality Through Problem-Based Learning (pp. 90-95) 4th Annual Conference of the ICS HE Academy Galway: ICS.
Bloom, B., S. (ed.) (1956). Taxonomy of Educational Objectives, the classification of educational goals – Handbook I: Cognitive Domain New York: McKay.

Monday, 6 December 2010


A recent paper by Oddie et al (2010) from the Liverpool Hope University, UK look at the use of robotics can facilitate the students’ understanding and application of problem solving and programming. It provides an interesting discussion on the use of robots for teaching programming and some of the issues around teaching problem-solving skills.

They looked at using the Flowcode Buggies and software from Matrix Multimedia   which are relatively inexpensive buggies and their graphical nature allows the students to focus more on the problem-solving side, before worrying about the grammar and syntax of a programming language (in their case C).


Other sources that might be of interest:

Alice, (2010), Alice Project,
Beaumont C, and Fox C, (2003), Learning Programming: Enhancing Quality through Problem-based Learning LTSN-ICS conference paper, August.
Gandy E G, (2010), The use of LEGO Mindstorms NXT Robots in the Teaching of Introductory Java Programming to Undergraduate Students, ITALICS Volume 9 Issue 1 February 2010.
Lawhead P B, Bland C G, Barnes D J, Duncan M E, Goldweber M, Hollingsworth R G, Schep M, (2003), A Road Map for Teaching Introductory Programming Using LEGO Mindstorms Robots, SIGCSE Bulletin, 35(2): pp 191-200.
Turner S, Hill G, (2007), Robots in Problem-Solving and Programming 8th Annual Conference of the Subject Centre for Information and Computer Sciences, University of Southampton, 28th – 30th August 2007, pp 82-85.
Turner S and Hill G(2008) "Robots within the Teaching of Problem-Solving" ITALICS vol. 7 No. 1 June 2008 pp 108-119 ISSN 1473-7507
Whitfield A K, Blakeway S, Herterich G E, Beaumont C. (2007), Programming, disciplines and methods adopted at Liverpool Hope University, Italics Vol 6, issue 4, 2007.