| CAMILA: Formal software engineering supported by functional programming |
Abstract
This paper describes two experiences in teaching a formal approach to software engineering, at undergraduate level, supported by CAMILA, a functional programming based tool. Carried on in different institutions, each of them addresses a particular topic in the area: requirement analysis and generic systems design in the first case, specification and implementation development in the second. CAMILA, the framework common to both experiences, animates a set-based language, extended with a mild use of category theory, which can be reasoned upon for program calculation and classification purposes. The project affiliates itself to, but is not restricted to, the research in exploring Functional Programming as a rapid prototyping environment for formal software models. Its kernel is fully connectable to external applications and equipped with a component repository and distribution facilities. The paper explains how CAMILA is being used in the educational practice, as a tool to think with, providing a kind of cross-fertilization between students' understanding of different parts of their curriculum. Furthermore, it helps in developing a number of engineering skills, namely the ability to analyze and classify (information) problems and models and to resort to (the combined use of) different programming frameworks in approaching them.