Student research opportunities
Code Coverage for High Productivity Languages
Project Code: CECS_905
This project is available at the following levels:
CS single semester, Honours
Please note that this project is only for undergraduate students.
Keywords:
Software quality; code coverage; high productivity languages; X10 language; Chapel language; source-to-source compilation
Supervisor:
Mr Josh MilthorpeOutline:
Code coverage metrics are used in software testing to determine the degree to which a set of test cases exercises all areas of a code base. Code coverage analysis is an important tool for measuring and improving software quality and is widely used in commercial and open source software products.
Emerging languages such as X10 and Chapel promise high productivity for programming the next generation of high performance computers. These languages aim to improve software quality through features such as type safety and memory safety that help to avoid some common classes of programmer error. These languages use source-to-source compilers to generate code in established languages like C, C++ and Java. This approach allows them to leverage existing infrastructure (including optimising compilers) which incorporates decades of accumulated knowledge and effort.
There is currently no systematic approach to measuring and analysing code coverage for X10. While it is possible to use existing coverage tools like gcov on the generated code, the output does not map well to X10 source code including language-specific features such as the exception model.
A standard coverage tool would help to improve the quality of the large and growing X10 code base, including the language runtime, numerical and scientific libraries. An aspect of this project would be considering issues surrounding instrumenting for coverage in a source-to-source compiler, and whether they apply more generally to emerging languages.
Goals of this project
This project will develop a systematic approach to instrumenting for and gathering coverage metrics for code written in the X10 language. The approach will be demonstrated by the development of a working prototype coverage tool and evaluated against large existing X10 code bases.
Requirements/Prerequisites
Strong practical programming skills and an understanding of unit testing principles.
Student Gain
The student will gain hands on experience with an important software engineering problem. The outcomes of this project have the potential to be integrated into standard development practices of an international project at the forefront of high performance computing research.
Background Literature
P. Charles et al. X10: An Object-oriented approach to non-uniform Clustered Computing.. In proceedings of OOPSLA 2005.
M. Takeuchi et al. Compiling X10 to Java. In proceedings of ACM SIGPLAN X10 Workshop 2011.
N. Nystrom, M. R. Clarkson, and A. C. Myers. Polyglot: An Extensible Compiler Framework for Java. In Proceedings of the 12th International Conference on Compiler Construction (CC ’03).
Links
X10 languageBullseye: Code Coverage Analysis

