Skip to main content

Units of Measure as Types within an Interactive Programming Environment

Supervisor

Suitable for

MSc in Computer Science
Computer Science, Part B
Mathematics and Computer Science, Part C
Computer Science and Philosophy, Part C
Computer Science, Part C

Abstract

Being able to define the units of constants and variables in a programming language has great value in many applications. NASA's Mars Climate Orbiter was lost in 1999 due to software that calculated trajectory thruster firings in pounds seconds, rather than newton-seconds. In other cases, dimensional analysis (statically checking that the computed units match those that are expected) is sufficient to catch many errors in calculations. While F# supports units natively, and libraries exist in many others languages (e.g. Java, Haskell, Python), none are particularly easy to use, and often introduce clumsy syntax. This project will build improve on these approaches. You will be required to develop a unit-aware interactive programming environment enabling unit-safe physics based calculations to be performed. This might be a stand-alone solution, or a kernel for an existing interactive computing environment such as Project Jupyter (jupyter.org). Prerequisites: Compilers useful but not essential