Full course outline

Note that the set of topics addressed per day may vary, depending upon student needs.


[Day 1]
 
Introductions
Course topics
Daily schedule
 

1. General Python Introduction
 
So what's Python?
A Python history lesson
Recent Developments
What's Python good for?
What's Python not good for?
The compulsory features list
Python in the "Real World"
On apples and oranges
Summary: Why Python?
 

2. Using the Interpreter
 
How to run Python programs
Configuration details
Module files: a first look
The IDLE interface
Other Python IDEs
Time to start coding
Lab session 1
 

3. Types and operators
 
Numbers
Strings
Lists
Dictionaries
Tuples
Files
General object properties
Python's type hierarchies
Built-in type gotchas
Lab session 2
 

4. Basic statements
 
Assignment
Expressions
Print
If selections
Python syntax rules
Truth tests
While loops
Break, continue, pass, and the loop else
For loops
"range" and counter loops
Basic coding gotchas
Lab session 3
 

[Day 2]
 
5. Functions
 
Function basics
Scope rules in functions
More on "global"
More on "return"
More on argument passing
Special argument matching modes
Odds and ends
Functions are objects: indirect calls
Function gotchas
Lab session 4
 

6. Modules
 
Module basics
Module files are a namespace
Name qualification
Import variants
Reloading modules
Odds and ends
Module design concepts
Modules are objects: metaprograms
Module gotchas
Lab session 5
 

7. Classes
 
Class Basics
Using the class statement
Using class methods
Customization via inheritance
Specializing inherited methods
Operator overloading in classes
OOP: inheritance and composition
Classes are objects: factories
Methods are objects: bound or unbound
Odds and ends
Class gotchas
Lab session 6
 

8. Exceptions 
 
Exception basics
First examples
Exception idioms
Exception catching modes
Matching variations
Exception gotchas
Lab session 7
 
 
9. Built-in tools overview
 
The debugger and profiler
Inspecting name-spaces
Dynamic coding tools
Timing Python programs
Packaging programs for delivery
Lab session 7
 

[Day 3]
 
10. System interfaces
 
System modules overview
Arguments, streams, shell variables
File tools
Directory tools
Forking processes
Python thread modules
Fork versus spawnv
Example: make forward-link files
Example: regression testing
Lab session 8 (as time allows)
 

11. GUI programming
 
Python GUI Options
The Tkinter "hello world" program
Adding buttons, frames, and callbacks
Building GUIs by subclassing frames
Reusing GUIs by subclassing and attaching  
Advanced widgets: images, grids, and more
Sexier examples
Tkinter odds and ends
Lab session 8 (as time allows)
 
 
12. Python object persistence         
 
Object persistence: shelves
Storing class instances
Pickling objects without shelves
Using simple dbm files
Shelve gotchas
Python SQL Database API
Persistence odds and ends
Lab session 9 (as time allows)
 
 
13. Text processing
 
String objects: review
Splitting and joining strings
Regular expression matching
Parsing languages
Lab session 10 (as time allows)
 

14. Internet Scripting
 
Using sockets in Python
The FTP module
Email processing
Other client-side tools
Writing server-side CGI scripts
The Grail web browser
JPython: Python for Java systems
Active Scripting and COM
Other Internet topics: Zope, HTMLgen,..
Lab session 10 (as time allows)
 

15. Extending Python in C/C++
 
Integration modes
C extension modules
Binding C extensions to Python
Data conversions
C extension types
Wrapping C extensions in Python
Writing extensions in C++
Using the SWIG code generator
Lab session 11 (as time allows)
 

16. Embedding Python in C/C++    
 
Running simple code strings 
Calling objects and methods
Running strings: results & name-spaces
Registering Python objects and strings
Running code files from C
Precompiling strings into byte-code
Embedding under C++
Automated integration tools
Lab session 12 (as time allows)
 

17. Packages and Resources
 
Python portability
Assorted python packages
Internet resources
Python books
Python in the news
Python conferences and services
And finally
Lab session 12 (as time allows)