Research
I once started doing a PhD degree at the
School of Computer Science
and Engineering,
University of New South Wales.
My topic revolved around designing a refinement calculus
for functional programming, with a view to software
reuse. In more detail:
- Refinement Calculus:
-
A programming language augmented with a specification construct
and a set of correctness preserving rules for transforming
specifications into programs. Historically, the rules have been
very low-level, so refinement calculi have been difficult to
use. Some
refinement
calculus background information is available.
- Functional Programming:
-
Involves writing functions which map inputs to outputs,
without involving state change: no assignment statements. The
comp.lang.functional frequently asked questions
contains much more detail. I am particularly interested in lazy
functional programming languages, such as
Haskell. Programs written
in functional languages tend to be written at a higher level
than their sequential counterparts. Hopefully a refinement
calculus aimed at functional programming can also be used at a
"higher level" than sequential counterparts. One reason for
believing this is that it should be possible to exploit high
level algebraic rules as part of refinement rules.
- Software Reuse:
-
Various data types can be viewed as simple algebras. The
algebraic structure is often inherent in the type, so many
important reusable data structures can be designed correctly the
first time!
|