Skip to content

Latest commit

 

History

History
175 lines (97 loc) · 4.93 KB

Syllabus.md

File metadata and controls

175 lines (97 loc) · 4.93 KB

UW Certificate Program in Programming in Python

Python 100 Spring, 2013 March-26 through May 28th, Tuesday, 6 PM

Brief Course Description

Course Objectives

At the end of the class, students will have completed a project of their own choosing, and been exposed to different advanced topics of 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 and 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.

Course Website

Lecture notes, sample code, etc will be available in the course github project:

https://github.com/PythonCHB/PythonCertSpring

Instructors

Jeff Silverman [email protected]

Christopher Barker [email protected]

Technology Requirements

Students will need a laptop computer with python 2.6.x or 2.7.x and MySQL or PostGres already installed.

##Assessment Criteria & Course Expectations

Students are required to attend 8 out 10 classes, and complete a significant software project in the Python language, either individually or as part of a small group.

Courses in this program are arranged sequentially. To advance to the next course in this program, students are required to earn a grade of Successful Completion (SC) in this course. Students must successfully complete all courses in the program to receive a certificate of completion.

The class project:

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 (3-4 students). We suggest that you consider a group project -- it will give you a chance to practice developing with others, as well as give you a built-on way to get code review, folks to bounce ideas off of, etc.

Requirements:

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.

Write some docs: Sphinx!

Confirm 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!

Typical class:

Each class will typically begin with a lecture and in-class exercises about the lecture topic, totally 1 -- 1-1/2 hours.

The remaining class time will be spent working on your projects in consultation with the instructors.

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.

Schedule

Week 1

March 26th

Unit Testing: unitest, nose, pytest

-- Chris

Week 2

April 2nd

The python debugger pdb

-- Jeff

Week 3

April 9th

Special topics: lambda, decorators, properties...

-- Chris

Week 4

April 16th

Relational databases, SQL

-- Jeff

Week 5

April 23rd

Non relational databases

-- Jeff

Week 6

April 30th

Advanced OO: __new()__, super(), mixins, etc.

Intro to Numerical Computation: numpy

-- Chris

Week 7

May 7th Threading / Multiprocessing

-- Jeff

Week 8

May 14th

Performance / Profiling

-- Chris

Week 9

May 21st

Desktop GUIs: wxPython

-- Jeff and Chris

Week 10

May 28th

Student Presentations

-- Jeff and Chris

Possible Additional Topics:

Leveraging C libraries / writing extensions:

C API ctypes cython

Iterators and generators

Decorators

(writing your own, not just using them...)

Lambda functions

Context managers, the with statement

Persistence / Serialization:

pickle, shelve, JSON, CSV, XML, BSDdb

Desktop GUIs:

tkInter wxPython pyGTK pyQT / pySide

Student Resources

The following link includes student handbooks, services, and policies, and other important information: http://www.pce.uw.edu/resource.aspx .

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 the Disability Services Office at 206.543.6450/V, 206.543.6452/TTY, 206.685.7264 (FAX), or e-mail at [email protected].