The development of efficient and accurate general purpose algorithms for scientific computing is one of the primary motivators for researchers specialising in this field. However, an often overlooked aspect of scientific computing research is the proper implementation and publication of these algorithms in order for other researchers to make use of an algorithm. This is even more important for those working in more applied fields, whether in biomedicine or engineering, who might not have sufficient specialised technical knowledge to even read, for example, the latest literature in advanced MCMC sampling methods.
Taking an even broader view to research in general. While it is important to pursue a rigorous research agenda in any specialist subject and generate important research outcomes, of equal importance is the proper publication of this work. How is it properly communicated to both those working inside and outside your field, and/or to the general public.
In the last three days of this course, you will pick one (or more than one) scientific computing algorithm of your choice and publish both an implementation of the algorithm as well as an explanation of its theoretical and/or practical properties (i.e. how it works). Which algorithm you choose, your implementation and how you publish it is entirely up to you.
For example, you might choose to:
For inspiration, here is a link to the online journal Distill, a machine learning journal that specialises in articles publishing clear explanations of existing techniques using web technologies like D3.
You can pick any scientific computing algorithm you wish, you do not have to be confined to the topics discussed during this course (e.g. perhaps you want to focus on a technique you might use for your DPhil). Below are a few suggestions to get you started. Note that you can also choose one of the algorithms already presented during this course like QR decomposition, and explain it better than I did!
Explicit
Implicit
Some examples:
Pick a scientific computing algorithm and provide both an re-usable implementation of the algorithm, as well as some form of publication that provides a clear explanation of how it works, and/or any other theoretical or practical properties it has (e.g. its execution time/memory complexity, error bounds etc.).
Please hand in your project, in whatever format is most suitable, by 17:30 on Friday 12th Feb 2021.