Course Description: This course introduces the Python programming language, which was ranked in 2024 as the #1 most popular programming language by the TIOBE Index. In this course, we introduce how to get started writing and running Python using IDLE, separate script programs, or Jupyter notebooks. We explore the execution model and namespacing aspects of Python programs and scope units with a program. We cover general programming aspects such as conditional branching, iteration, looping, and handling exceptions. We discuss the various immutable and mutable types that Python offers and how to use them. We then cover advanced aspects of the language including functions, comprehensions, generators, classes and metaclasses, and file operations. We include modern features of Python such as type hinting, unit testing and linting, documentation, and so-called ‘Pythonic’ aspects of programming. We conclude by highlighting several existing packages and libraries which this course is designed to prepare students to be able to import and start using. The course uses extensive interactive examples and projects to help students practice writing, running and testing effective Python code.