Lecture 1

Math/CS 471: Introduction to Scientific Computing, Fall 2014.

Outline

  • Goals of the class
  • What we will cover
  • Computer requirements
  • Syllabus
  • Linux/Unix Git demo

Goals of the Class

  • The goals of this class are modest in terms of depth but ambitious in terms of breadth.
  • The class will contain topics from computer science as well as from applied mathematics.
  • At the end of the class you should be familiar with some new tools allowing you to better tackle future projects involving scientific computing.

Basic topics we will cover:

  • Basic Linux / Unix
  • Version control - GIT
  • Basic scripting - Perl / Python
  • Fortran
  • Hardware and programming models

The topics may not be covered in order or in a ‘’two steps forward one step backward fashion’‘

We will also discuss

  • Parallel programming
  • Associated metrics - scaling - efficiency
  • OpenMP - shared memory
  • MPI - distributed memory
  • Time permitting we will do a little bit of CUDA

Examples from applied math / engineering

  • How to numerically solve ODEs / PDEs
  • ODE solvers: Runge Kutta - multistep methods
  • Evolution equations
  • Wave propagation problems (acoustics, Electro-magnetics)
  • Finite difference methods
  • Discretization on curvilinear grids

Tools from mathematics

  • Basic calculus, chain-rule, Taylor-expansion
  • Manipulate logarithms and exponential (order of accuracy / convergence)
  • Basic ODE, make sure you can solve \(y'= \lambda y, \, y(0) = y_0\)

Tools from ‘’computer science’‘

  • Basic programming skills
  • Programming experience in some language (Matlab, Fortran, C, C++, etc.)
  • Understand the structure of a program
  • Subdivision into smaller problems
  • Understand and use do and while loops and conditional statements

Computer requirements

  • You will need access to a computer with a Linux/Unix operating system
  • You will also need to be able to install software on that system (if it does not have it already)
  • linux.unm.edu is one option, a personal computer with some Linux distribution or a Mac with the developer tools installed are two other options.
  • For the parallel computing projects we will use XSEDE resources (Stampede at TACC)

Baby demo

  1. ssh into linux.unm.edu
  2. Get the class repository
  3. Correct the first page using an editor
  4. Compile and check the results
  5. Commit
  6. Push