Numerical Tools for Physical Scientists (course)
This wiki page is about part II of SciNet's Scientific Computing course.
Information about part I can be found on the page Scientific Software Development Course
Syllabus
The second part of SciNet's for-credit Scientific Computing course (Phys 2109 modular course credit / Ast 3100 mini-course credit) will start in January 2012, annd will be held in SciNet's conference room on Fridays, Jan 13, 20, 27 and Feb 3, 9:30-11:30am.
Whereas the first part of the course focused on the basics of best practice for writing maintainable, modular scientific programs, this second part will focus on common techniques and algorithms, such as floating point computations, validation+verification, visualization, ODEs, monte Carlo, linear algebra and fast fourier transforms. Available libraries that already implement these will be introduced and used (PetSc, FFTW, ...).
Students that did not take part I, can take part II provided that they have solid C or C++ skills, and are familiar with the basics of modular, version-controled software development in a linux-like environment, debugging and profiling, and installing libraries. The slides and recordings of part I are available on the page Scientific Software Development Course for students who need a refresher.
At the end of minicourse II, "Numerical Tools for Physical Scientists", students able to do basic, modular, version-controled software development in a linux-like environment, will leave with a basic understanding of numerical aspects of linear algebra, fast fourier transforms, random numbers and ordinary differential equation solvers, and will be able apply these in their own code using external libraries.
The course will require 4-6 hours each week spent on reading and homework.
Required Software
Each lecture will have a hands-on component; students are strongly encouraged to bring laptops. (Contact us if this will be a problem). Windows, Mac, or Linux laptops are all fine, but some software will have to be installed *before* the first lecture:
On windows laptops only, Cygwin (http://www.cygwin.com/) will have to be installed ; ensure that development tools (gcc/g++/gfortran, gdb), git, and the X environment (Xorg) is installed.
On Mac laptops, ensure that the development tools (Xcode) is installed.
On Linux, ensure that packages for the gcc compiler suite (gcc/g++/gfortran), gdb, and git are installed
In addition, the following numerical libraries that will be used in the course should be installed:
- BLAS: If available you can use vendor-specific implementations (such as mkl on the GPC cluster). Good free implementations include gotoblas and ATLAS.
- LAPACK: Here too, you can use vendor-specific implementations if you can, or use the free implementations at http://www.netlib.org/lapack (this builds upon BLAS).
- GNU Scientific Library: http://www.gnu.org/s/gsl
- FFTW: http://www.fftw.org
It is okay to install these through a package manager if that works on your platform.
Course outline
The classes will cover the material as follows; homework will be due by email at Thursday noon on the day before the following class.
Lecture 5: Modelling, floating point, validation + verification, visualization
Lecture 6: Classic ODE solvers, pseudo random numbers, Monte Carlo.
Lecture 7: Linear algebra - PetSc, Blas, Lapack
Lecture 8: Fast Fourier Transform
Evaluation will be based entirely on the four home works, with equal weighting given to each.
Location and Dates
Fridays 9:30 - 11:30
Jan 14, 20, 27 and Feb 3.
SciNet offices at 256 McCaul, 2nd Floor.
The location may change depending on the number of students that sign up.
Office Hours
The instructors will have office hours on Monday and Wednesday afternoons, 3pm-4pm, starting the week of the first class.
Location: SciNet offices at 256 McCaul, 2nd Floor.
- Mon, Jan 9, 3pm-4pm
- Wed, Jan 11, 3pm-4pm
- Mon, Jan 16, 3pm-4pm
- Wed, Jan 18, 3pm-4pm
- Mon, Jan 23, 3pm-4pm
- Wed, Jan 25, 3pm-4pm
- Mon, Jan 30, 3pm-4pm
- Wed, Feb 1, 3pm-4pm
- Mon, Feb 6, 3pm-4pm
- Wed, Feb 8, 3pm-4pm
Links
BLAS
ATLAS
GSL
- GNU Scientific Library: http://www.gnu.org/s/gsl
FFT
- FFTW: http://www.fftw.org