CSE701
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.
CSE 701 Course Information
Instructor: Matthew G. Knepley
Class times: 11:30am to 1:30pm on Thursday
Location: Davis Hall 113A
Office Hours: Instructor 12:30pm to 1:30pm Tuesday in Davis 334
Required and Recommended Reading
Class notes will be prepared by students after the lectures in order to digest the material.
The following books are foundational for the software construction and documentation will be attempt in this
class. 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.
Homework