Skip to content

Latest commit

 

History

History
331 lines (204 loc) · 13.5 KB

Syllabus.rst

File metadata and controls

331 lines (204 loc) · 13.5 KB

Syllabus: Introduction to Python

UW Adult and Continuing Education Program

Certification in Python Programming: Program Description

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.

First Course: Introduction to Python

Tuesdays 6-9 pm: Sept 27 - Dec 6, 2016 (10 Sessions)

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.

Learning Goals

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

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.

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.

Logistics

Location: Puget Sound Plaza, 4th and Union, Seattle Dates, times: Tuesday nights, 6 - 9pm; Oct 6 - Dec 8, 2015 Instructor: Chris Barker, PhD [PythonCHB@gmail.com] Course assistant: Maria McKinley [parody@uw.edu] Course website: https://github.com/UWPCE-PythonCert/IntroToPython

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 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.

Assignments And Assessment

Homework:

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.

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.

Grading And Attendance

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.

Policies And Values

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.

Your feedback on the course and instruction

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.

Accomodations

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.

Student Handbook

The student handbook can be found online http://www.pce.uw.edu/resources/certificates/

Class format:

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)

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

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 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:

References for getting started

  • 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

References for getting better, once you know the basics

... and many others

Class Schedule:

Topics of each week

Week 1: September 27

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.

Week 2: October 4

Introduction to git and gitHub

Basic data types.

Functions: definition and use, arguments, block structure, scope, recursion

Modules and import

Conditionals and Boolean expressions

Week 3: October 11

Sequences: Strings, Tuples, Lists

Iteration, looping and control flow.

String methods and formatting

Week 4: October 18

Dictionaries, Sets and Mutability.

Files and Text Processing

Week 5: October 25

Exceptions

List and Dict Comprehensions

Week 6: November 1

Testing

Advanced Argument passing

No class Nov 8th for election night

Week 7: November 15

Object Oriented Programming:

classes, instances, methods, inheritance

Week 8: November 22

More OO: Multiple inheritance, Properties, Special methods.

Emulating built-in types

Week 9: November 29

Lambda

Functions as Objects

Iterators and Generators

Week 10: December 6

Decorators

Context Managers

Wrap Up / Students Code review