Abstrac tThe importance of software development expertise to our society and likewise the importanc e of education in this field are self-evident. At the same time it is undisputed that software development at the professional level is a complex activity . It must be presumed that th e make-up of expertise required to successfully complete such activities will itself be nonsimple, deserving of our attention . A hierarchical view of professional expertise is presente d and a method for determining the fundamental principles making up lasting expertise i s systematically derived . The method is applied to determine principles of software engineerin g expertise. The view presented provides a step towards a well founded understanding of th e types of expertise needed for the activity of software development . Educators involved i n courses releasing professionally recognised software developers should be interested t o examine which aspects of the expertise-derivation they already utilise and which aspects coul d further benefit their courses .
Catamorphisms ("foldr" on lists, but generally applicable to any regular recursive datatype) are not just useful but are an effective basis for a recursion-pattern-based discipline of program design. A new presentation for catamorphisms makes it clear how they provide functional semantics for symbolic datatypes, with the capacity to expose significant variations in program design. A further development of the new presentation exploits the higherorder capabilities of functional languages. This is the key enabler for a comprehensive replacement of symbolic data and their interpreters, either implicit or explicit, with direct functional representations. These extensions, of the applicability of catamorphisms and of their presentations, make them even more attractive as bases for program structuring and design, and likewise as targets for software reverse engineering and design recovery. KEY WORDS Software design and development; Programming Tools and languages; Functional programming; Recursion pattern. 2 Catamorphisms are Useful Catamorphisms represent a general, indeed generic recursion pattern on regular recursive datatypes. The design of programs is improved by expressing their recursive components as explicit instantiations of these general patterns.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.