forked from UWPCE-PythonCert/IntroToPython-2014
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSyllabus.rst
More file actions
330 lines (203 loc) · 13.5 KB
/
Syllabus.rst
File metadata and controls
330 lines (203 loc) · 13.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
************************************
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: Oct 6 - Dec 8, 2015 (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 <http://norvig.com/21-days.html>`_
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 mamny 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
--------------------------------------------------------
* **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
Class Schedule:
================
Topics of each week
--------------------
Week 1: Oct 6
................
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: Oct 13
................
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: Oct 20
.................
Sequences: Strings, Tuples, Lists
Iteration, looping and control flow.
String methods and formatting
Week 4: Oct 27
................
Dictionaries, Sets and Mutability.
Exceptions.
Files and Text Processing
Week 5: November 3
........................
Advanced Argument passing
Testing
List and Dict Comprehensions
Week 6: November 10
....................
Lambda and Functions as Objects
Object Oriented Programming: classes, instances, and methods
Week 7: November 17
.......................
More OO -- Multiple inheritance, Properties, special methods
Week 8: November 24
....................
More OO -- Emulating built-in types
Iterators and Generators
Week 9: December 1
...................
Decorators
Context Managers
Packages and packaging
Week 10: December 8
....................
Unicode
Wrap Up / Students Code review