Expert Python Training
I have limited availability to do Python training, but I love to do it when I get the chance. I have over 25 years of professional teaching experience, and I have been teaching Python at all levels since I learned Python from Guido van Rossum in 2001.
As the author of The Quick Python Book I have a tested and broad knowledge of Python. My particular forte is teaching coders new to Python, quickly bringing them up to speed in Python's patterns and syntax, but also in Pythonic practices and culture.
The following courses are actively being taught. Customization of course curriculum can be negotiated, with fees depending on the amount of new material needed.
- Introduction to Python for Programmers (1 day) - This course is for people familiar with coding in another language who want to get a quick start in Python. This course will cover the basics of variables and control flow, and then work through Python's use of modules (and the standard library), exceptions, the basics of classes, and more. At the end of this course you should be able to read Python code and create useful, non-trivial Python programs.
- Introduction to Python for First Time Programmers (2 days) - This course is for people who haven't really coded before, but who are familiar with working with data, spreadsheets, or systems administration. This course will cover the basics of variables and control flow, and then work through Python's use of modules (and the standard library), exceptions, the basics of classes, and more. Further topics include Types, Functions, Modules, Strings, command line arguments, regular expressions, Handling CSV, JSON and XML, Python 2.7 vs 3.x. At the end of this course you should be able to read Python code and create useful, non-trivial Python programs.
- Level Up Your Python Skills (1 day) - Are you using Python to do productive work, but feeling that your code is somehow not "Pythonic"? Are you not even quite sure what "Pythonic" means? Do you wonder if the styles and practices of a former coding language are working against you producing efficient and effective Python code? Do you wish you could gain a deeper of understanding of how Python really works and "level up" your Python skills? This course look at how Python works, from classes and standard patterns to iteration, exceptions, and what makes code "Pythonic". Along the way we'll also cover some commonly held misconceptions as well as the practical advantages of using Python as intended.
- Pythonic Coding (1/2 day) - other languages have best practices, but the notion of "Pythonic" coding goes beyond just code that uses the language well, to include the idea of matching the philosophy and aesthetic of the language, and of "thinking in Python". This course will be discussion driven, starting from Python's philosophy and style and moving on to examining specific examples for what makes them Pythonic or not. This course could be useful for all levels - newer Pythonistas will see examples of Pythonic code, intermediate people will be able to sharpen their sense of good Python, and experienced coders can argue about what makes code Pythonic.
- Intermediate Python (1/2 day) - This course is intended to be the next step after picking up basic Python. It will survey the standard library and other common tools and introduce more advanced structures and concepts, including decorators, clojures, and a dive into how classes work. We will also discuss other object oriented features, such as class and static methods, inheritance, properties, and metaclasses.
- Iterators, Generators and Collections (1/2 day) - Python has a rich set of tools to generate, iterate over, and process collections of data. This course will be a field guide to these tools, from comprehensions and generator expressions, to generator functions and the collections module, to implementing the iterable API.
- Debugging, Profiling, and Tuning (1/2 day) - Covers basic debugging strategies from logging to using pdb to disassembling, as well as profilig to find bottlenecks. Optimization strategies and C-extensions in both Python 2 and 3. Cython, PyPy, etc
- Code Organization and Packaging in Python (1/2 day) - covers the important considerations of creating Python modules and packages. Topics will include how to organize your code and common package layout, how packages can account for the differences between Python 2 and Python 3, options for including C extensions, packaging/distribution options, and considerations for participation in open source projects.
- Moving to Python 3 (1/2 day) - migrating from Python 2 to Python 3 is a non-trivial undertaking. This course will look at the differences between the two languages, common pitfalls in converting, existing conversion tools, and strategies to get Python 2.x code as close to ready to convert as possible and then make the conversion. We will also discuss strategies for making the same code support both Pyton 2.7 and 3.x.
- Data Cleaning with Python (1/2 day) - This course will deal with techniques to get raw data cleaned and into a format you can use. After considering the ways that the data might be acquired, from files and compressed archives to API’s and web scraping, we will deal with extracting data from common data formats, such as JSON, CSV, and XML, and their pitfalls. We’ll consider strategies for handling very large data sets and ways to handle common problems and defects in data files.
- Python for System Adminstration (1/2 day) - covers the basics of Python as language for *nix system administration. We'll introduce/review the basics of the language and cover how to create clean, maintainable and "Pythonic" code and to handle command line options and redirect standard I/O, and begin to look at how to call non-Python utilities. Further topics will be how to use Python to traverse file systems, use regular expressions and test Python scripts. As time allows fetching and serving files, connecting to other systems via SSH and processing email will be covered. (Legacy course - I haven't taught this one in some time, but it could be revived if there was interest.)
Typically my training is done on-site, at your office or facility. For information on class sizes, fees, etc, please contact Naomi at email@example.com to discuss your needs and get a more exact quote.
Most of my training is done on-site. However, I am open to the possibility of offering training remotely. Please send an email to firstname.lastname@example.org to discuss options and costs for remote training.