13 Jan 2019 ............... Length about 900 words (6,000 bytes).
(Document started on 27 Dec 2018.)
This is a WWW document maintained by
Steve Draper, installed at http://www.psy.gla.ac.uk/~steve/best/triad4.html.
You may copy it.
How to refer to it.
Web site logical path:
Bug-fixing: Beyond triad3
Department of Psychology,
University of Glasgow.
that seems worth considering in all disciplines is that all learning seems to
need all three of these activities, and that one cannot replace any of them
without losing something: reading, discussing, writing.
However perhaps there is a fourth, which I will provisionally call
"bug-fixing"; most obviously important in Computer Science.
This is about how to handle pragmatically problems (proto-typically software
errors) that arise unexpectedly, and which you do not understand in advance;
and typically, never understand in any detail even after you have fixed them.
There are these main kinds of argument in favour of this being a generally
important kind of knowledge, learning, and teaching to address:
- You cannot know everything. We have to deal successfully with things we
don't understand from the moment we are born. Knowledge sometimes helps,
but it can NOT be a general pre-requisite for successful action.
This is the nature of life, and of science, to succeed without full (or even
- This is also a connection to the
graduate attribute of "problem-solving";
which in general includes not just finding the solution, but detecting that
there is a problem, and analysing what it consists of so as to transform it
into one for which a solution is known.
Each discipline tends to focus on only the one of these three components of
problem-solving that it is interested in, rather than the need in practice
to deal with all three.
- Particularly in computer science, or rather computer programming:
there is reading, discussion, and writing (by hand) of code in a computer
language and doing this by hand.
But also there is:
- Fixing software which you wrote yourself.
- Fixing or modifying software which others wrote: by far the biggest part
of having a job as a programmer == "software engineer".
- Fixing software you do NOT understand and don't want to; but need to use.
- Explaining to students why the exams require writing code on paper not in
a programming environment that helps correct it.
This is about being clear what understanding and exact knowledge are and are not
good for in compSci.
The Leguin quote: "you haven't found out what I'm teaching".
Ursula Leguin in ch.2 of "A wizard of Earthsea" (first book in her Earthsea
trilogy) has her protagonist Ged be apprenticed to Ogion. After a day or two
-- "When will my apprenticeship begin, Sir?"
-- "It has begun"
-- "But I haven't learned anything yet!"
-- "Because you haven't found out what I am teaching"
This raises the issue of the importance of learners understanding the learning
But it also says something general about the relationship of pure and applied
knowledge. Ged came to attention because he saved his village and the life
of everyone he had ever known because his untutored skill at wizardry drove
off an attack by Vikings: an example of extreme need for practical, usable
But his master feels he needs balance by learning what is least directly
related to more action, more public success, by learning theory and especially
about the dangers involved in such power.
An important theme in the whole book is the playing out of this issue,
where both showing off and curiosity lead to problems, and the more the power,
the greater the destructive power lurking in unintended consequences.
- N.B. perhaps CompSci labs have somewhat the same defect as Sci labs do:
that Ts and Ls collude in thinking that the goal is to get the equipment to
do what is expected -- not to learn from empirical data which is in fact and
in theory the whole point of science; yet hardly ever taught or demonstrated
in any way whatever in undergraduate degrees.
The comparable thing in CompProgging is: you know from the tests, that your/the
software produced the right output to 5 test inputs. But why should we believe
it will do that for 1,000 more cases?
- Pure and applied academic knowledge.
This should probably be at least a part of all disciplines, because it allows
students to understand, in their discipline, when knowledge does and doesn't
help (or isn't available). This should perhaps be part of every degree.
(E.g. Medics in the Ebola outbreak; fixing cars without understanding what was
wrong with them.)
Section on bug-fixing in software
Web site logical path:
[Top of this page]