Original Agenda: Python For SAP Developers (2023-03-13 - 2023-03-15)
====================================================================
.. contents::
:local:
.. sidebar:: *Training Information*
**Start**
Lets start at 9AM on Monday, and see how we proceed on Tuesday and
Wednesday.
**Material**
* :doc:`/trainings/material/soup/python/group`
Agenda (i.e., a basis for further discussion) for a three day Python
training. Exercises will be woven in on demand (see :doc:`here
`).
Day 1: Basics
-------------
Goal: gain a basic understanding of Python: variables, datatypes, some
language internals (good to know if one wants to do more).
Setup
.....
* :doc:`/trainings/material/soup/python/basics/installation`
* :doc:`/trainings/material/soup/python/misc/vscode`
* `Jupyter Notebook `__ Intro
Datatypes
.........
An overview of the language, how variables are used, and which primary
datatypes there are.
* :doc:`/trainings/material/soup/python/basics/python_0110_blahblah/topic`
* :doc:`/trainings/material/soup/python/basics/python_0120_helloworld/topic`
* :doc:`/trainings/material/soup/python/basics/python_0125_running/topic`
* :doc:`/trainings/material/soup/python/basics/python_0130_syntax_etc/topic`
* :doc:`/trainings/material/soup/python/basics/python_0139_commandline_argv/topic`
* :doc:`/trainings/material/soup/python/basics/python_0140_variables/topic`
* :doc:`/trainings/material/soup/python/basics/python_0150_datatypes_overview/topic`
* :doc:`/trainings/material/soup/python/basics/python_0150_datatypes_overview_compound/topic`
* :doc:`/trainings/material/soup/python/basics/python_0160_boolean/topic`
Control Flow, Sequences, *Iteration*
....................................
Basic branching and looping. Iteration (via the ``for`` loop) is an
important topic in Python, which is why we dedicate some time to it.
* :doc:`/trainings/material/soup/python/basics/python_0170_if/topic`
* :doc:`/trainings/material/soup/python/basics/python_0193_while/topic`
* :doc:`/trainings/material/soup/python/basics/python_0220_for/topic`
* :doc:`/trainings/material/soup/python/basics/python_0225_range/topic`
More Datatypes
..............
There is more to say about datatypes than what has already been said
(there is always more to everything in Python). What's *mutable*,
va. *immutable*, and what are the consequences? How can we save
another three lines of code? What's *Pythonic*?
* :doc:`/trainings/material/soup/python/basics/python_0200_sequential_types/topic`
* :doc:`/trainings/material/soup/python/basics/python_0210_indexing_slicing/topic`
* :doc:`/trainings/material/soup/python/basics/python_0250_refs_flat_deep_copy/topic`
* :doc:`/trainings/material/soup/python/basics/python_0270_functions/topic`
* :doc:`/trainings/material/soup/python/basics/python_0300_strings/topic`
* :doc:`/trainings/material/soup/python/basics/python_0320_strings_methods/topic`
* :doc:`/trainings/material/soup/python/basics/python_0400_lists/topic`
* :doc:`/trainings/material/soup/python/basics/python_0450_dictionaries/topic`
* :doc:`/trainings/material/soup/python/basics/python_0460_sets/topic`
* :doc:`/trainings/material/soup/python/basics/python_0500_files/topic`
Day 2: Outlook Into Advanced Python
-----------------------------------
Goal: there's always more. OO isn't necessary, for example,
nonetheless Python is strongly object oriented *internally*
[#oo-aint-overengineering]_. Exception handling isn't necessary either
(one can always let exceptions pass by and terminate the
program). Knowing what *decorators* are isn't necessary either, much
like the *iterator protocol*, or *context managers*.
If you want to do more (probably with less code), you'll want to know
more; on day 2 we take a look into some topics that are optional, but
good to at least know the basics of.
OO Introduction
...............
Python is strongly object oriented internally - even an ``int`` is an
*object of class int*, for example. It does not impose OO knowledge on
its users though; nevertheless knowing a bit of it cannot hurt.
* :doc:`/trainings/material/soup/python/advanced/oo/classes-and-dicts/topic`
* :doc:`/trainings/material/soup/python/advanced/oo/constructor/topic`
* :doc:`/trainings/material/soup/python/advanced/oo/methods/topic`
* :doc:`/trainings/material/soup/python/advanced/oo/str-repr/topic`
Exception Handling
..................
Error handling is commonly done using *exceptions* - a construct that
lets you focus your code on the sunny case, and do clumsy error
handling in a separate section of the code.
* :doc:`/trainings/material/soup/python/advanced/exceptions/topic`
Context Managers (Automatic Cleanup)
....................................
Much like error handling, resource cleanup tends to become
clumsy. Context managers are a way to bring more structure to that
part of a program.
* :doc:`/trainings/material/soup/python/advanced/context-mgr/topic`
Iteration, Generators, Comprehensions
.....................................
Iterating over large sets of data - while at the same time saving
resources - is one of the absolute strengths of Python. Lets dive a
bit deeper into what a ``for`` loop actually is.
* :doc:`/trainings/material/soup/python/advanced/iteration-generation/topic`
* :doc:`/trainings/material/soup/python/advanced/comprehensions/topic`
Decorators, and Related Topics
..............................
It might not be immediately obvious what a decorator is, and what
benefits it can bring. Lets have a look into that part of the
language. On the way, we'll have a look into how :doc:`parameter
passing `
works, and what a :doc:`closure
` is.
* :doc:`/trainings/material/soup/python/advanced/starargs/topic`
* :doc:`/trainings/material/soup/python/advanced/closures/topic`
* :doc:`/trainings/material/soup/python/advanced/decorators/topic`
Day 3: Domain Specifics
-----------------------
That day is dedicated to solving domain specific problems:
implementing a SAP data pipeline in Python.
Pandas
......
From :doc:`/trainings/material/soup/python/misc/pandas/group` ...
* :doc:`/trainings/material/soup/python/misc/pandas/basics`
* :doc:`/trainings/material/soup/python/misc/pandas/iloc`
* :doc:`/trainings/material/soup/python/misc/pandas/loc`
* :doc:`/trainings/material/soup/python/misc/pandas/indexes`
* :doc:`/trainings/material/soup/python/misc/pandas/filters`
* :doc:`/trainings/material/soup/python/misc/pandas/mod_col`
* :doc:`/trainings/material/soup/python/misc/pandas/add_row`
NumPy
.....
* `NumPy `__ overview
Unit Testing
............
* :doc:`Unit testing
`
.. rubric:: Footnotes
.. [#oo-aint-overengineering] OO is often associated with
overengineering. Let's not go in that
direction.