UW Certificate Program in Python Programming

System Development with Python

Spring Term, 2011
(10 Sessions) Tuesdays 6 - 9 pm, April 5 through June 7.

This program also includes Programming in Python (Fall 2010) and Internet Programmming in Python (Winter 2011).

Summary: This course is a will primarily be a studio/lab/clinic, where students (working individually or in groups) will do a capstone project of their own choosing that applies and consolidates what they learned in the first two courses.

Each meeting will also include a presentation by instructors, guests, or students. See the provisional schedule. The prepared presentation, including questions and discussion, will be limited to one hour per class.

Two hours per class will be devoted to project work. An instructor will meet with each student for twenty minutes in turn (each student working in a group will get the full twenty minutes). Each twenty minute appointment will be scheduled at least a week in advance. Students should prepare questions or discussion points for their appointments in advance. Students will present their projects to the class on the last day.

Instructors: Jonathan Jacky and Brian Dorsey. See Fall and Winter course pages for more details.


Here is a provisional schedule of possible presentation topics.

WeekDateTopics and links
1Apr 5 Integrating a Python web application with client code: Javascript, Ajax, canvas, ...

Jon, with guest speaker Jon Crump. Lecture notes here.

Interferometic Qubit Meaurement, explanation here.

Server code: spino.py, spinometer.py. Client code: spin-sim.html (view source), simAnim.js.

2Apr 12

Testing: doctest, unittest, ...


Files: lecture slides, truth.py, doctest_example.txt, unittest_example.py
3Apr 19

Testing: py.test, nose, program testing, automated testing

Brian, Jon

py.test & nose: lecture slides, truth.py, test_truth.py, doctest_example.txt, test_unittest_example.py

notes, program testing: trun.py, clogdiff, test_ls.py, alternatively test_ls_unit.py, automation: generators, model-based testing.

4Apr 26

Graphics and GUI protgramming: wxPython, object-oriented programming, and events


notes, GNU Radio, wxPython: reference (etc.), tutorial (another here).
examples: button counter, scope and spectrum analyzer (simulates this, requires this, also available here).

5May 3

Doing several things at once: events, threads, and processes


notes, advice, libraries (etc.), and systems
events: button counter, echo server and client using select (based on this and this, also here)
threads: X's and O's, echo server using threads (based on this), ascii oscilloscope
processes: a compute-bound program, called from the shell, from threads, and from processes.

6May 10

Asynchronous network frameworks: Greenlets, ...


lecture slides and notes.
Echo servers: asyncore, gevent, twisted,

7May 17

Connecting Python to other languages: C-API, SWIG, and Cython


notes with many more links in addition to these:
C-API: reference and tutorial, example: hellomodule.c and setup.py
SWIG: reference and tutorial, example: hellomodule.c, hello.i, hello_build.sh.
Cython: reference and tutorial, example: hello.pyx, setup.py, another: integrate.py, integrate.pyx, setup_integrate.py.

also, PyPy (more here), and the PyPy Speed Center.

8May 24

Distributing and installing Python modules: distutils and PyPI, also setuptools, easy_install, pip, virtualenv, fabric, ...


notes with more links in addition to these:
the Python Package Index (PyPI, aka CheeseShop), and its tutorial.
python.org on distutils and installation. another tutorial, especially here.
example setup.py and README.rst.
alternatives to distutils, also here and here and here.
Using version numbers and reStucturedText.

detailed explanation and critique of packaging tools by Distutils2 author.

9May 31

Distributing Python programs: p2exe, cx_Freeze, pyInstaller, py2app, bbfreeze, ...


notes, slides, and examples.

10Jun 7

Presentations of student projects.


Jonathan Jacky, jon at u dot washington dot edu