Have you heard of Edward De Bono? He is considered by some to be the grandfather of metacognition. Among his achievements is the coining of the phrase “lateral thinking” along with extensive development of its implementation. De Bono’s ideas are often overlooked, usually either because they are too simple to appear useful, or the need for them is not perceived – which is a perspective which ironically would likely change if the ideas were applied.
One of De Bono’s less known tools is called the PMI which stands for “Plus, Minus Interesting.” It’s basically a structured pros/cons exercise that can provide new perspectives. I had reason recently to apply this tool to the question of which language to use for studying Computer Science GCSE and A Level. Please note, the aim of doing a PMI is not to make a case, but to explore a choice in a structured way.
Here is the result:
Should we use Python for Computer Science GCSE and A Level?
We go in order – plus first:
- It’s free and open-source
- It’s cross platform
- There are tons of excellent resources available for learning it
- It’s syntax is relatively simple and it often reads like English
- There are modules that enable quick access to powerful functionality such as graph plotting, graphics and GUI building
- It’s used extensively by Google/YouTube
- You don’t need to know OOP to write “Hello world!”
Then the minuses:
- It’s syntax is quite different to other languages
- It’s slower than some languages in some situations
- It uses lists instead of arrays which could create confusion
- Not great for mobile development
- It’s simplicity can lead to confusion when learning other languages
Then “interesting” (neither good nor bad but perhaps worth exploring):
- Is there any research to show pedagogical impact of choosing Python over other languages?
- How different is Python to Java, compared to how different C# is to Java, for example?
- Is similarity to other languages desirable or detrimental?
- Is there a better language to use than any under consideration (maybe JS)?
- How important is the decision of which language to use?
- Do the level of student motivation, ability and long-term goals affect the decision?
Once we have laid out all these factors in parallel for consideration, we are in a much better position to make a good choice. It has been shown many times that using this tool can reverse an initial, less well-informed (or “well perspectived”) decision.
I’m curious to hear if you would add/change anything if you did this exercise yourself, and/or what your PMI would look like for the other programming languages allowed on your course.
Curiouser and curiouser
How about doing a PMI on doing a PMI? It could provide a great introduction to recursion!