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
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 mathematics textbook to rule them all for FEM is
but some other books which could supplement your reading are
- 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.
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.