UW AMath High Performance Scientific Computing
Coursera Edition

Table Of Contents

Previous topic

About these notes – important disclaimers

Next topic


This Page

Overview and syllabus

This course will cover a large number of topics in a somewhat superficial manner. The main goals are to:

  • Introduce a number of concepts related to machine architecture, programming languages, etc. that necessary to understand if one plans to write computer programs beyond simple exercises, where it is important that they run efficiently.
  • Introduce a variety of software tools that are useful to programmers working in scientific computing.
  • Gain a bit of hands on experience with these tools so that at the end of the quarter students will be able to continue working with them and be in a good position to learn more on their own from available resources.

Some topics

Many topics will be covered in a non-linear fashion, jumping around between topics to tie things together.

  • Using the Virtual Machine
  • Unix / Linux
  • Version control systems
  • Using Git and Bitbucket.
  • Basic Python
  • Ipython and the IPython notebook
  • NumPy and Scipy
  • Debugging Python
  • Compiled vs. interpreted languages
  • Introduction to Fortran 90
  • Makefiles
  • Computer architecture: CPU, memory access, cache hierachy, pipelining
  • Optimizing Fortran
  • BLAS and LAPACK routines
  • Parallel computing
  • OpenMP with Fortran
  • MPI with Fortran
  • Parallel Python
  • Graphics and visualization
  • I/O, Binary output
  • Mixed language programming