How do the world's best engineering teams use Python? What language features to they use, and how? How do you do test-driven development, leverage Python's object model, build concurrent servers, and more?
This course for experienced developers helps you take your expertise in Python to a whole new level.
Students must have at least one year of full-time development experience in any language; understanding and experience with object-oriented design; and at least six months experience writing Python (2 or 3). While this course is primarily taught in Python 3, no prior knowledge of Python 3 is required.
Students will learn the most powerful patterns and tools modern Python has to offer, and how to leverage them to create reliable, maintainable applications - either individually, or as part of a development team. This course is taught using Python 3, with instruction throughout on how to apply the concepts to Python 2.
Test-driven Python development
Writing scalable Python code
- iterators and Python's iterator protocol
- Leveraging built-in types for improved performance
Python's logging module
- Getting the most out of Python's amazing and rich logging module
Python's concurrency model
- Understanding the important distinction between OS threads and Python threads, and the implications for concurrent Python software
- Scaling CPU-bound tasks with multiprocessing
- Asynchronous programming with asyncio
- Multiple threads in Python: when to do it, when to avoid it, and best practices
All about decorators
- Review of basic decorator patterns
- Creating decorators that take arguments
- Powerfully extensible class-based decorators
- Creating decorators for classes (which is a completely different thing)
Object-oriented programming with Python
- The Python object model
- Creating new syntax and expressive code with "magic methods"
- Patterns of abstraction and code organization
- Metaclasses: what they do, when to use them, and when to avoid them
- RESTful API integration
- Building REST servers in Python
Mastering list comprehensions
Functional Python programming
Practical agile software development in Python
- Virtual environments
- Package management
- Version control considerations
- Maintainability and readability
- Best Practices for reliability and robustness
Advanced data types and collections
Additional topics depending on goals and desires of participants
Aaron Maxwell is a technology entrepreneur with a strong background in software engineering and scientific research. He is a frequent public speaker, author of books and essays, contributor to open-source and free software, and an enthusiastic teacher. As an engineer, his areas of impact and interest have ranged from the mobile web, to cloud computing, to building robustly concurrent systems and languages. He currently lives in San Francisco, CA, USA.