This book teaches you all necessary (problem-independent) tools and techniques needed to implement and perform sophisticated scientific numerical simulations. Thus, it is suited for undergraduate and graduate students who want to become experts in computer simulations in Physics, Chemistry, Biology, Engineering, Computer Science and other fields. Content:
- Programming in C, basics of C++, Python, make, shell scripts
- Software engineering, computational provenance, version management
- Debugging: gdb, memory checking, profiling
- Standard algorithms: iteration, recursion, divide-and-conquer, dynamic programing, backtracking
- Advanced data structures: lists, trees, heaps, graphs
- Libraries: standard C library, STL, GSL, self-written libraries
- Randomness: probability, discrete and continuous random variables, pseudo random numbers, inversion method, rejection method
- Data analysis: estimators, confidence intervals, histograms, resampling, plotting, Chi-squared test, Kolmogorov-Smirnov test, ROC analysis, principal component analysis, data clustering, maximum likelihood, fitting
- Presentation and publishing: gnuplot, xfig, Povray, LATEX