# CAAM520

This course concerns *scientific libraries* as the most effective form of communication for advances in
scientific computation. We will learn how to design, implement, test, distribute, and maintain a numerical library
written in a higher level languages, such as C, Fortran, and Python. Emphasis will be placed on solving practical
computational problems and providing insight to the user on code accuracy, performance, and tradeoffs. We will
also cover basic techniques of algorithm design and implementation, project planning, source management,
configuration and build tools, documentation, program construction, i/o, and visualization.

This will be a project course in which students will work in small groups (3-6) to produce a lasting community scientific library. Lectures will illustrate library design and implementation issues using examples from the PETSc library.

## CAAM 520 Course Information

**Instructor**: Matthew G. Knepley

**Class times**: 1pm to 1:50pm on Monday, Wednesday, & Friday

**Location**: Duncan Hall 1075

**Office Hours**: 11:00am to 12:00pm Wednesday, in DCH 3021

A course overview and grading policy are
available in accordance with Rice academic policy.

## Required and Recommended Reading

Most class time will be occupied by collaborative learning, question and answer time, and group activity. Some class notes will be prepared for certain topics, but most notes will be prepared by the students themselves. Background material can be found in the notes from CAAM519. The following books are foundational for the software construction, however we will not follow them in any way, and they are intended for reference and outside reading.- The C Programming Language (2nd Edition) by Brian W. Kernighan and Dennis M. Ritchie (Prentice Hall) ISBN-10: 0131103628.
- The PETSc Manual, S. Balay,
S. Abhyankar, M. Adams, J. Brown, P. Brune, K. Buschelman, V. Eijkhout, W. Gropp, D. Kaushik, M. Knepley,
L. Curfman McInnes, K. Rupp, B. Smith, and H. Zhang,
**ANL-95/11 Rev 3.5**, 2015. - LaTex Companion (Tools and Techniques for Computer Type Setting), 2nd ed., by Frank Mittelbach, Michel Goossens, Johannes Braams, David Carlisle, and Chris Rowley (Addison Wesley Professional) ISBN-10: 0201362996.

- The Mathematical Theory of Finite Element Methods by Susanne Brenner and L. Ridgway Scott (Springer) ISBN-10: 0387759336

- Numerical Methods for Nonlinear Partial Differential Equations by Sören Bartels (Springer) ISBN-10: 3319137964
- Understanding And Implementing the Finite Element Method by Mark S. Gockenbach (SIAM) ISBN-10: 0898716144
- Finite Elements and Fast Iterative Solvers: with Applications in Incompressible Fluid Dynamics by Howard C. Elman, David J. Silvester, and Andrew J. Wathen (Oxford). ISBN-10: 0198528671