Solving PDEs in Python : The FEniCS Tutorial I 1 Preliminaries 2 Fundamentals: Solving the Poisson Equation 3 A Gallery of Finite Element Solvers 4 Subdomains and Boundary Conditions 5 Extensions: Improving the Poisson Solver References This book offers a concise and gentle introduction to finite element programming in Python based on the popular FEniCS software library. Using a series of examples including the Poisson equation the equations of linear elasticity the incompressible Navier Stokes equations and systems of nonlinear advection diffusion reaction equations it guides readers through the essential steps to quickly solving a PDE in FEniCS such as how to define a finite variational problem how to set boundary conditions how to solve linear and nonlinear systems and how to visualize solutions and structure finite element Python programs. This book is open access under a CC BY license