Have you ever noticed that teaching methods resemble tree traversals*?
The primitive example, like with tree traversals, is depth first. Like depth first tree traversals, depth first student/teacher conversations flow naturally without any explicit level ordering being enforced.
Just as a depth first traversal requires no explicit stack, a depth first conversation requires no explicit ordering of topics. It is particularly evident when teaching a concept to someone which requires a great deal of background knowledge. Before a specific, difficult concept can be taught, the simpler, groundwork topics must be taught. A depth first approach simply teaches down into conversational tangents about the groundwork topics, and then unifies this information back up with the "parent" topic. The problems with the depth first approach to teaching are similar to that of a depth first algorithm - most notably, it can take an unpredictable amount of time to complete the original task and teach the concept. Perhaps the problem of teaching complicated concepts might demand more of a "dynamic programming" conversation style, where basic information is laid down as a foundation, and then incrementally built upon.
A breadth first approach is very well suited to, perhaps, a meeting or discussion where topics have few dependencies. An example would be something like the computing club I teach here at UNSW, where everyone is of similar skill levels, and work on various projects. In this sort of environment, a depth first approach is perhaps unneeded - what is needed is equal attention to the various projects at hand. Like a breadth first traversal, an explicit data structure is needed - an agenda. Using this agenda, the topics can be expanded upon with equal attention. More sub-topics that result from discussion about the original topics would be added to the end of the agenda to deal with later. This resembles very closely a breadth first traversal.
Of course, time constraints again can pose a problem. For example, co-ordinating a student study group, in the limited time before an exam. Here, the agenda is prioritised - the queue becomes a priority queue. If we select topics to revise based on some inherent criteria, say, how many marks they are worth in prior exams, this resembles Dijkstra's Algorithm, particularly if caution is taken not to spend too much time on one topic. Taken from some heuristic evaluation rather than something inherent to the data (such as student confidence with regards to a given topic), this feels more like an A* traversal.
Note however that these are traversals not searches, as they have no specific goal other than some abstract conveyance of knowledge.
This chain of thought leads me to another - how much of human behaviour can be modelled this way? I welcome your thoughts.
(*) Credits to C. Lam, great COMP student for this idea.
