Supplementary material


Software carpentry: Online “lesson” from the popular software carpentry program. Self-explanatory


Online Git tutorial: Excellent, quick, simple online tutorial – everyone should try this!

Software carpentry: Another online “lesson” from software carpentry

Git cheat sheet (pdf): Summary of commonly used git commands.


Official Python tutorial Sections 3 and 4 complement Python videos 1 and 2.

Official Numpy reference See in particular the section on Routines, and the subsections on Random sampling, Mathematical functions, and Searching, sorting, and counting.

Software carpentry

A Primer on Scientific Programming with Python by H.P. Langtangen: A comprehensive textbook on programming and scientific computing with Python

Complex Networks

NetworkX documentation (Tutorial + Reference)

Network Science by A.-L. Barabasi, excellent introductory text freely available online.


scipy.optimize online documentation

Numerical Optimization by Nocedal & Wright: standard text on optimization methods

Convex optimization Freely available online text on optimization theory.


Programming in Fortran Self Study Guide (pdf): A nice introduction to programming in modern Fortran which provides many details omitted from class lectures.

Built-in routines in gfortran: List and descriptions of intrinsic routines in gfortran. A few of these will be helpful for assignments.


OpenMP quick reference (pdf): Overview of OpenMP directives and routines. Most of the directives should be familiar, but there is also a fair amount of other material that hasn’t been covered! Note the peculiar page-numbering.

Tutorials and technical articles: Tutorials of varying quality and length collected at the offical openmp webpage. Contains link to a nice overview (pdf) though many Fortran examples appear to be in Fortran 77!


MPI: The complete reference: Online reference book on MPI

The universal reference for MPI is the book Using MPI by Gropp, Lusk, and Skjellum.