Long description

This figure is a diagram with three principal items that are arranged as sitting at the corners of a triangle. At the bottom left is a cloud labelled ‘REAL-WORLD PROBLEM’. At the top is a rectangle labelled ‘COMPUTATIONAL PROBLEM’. At the bottom right is a rectangle labelled ‘MACHINE’.

Additionally, in between the ‘COMPUTATIONAL PROBLEM’ and ‘MACHINE’ rectangles sits an item labelled ‘algorithms and abstract data types’. From each of these three items an arrow labelled ‘models’ points to the ‘REAL-WORLD PROBLEM’ cloud.

The ‘MACHINE’ rectangle is linked with the ‘algorithms and abstract data types’ item with an arrow labelled ‘expresses’.

There is also an arrow from the ‘algorithms and abstract data types’ item pointing to the ‘COMPUTATIONAL PROBLEM’ rectangle. This arrow is labelled ‘solves’.

Inside the ‘MACHINE’ rectangle is number of items arranged in a hierarchy. At the top is a ‘program’ and at the bottom is ‘hardware’. The bit in between is not fully specified, as indicated by three vertical dots, but includes ‘machine code’. Each pair of items in the hierarchy is linked with an upward-pointing arrow labelled ‘hides detail from’ and a downward-pointing arrow labelled ‘depends on’.

Finally, moving back to the top level of the diagram, a set of green arrows link some of the items. A green arrow labelled ‘create an abstraction’ points from the ‘REAL-WORLD PROBLEM’ cloud to the ‘COMPUTATIONAL PROBLEM’ rectangle. A green arrow labelled ‘transform’ leads from ‘COMPUTATIONAL PROBLEM’ to ‘algorithms and abstract data types’. From ‘algorithms and abstract data types’ a green arrow labelled ‘implement’ points to the ‘MACHINE’ rectangle. Finally, a green arrow labelled ‘learn more about’ goes from the ‘MACHINE’ to the ‘REAL-WORLD PROBLEM’ cloud.