Python is one of the most widely used and highly valued programming languages in the world, and is especially widely used in data science, machine learning, and in other scientific computing applications. In order to use Python confidently and competently for these applications, it is necessary to have a solid foundation in the fundamentals of general purpose Python. This two day course provides a general introduction to the Python environment, the Python language, and general purpose programming in Python. We cover how to install and set up a Python computing environment, describing how to set virtual environments, how to use Python package installers, and overview some Python integrated development environments (IDE) and Python Jupyter notebooks. We then provide a comprehensive introduction to programming in Python, covering all the following major topics: data types and data container types, conditionals, iterations, functional programming, object oriented programming, modules, packages, and imports. Note that in this course, we will not be covering numerical and scientific programming in Python directly. That is provided in a subsequent two-day course, for which the topics covered in this course are a necessary prerequisite.

Intended Audience

This course is aimed at anyone who is interested in learning the fundamentals of Python generally and especially for ultimately using Python for data science and scientific applications. Although these applications are not covered directly here, but are covered in a subsequent course, the fundamentals taught here are vital for master data science and scientific applications of Python.

Teaching Format

This course will be hands-on and workshop based. Throughout each day, there will be some brief introductory remarks for each new topic, introducing and explaining key concepts.

The course will take place online using Zoom. On each day, the live video broadcasts will occur between (UK local time, GMT, UTC+1, timezone) at:

  • 12pm-2pm
  • 3pm-5pm
  • 6pm-8pm

All sessions will be video recorded and made available to all attendees as soon as possible, hopefully soon after each 2hr session.

Attendees in different time zones will be able to join in to some of these live broadcasts, even if all of them are not convenient times. By joining any live sessions that are possible, this will allow attendees to benefit from asking questions and having discussions, rather than just watching prerecorded sessions.

Although not strictly required, using a large monitor or preferably even a second monitor will make the learning experience better.

All the sessions will be video recorded, and made available immediately on a private video hosting website. Any materials, such as slides, data sets, etc., will be shared via GitHub.

Assumed quantitative knowledge

No particular knowledge of mathematics or statistics is required.

Assumed computer background

No prior experience with Python or any other programming language is required. Of course, any familiarity with any other programming will be helpful, but is not required.

Equipment and software requirements

Attendees of the course must use a computer with Python (version 3) installed. All the required software, including Python itself, the development and programming environment tools, and the Python packages, are free and open source and are available on Windows, MacOs, and Linux.

Instructions on how to install and configure all the software are provided here. We will also provide time during the workshops to ensure that all software is installed and configured properly.

Course programme

Day 1

  • Topic 1: Installing and setting up Python. There are many ways to write and execute code in Python. Which to use depends on personal preference and the type of programming that is being done. Here, we will explore some of the commonly used Integrated Development Environments (IDE) for Python, which include Spyder and PyCharm. Here, we will also introduce Jupyter notebooks, which are widely used for scientific applications of Python, and are an excellent tool for doing reproducible interactive work. Also as part of this topic, we will describe how to use virtual environments and package installers such as pip and conda.

  • Topic 2: Data Structures. We will begin our coverage of programming with Python by introducing its different data structures.and operations on data structures This will begin with the elementary data types such as integers, floats, Booleans, and strings, and the common operations that can be applied to these data types. We will then proceed to the so-called collection data structures, which primarily include lists, dictionaries, tuples, and sets.

  • Topic 3: Programming I. Having introduced Python’s data types, we will now turn to how to program in Python. We will begin with iteration, such as the for and while loops. Here, we also cover some of Python’s functional programming features, specifically list, dictionary, and set comprehensions.

Day 2

  • Topic 4: Programming II. Having covered iterations, we now turn to other major programming features in Python, specifically, conditionals, functions, and exceptions.

  • Topic 5: Object Oriented Programming. Python is an object oriented language and object oriented programming in Python is extensively used in anything beyond the very simplest types of programs. Moreover, compared to other languages, object oriented programming in Python is relatively easy to learn. Here, we provide a comprehensive introduction to object oriented programming in Python.

  • Topic 6: Modules, packages, and imports. Python is extended by hundreds of thousands of additional packages. Here, we will cover how to install and import these packages, but more importantly, we will show how to write our own modules and packages, which is remarkably easy in Python relative to some programming languages.

GitHub resources

Further resources for this training course can be found on Github at mark-andrews/pyin01.