This talk is about what we can learn from neuroscience and cognition. We humans have a part of the brain called the cerebral cortex for memory and speech processing and other things cats do not have 🙂
By looking at what parts of the brain light up, we can learn what type of things the brain is doing with an EEG, which shows the electrical activity of neurons in the brain. This paper presents a nice overview of what we can do with EEG. There are two types od activity that can be measured: evert related potential (ERP) and oscillating waves. Sadly the EEG cannot read very deep in the brain it will always be somewhat surface level but has a high temporal resolution.
A second way of measuring the brain is using an MRI scanner, and looking at the blood-oxygen level. So parts of the brain light up when they are being used. However, there is a ‘lag’ of about 20 seconds for the brain to get the oxygen in the right place, so we cannot use if to measure really detailed tasks. We know somewhat (from other studies on people with brain damage) what parts of the brain do what tasks so it is still quite useful.
Short-term memory and Working memory
We know that some areas of the brain are responsible for working memory and that this related to cognitive load. This works in a number of steps, where perceptions enter the brain through sensors, low-level stimuli trigger actions and then trigger longer term memory to retrieve something. This paper has a great overview of the work on working memory.
Short-term memory and Working memory are really different types of things and these different types of memory look different in the brain! Working memory, as is well known, can only hold a few items (5 plus or minus 2 or 3 to 9) and it filtered by attention, so different tasks for example will filter what stimuli are processed.
The way that our STM can hold many things is by chunking, i.e. recognize big things like one (a famous example is chess openings that pros can remember like one thing while novices see the individual pieces)
Five kinds of human memory
Cognitive Load Theory
The basic idea of CLT is that it is some measurement of how hard something is to do. There is intrinsic load which is how hard the problem is while extrinsic load measures how much you were distracted by other things (a font, a sound etc.) Simply said, cognitive load is load on your working memory. If the processing requirements of a task if bigger than the working memory, than people’s learning starts to degenerate. Briana Morrison (also present here but not presenting now) wrote a paper on how to measure CL in novice programmers. This can be hard because you cannot ask people how hard something is because that impacts their WM. Alternative methods are time on task or error rate since these are related to cognitive load.
Current studies in CS with EEG
Igor’s motivation was in fact the chess study that showed that experts can more easily recognize board because of their expertise. They recruited undergrads in various stages of their studies and construct simple and harder tasks (like reversing a string) and measure the difference between the groups. The hypothesis was that the older students would have less cognitive load.
First the practicalities: They measures this with an EEG and for this, apparently you need a shielded room for this, that is not next to an electrical engineering lab (which Igor found out the hard way 🙂 and you need some good EEG sets. He used ActiChamp and EPOC Emotiv. The main results in Igor’s paper on EEG use is that we can indeed measure program comprehension with EEGs.
Studies with fMRI
Some researchers (mainly Janet Sigmund) are working to also use the fMRI scanner which is a bit tricky because people cannot move in it, so cannot type. They also are not allowed to speak because that would activate different brain areas. The 5 areas related to programming comprehension are attention, language processing and working memory:
Janet also measured the different versions of code, and it turns out that top-down code reading present lower cognitive load than bottom up. Interesting!
One more really cool result that Floyd et al found is that for novice programmers reading code and reading prose are activating different areas of the brain but for experts, it is not different.