In recent years Python has emerged as an indispensable programming language for engineers, both practicing and academic, as well as data scientists, web developers, and many others. However the language is vast and includes many features that are not immediately relevant to most engineers. The goal of this course is to help students to quickly gain a foothold with the parts of the language that they are most likely to use. We will begin with a high-level description of Python and how it differs (both in syntax and in philosophy) from other popular programming languages. We will learn about Python’s extensive offering of libraries, starting with the standard library, and including Numpy and Pandas. We will set up our programming environment with Anaconda, Jupyter, and Spyder. We will then delve into the basic constructs of the language (data types, program flow, etc). The second session will cover code organization and object-oriented programming. In the third session we will begin using numerical libraries such as Numpy and Pandas to solve more advanced problems. The course will be suffused with demonstrations of the concepts, and sample visualizations created with Matplotlib.