Announcements | Summary | Readings | Software | Schedule | Assignments | Due dates

Programming in Python

Autumn Term, 2010
(10 Sessions) Tuesdays 6 - 9 pm, October 12 through December 14. Optional make-up class Tues Dec 21 6 - 9 pm.

UW Certificate Program in Python Programming, also includes Internet Programmming in Python (Winter 2011) and System Development with Python (Spring 2011).

This page is updated every week. Students in the class should view this page frequently (remember to refresh your browser).


Announcements and updates:

Dec 17: Winter registration Anyone who wishes to register for Python winter quarter who hasn’t yet received instructions should contact Kim Mechaelis, kmechaelis@pce.uw.edu right away

Dec 11: Questions and
answers updated.
Dec 9: The optional make-up class will be Tuesday evening, Dec 21, 6 - 9 pm, at the usual time and place.
Dec 7: Here is a summary of student presentations.
Dec 6: If you have not yet scheduled your presentation, email me.
Dec 4: Let me know if and when you would attend an optional make-up class.
Dec 1: Recommended readings for weeks 9 and 10 in the schedule
Nov 23: No class tonight, cancelled due to weather. See UWPCE Alert and UW Alerts.
Nov 21. Try to read sections 17.1 - 17.5 in the textbook (just 5+ more pages) before class on Tues Nov 23.
Nov 17. If you must be absent, contact me in advance and email me your weekly report.
Nov 17. FYI, Seattle Python Interest Group Thurs Nov 18 on NumPy
Oct 30. Questions and answers updated
Oct 26. Lenovo AC adapter found in classroom, left with lost and found in office on fourth floor.
Oct 18. Results of the entry questionnaire

Week 10. Lecture: class-10.txt and examples: packages.py, foo.py.
  Presenters: Daniel Araneda, Ben Cleveland, Jeff Conn, Toshi Esumi, Delane Jackson, Jacob Newfield
Week 9. Lecture: class-9.txt and examples: vector.py, generator.py, decorator.py.
  Presenters: Sunhee Jung, Nolan Nichols, Ted Tieken, Bryan Walls
Week 8. Lecture: class-8.txt quiz_8.py, and examples: vehicle.py, simulator.py, pedestrian.py.
  Presenters: Aaron Franklin, Derek Reiff, Mark Simonson
Week 7. Class cancelled due to weather, presenters rescheduled to week 8
Week 6. Lecture: class-6.txt, quiz_6.py, and examples: comprehensions.py, roman.py, corrector.py, set.py, product.py.
  Presenters: Nathan Buck, Paul Fearn, Richard Fuhr
Week 5. Lecture: class-5.txt, quiz_5.py, and examples: traffic.py, nested.py, route.py, phones.py, traverse.py.
  Presenters: Peter Conerly, Jon Crump, Jonathan Poland, Daniel Nguyen
Week 4. Lecture: class-4.txt, quiz_4.py, and examples: recursion.py, strings_files.py, bio_demo.py, ceru_human.sp.
  Presenters: Jeff Boschee, Lisa Henry, Andrew Hosch, Patrick Morgan
Week 3. Lecture class-3.pdf and class-3.txt, quiz_3.py, and examples: repetition.py, assertions.py.
  Presenters: Eyal Arian, Melissa Rice, Gregg Toth
Week 2. Lecture class-2.pdf, quiz_2.py, and examples: functions.py, parameters.py.
  Presenters: Aaron Bazar, Jeff Silverman, Joe Simpson, Alicia Sullivan.
Week 1. Lecture, examples and resources, requirements and evaluation.
  FYI, the Seattle Python Interest Group meets Thurs Oct. 14


Course objectives: Introduce the Python language, its most important libraries, and its recommended programming styles and idioms. Teach how to solve typical programming problems in Pythonic style. Survey some exemplary Python applications and systems. Teach career skills and work habits including testing and version control. Students will begin accumulating a portfolio of completed assignments, working toward a substantial original project in the Spring.

