E: Scientific coding

  About Questions Video Intro Reading Aalto
E60 Modular code development Break your large programs into small problems by separating aspects of desired functionality to different sub-modules. >How to divide code into independent modules? >What are pure functions like? >Python example of breaking code into small components >Lesson on Modular code development by CodeRefinery
E61 Software testing It is important to ensure that your program performs effectively and without failures. Adding tests for your software can save a lot of your time later. >How to test code on different levels? >What kind of testing tools are there? >Software testing fundamentals by Software Carpentry >Lesson on testing by CodeRefinery
E62 Profiling Code efficiency is critical especially in HPC. Learn to measure the performance of your programs. >What is profiling used for? >Profiling Python code with cProfile >Profiling tools for Linux >Profiling for C and Python >An intro article on Ruby and Python’s profilers Triton profiling guide
E63 Debugging Detect, investigate and resolve bugs. >How to debug different types of errors? >Debugging strategies >Debugging in a nutshell. >See Triton’s debugging guide >A hands-on tutorial on pdb debugger
E02 Software Licensing Sharing your work can be very beneficial. Take a look at social coding and software licensing. >What is free software? >Why should you share your code? >Brief introduction to differences between open and closed source software >Lesson on social coding by CodeRefinery >Brief guide to licensing
E04 Documentation Document your project so other people can easily use the code and even contribute to it. >What should be included in a documentation? >Documentation with Sphinx >Tools for documentation >CodeRefinery lesson on documentation
E03 Reproducible research How different tools can improve reproducibility. >Which tools can help with reproducibility? >What is reproducible research >Lesson by CodeRefinery