This material is aimed at people who have already interacted with a computer using a programming language, but want to adopt best practices that make their code more robust, more maintainable, and easier to understand. It can also be used to facilitate the onboarding of new people in your lab or your project. In particular, this material was designed for learners who do not have a background in programming and computer science; more specifically still, this content is mostly used with biologists, but there should be something in here for most people wanting to adopt better practices towards scientific computing.
Scientific computing is very diverse, ranging from a few-step analysis of small data sets to simulations running for weeks on supercomputers. We focus on the most common situations that every scientist encounters at some stage of a research project: data analyses performed on a standard desktop computer. The general ideas and principles that we expose carry over to other situations as well, but the concrete tools and methods may not be suitable for tasks requiring special hardware such as GPUs or supercomputers, or for projects requiring a significant software development effort. In brief, this material will help you write code for projects that have modest computational requirements, while also introducting concepts that will become useful if you ever need to scale up your activities.
We use the Julia programming language; but you don’t need to know anything about the language to start going through this material. In fact, we will not even cover how to install it for the first few modules. You will see that good practices for scientific computing have very little to do with tools and technical details; instead, they rely on thinking about programming in a slightly different way. You will be able to apply these principles to any language you prefer to use, even though we still think Julia is absolutely fantastic.
This material can be given in a workshop format, ideally over two or three days, covering several sections and one or two advanced examples. Please contact Timothée Poisot for more information. It is part of the suggested reading for classes BIO3033, BIO6033, and BIO6032 at Université de Montréal, in order to catch up on programming concepts used during these classes.