Skip to content

Contact sales

By filling out this form and clicking submit, you acknowledge our privacy policy.

Software Engineering in Python

Course Summary

The Software Engineering in Python training course is targeted at Python users who lack a formal programming background (e.g., Data Scientists, Machine Learning Engineers, DevOps Engineers, etc.).

The course begins with learning software engineering techniques such as object-oriented programming. Next, the course covers modularity, test-driven development, and other best practices. The course concludes with students learning to write, document, and maintain production-level code in Python.

Learn software engineering techniques using Python.
Developers and developer teams looking to learn the best practices of using Python.
Data Engineer - Data Scientist - Software Developer - System Administrator - Web Developer
Skill Level
3 Days
Related Technologies


Productivity Objectives
  • Describe object-oriented programming.
  • Explain test-driven development best practices.
  • Adopt Python code for software engineering.

What You'll Learn:

In the Software Engineering in Python training course, you'll learn:
  • Python Review (if needed)
    • Slicing
    • List/Dict Comprehensions
    • Tuples
    • enumerate()
    • zip()
    • *args / **kwargs
    • := operator (Python 3.8)
    • modules / __main__
    • Packages
    • exception handling
    • any additional topics, as needed
  • Documentation
    • Meditations on The Zen of Python
      • ...explicit is better than implicit
      • ...simple is better than complex
      • ...complex is better than complicated
      • ...readability counts
    • Ergo...Documentation is Important!
    • Commenting vs. Documenting
      • Docstrings / help() / pydoc
  • Object-Oriented Python
    • What is a Class? (and WHY do we need them?)
    • The Structure of a Python Class
    • The "self" syntax
    • Class object vs. instance
    • Inheritance
    • Mixins
  • Advanced Datatypes: The Collections Module
    • Ordered Dictionaries
    • Default Dictionaries
    • Deques
    • Named Tuples
    • Counters
  • Functional Programming
    • Lambda Functions
    • map()
    • filter()
    • The functools module
      • lru_cache()
      • Partial Functions
  • Decorators
    • Use Cases
      • error handling
      • setup/teardown
      • other boilerplate code
    • Writing Our Own Decorators
  • Object-Oriented Python: Redux
    • Properties (not Getters and Setters)
    • Static Methods
    • Class Methods
    • The Python Data Model
  • Iterables, Iterators, and Generators
    • Containers vs. Iterables vs. Iterators
    • Generators
    • Generator Expressions
    • vs. list/set/dict Comprehensions
    • The itertools Module
  • Testing
    • Unit Testing
    • Test-Driven Development
    • Test Coverage
    • Dirty Services
    • Mocking
    • Autospec
    • __name__ == '__main__'
    • pytest
  • Logging
    • What is it?
    • Why do we need it?
    • Log Levels
    • The logging Module
  • Debugging with pdb
    • Debugging from the Command Line
    • Using pdb to Test a Module
    • Launching pdb From Within Your Program
  • Context Managers
    • The with Statement
    • Writing Your Own
  • Virtual Environments
    • Virtualenv
    • Venv
    • pipenv
  • Type Hinting
    • What, Why, How?
    • Comparison with Statically-Typed Languages
  • Linting
    • Meditations on PEP-8
    • flake8 / black / pycodestyle
“I appreciated the instructor's technique of writing live code examples rather than using fixed slide decks to present the material.”


Dive in and learn more

When transforming your workforce, it's important to have expert advice and tailored solutions. We can help. Tell us your unique needs and we'll explore ways to address them.

Let's chat

By filling out this form and clicking submit, you acknowledge our privacy policy.