PLEASE NOTE: This is a LIVE INSTRUCTOR-LED training event delivered ONLINE.
It covers the same scope and content as a scheduled in-person class and delivers comparable learning outcomes.
Why Learn Python? Watch the video now!
Python is a general purpose programming language that was designed to be compact, easy to use, easy to extend, and which has a large standard library and a very active development community. As well as being a general purpose programming language, Python is widely used as a scripting language, a glue language, for data science and machine learning, and for software test.
Essential Python is intended for professionals working in the electronic systems hardware and embedded software development flows. Essential Python is for people who need to learn Python quickly to get a specific job done. It focusses on the most commonly used features of the Python language and teaches you all you need to know to start using Python properly and effectively.
Workshops comprise approximately 50% of class time and are based around carefully designed hands-on exercises to reinforce learning.
Essential Python is a hands-on programming course aimed at software, hardware, and support engineers who need to use Python for scripting development and tool flows, for hardware verification, for software test, for data science and machine learning, or for running Python on embedded devices.
This course assumes you already know how to write computer programs. Delegates should have a good working knowledge of at least one programming language or hardware description language, suitable examples being C, C++, Java, Perl, VHDL, or SystemVerilog. An understanding of object-oriented programming would be beneficial, but is not absolutely essential.
This course is not suitable as an introductory course in computer programming, that is, this course does not teach Python as a first programming language. Please contact Doulos direct to discuss and assess your specific experience against the pre-requisites.
Doulos training materials are renowned for being the most comprehensive and user friendly available. Their style, content and coverage is unique in the embedded systems training world, and has made them sought after resources in their own right. The materials include:
What is Python? • The Python World • Python Implementations • The Python Shell • Running Python Programs From a File • The Python Command Line
Numbers • Strings • Type Conversions • Built-in Functions • String Index • String Slice • String Methods • Find and Replace • Splitting Strings • Simple Formatting
Comments • if Statements • Comparison and Boolean Operators • Conditional Expression • Operators • for Statements • break • continue • while Statements • assert Statements • Functions • global Variables • nonlocal Variables • Lines and Continuation • IDLE
Lists, Tuples, and Dictionaries
Lists • Length, Concatenate, Repeat • Append, Insert, Pop, Extend, Remove • Index • Loops and Lists • Sorting Lists • List Comparison • Tuples • Dictionaries • Sets
F-Strings • Field Width, Justification, Padding • Number Base, Comma, Sign • Floating Point
Files and Exceptions
Reading Standard Input • Writing to a File • Writing Files using Print • Reading from a File • Variations • readline • Exceptions • Context Manager
Classes • Objects • Methods • Constructors • Data Attributes • Class Variables and Instance Variables • Class vs Object vs Function vs Method • The LEGB Scope Rule • Documentation Strings
Inheritance • Overriding Methods • Overriding the Constructor • Virtual Method Calls • Multiple Inheritance • Testing Class Relationships • Tying Variables to a Class • Duck Typing
Copying Instance Objects • Copying Lists • Assigning to a Slice • Shallow Copying
Defining Magic Methods • + • int and round • str and repr • Some Useful Magic Methods
Iterators and Generators
Sequence, Iterator, Iterable • Iterable Unpacking • Generators • List Comprehensions • Generator Expressions • lambda • map • filter, enumerate • zip • join • Dictionary Comprehensions
Default and Keyword Arguments • Argument Lists • None • Type Hints • Functions as Objects • Higher-Order Functions • Decorator Pattern • A Useful Decorator • Closures
import • from ... import • __name__ • Running Modules from the Command Line • Packages • The Python Package Index • pip
The Standard Library
math • random • statistics • datetime • time • timeit • os • os.path • os.environ • shutil • glob • sys • subprocess
match • Group and Groups • Character Classes • Shorthands • Anchors • Greedy versus Non-greedy • search • findall • Filter the Output from Another Program • sub
Tools for Distribution and Installation • pyenv • venv • Creating and Activating Virtual Environments • Sandboxing • pip freeze and Cloning • Version Pinning • pipenv • PyInstaller
Extending Python with C
Extending Python • Numba • C Foreign Function Interface • Building and Running with CFFI • Compiling from C Header and Source Files • Building from a Shared Object File • Pointers and Structures • CFFI Build Script • ffi.new • Cython • Cython Language • Comparing Numba, Cython, and cffi • Compare the Speed
TDD and Pytest
What is TDD? • The TDD Process • The Four-Phase Test Pattern • Fakes and Test Doubles • Pytest Architecture • A Simple Test • A Failing Test • Test Discovery • Grouping Tests in a Class • Testing that an Exception is Raised • Skipped Tests and Expected Failures • Test Summary Report • Running in a Temporary Directory • Monkey Patch Test Fixture • User-Defined Test Fixture
Positional Arguments • Usage and Help • Option Arguments • Options With and Without Values • Optional Values • nargs • Description, Epilog, Help • Prefix, Choices, Required
The NumPy Array • A 2-D Array • More Dimensions • Initializing Arrays • Arithmetic Series • Random Arrays • Copying the Shape of an Array • reshape • Adding Dimensions • ravel • transpose • Sorting • Reduction Functions • Plotting with Matplotlib
NumPy Broadcasting and Indexing
Elementwise Operations • Elementwise Compare • Combining Arrays and Scalars • Broadcasting • Row and Column Vectors • One-Hot Encoding • Dot Product • Vectorizing a Function • Array-of-Indices • Array-of-Booleans • Grids • linspace-like ogrid • Concatentate and Stack • Split • Tile
Plotting with Lines, Colors, and Markers • Text and Legend • Matplotlib APIs • Subplots • Subplots versus Figures in pyplot API • Log Axes • Types of Plot • Histogram • Plotting an Array as a Grid • Scatterplot • Numpy meshgrid • 3-D Surface Plot • Pandas • Seaborn • Seaborn Pairplot
Pandas Data Structures • Pandas Series • Pandas DataFrame • index and columns • Basic Indexing - Series • Basic Indexing - DataFrame • loc and iloc • Slicing and Dicing • Copying and Concatentation • Querying a Dataframe • Adding Columns to a Dataframe • reset_index, set_index, and reindex • Importing and Exporting DataFrames • Time Series and Alignment • Basic Statistics • Histogram • Plotting • Handling Undefined Data • Fill Options • Data Transformations • SQL-like Merge • Outer Merge • Groupby • Hierarchical Index • Hierarchical Row and Column Indexes • Stack • Unstack • Pivot Table
Customized Topics (on-site, team-based training)
We can also present supplemental content to address the specific requirements of your team, for example:
Please contact Doulos to discuss your specific requirements.
Complete an enquiry form and a Doulos representative will get back to you.
Enquiry FormPrice on request