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.
Data types and functional programming
- functions, docstrings, and simple tests with doctest
- base datatypes overview (list, dict, tuple, set, string)
- other datatypes: namedtuple, defaultdict, ordereddict, deque, etc
- function declaration/calling (default values, *args and **kwargs)
- functional techniques: map/filter/reduce, list.sort, operator module
- functional closures and simple decorators
Iteration, objects and classes
- list comprehensions, generator expressions and generator functions
- fun with iteration: itertools.imap, tee, chain, groupby, etc
- oop: creating classes, inheritance, mro and super
- oop features: operator overloading, properties and methods, abstract base classes
Advanced Features and Testing
- nose (collecting and running tests)
- test coverage
- using mocking and monkeypatching in testing
- writing testable code - dependency injection and refactoring
- configurable decorators
- context managers
- metaclasses and class decorators
Profiling, Performance, and Packaging
- profiling tools (timeit, %prun, runsnakerun)
- performance patterns and anti-patterns in Python Code
- threads, processes and the GIL
- alternative approaches to parallelization
- speeding up Python code with Cython
- creating installable packages and understanding the Python ecosystem
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.