Qtrac Ltd.
Software
Courses
Books
Game
All Writing & Software
Privacy
Copyright © 2006-25 Qtrac Ltd.
All Rights Reserved.
Intermediate/Advanced Python Programming
A training course for Python programmers
Prerequisites: This course is aimed at people with at least a few
months Python programming experience or who have completed our
Python Programming course.
“I have increased my programming level by orders of magnitude.”
—Attendee Feedback
This course has a fixed core curriculum for the first three days, with
the last two days spent on topics that the participants choose from the
remaining available sessions. When done on-site the course can be done
in just four days, if necessary, by doing fewer sessions.
The course can be taught based on Python 2 (2.5-2.7) or
Python 3 (3.1 or later).
The course is divided into topic-specific modules, each of which is
divided into sessions. The first 23 sessions provide a solid foundation
for the rest of the course. The remaining modules are all optional and
for any given course there is normally only time to do a proportion of
them. For some modules it is possible to skip some of their sessions.
Each session takes about 30-90 minutes each. Most sessions have four
parts:
- Introduction/Overview/Key Concepts
- Code Review (i.e., how to do the thing/use the feature in
practice)
- Exercise(s)
- Review of Solution(s)
There are also some brief “Interludes”; these are short 5-10 minute talks.
It is usual to do 6-10 sessions each day.
Course outline:
- Procedural Programming Refresher
- Built-in Single Valued Data Types
- String Formatting
- Built-in and Library Sequence Types
- Built-in and Library Set and Mapping Types
- Control Structures
- Custom Functions I
- Custom Functions II
- Interlude Procedural vs. Object-Oriented Programming
- Object-Oriented Programming Refresher
- Introduction to Object-Oriented Programming and Python Classes
- Inheritance and Polymorphism, and Attribute Access
- Creating Mutable Custom Value Types
- Interlude Refactoring
- Functional-Style Programming I
- What is Functional Programming and why functional-style?
- The Functional Classics
- Closures and Partial Function Application
- Intermediate/Advanced Object-Oriented Programming I
- Advanced Attributes
- Debugging and Profiling
- Debugging
- Profiling
- Unicode
- Unicode
- Modules, Namespaces, and Packages
- Packages, Importing, and Modules
- Interlude Test Driven Development/Test Driven Design
- Intermediate/Advanced Procedural Programming
- Function and Method Decorators
- Context Managers
- Generator Expressions and Generator Functions
- Iterators
- Factory Functions
- Design Patterns
- Creational Design Patterns
- Structural Design Patterns
- Behavioral Design Patterns I
- Behavioral Design Patterns II
- Interlude Writing Faster Code [not if we do Extending Python]
- User Interfaces I
- Command line parsing with argparse
- Introduction to Web programming with bottle
- Your Code Reviewed
- A Live Look at Participants' Anonymous Code—useful and
fun!
- Networking
- Uploading and Downloading Files
- Creating a TCP Server
- Creating a TCP Client
- Creating a Web Server
- Creating a Web Client
- Using asyncore and asynchat
- High-level networking with XML-RPC
- High-level networking with RPyC
- Regular Expressions
- Introduction to Regular Expressions
- Regular Expressions in Practice
- File Globbing
- Parsing
- Writing Hand-Crafted Parsers
- Pythonic Parsing with PyParsing
- Lex/Yacc-Style Parsing with PLY [Prerequisite: Regular
Expressions]
- Extending Python
- Accessing C libraries with ctypes
- Accessing C libraries with Cython
- Writing compilable Python with Cython
- XML
- XML
- Concurrent Programming
- Introduction
- "Lock-free" Threading
- Threading with Locks
- Multiprocessing
- High-level Concurrency with Futures
- Dates and Times
- The Standard Library's Date/Time Modules
- The Third-Party DateUtil Module
- Databases
- DBM Databases
- SQL Databases
- Object-Relational Mappers
- Unit Testing
- Unit Testing
- Python Versions
- Moving from Python 2.5 to 2.6
- Moving from Python 2.6 to 2.7
- Moving from Python 2.x to 3.1+
- Interlude Safer Coding with Traits
- Intermediate/Advanced Object-Oriented Programming II
- Creating Immutable Custom Value Types
- Creating Custom Collection Types
- Class Decorators
- Metaclasses
- Functional-Style Programming II
- Coroutines for Lightweight Concurrency
- User Interfaces II
- Full-screen text interfaces with Urwid (Unix only)
- Introduction to GUI programming with Tkinter
- Introduction to GUI programming with PySide/PyQt/Qt4
- Programming Project
Top