Adapting the basic shopping construal
The above discussion highlights the importance of how construals are made, and of the special relationship between the non-specialist educationalist and specialist developers perspectives this involves. This will be further illustrated with reference to other extensions of the basic shopping construal.
Illustrating the adaptation of construals
The previous discussion highlights the way in which making construals can impact on the educationalist and developer perspectives. A further adaptation of the basic shopping construal will be used to elaborate this theme.
An obvious limitation of the basic shopping construal is that there is only one instance of each item. This limitation doesn't prevent the construal being useful in a learning context, but could be more realistic. It is useful for learners to be able to do mental arithmetic that involves multiplying by unit costs, for instance.
The screenshot below is taken from an adaptation of the basic shopping construal in which the idea of a stock of each item has been introduced. In contrast with the basic shopping construal, a customer can buy several instances of each item, and the number of items of each kind that has been selected is recorded below the image of that item in the basket. The interface is also adapted so that clicking on an item for sale adds one more instance of that item to the basket, and clicking on an item in the basket removes an instance of the item from the basket. To load this construal directly, copy-and-paste the contents of the file shopwithstockconstrual.js-e into the JS-EDEN Input Window and press Submit. The way in which this construal was derived as an adaptation of the basic shopping construal is the principal subject of the discussion which follows.
To explain the intimate connection between the perspectives of the educationalist and the developer, it will be helpful to discuss the adaptation of the basic shopping construal from both perspectives.
From the non-specialist perspective, the content of the construal is best approached by reviewing natural language descriptions of the observables in the construal. Such descriptions are set out in a dictionary that has been developed for the shopping-with-stock construal. A commonsense review of the contents of this dictionary, carried out in conjunction with a comparison between the picture of the construal in the screenshot above and that of the basic shopping construal, will identify which observables need to be introduced, and which observable definitions need to be revised. In the basic shopping construal, a single image is used to designate each item, and whether or not this item has been selected by the customer is indicated by its location on the display. In the shopping-with-stock construal, there must be an image to denote instances of each item that has been selected by the customer1, an image to denote instances of the item that are still for sale2, and a means to display the number of instances of each item being bought3. Reference to the picture in the above screenshot shows that the number of instances of each item selected is now being displayed where the price of an item was formerly displayed4, and that the prices of items are now being displayed beneath the images of the items for sale5. It is also apparent that if no instance of a particular item has been selected, then the item will not appear in the basket and the number of instances will be left blank rather than registered as zero6. This is an informal way of describing a dependency, whereby an item and the number of instances of that item are displayed only if at least one instance of that item has been selected. A related modification of the observables in the basic shopping construal affects the way in which the selection of items is recorded: in the basic shopping construal, it is only necessary to record whether or not each item has been selected, but in the shopping-with-stock construal the number of instances of each item selected must be recorded7. The total cost of the items selected must also be adapted to take account of the fact that there can be multiple instances of each item8. The agency governing the selection of coins in the shopping-with-stock construal is the same as it was in the basic shopping construal, but the agency governing item selection is different. As explained above, when we click on an item for sale, this adds one to the number of instances of that item selected for purchase - when we click on an item in the basket, it removes an instance of that item from the basket9.
The above account of the modifications that must be made to the basic shopping construal is of course informal. Making such modifications demands competence in the range of basic techniques that are used to frame definitions of observables in the JS-EDEN environment. There is however a very close correspondence between the adaptations informally outlined above and the specific technical modifications that are made in order to transform the basic shopping construal into the shopping-with-stock construal. To highlight this, each adaptation that has been described above has been annotated using a subscript. The technical steps that are associated with making each adaptation, as partially illustrated using the JS-EDEN environment in the screenshot above, can then be set out as follows:
- the observables of the form
item1pic
(see the Observable List [view 2] in the screenshot) serve this role. - the observables of the form
item1pic0
(see the Observable List [view 2] in the screenshot) serve this role. - the observables of the form
item1numtext
(see the Observable List [view 2] in the screenshot) serve this role. - the y-coordinate [300] of the observable
item1numtext
reveals this. - the y-coordinate [420] of the observable
item1text
reveals this - in effect this observable has simply been relocated. - this is achieved by introducing an 'optional' picture element via a definition of the form:
optpic1 is (itemsselected[1]>0) ? [item1pic] : [];
and by visualising numbers using a function that depicts a non-zero number by a string in the usual way, and zero by a blank string. - the observable
itemsselected
(see the Observable List [view 0] in the screenshot) serves this role. - the modified form of the function
costitems
is depicted at the top right of the screenshot; this is deployed in the definition of the observablebill
, as displayed at the foot of Observable List [view 0]. - the revised agency associated with selecting and deselecting items is exemplified by the actions
item1pic0Move
anditem1picMove
displayed at the bottom right corner of the screenshot.
The technical expertise required to make these adaptations may at first seem to be beyond the range of someone without a background in traditional computer programming. The fact that such adaptations can be ventured in an exploratory incremental way in the live environment provided by the basic shopping construal may help to acquire this expertise. Certainly, first gaining the skills required to understand an existing construal is a good foundation for making such an adaptation. The most intimidating techniques involved in making and adapting construals relate to the most fundamental skills of traditional procedural programming, viz. framing functions and procedures such as are illustrated in the above screenshot. Without doubt, the fact that these functions and procedures are conceived within a setting in which agency and dependency are embedded in commonsense ways greatly simplifies this task.
As far as the CONSTRUIT! project is concerned, key points for further discussion are:
- the close correspondence between the educational and technical perspectives has no counterpart in educational software that is conceived using a conventional programming approach.
- there is value in conceiving adaptations of construals of the above kind even if only as thought experiments for which other collaborators must provide the technical support.
- making construals is important as a new digital skill that enables effective communication between design participants whose perspectives are traditionally regarded as quite distinct from each other.
Further adaptations can be used to illustrate this theme.