Python 300 Spring, 2015 May 5 through July 7th, Tuesday, 6 PM
At the end of the class, students will have completed a project of their own choosing and been exposed to a variety of advanced topics about the python programming language. Most programming class coursework involves small, self contained, assignments. While this is useful for learning specific concepts, it is hard to develop an understanding of the issues associated with larger software projects. This class gives students a chance to develop a significant project with the guidance of the instructors.
Lecture notes, sample code, etc will be available in the course github project:
http://UWPCE-PythonCert.github.io/EMC-Python300-Spring2015
Greg Corradini gregcorradini+uwpce@gmail.com
Students will need a laptop computer with python 2.7.x , a text editor or IDE, virtualenv, and the ability to install additional software.
Each student will develop a substantial project throughout the class. It can be an individual project or a group project with a small group from the class (2-4 students). We suggest that you strongly consider a group project -- it will give you a chance to practice developing with others, as well as give you a built-in way to get code review, folks to bounce ideas off of, etc.
The project can be anything done primarily in Python: command line utility, desktop GUI, web application, web service, numerical model, smart phone app, you name it.
The projects should be large enough to take everyone in the group about 8-10 hours a week in addition to class time, but small enough that you can get it to a useful state in 8-9 weeks of the class.
Each project group will be expected to present their work in one of the last two classes. The presentations should be focused on the software design, rather than the problem solved (though, of course, we'll want to know what problem you solved...)
We will expect you to use a Revision Control System (likely gitHub), and employ unit testing.
You should set it up with good package structure -- ready to share and/or deploy.
The project code should be documented: Sphinx!
Conform to PEP8 (unless you have a company style instead)
Use PyChecker and/or PyLint and/or PyFlakes
Please have your project selected and be prepared to start right in on it on day one!
Each class will involve a lecture interspersed with in-class exercises about the lecture topic.
Beginning the fourth week, the final hour or so of the class will consist of code reviews of students' work-in-progress.
In addition, as we work with you on your projects, we will highlight for the class interesting problems and their solutions that come up in class.
May 5th
- Class intro
- packaging
- unit testing and coverage
- unicode
May 12th
( Proposals Due )
- Documentation (docstrings, sphinx)
- Weak references
- PEP-8 (pylint/pychecker/pyflakes)
- Testing Addendum
May 19th
- Name Mangling and Decorator Addendum
- Debugging (print, logging, pdb/ipdb, winpdb)
May 26th
- Databases (DB-API w/ sqlite, NoSQL)
- Advanced OO:
- super(), _new_()
June 2nd
- ipython/notebook
- numpy and scipy
- matplotlib
- panda
June 9th
- serialization review / XML
- Advanced OO:
- type, metaclasses
- datetime, time, pytz
June 16th
- multi-threading/processing
- profiling
June 23rd
- C extensions( C API, ctypes, cython)
June 30th
Student Presentations
July 7th
Student Presentations
The following link includes student handbooks, services, and policies, and other important information: http://www.pce.uw.edu/resource.aspx .
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 the Disability Services Office at 206.543.6450/V, 206.543.6452/TTY, 206.685.7264 (FAX), or e-mail at dso@u.washington.edu.