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  |