Python Master Classes - In Chicago

with David Beazley
Author of the "Python Essential Reference"
Dabeaz LLC
5412 N Clark Street #218
Chicago, IL 60640
Follow dabeazllc on Twitter

Target Audience:

This class assumes that you already have some basic programming experience in another language such as C, C++, Java, Perl, Ruby, PHP, etc. However, no experience with Python or Django is assumed.

Dates:

  • November 15-19, 2010

Price:

  • $1995 (Practical Python + Django)
  • $1495 (Practical Python Only)
  • $695 (Introduction to Django Only)

What's Included?

  • A printed copy of the course notes.
  • A copy of the "Python Essential Reference, 4th Ed."
  • Breakfast and lunch at local restaurants
  • Snacks

[ Register | FAQ ]

Practical Python Programming Plus Django

Instructors : David Beazley, Chad Glendenin and Rodrigo Guzman

[5 days] A course that combines material from the Practical Python Programming course with a two day hands-on introduction to Django. The first three days are devoted to learning the basics of the Python language. For the Django component, Dave is joined by Chad Glendenin and Rodrigo Guzman, the founders of PyBrew, a Chicago-area Django development company. Students will go through the basics to the not-so-basics of putting together a Django web application. Topics include databases and the data-model abstraction layer, processing web requests in the view layer, handling user interaction through forms, reusing pluggable Django applications, the template language, project organization, best practices, and tricks of the trade. This might be the ultimate course for anyone who wants to learn both Python and Django all at once.

Already know Python or Django? If you wish, you also can sign up for just the "Practical Python Programmimg" or "Introduction to Django" course sections separately.

About the Instructors

David Beazley is the author of the Python Essential Reference and member of the Python Software Foundation. David has been actively involved with the Python community since 1996 and is the guilty party responsible for Swig, a compiler for integrating Python with C/C++. He currently operates Dabeaz LLC, a company that specializes in Python training and software development.

Chad Glendenin is the co-founder of Pybrew, LLC, a Django web-development company. He has used Django to build front-ends to large scientific-simulation databases, content-management systems and rapid prototypes of web applications for clients, and several web-based products for teachers and scientists. Chad has taught Python classes at the University of Chicago, where he was also an advocate of high-level tools like Django to improve productivity.

Rodrigo Guzman is the co-founder of Pybrew, LLC, a web-development company specialized in developing web applications with django. He has used django for a variety of projects, including rapid-prototyping for clients. In a previous life Rodrigo was a physics graduate student at Northwestern University, where he's taught introductory physics labs to over 300 students over the past four years. Rodrigo is also proficient in javascript and other web-related tools.

Detailed Course Outline

Practical Python Programming (3 days)

  1. Introduction to Python.

    An introduction to the Python programming language. Covers details of how to start and stop the interpreter and write programs. Introduces Python's basic datatypes, files, functions, and error handling.

  2. Working with Data.

    A detailed tour of how to represent and work with data in Python. Covers tuples, lists, dictionaries, and sets. Students will also learn how to effectively use Python's very powerful list processing primitives such as list comprehensions. Finally, this section covers critical aspects of Python's underlying object model including variables, reference counting, copying, and type checking.

  3. Program Organization and Functions.

    More information about how to organize larger programs into functions. A major focus of this section is on how to design functions that are reliable and can be easily reused in other settings. Also covers technical details of functions including scoping rules, documentation strings, and exception handling.

  4. Modules and Libraries.

    How to organize programs into modules and details on using modules as a tool for creating extensible programs. This section concludes with a overview of some of the most commonly used library modules and instructions on how to install third party library modules. Some of the standard library modules covered in this section include those related to the file system and file handling, subprocesses, regular expressions, XML, data serialization, and database access.

  5. Classes and Objects.

    An introduction to object-oriented programming in Python. Describes how to create new objects, overload operators, and utilize Python special methods. Also covers some basic principles of object oriented programming including inheritance.

  6. Inside the Python Object Model.

    A detailed look at how objects are implemented in Python. Major topics include object representation, attribute binding, inheritance, memory management, and special properties of classes including properties, slots, and private attributes.

  7. Testing, Debugging, and Software Development Practice.

    This section discusses many isses that are considered important to Python software development. This includes effective use of documentation strings, program testing using both the doctest and unittest modules, and effective use of assertions. The Python logging, debugging, and profiling modules are also described.

  8. Generators.

    Covers the iteration protocol, generators, and generator expressions. A major focus of this section concerns the use of generators to set up data processing pipelines--a particularly effective technique for addressing a wide variety of common systems programming problems (e.g., processing large datafiles, handling infinite data streams, etc.).

  9. Text I/O Handling.

    More information on text-based I/O. Topics include text generation, template strings, and Unicode.

  10. Some Advanced Topics.

    A variety of more advanced programming topics including variable argument functions, anonymous functions (lambda), closures, decorators, static and class methods, and packages.

Introduction to Django (2 days)

  1. Project Setup.

    A review of the web's client-server architecture and a conceptual overview of the Django framework and its Model-View-Control (MVC) design pattern, followed by a tutorial on setting up your own Django project. Includes setting up a database and static media (such as images and CSS), setting up Django templates for generating HTML, and an introduction to some third-party add-ons for development and debugging.

  2. Django's Model Layer.

    An introduction to Django's Model abstraction, including the relationship between Django models, Python classes, and database tables. A major focus is on how to add and edit objects in the database, and how to perform queries to locate specific objects. Also includes a behind-the-scenes look at how Django interacts with SQL databases and useful tips on building models for real-world apps (e.g., the use of "slugs," and the difference between "blank" and "null").

  3. Django's Admin Interface.

    Learn how to activate and use Django's Admin, an automatically generated, web-based user interface for creating, editing, and deleting your model objects.

  4. Views and URLs.

    A look at how Django processes URLs and uses them to dispatch web requests to view functions, and an introduction to writing those view functions. Includes an introduction to Django's template processing for producing HTML and an introduction to Django's generic views, which save time when writing view functions. Also includes an overview of how Django processes an incoming web request and produces a response for the browser, from end to end.

  5. Authentication.

    An overview of how Django implements user sessions, authentication (knowing who the user is), and authorization (know what the user is allowed to do). Covers how to log users in and out and how to use authentication in templates and in view functions to implement identity and security features. Includes an overview of user profiles, permissions, and auth changes in Django 1.2.

  6. Testing.

    A review of automated testing for Python programs, an overview of testing for web-based software, and a look at the facilities Django provides for testing web applications. Covers Django's testing commands, unit-test classes, fixtures, and the test client.

  7. Views and Forms.

    A detailed look at Django's form objects and facilities for processing HTML forms. This section also returns to the view functions from section 4 and covers them in more depth. Covers object-oriented programming concepts applied to HTML forms, Django's Form parent class, how to work with form objects, and how to process forms in view functions. Includes a introduction to form validation and to Django ModelForms.

  8. Contributed and Third-party Apps.

    Covers Django's Messages framework, support for sending email, signing up new users with the django-registration module, and adding tagging support to arbitrary models with the django-tagging module.

Copyright (C) 2009-2010, Dabeaz LLC. All Rights Reserved.