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 |
|