Today's brief essay: The computational metaphor in cognitive science, specifically in terms of "bottlenecks".
I spent a substantial amount of time trying to determine the "bottlenecks" in fMRI data analysis, when I was buying/setting-up our new server in the Kanwisher Lab, at MIT, last year. In pretty much any complex "process" you will have "rate-limiting steps"; the whole thing will only go as fast as the slowest bit. Most people using PC's, for instance, are most likely to be memory-limited; for most applications, the CPU (who's speed is what you see referenced as 2.2 GHz, or whatever) is often plenty fast, and it's running out of RAM, and being forced to use "swap space" (which is much slower) that will bog you down. If you're doing stuff on the web, you're instead "network i/o" limited (usually) - you have to wait for data to come into your machine through it's network connection, but your CPU and everything else can pretty easily handle the flow of what's coming in. With high-end stuff like the fMRI data analysis we were doing, it turned out that we were actually frequently i/o limited, in terms of hard drive bus speeds and read-write capabilities - even with a 160 Mbps SCSI bus RAID - because of filesystem/linux issues, in the end (afs is slow and secure, nfs is fast and not.)
Anyway, the point is, with computers it's relatively easy to define the different (and orthogonal) potential bottlenecks, and, while not trivial, it's possible to test them and figure out what's holding things up.
Cognitive scientists like to think about human cognition in terms of computational metaphors; this is a great idea, very useful, probably the key ingredient that sets cognitive psychology apart from all the bullshit you more traditionally think of as psychology, etc. - it's a great demystifier. What does the brain do? It solves problems. How do you solve problems? Computation on (in this case perceptual (in origin)) information.
So, even way back in the 70's, people said "hey, we should think about rate-limiting processes in cognition, just like we do in computer science!" Predictably, it's not as easy to figure out what even makes sense to think about as potentially rate-limiting "parts" of cognition. The context in which we are studying it (in CBB proseminar) is visual attention. Norman and Bobrow (1975) suggested thinking about early visual processing in terms of "data limited" and "resource limited" tasks. "Resources" here essentially refers to "attention" - or, how much (high-level?) processing power you're focusing on the task. Kinda' makes sense. "Data limited", they say, has to do with noisy data ("Signal data-limits") or memory access. Anyway, so if you plot performance vs. resources, it will be flat (no improvement in performance with increased attention) when processing is data-limited, and you'll get task-interference only when two processes are both "resource-limited" (because they'll be competing for the same resources.)
The latter half of this - "resource" limits - makes sense to me. The idea that anything or everything may require some "attention" - that a failure to observe task-interference doesn't mean the tasks are entirely attention independent, but rather just not attention-limited - this makes sense, too.
However, the "data-limited" argument seems pretty lame: it should really be classified "everything-else-limited". Which isn't so helpful.
So in what other dimensions does it make sense to think about cognitive bottlenecks?
There are certainly perceptual task limitations: If you present stimuli fast enough, your perceptual systems wont be able to handle the data flow, and performance may fall apart. This is kind of an i/o limit, but it has nothing to do, really, with stimulus degredation (like Norman and Bobrow talked about.)
There certainly seem to be short-term (working) memory limitations on a lot of high-level, symbolic processing kind of tasks (adding numbers, e.g.) If I could give myself a magical genetic modification, I'd definitely go for extra RAM. Unfortunately, we can't do that, so - since this is probably a hard-wired capacity limit - you're kind of limited in terms of what you can do, experimentally, to see when tasks might be working memory limited ( . . . well, you can work around it, with conflicting memory tasks, or whatever, but then you're mixing it up with attention, etc.)