What should I include in a kingfisher map (I)?

#100DaysofDSRP: Day 6: Mapping through a FOREST lens

The FOREST (Form, Only the essence, Recognizable, Evolving, Structural Prediction, and Targeted) are based on Dan Roam’s FOREST criteria. I changed the S from spans differences to making structural predictions, a key feature of DSRP(Distinction, Systems, Relationships, and Perspectives) method, and the associated kingfisher mapping tool.

The Use Case: Implementing a function design recipe

In this article, I will apply the FOREST criteria to look at the design of a kingfisher map for implementing the function design recipe. A function design recipe provides a clear starting point for programming. See the elements of a function design recipe here. We will use kingfisher to make the structure of the design recipe explicit. The relationship between functions and the programs that call them is at the heart of function design.

Choosing the Form

I chose an RDS (Relationship-Distinction-System) for implementing the function design recipe. The design recipe can be presented in different ways. For example, the resource by David Kay presents the design recipe as a detailed outline. While the outline is helpful, spotlighting the relationship between the function and the program that calls it is important for novice users. It is easier for a reader to explain the design recipe by following nodes and relationships.

Only the essence

The map below shows the interaction between the function and the program. One element of the function design recipe is the contract statement. The contract statement specifies input parameters and return values. The contract statement captures the essence of the function design recipe by spotlighting the interaction between the program and the function. The contract statement has been implemented as a relationship in the design recipe. The elements of the contract statement are shown as relationship lines in the figure below for an example program.


Functions are used extensively in programming. By creating and reviewing the function design recipe map slowly for one week, I plan to have a recognizable form that serves as a starting point for thinking about functions. Limiting the number of maps is important in creating recognizable maps. Through experience, I have learned not to map all content onto kingfisher maps. Rather, I am selective about what to map. We will use existing resources for much of the content. We will use kingfisher only for the function design recipe for at least one week.


DSRP structures are evolving. For example, the function and program sides of the function design recipe have been evolved to show parts.

Structural Prediction

Structural prediction is an important feature of DSRP maps. For example, given an idea, we know that it can be expanded to a system of ideas. For example, inputs, outputs, and test data can be expanded to form systems. We also know RD can be expanded to RDS. Parts can be added to arguments and return values (Distinguished Relationships). One of the goals of the Program by Design curriulum on which the Function Design Recipe is based is to avoid the “blank page” syndrome. The blank page syndrome can be avoided by providing information in different ways. The benefit of kingfisher maps is that learners can use the information and structure (DSRP) to generate questions and to build maps. For example, asking “What are the inputs?” is an S question on the input component. The relationship between program and function reminds the learner that one source of inputs to a function is the program. So they can ask an R question: “What inputs does the program send to the functions?”


The map above is targeted towards novice programmers to reinforce their understanding of the relationship between programs and functions as they are designing and implementing functions in programs. The map will be used in a “See it- Say it - Do it” mode. Reading code is recognized as a useful technique for learning to code. Reading and talking about kingfisher maps extends opportunities to think about and talk about code.

While kingfisher maps are easy to create, designing useful maps requires considerable skill. Domain knowledge and DSRP knowledge are extremely important in creating usable maps. Visual design skills are also important. Dan Roam’s FOREST criteria and other visual design resources can help kingfisher users design better maps.

A single golf clap? Or a long standing ovation?

By clapping more or less, you can signal to us which stories really stand out.