DescriptionSoftware, its design, development, and engineering has become one of the corner stones of computational science research. There is a lot of demand for scientists and engineers who can write well-designed, sustainable, and reproducible software. This is at odds with the traditional way of writing code just to explore and showcase ideas, mainly for scientific papers.
To provide students with practical experience in all aspects of research software engineering (RSE), we have adopted a peer review based assignment approach that helps students focus on writing efficient parallel algorithms by providing a build, test and continuous integration framework. In addition, the students are then required to submit a pull/merge request to the central repository. We have observed that this workflow improves the students' programming skills, introduces them to RSE practices while teaching them to program parallel numerical algorithms on high performance machines.