Basic implementations
Mathematical problem and solution technique
A first, quick implementation
A more decent program
Implementing the numerical algorithm in a function
Do not have several versions of a code
Making a module
Prefixing imported functions by the module name
Example on extending the module code
Documenting functions and modules
User interfaces
Command-line arguments
Positional command-line arguments
Option-value pairs on the command line
Creating a graphical web user interface
Tests for verifying implementations
Doctests
Unit tests and test functions
Test function for the solver
Test function for reading positional command-line arguments
Test function for reading option-value pairs
Classical class-based unit testing
Sharing the software with other users
Organizing the software directory tree
Publishing the software at GitHub
Downloading and installing the software
Classes for problem and solution method
The problem class
The solver class
Improving the problem and solver classes
Automating scientific experiments
Available software
Required new results
Combining plot files
Running a program from Python
The automating script
Making a report
Publishing a complete project
Exercises
Problem 1: Make a tool for differentiating curves
Problem 2: Make solid software for the Trapezoidal rule
Problem 3: Implement classes for the Trapezoidal rule
Problem 4: Write a doctest and a test function
Problem 5: Experiment with tolerances in comparisons
Exercise 6: Make use of a class implementation
Exercise 7: Make solid software for a difference equation
Bibliography