This is an archive of course materials presented on February 24, 2022 and February 6, 2020. The Portable Extensible Toolkit for Scientific Computing (PETSc) provides a framework for the development of computational science codes. Its focus is on solving linear and nonlinear systems, but it is more than a collection of algorithms: it is a complete toolkit supporting parallel data structures, linear algebra, PDEs, meshes. PETSc is designed for scalable parallelism and contains debugging and profiling support. This course will discuss the basic PETSc objects and how they make up a PETSc code. Upon completion of this course, you should be able to independently develop scalable scientific simulation codes with the PETSc library.