Program ID #5149
The Python Certificate program is a 9-month curriculum divided into three courses. By the end of the program students will have gained a fundamental understanding of programming in Python by creating a variety of scripts and applications for the Web and for systems development. Python is a versatile programming language, suitable for projects ranging from small scripts to large systems. The certificate program emphasizes best practices such as version control, unit testing and recommended styles and idioms. Students will explore the large standard library of Python 3.0, which supports many common programming tasks.
NOTE: in the spirit of the dynamic nature of Python, this Syllabus (and the class) will be a dynamic document -- evolving as the class progresses. The general structure is fixed, but the details will change to meet the evolving needs of the class.
- By the end of this course, students will be able to “do something useful with Python”.
- Identify/characterize/define a problem
- Design a program to solve the problem
- Create executable code
- Read most Python code
- Write basic unit tests
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.
We will be using a combination of traditional lectore format at "reverse classroom" approach -- We will generally have reading (or video) assignements that cover a topic, and then in class, we will work through excercises as a group to cement your understanding. We will also be doing frequent "pair programming" -- teaming the students up in pairs to work through excercises together.
Location: Puget Sound Plaza, 4th and Union, Seattle Dates, times: Tuesday nights, 6 - 9pm; Oct 6 - Dec 8, 2015 Instructor: Chris Barker, PhD [[email protected]] Course assistant: Maria McKinley [[email protected]] Course website: https://github.com/UWPCE-PythonCert/IntroToPython
Christopher Barker, PhD. ([email protected]
) 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.
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 3.5, the version distributed by python.org. Each student is expected to have access to a computer with python 3.5 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.
Note that python3 and Python2 have some slightly different syntax and symantics. Much (or most), of the examples you find on the web are in Python2 syntax. We will cover the differences early in class so you will know how to translate.
There will generally be weekly homework assignments. They will include both reading and video watching and programming excercises. You are not required to turn in the assignments to pass the course, however, we 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 mini code-reviews of selected assignments during class.
Teach Yourself Programming in Ten Years
In addition, each student will identify a small project, ideally related to your work, that can be developed as a class project -- that project will be the primary homework for the last few classes.
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.
This course is graded pass/fail, based on attendance and completion of projects. Students are required to attend at least 8 of the 10 classes.
Active learning requires students to participate in the class, as opposed to sitting and listening quietly. In class students will follow the instructor in creating demonstrative examples. Outside of class, students are expected to read the assignments, perform the homework, and post questions (about recent session topics) that they have on the class mailing list before the next class session. Other students are strongly encouraged to answer these questions if possible. Answers to common and unanswered questions will be reviewed in the next class session.
After the 3rd class session, we solicit anonymous feedback from all students regarding the pacing and instruction of the course. Students will also be invited to provide comments at the end of the course.
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 [email protected].
The student handbook can be found online http://www.pce.uw.edu/resources/certificates/
Each class will be broken down something like this:
- 20 minutes talk
- 35 minutes lab time
- 5 minute lightning talk
- 5 minute lightning talk
- 20 minutes talk
- 35 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)
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 will also be using gitHub to communicate during the class -- turn in assignments, post questions, etc.
We'll spend a bit of time during the first couple classes getting everyone up and running with git and gitHub.
https://github.com/UWPCE-PythonCert/IntroToPython
for rendered and ready to read version of the class lecture notes:
http://UWPCE-PythonCert.github.io/IntroToPython
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 or assign as reading: 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.
Note that many books still cover primarily (or only) Python 2. THey can still be very, very useful, the syntax is only a little different, and the concepts the same.
A few you may want to consider:
- The Python Tutorial (https://docs.python.org/3/tutorial/): This is the official tutorial from the Python website. No more authoritative source is available.
- Code Academy Python Track (http://www.codecademy.com/tracks/python): Often cited as a great resource, this site offers an entertaining and engaging approach and in-browser work. Python2, as far as I can tell, but most of the lessons will work fine with python3 syntax.
- Learn Python the Hard Way (http://learnpythonthehardway.org/book/): Solid and gradual. This course offers a great foundation for folks who have never programmed in any language before. [Python 2]
- Core Python Programming (http://corepython.com/): Only available as a dead trees version, but if you like to have book to hold in your hands anyway, this is the best textbook style introduction out there. It starts from the beginning, but gets into the full language. Published in 2009, but still in print, with updated appendixes available for new language features. IN teh thord edtion, "the contents have been cleaned up and retrofitted w/Python 3 examples paired w/their 2.x friends.""
- Dive Into Python 3 (http://www.diveinto.org/python3/): The updated version of a classic. This book offers an introduction to Python aimed at the student who has experience programming in another language. Updated for Python 3.
- Python for You and Me (http://pymbook.readthedocs.org/en/latest/): Simple and clear. This is a great book for absolute newcomers, or to keep as a quick reference as you get used to the language. The latest version is Python 3
- Think Python (http://greenteapress.com/thinkpython/): Methodical and complete. This book offers a very "computer science"-style introduction to Python. It is really an intro to Python in the service of Computer Science, though, so while helpful for the absolute newcomer, it isn't quite as "pythonic" as it might be.
- Python 101 (http://www.blog.pythonlibrary.org/2014/06/03/python-101-book-published-today/) Available as a reasonably priced ebook. This is a new one from a popular Blogger about Python. Lots of practical examples. Python3, with some references to differences to Python 2. Also avaiable as a Kindle book: http://www.amazon.com/Python-101-Michael-Driscoll-ebook/dp/B00KQTFHNK
- Problem Solving with Algorithms and Data Stuctures
http://interactivepython.org/runestone/static/pythonds/index.html
- Python Course
http://www.python-course.eu/python3_course.php
- Python Essential Reference (http://www.dabeaz.com/per.html) The definitive reference for both Python and much of the standard library.
- Hitchhikers Guide to Python (http://docs.python-guide.org/en/latest) Under active development, and still somewhat incomplete, but what is there is good stuff.
- Writing Idiomatic Python (https://www.jeffknupp.com/writing-idiomatic-python-ebook) Focused on not just getting the code to work, but how to write it in a really "Pythonic" way.
- Fluent Python (http://shop.oreilly.com/product/0636920032519.do) All python3, and focused on getting the advanced details right. Good place to go once you've got the basics down.
- Python 3 Object Oriented Programming * https://www.packtpub.com/application-development/python-3-object-oriented-programming Nice book specifically about Object Oriented programming stucture, and how to do it in Python. From local Author and founder of the Puget Sound Programming Python (PuPPy) meetup group, Dusty Phillips.
... and many others
General Introduction to Python and the class. Using the command interpreter and development environment.
Kick-off tutorial
Finding and using the documentation. Getting help.
Python 2/3 differences.
Introduction to git and gitHub
Basic data types.
Functions: definition and use, arguments, block structure, scope, recursion
Modules and import
Conditionals and Boolean expressions
Sequences: Strings, Tuples, Lists
Iteration, looping and control flow.
String methods and formatting
Dictionaries, Sets and Mutability.
Files and Text Processing
Exceptions
List and Dict Comprehensions
Testing
Advanced Argument passing
No class Nov 8th for election night
Object Oriented Programming:
classes, instances, methods, inheritance
More OO: Multiple inheritance, Properties, Special methods.
Emulating built-in types
Lambda
Functions as Objects
Iterators and Generators
Decorators
Context Managers
Wrap Up / Students Code review