|
Research interests
If we knew what it was we were doing it would not be
called research, would it?
-- Albert Einstein Research interests:
Links: Object-oriented programming, design, and modellingMy interest in object-oriented programming and design, and in particular in the problem of formal and precise languages for the representation of programs, patterns and frameworks, led me to develop LePUS3, the language of Codecharts: a formal modelling language with model-theoretic semantics which can be used for the specification of design patterns and of object-oriented design. Software modelling in LePUS3 ('Codecharts') and Class-Z: Object-oriented Design Description Languages My book about modelling with Codecharts appeared with Wiley/Blackwell:
Related papers:
The formalization of design patterns
The building-blocks of object-oriented design are formulated and their articulation in various modelling notations is examined here:
I am currently in the process of writing a book on object-oriented modelling in LePUS and Class-Z, a visual, mathematical language for modelling programs, application frameworks, and design patterns.
See also:
Tool support in object-oriented design: specification, verification, and visualizationI am also interested in the study of programming languages and in computer-aided software engineering (CASE tools). The Two-Tier Programming Project is concerned with supporting object-oriented design, modelling, verification, visualization, understanding, and maintenance using the LePUS3 modelling language. Selected publications:
Website: Empirical validation: Software design theory and practiceThe design of computing systems can only properly succeed
if it is well-grounded in theory, and ... the important concepts in a theory
can only emerge through protracted exposure to application.
-- Robin Milner
Abstraction classes in software design. The investigation of a broad range of software design statements, conduced with Yoram Hirshfeld (TAU) and Rick Kazman, has led us to offer well-defined criteria of distinction between Strategic, Tactical, and Implementation, three classes of software design statements. See page: The Intension/Locality Hypothesis. The detailed description of the hypothesis, defined in mathematical logic and corroborated by evidence drawn from a broad range of software design statement, is offered in this paper:
Software design vs. software architecture: Our earlier work concerning this distinction was published in ICSE 2003:
The following paper focuses on the distinction between strategic (non-local) vs. tactical (local) design statements:
In more philosophical terms, we argue that the Intension/Locality Hierarchy (“Architecture, Design, Implementation”) is the top-level ontology of software design statements. A philosophically-oriented depiction of these results appeared in this short paper:
Software evolution, In the field of software evolution, my interest in software design theory has led me, in collaboration with Tom Mens, to propose a metric suite for measuring software flexibility. We propose means by which the flexibility of a program can be quantified with relation to a particular class of changes given the 'design' of the program (e.g., using a particular design pattern or an architectural style):
I am also interested in developing a solution to the problems of architectural drift and architectural erosion [Perry & Wolf 1992], research which has lead us to develop tool support in reconciling software design specifications and modelling with Java implementations. software science is a discipline which emanates from treating computer programs as objects tantamount to "natural" phenomena, much in the way that zoology treats natural species and astronomy treats stellar bodies, thereby suggesting scientific methods of investigation such as observation, analysis, and empirical validation. Software science stands to software engineering in the way chemistry stands to chemical engineering and material science stands to civil engineering: scientists are distinguished from engineers by being concerned with descriptive rather then normative claims. (What is software science?) See also:
Artificial intelligence/machine learning, the future of computingWe're all so busy being practical that we don't have time to be intelligent.
Albert E. Cowdrey, The Tribes of Bela Fix a bug in the program and the program will work today. Show the program how to fix a bug and the program will work forever. -- Oliver Selfridge, in “Trends & Controversies” Learning is the most interesting thing people can do and that to imitate real learning we must start at the beginning. We cannot just stuff a computer full of facts that someone else has learned. People learn by doing and so must computers. -- Roger Schank, in “Trends & Controversies”
The Singularity Hypothesis: A Scientific and Philosophical Assessment. Springer has commissioned an edited volume in The Frontiers Collection (which deals with forefront topics in science and philosophy) about the singularity hypothesis and related questions, such as the intelligence explosion, acceleration, transhumanism, and whole brain emulation. The book shall examine answers to central questions which reformulate the singularity hypothesis as a coherent and falsifiable conjecture, examine its empirical value, and investigate its the most likely consequences, in particular those associated with existential risks. (Read more) Public lecture: Scientific Notions of the Technological Singularity (Humanity+ UK) The future of computing. I'm also interested in the singularity hypothesis, namely that forecast made by Alan Turing, John von Neumann, Irving John Good, Vernor Vinge, and Ray Kurzweil, amongst others, concerning the accelerated pace of technological change.
Bibliography:
Machine learning. My interest in AI lies in Turing's (1950) vision of what he called a computer learning 'child'. I believe that the next breakthrough in AI shall be ushered in by breakthroughs in machine learning. My own research in the subject has been focused in machine learning of ambiguous ('natural') concepts, especially models following the notion of instance-based learning models, including the psychological and philosophical aspects of the learning algorithm.
Civilization advances by extending the number of
important operations which we can perform without thinking of them.
-- Alfred North Whitehead Whatever our cyborg future will hold, it is coming. Many of us born human will die cyborgs. The question we must reevaluate continually is not whether we should become cyborgs, but rather what sort of cyborgs should we become? -- James Moor (2005) Some videos:
Philosophy of computer science
Science is what you know, philosophy is what you don't know.
-- Bertrand Russell The Philosophy of Computer Science is concerned with philosophical issues that arise from reflection upon the nature and practice of the academic discipline of computer science. Computer science can be described as being concerned with the meta-activity that is associated with programming: the design, development and investigation of the concepts and methodologies that facilitate and aid the specification, development, implementation and analysis of computational systems. Many of the central philosophical questions of computer science surround and underpin these activities, and many of them centre upon the logical, ontological and epistemological issues that concern it. Analogies and similarities from many branches of philosophy should prove helpful in identifying and clarifying some of the central philosophical concerns of computer science. [Read on...]
Dedicated special issues: Paradigms of computer science: Is computer science a branch of mathematics, an engineering discipline, or a natural science? Should knowledge about the behaviour of programs proceed deductively or empirically? Are computer programs on a par with mathematical objects, with mere data, or with mental processes? Our investigation in these questions has led us to conclude that distinct positions taken in their regard emanate from distinct sets of received beliefs or paradigms within the discipline:
Ontology of computer programs: Our preliminary investigation in the is concerned with three central questions. These questions, and possible answers, are examined in this paper:
Ontology of software design: A philosophically-oriented depiction of our work on software design theory is given in this short paper:
Ontology of programming languages: Using semantic theories we examine of the ontology of programming languages in this paper:
Related pages:
|
|