PSMB_Seqan_2017_webassembly
PMSB Project at the intersection of C++, High performance computing and modern web technologies. Has the possibility to be continued as a Bachelor Thesis.
Introduction
Since modern web-browsers are used for all kinds of tasks they have gone through an immense amount of optimization in the past years, especially the javascript engines. They are now comparable in speed with many ahead-of-time-compiled languages. [1] Modern browsers also offer access to disk-space and most of the computers available RAM so they are indeed useful for scientific applications. This opens up the possibility to do
*client-side* computations via the browser.
While many
SeqAn-based applications are used on large servers, many smaller workloads could actually be done on Laptops and Desktops. There, however, software deployment is often a problem and command-line tools or platform-dependent executables prevent easy adoption.
By creating browser-based apps from
SeqAn-apps one could bridge this gap and hopefully provide a useful service to many users. In any case high-performance biological applications are an interesting test case for the current browser technologies and the involved software.
Previous Work
There was already a PMSB project in 2016 and a subsequent Bachelor Thesis that evaluated C++ to Javascript compilation and building a framework around it:
Based on this work the student should instead target
WebAssembly[2] as output and perform similar comparisons as in the previous work (but now with
WebAssembly instead of Javascript).
Prerequisites for this project
- some experience with HTML5, Javascript and "the web" is *required*
- basic experience with building a C or C++ program (g++, make, cmake) is definitely helpful, but not strictly required
The student will learn...
- how to work with large software projects and in teams (social aspects, but also GitHub and other tools)
- how new and exciting technology is evolving (WebAssembly is a joint project by Mozilla, Microsoft, Google and Apple!)
- how different technologies and abstractions relate to each other (programming both "close to machine code" and platform independent)
- how to do performance benchmarks and analysis of run-times and memory usages
Possible continuation as Bachelor's Thesis
The goal would be to pick a
SeqAn application like Lambda or Yara and port it completely to
WebAssembly, i.e. make sure that everything works and create a web-site that serves the
WebAssembly and contains Javascript interfaces to certain native functionality, like opening and saving input/output files.
Links