Prerequisites: No previous Python experience is required. This course is not intended for absolute beginners in programming, but does include a self-contained review of elementary features. Students must be able to use a command line, edit a text file, and download and install software. Students should have some prior exposure to programming in any language, sufficient to write very simple programs or scripts that use variables, conditionals (if ...), and iteration (loops).

Textbooks: The textbook comes in two versions: a printed book named Python for Software Design, and a free online version named Think Python. Despite the different titles, the two versions have the same contents.

Instructor: Jonathan Jacky is a research scientist at the University of Washington. He has experience as a software developer for research laboratories, hospitals, and systems software companies. He has taught at universities and in industry, and is the author of two textbooks on software development and testing. His Python experience includes the GNU Radio signal processing system, the FLiP proof checker, and the PyModel testing framework.

Technology Requirements: Students must have access to a computer for their assignments and projects, where they can install software (the course does not provide a computer laboratory). It is recommended that students have a portable computer to bring to class. Internet access will be provided at classes.

Assessment criteria: The course is graded Pass/Fail, based on satisfactory completion of required programming assignments and classroom presentations. Attendance is required; more than two unexcused absences will result in a Fail. More details here.

Disability accommodation: The University of Washington is committed to providing access and reasonable accommodation in its services, programs, activities, education and employment for individuals with disabilities. For information or to request disability accommodation contact: Disability Services Office: 206.543.6450/V, 206.543.6452/TTY, 206.685.7264 (FAX), or e-mail at dso@u.washington.edu.


Textbook

The textbook comes in two versions, a printed book:

Python for Software Design: How to Think Like a Computer Scientist by Allen B. Downey. Cambridge University Press, 2009.

and a free online version:

Think Python: How to Think Like a Computer Scientist

Despite the different titles, the two versions have the same contents, including the same chapter, section, and exercise numbers. You may use the version you prefer.

This text is an excellent introduction to Python language fundamentals and semantics. There are many features and topics it does not discuss. We will discuss them in class and assign supplementary readings.

Summaries

Quick Python Script Explanation for Programmers (one page)
Learn Python in 10 minutes
NanoPy

Reference

Python 2.6 Quick Reference (awesomely dense and complete)
Python 2.x documentation (official documentation from python.org)

Supplementary texts

The Python Tutorial (from python.org)

Other resources

Examples and Resources (notable Python libraries and scriptable applications)


Software

Students will need Python installed on their computers. Python comes already installed on Macs and most Linux distributions.

There are two different "current" versions of Python, 2.x and 3.x. We will be using 2.x, where x means any sufficiently recent version. 2.7 is most recent, but 2.6 will also work.

The current Python 2.x version is available here. I use this source for Windows. For the Mac, I use macports, which manages multiple Python versions nicely. For Linux, I use the distro's package manager (Synaptic on Ubuntu, for example).


Schedule and Assignments

Tuesdays 6 - 9 pm, October 12 through December 14 (10 sessions).

Methodological issues such as testing and version control will be discussed when pertinent.

Additional topics and readings will be added, consult frequently (refresh your browser).

Please read the assignment (and try some of the exercises) before the class meeting. Here PySD/TPy refers to the textbook, either Python for Software Design (printed) or Think Python (online). Both versions use the same chapter numbers (but in the TPy web pages, Chapter 2 is in file book003.html etc.)

WeekDateTopicsReading Assignments
1Oct 12 Introductions. Some Python applications and systems. Installing Python. Using the command interpreter and development environment. Finding and using the documentation. Getting help.

Lecture, examples and resources, requirements and evaluation.
FYI, the Seattle Python Interest Group meets Thurs Oct. 14
Summaries here, here.
2Oct 19 Variables, values, expressions, and assignment. Functions. Definition and use. Arguments. Block structure. Scope. Modules and import.

