forked from UWPCE-PythonCert/IntroToPython-2014
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSyllabus.html
More file actions
507 lines (427 loc) · 16.8 KB
/
Syllabus.html
File metadata and controls
507 lines (427 loc) · 16.8 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
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.11: http://docutils.sourceforge.net/" />
<title>Syllabus: Introduction to Python</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 7614 2013-02-21 15:55:51Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: grey; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="syllabus-introduction-to-python">
<h1 class="title">Syllabus: Introduction to Python</h1>
<div class="section" id="uw-adult-and-continuing-education-program">
<h1>UW Adult and Continuing Education Program</h1>
<div class="section" id="certification-in-python-programming">
<h2>Certification in Python Programming</h2>
</div>
<div class="section" id="tuesdays-6-9-pm-oct-1-dec-8-2013-10-sessions">
<h2>Tuesdays 6-9 pm: Oct 1 - Dec 8, 2013 (10 Sessions)</h2>
<p>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.</p>
</div>
</div>
<div class="section" id="instructor">
<h1>Instructor:</h1>
<p>Christopher Barker, PhD. (<tt class="docutils literal">PythonCHB@gmail.com</tt>) 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.</p>
</div>
<div class="section" id="python-version">
<h1>Python Version:</h1>
<p>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 <a class="reference external" href="python.org">python.org</a>. Each student is expected to have access to a computer with python 2.7 and a decent programming text editor installed, both during class and for homework assignments. Any modern OPerating sytem is fine: OS-X, Linux, or Windows.</p>
</div>
<div class="section" id="approach">
<h1>Approach:</h1>
<p>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.</p>
<p>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.</p>
</div>
<div class="section" id="homework">
<h1>Homework:</h1>
<p>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.</p>
<p><a class="reference external" href="http://norvig.com/21-days.html">Teach Yourself Programming in Ten Years</a></p>
<p>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.</p>
<div class="section" id="lightning-talks">
<h2>Lightning Talks:</h2>
<p>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.</p>
</div>
</div>
<div class="section" id="class-format">
<h1>Class format:</h1>
<p>Each class will be broken down something like this:</p>
<ul class="simple">
<li>30 minutes talk</li>
<li>25 minutes lab time</li>
<li>5 minute lightning talk</li>
<li>5 minute lightning talk</li>
<li>20 minutes talk</li>
<li>30 minutes lab time</li>
<li>5 minute lightning talk</li>
<li>5 minute lightning talk</li>
<li>20 minutes talk</li>
<li>30 minutes lab time</li>
</ul>
<p>(there will be no official breaks, but we should all feel free to move about during lab/exercise time)</p>
</div>
<div class="section" id="github">
<h1>gitHub:</h1>
<p>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 bi tof time during teh first class getting everyone up and running with git....</p>
<p><<a class="reference external" href="https://github.com/UWPCE-PythonCert/IntroToPython">https://github.com/UWPCE-PythonCert/IntroToPython</a>>_</p>
</div>
<div class="section" id="reading">
<h1>Reading:</h1>
<p>There is no assigned text book. However, you may find it beneficial ot 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:</p>
<div class="section" id="python-for-software-design-think-python">
<h2>Python for Software Design / Think Python</h2>
<p>Designed for a first course in computer science -- high school or otherwise, quite basic, but does not assume much:</p>
<p>Printed version: <a class="reference external" href="http://www.cambridge.org/us/knowledge/isbn/item2327120/?site_locale=en_US">Python for Software Design</a>,</p>
<p>Free online version:
<a class="reference external" href="http://www.greenteapress.com/thinkpython/">Think Python</a>.</p>
<p>Despite the different titles, the two versions have the same contents.</p>
</div>
<div class="section" id="learn-python-the-hard-way">
<h2>Learn Python the hard way</h2>
<p>A nice introduction that starts from the beginning available online for free, or you can purchase it as PDF + Videos:</p>
<p><a class="reference external" href="http://learnpythonthehardway.org/">Learn Python the hard way</a></p>
</div>
<div class="section" id="dive-into-python">
<h2>Dive Into Python</h2>
<p>Dive Into Python is a getting pretty old and has not been updated for a good while -- nevertheless, there is a lot of good stuff in there.</p>
<p><a class="reference external" href="http://www.diveintopython.net/">Dive Into Python</a></p>
</div>
<div class="section" id="python-essential-reference">
<h2>Python Essential Reference</h2>
<p>The definitive reference for both Python and much of the standard library.</p>
<p><a class="reference external" href="http://www.dabeaz.com/per.html">Python Essential Reference</a>:</p>
</div>
<div class="section" id="learning-python">
<h2>Learning Python</h2>
<p>This was the best intro book back when I learned in 1999...</p>
<p><a class="reference external" href="http://shop.oreilly.com/product/9780596158071.do">Learning Python</a></p>
</div>
<div class="section" id="core-python-programming">
<h2>Core Python Programming</h2>
<p>Often suggested as the best intro text -- recommended by Guido van Rossum himself. There is also the advanced book, that I haven't looked at yet: "Core Python Application Programming"</p>
<p><a class="reference external" href="http://corepython.com/">http://corepython.com/</a></p>
</div>
<div class="section" id="the-official-python-docs">
<h2>The Official Python docs:</h2>
<p>A good place to go for reference, and not a bad tutorial. Keep this open in your browser all the time...</p>
<p><<a class="reference external" href="http://docs.python.org/">http://docs.python.org/</a>>`_:</p>
<p>... and many others</p>
</div>
</div>
<div class="section" id="class-schedule">
<h1>Class Schedule:</h1>
<div class="section" id="topics-of-each-week">
<h2>Topics of each week</h2>
<div class="section" id="week-1-oct-1">
<h3>Week 1: Oct 1</h3>
<p>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.</p>
</div>
<div class="section" id="week-2-oct-8">
<h3>Week 2: Oct 8</h3>
<p>More on functions: definition and use, arguments, block structure, scope, recursion</p>
<p>Modules and import</p>
<p>Conditionals and Boolean expressions</p>
</div>
<div class="section" id="week-3-oct-15">
<h3>Week 3: Oct 15</h3>
<p>Sequences: Strings, Tuples, Lists</p>
<p>Iteration, Looping and control flow.</p>
<p>String methods and formatting</p>
</div>
<div class="section" id="week-4-oct-22">
<h3>Week 4: Oct 22</h3>
<p>Dictionaries, Sets and Mutability.</p>
<p>Exceptions.</p>
<p>Files and Text Processing</p>
</div>
<div class="section" id="week-5-oct-29">
<h3>Week 5: Oct 29</h3>
<p>Unicode.</p>
<p>Advanced Argument passing</p>
<p>List and Dict Comprehensions</p>
<p>Testing</p>
</div>
<div class="section" id="week-6-november-5">
<h3>Week 6: November 5</h3>
<p>Lambda and Functional programming.</p>
<p>Object oriented programming. Classes, instances, and methods</p>
</div>
<div class="section" id="week-7-november-12">
<h3>Week 7: November 12</h3>
<p>More OO -- Inheritance and duck typing</p>
</div>
<div class="section" id="week-8-november-19">
<h3>Week 8: November 19</h3>
<p>More OO: Special methods</p>
<p>Iterators and Generators</p>
</div>
<div class="section" id="week-9-december-3">
<h3>Week 9: December 3</h3>
<p>Decorators</p>
<p>Context Managers</p>
<p>Packages and packaging</p>
</div>
<div class="section" id="week-10-december-10">
<h3>Week 10: December 10</h3>
<p>Persistence / Serialization</p>
</div>
</div>
</div>
</div>
</body>
</html>