Jupyter notebooks are widely used in industry and in academic research, but have only begun to make inroads into the classroom. The design of the Jupyter notebook is in many ways well suited for teaching subjects in information technology and computer science, but it is a tool that departs significantly from a standard text editor or integrated development environment, and thus carries with it several unique advantages as well as several surprising potential pitfalls. As use of Jupyter notebooks has grown, so has criticism of the notebook, for varied reasons: notebooks can behave in unexpected ways, they can be difficult to reproduce, they open up potential security issues, and they may encourage poor coding practices. A set of best practices to guide instructors and help addressing these concerns when using Jupyter notebooks in the classroom is currently lacking. This paper addresses the strengths and weaknesses of the Jupyter notebook for education, drawing on existing literature as well as the author's experience teaching a range of courses with Jupyter notebooks for over five years, and recommends a set of best practices for teaching with the Jupyter notebook.