Lecture class-2.pdf, quiz_2.py, and examples: functions.py, parameters.py.
Presenters: Aaron Bazar, Jeff Silverman, Joe Simpson, Alicia Sullivan.
PySD/TPy, Chs. 2, 3
3Oct 26 Boolean expressions. Conditionals and control flow. Iteration and recursion.

Lecture class-3.pdf and class-3.txt, quiz_3.py, and examples: repetition.py, assertions.py.
Presenters: Eyal Arian, Melissa Rice, Gregg Toth
Progress report and midcourse evaluation due.
PySD/TPy, Chs. 4, 5, 6, 7
4Nov 2 Data types. Sequences. Strings. Regular expressions. Files. Exceptions. Text Processing.

Lecture: class-4.txt, quiz_4.py, and examples: recursion.py, strings_files.py, bio_demo.py, ceru_human.sp.
Presenters: Jeff Boschee, Lisa Henry, Andrew Hosch, Patrick Morgan
PySD/TPy, Chs. 8, 9, 14
5Nov 9 Data types. Sequences again. Tuples and Lists. Mutability. Aliasing. Argument passing. List comprehensions.

Lecture: class-5.txt, quiz_5.py, and examples: traffic.py, nested.py, route.py, phones.py, traverse.py.
Presenters: Peter Conerly, Jon Crump, Jonathan Poland, Daniel Nguyen
PySD/TPy, Chs. 10, 12 (except 12.6)
6Nov 16 Data types. Comprehensions again. Dictionaries. Sets and Bags. Arrays. Functional programming and lambda. Data type case studies and review.

Lecture: class-6.txt, quiz_6.py, and examples: comprehensions.py, roman.py, corrector.py, set.py, product.py.
Presenters: Nathan Buck, Paul Fearn, Richard Fuhr
Second portfolio progress report due.
FYI, Seattle Python Interest Group Thurs Nov 18 on NumPy
PySD/TPy, Chs. 11, 13 (also 12.6)
7Nov 23 Classes, instances, and methods. Object-oriented programming.

Class cancelled due to weather, content and presenters rescheduled to next week.
PySD/TPy, Chs. 15, 16, also 17.1 - 17.5.
8Nov 30 Inheritance and duck typing. Object-oriented design.

Lecture: class-8.txt quiz_8.py, and examples: vehicle.py, simulator.py, pedestrian.py.
Presenters: Aaron Franklin, Derek Reiff, Mark Simonson
PySD/TPy, Chs. 17, 18, 19
9Dec 7 Inside Python. Special attributes and methods. Iterators and Generators. Decorators.

Lecture: class-9.txt and examples: vector.py, generator.py, decorator.py.
Presenters: Sunhee Jung, Nolan Nichols, Ted Tieken, Bryan Walls

Recommended readings (read as much as your time and interest allows):
Classes, Iterators and Generators, review classes and learn about iterators and generators.
Special Methods, learn about __str__, __add__ and their many many cousins.
Decorators, gives some idea of what's possible ...
Python Types and Objects, Attributes and Methods, if you want to know what's really going on ...
See panel at left
10Dec 14 Organizing large systems. Packages. Preview of Winter and Spring courses.

Lecture: class-10.txt and examples: packages.py, foo.py.
Presenters: Daniel Araneda, Ben Cleveland, Jeff Conn, Toshi Esumi, Delane Jackson, Jacob Newfield

Recommended readings (read as much as your time and interest allows):
Modules and Packages, review modules and learn about packages.
Python Glossary, a summary of where we've been, with hints about topics we didn't cover.

Final portfolio progress report and self-evaluation due.
See panel at left
11Dec 21 Optional make-up class (to make up for cancelled Nov 23 meeting in week 7)

Attendance is not required. This will be an informal question/answer session. No weekly report is required, there is no reading assignment and there will be no prepared lecture or student presentations.
None

Due dates

Nov 16. Second portfolio progress report due.
Dec 14. Final portfolio progress report and self-evaluation due.

Announcements | Summary | Readings | Software | Schedule | Assignments | Due dates

Jonathan Jacky, jon at u dot washington dot edu