Skip to content

Latest commit

 

History

History
232 lines (142 loc) · 8.01 KB

File metadata and controls

232 lines (142 loc) · 8.01 KB

Syllabus: Introduction to Python

UW Adult and Continuing Education Program

Certification in Python Programming

Tuesdays 6-9 pm: Sept 30 - Dec 9, 2014 (10 Sessions)

NOTE: in the spirit of the dynamic nature of Python, the Syllabus (and the class) will be a dynamic document -- evolving as the class progresses. The general structure is fixed, but the details will change.

Instructor:

Christopher Barker, PhD. (PythonCHB@gmail.com) is an oceanographer and software developer currently working for NOAA in Seattle. He first began programming over 30 years ago, and has been using programming to solve problems in science and engineering ever since. He has been using Python as his primary language since 1998. Chris gives numerous presentations on his work at professional conferences, and teaches oceanography and oil spill modeling at regular workshops. He has been involved with the Seattle Python Interest Group (www.seapig.org) for many years, and has given a number of talks and tutorials at SEAPIG meetings, as well as the PyCon and Scipy conferences. He is an active participant in a number Python-related open source communities, and has served as a Google Summer of Code mentor for the wxPython project.

Python Version:

There are two main supported versions of Python: the 2.* series and the 3.* series (py3k). In this class we will be using "cPython" version 2.7, the version distributed by python.org. Each student is expected to have access to a computer with python 2.7 and a decent programmers text editor installed, both during class and for homework assignments. Any modern Operating sytem is fine: OS-X, Linux, or Windows.

Approach:

This class assumes a basic knowledge of programming. Thus I will try to emphasize what is unique about Python, with less focus on general programing concepts.

One learns programming by doing -- I'll be demonstrating as I talk about concepts, and I will pause frequently to give you a chance to try things out, so plan on having a laptop up and running with python and your text editor of choice during each class.

Homework:

There will generally be weekly homework assignments. They will usually be flexible to allow for students' varying time constraints. However, you learn by doing, so I do encourage you to put some time in to the homework. I will review your work if you ask me to, and do a mini code-review of selected assignments during class.

Teach Yourself Programming in Ten Years

In addition, I will ask each student to identify a small project, ideally related to your work, that you can develop as a class project -- that project will be the primary homework for the last few classes.

Lightning Talks:

Each student is expected to give one "lightning talk" during the class -- this is a simple 5-minute talk on something related to Python -- totally up to you. We will randomly assign the talks schedule (using Python, of course) during the first class.

Class format:

Each class will be broken down something like this:

  • 30 minutes talk
  • 25 minutes lab time
  • 5 minute lightning talk
  • 5 minute lightning talk
  • 20 minutes talk
  • 30 minutes lab time
  • 5 minute lightning talk
  • 5 minute lightning talk
  • 20 minutes talk
  • 30 minutes lab time

(there will be no official breaks, but we should all feel free to move about during lab/exercise time)

gitHub:

All class materials will be up on gitHub (where you probably found this). This allows me to update things at the last minute, and the students can all have easy access to the latest versions. It also familiarizes you with a very useful tool for software development. We'll spend a bit of time during the first class getting everyone up and running with git....

https://github.com/UWPCE-PythonCert/IntroToPython

for rendered and ready to read version:

http://UWPCE-PythonCert.github.io/IntroToPython

Reading:

There is no assigned text book. However, you may find it beneficial to read other discussions of topics in addition to what I present in class: either to explore a topic more deeply, or to simple get another viewpoint. There are many good books on Python, and many more excellent discussions of individual topics on the web. A few you may want to consider:

References for getting started

... and many others

Class Schedule:

Topics of each week

Week 1: Sept 30

General Introduction to Python and the class. Using the command interpreter and development environment. Finding and using the documentation. Getting help. Class github project. Basic data types, functions.

Week 2: Oct 7

More on functions: definition and use, arguments, block structure, scope, recursion

Modules and import

Conditionals and Boolean expressions

Week 3: Oct 14

Sequences: Strings, Tuples, Lists

Iteration, Looping and control flow.

String methods and formatting

Week 4: Oct 21

Dictionaries, Sets and Mutability.

Exceptions.

Files and Text Processing

Week 5: Oct 28

Unicode.

Advanced Argument passing

List and Dict Comprehensions

Testing

Week 6: November 4

Lambda and Functional programming.

Object oriented programming. Classes, instances, and methods

Week 7: November 11

More OO -- Inheritance and duck typing

Week 8: November 18

More OO: Special methods

Iterators and Generators

Week 9: December 2

Decorators

Context Managers

Packages and packaging

Week 10: December 9

Persistence / Serialization