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


Course Projects