UW AMath High Performance Scientific Computing
AMath 483/583 Class Notes
Spring Quarter, 2011

Table Of Contents

Previous topic

About these notes – important disclaimers

Next topic

Slides from lectures

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.

Outline and schedule


This is a tentative outline that is subject to change.

Week 1:

  • Overview and introduction of some main ideas.
  • Using the Virtual Machine.
  • Unix / Linux
  • Version control systems
  • Using Mercurial and Bitbucket.

Week 2:

  • Reproducible research
  • Compiled vs. interpreted languages
  • Fortran 90

Week 3:

  • Binary, floating point numbers, memory
  • Fortran 90
  • Makefiles
  • Computer architecture: CPU, memory access, cache hierachy, pipelining

Week 4:

  • Optimizing Fortran
  • Iterative methods for linear systems
  • Parallel computing

Week 5:

  • OpenMP

Week 6:

  • OpenMP
  • MPI

Week 7:

  • MPI

Week 8:

  • Other parallel languages, GPUs
  • Python

Week 9:

  • Python
  • I/O, Binary output
  • Graphics and visualization

Week 10:

  • Python + Fortran, f2py
  • Reproducible research techniques