Lecture 1: Introduction to parallel scientific computing
	- typical scientific and engineering problems: PDEs & ODEs
	- Newton’s method, discretizations and how they lead to large-scale (sparse) linear algebra
	- Need for parallelization and different programming models: MPI, shared memory, CUDA
	- Different types of hardware and their limitations: memory hierarchy, memory bandwidth
	- Parallelization strategies: domain-decomposition (MPI), vectorization (CUDA)
	
	Lecture 2: Introduction to PETSc
	- Parallel scalable sparse linear algebra
	- Direct methods vs iterative methods
	- Linear algebra abstractions and their implementation in PETSc
	- Installing PETSc, running examples, getting help
	- Who uses PETSc (government research, universities, industry)?
	- What machines does PETSc run on (from laptop to largest scalability on ~100K nodes)?
	
	Lecture 3: PETSc design and structure
	- PETSc is a platform for experimentation
	- Krylov subspace methods (CG, GMRES), need for preconditioning
	- Linear and nonlinear PDEs in PETSc
	- Time-dependent problems in PETSc
	- PETSc interface to other packages (HYPRE, MUMPS,SUNDIALS, BoomerAMG, ...)
	
	Lecture 4. Mesh support in PETSc
	- structured and unstructured grids
	- mesh partitioning, distribution, load-balancing
	- finite-difference and finite-element methods in PETSc
	- ghosting, stencils and boundary condition handling
	
	Lectures 5-6. Preconditioning
	- Domain-decomposition preconditioners
	- Geometric multigrid preconditioners, numerical homogenization
	- Matrix-free problems and their preconditioning
	- Multiphysics problems, ”physics-based” preconditioning
	- JFNK(S) paradigm [Jacobian-free Newton-Krylov (Schwarz)]
	- Grid sequencing, ”preconditioning” nonlinear problems
	- Nonlinear hydrostatic ice model (due to Jed Brown): achieving textbook MG scaling
	
	Lecture 7. Advanced topics
	- GPU support in PETSc: CUDA, CUSP&THRUST
	- Advanced time-stepping algorithms
	- Symplectic and multi-symplectic integrators in PETSc
	
	 
	Dmitry Karpeev
	September 2010
	Mathematics and Computer Science Division Argonne National Laboratory