-
Notifications
You must be signed in to change notification settings - Fork 3
/
index.html
659 lines (599 loc) · 29.9 KB
/
index.html
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
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
<html>
<head>
<title>Internet Programming in Python</title>
</head>
<body>
<hr/>
<p>
<b>This course has finished</b>, please see <a href="http://jon-jacky.github.com/uw_python/winter_2012/index.html">the 2012 Internet Programming in Python Syllabus</a>
</p>
<hr/>
<p>
UW Certificate Program in
<a href="http://www.pce.uw.edu/prog.aspx?id=4189"><b>Python Programming</b></a>
<h2>Internet Programming in Python</h2>
<p>
Winter Term, <b>2011</b> - (10 Sessions) Tuesdays 6 - 9 pm, January 11 through March 15
</p>
<p>
This program also includes
<a href="http://staff.washington.edu/jon/python-course/">
<b>Programmming in Python</b></a> (Autumn 2010) and
<a href="http://staff.washington.edu/jon/python-course/course3.html">
<b>System Development with Python</b></a> (Spring 2011).
<hr>
<p>
<a href="#summary">Summary</a>.
<a href="#readings">Readings</a>.
<a href="#schedule">Schedule</a>.
</p>
<hr>
<p>
<a name="summary">
<b>Course objectives:</b>
This course emphasizes distributed programs and web applications - how they
work and how to program them in Python. Students will explore the underlying
principles and their expression in Python libraries. Students will learn
contrasting approaches in creating applications: programming with the low-level
libraries versus using highly integrated frameworks. All topics will be
presented with a focus on solving real problems with simple, pragmatic code.
</p>
<p>
<b>Prerequisites:</b>
Students should have successfully completed
<a href="http://staff.washington.edu/jon/python-course/"><b>Programmming in
Python</b></a> or have an equivalent level of experience. Contact the
instructor prior to registering if not in the certificate program.
</p>
<p>
<b>Textbooks:</b> Various online sources will be used.
</p>
<p>
<b>Instructor:</b> <a href="http://briandorsey.info">
Brian Dorsey</a>.
<BR/>Brian Dorsey is a database and Python developer with over 10 years of
experience using Python professionally. He currently works at Vulcan Inc.,
developing command line tools, simple web applications, Windows services,
HTTP/JSON APIs and the occasional iPhone prototype. He is excited about
information, databases, user experience, testing and glue code. Brian is a
co-organizer of the Seattle Python Interest Group (www.seapig.org) and has
given several talks and tutorials at conferences and user groups.
</p>
<p>
<b>Technology Requirements:</b> Students must have access to a
computer for their assignments and projects, where they can install
software (the course does not provide a computer laboratory). It is
recommended that students have a portable computer to bring to
class. Internet access will be provided at classes.
</p>
<p>
<b>Assessment criteria:</b> The course is graded Pass/Fail, based on
satisfactory completion of required programming assignments and
classroom presentations. Attendance is required; more than two
unexcused absences will result in a Fail.
</p>
<p>
<b>Disability accommodation:</b> 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
</p>
<hr>
<p>
Assignments may be completed in groups of 1-3 people. Students are
encouraged to actively consult each other and share any relevant reference and
support material. However, all code submitted for assignments must be
completely written by each group.
</p>
<hr>
<h3>
<a name="readings">
Readings
</h3>
<p>
See the <a href="#schedule">Schedule</a> below for specific readings each week.
</p>
<h3>Reference</h3>
<p>
<a href="http://rgruet.free.fr/PQR26/PQR2.6.html">
Python 2.6 Quick Reference</a>
(awesomely dense and complete)<br>
<a href="http://docs.python.org/release/2.6.5/">Python 2.6.5 documentation</a>
(official documentation from python.org)<br/>
<a href="http://docs.python.org/release/2.6.5/library/internet.html">Python Standard Library - Internet Protocols and Support</a>
<br/>
<a href="http://www.doughellmann.com/PyMOTW/">Python Module of the Week</a> - examples of using the modules in the standard library.<br/>
</p>
<!--
<h3>Supplementary texts</h3>
<p>
[TBD]
</p>
-->
<hr>
<h3>
<a name="schedule">
Schedule
</h3>
<p>
Tuesdays 6 - 9 pm, January 11 through March 15 (10 sessions).
</p>
<p>
Topics and readings will be revised before the course begins, consult
frequently.
</p>
<p>
In addition to the topics listed below, each week will include:
<ul>
<li>A review of the previous assignment and common problems
<li>Web API lightning talks: short presentations about useful web services
<li>Labs: experiment directly with code
</ul>
</p>
<table border cellpadding=10>
<tr><td>Week</td><td>Date</td><td>Topics</td><td>Readings</td></tr>
<tr><td>1</td><td>Jan 11</td>
<td id="week01">
Introductions<br/>
Networking basics - How computers talk to each other (on the internet).<br/>
(tcp/ip, sockets, telnet, SMTP)<br/>
<br/><strong>files:</strong><br/>
<a href="week01/week1.pdf">lecture slides</a><br/>
<a href="week01/Twilio lightning talk.pdf">Twilio lightning talk</a><br/>
<a href="https://github.com/briandorsey/uwpython_web/tree/master/week01">example scripts from the labs</a><br/>
<br/><strong>assignment url:</strong><br/>
<a href="http://bit.ly/uwipip_week1">http://bit.ly/uwipip_week1</a><br/>
</td>
<td>
<a href=""></a><br/>
<strong>readings:</strong><br/>
<a href="http://en.wikipedia.org/wiki/Internet_Protocol_Suite">WP - Internet Protocol Suite</a><br/>
<a href="http://www.garykessler.net/library/tcpip.html">Kessler - TCP/IP (sections 1, 2) </a><br/>
<a href="http://en.wikipedia.org/wiki/Domain_Name_System">WP - Domain Name System</a><br/>
<a href="http://en.wikipedia.org/wiki/Internet_socket">WP - Internet Socket</a><br/>
<a href="http://tools.ietf.org/html/rfc5321#appendix-D">RFC 5321 - SMTP - (Appendix D ONLY)</a><br/>
(note: S is a server message, C is a client message.)<br/>
<br/><strong>reference:</strong><br/>
(skim before class, needed for labs & assignments)<br/>
<a href="http://docs.python.org/release/2.6.5/library/socket.html">python lib - socket</a><br/>
<a href="http://docs.python.org/release/2.6.5/howto/sockets.html">Socket Programming HOWTO</a><br/>
<a href="http://docs.python.org/release/2.6.5/library/smtplib.html">python lib - smtplib</a><br/>
<br/><strong>extra:</strong><br/>
<a href="http://en.wikipedia.org/wiki/Berkeley_sockets">WP - Berkeley socket interface</a><br/>
<a href="http://tools.ietf.org/html/rfc821">RFC 821 - SMTP (initial)</a><br/>
<a href="http://tools.ietf.org/html/rfc5321">RFC 5321 - SMTP (latest)</a><br/>
<br/><strong>bonus:</strong><br/>
<a href="http://zguide.zeromq.org/chapter:1">ZeroMQ Guide - Chapter 1</a><br/>
</td></tr>
<tr><td>2</td><td>Jan 18</td>
<td id="week02">
More protocols - Languages of the internet.
<br/>(POP3/IMAP, FTP, HTTP, others)
<br/>
<br/>Guest Speaker: Brian, wearing a different hat.
<br/>Topic: 30 minute web server
<br/>
<br/>Lightning talks: Joe, Jon P, Aaron F
<br/>
<br/><strong>files:</strong><br/>
<a href="week02/week02_slides.pdf">lecture slides</a><br/>
<a href="https://github.com/briandorsey/uwpython_web/tree/master/week02">example scripts from the labs</a><br/>
<br/><strong>assignment url:</strong><br/>
<a href="http://bit.ly/upipip_week2">http://bit.ly/upipip_week2</a><br/>
</td>
<td>
<strong>readings:</strong><br/>
Read through this list of modules. If you don't know what <br/>
a protocol is for, look it up online. Think about their <br/>
relationship to each other, which are clients? Which are servers? <br/>
Which clients talk to which servers?<br/>
<a href="http://docs.python.org/release/2.6.5/library/internet.html">
Python Standard Library Internet Protocols</a><br/>
<br/>An introduction to the HTTP protocol:<br/>
<a href="http://www.jmarshall.com/easy/http/">HTTP Made Really Easy</a><br/>
<br/><strong>reference:</strong><br/>
(skim before class, needed for labs & assignments)<br/>
<a href="http://docs.python.org/release/2.6.5/library/ftplib.html">
ftplib</a><br/>
<a href="http://docs.python.org/release/2.6.5/library/httplib.html">
httplib</a><br/>
<a href="http://docs.python.org/release/2.6.5/library/urllib.html">
urllib</a><br/>
<a href="http://docs.python.org/release/2.6.5/library/urllib2.html">
urllib2</a><br/>
<br/><strong>extra:</strong><br/>
<a href="http://code.google.com/p/httplib2/">httplib2</a>
- A comprehensive HTTP client library that <br/>
supports many features left out of other HTTP libraries. <br/>
<br/>Skim these four documents from different phases <br/>
of HTTP's life. Get a feel for how the specification<br/>
has changed (and how it hasn't!).<br/>
<a href="http://www.w3.org/Protocols/HTTP/AsImplemented.html">
HTTP/0.9</a><br/>
<a href="http://www.w3.org/Protocols/HTTP/HTTP2.html">
HTTP - as defined in 1992</a><br/>
<a href="http://www.w3.org/Protocols/rfc1945/rfc1945">
Hypertext Transfer Protocol -- HTTP/1.0</a><br/>
<a href="http://www.w3.org/Protocols/rfc2616/rfc2616">
Hypertext Transfer Protocol -- HTTP/1.1</a><br/>
</td></tr>
<tr><td>3</td><td>Jan 25</td>
<td id="week03">
Mashups and web APIs - Gluing things together and data for free.
<br/>(HTML/JavaScript, webscraping, REST, HTTP/JSON, XML-RPC)
<br/>
<br/>Guest Speaker: John Musser (<a href="http://www.programmableweb.com/about">ProgrammableWeb</a>)
<br/>
<br/>Lightning talks: Jacob, Jeff B, Daniel
<br/>
<br/><strong>files:</strong><br/>
<a href="week03/week03_slides.pdf">lecture slides</a><br/>
<a href="https://github.com/briandorsey/uwpython_web/tree/master/week03">example scripts from the labs</a><br/>
<br/><strong>assignment url:</strong><br/>
<a href="http://bit.ly/uwipip_week3">http://bit.ly/uwipip_week3</a><br/>
</td>
<td>
<strong>readings:</strong><br/>
<a href="http://en.wikipedia.org/wiki/Web_service">
Wikipedia's take on 'Web Services'</a><br/>
<a href="http://www.xmlrpc.com/">
xmlrpc overview</a><br/>
<a href="http://www.xmlrpc.com/spec">
xmlrpc spec (short)</a><br/>
<a href="http://www.json.org/">
json overview and spec (short)</a><br/>
<a href="http://tomayko.com/writings/rest-to-my-wife">
How I Explained REST to My Wife (Tomayko 2004)</a><br/>
<a href="http://www.infoq.com/articles/rest-introduction">
A Brief Introduction to REST (Tilkov 2007)</a><br/>
<br/>
<br/><strong>reference:</strong><br/>
(skim before class) <br/>
<br/>python standard libraries:<br/>
<a href="http://docs.python.org/release/2.6.5/library/httplib.html">
httplib</a><br/>
<a href="http://docs.python.org/release/2.6.5/library/htmlparser.html">
htmlparser</a><br/>
<a href="http://docs.python.org/release/2.6.5/library/xmlrpclib.html">
xmlrpclib</a><br/>
<a href="http://docs.python.org/release/2.6.5/library/docxmlrpcserver.html">
DocXMLRPCServer</a><br/>
<a href="http://docs.python.org/release/2.6.5/library/json.html">
json</a><br/>
<br/>
external libraries:<br/>
<a href="http://www.crummy.com/software/BeautifulSoup/">
BeautifulSoup</a> - "You didn't write that awful page.
<br/>You're just trying to get some data out of it. Right now,
<br/>you don't really care what HTML is supposed to look like.
<br/>Neither does this parser."
<br/>
<a href="http://code.google.com/p/httplib2/">
httplib2</a> - A comprehensive HTTP client library that supports
<br/>many features left out of other HTTP libraries.
<br/>
<a href="https://github.com/benoitc/restkit/">
restkit</a> - an HTTP resource kit for Python. It allows you
<br/>to easily access to HTTP resource and build objects around it.
<br/>
<br/>
SOAP:<br/>
<a href="https://github.com/arskom/rpclib">
rpclib</a> - a simple, easily extendible soap library that provides
<br/>several useful tools for creating, publishing and consuming soap
<br/>web services
<br/>
<a href="https://fedorahosted.org/suds/">
Suds</a> - a lightweight SOAP python client for consuming Web Services.
<br/>
<a href="http://www.w3.org/TR/soap/">
the SOAP specification</a><br/>
<br/><strong>extra:</strong><br/>
<a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">
Wikipedia on REST</a><br/>
<a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm">
Original REST disertation</a><br/>
<br/>
</td></tr>
<tr><td>4</td><td>Feb 1</td>
<td id="week04">
Live on the internet - letting other people run your code.
<br/>(hosting options, virtual machines, copying files,
<br/>git, a bit of unix, and just enough Apache configuration)
<br/>
<br/>Lightning talks: Peter, Gregory
<br/>
<br/><strong>files:</strong><br/>
<a href="week04/week04_slides.pdf">lecture slides</a><br/>
<a href="https://github.com/briandorsey/uwpython_web/tree/master/week04">example scripts from the labs</a><br/>
<br/><strong>assignment url:</strong><br/>
<a href="http://bit.ly/uwipip_week4">http://bit.ly/uwipip_week4</a><br/>
</td>
<td>
<strong>readings:</strong><br/>
<a href="http://linuxcommand.org/learning_the_shell.php">
Learning the Shell</a> - An excellent overview of fundamental shell usage.
<br/>Read this while logged into a bash shell (either local or
<br/>on your VM) and experiment with anything new to you.
<br/>
<br/>
<br/><strong>bonus philosophy (awesome, but not required):</strong><br/>
<a href="http://garote.bdmonkeys.net/commandline/index.html">
In the Begining was the Command Line (annotated version)</a>
<br/>This is long, a bit historical, and thought provoking.
<br/>
</td></tr>
<tr><td>5</td><td>Feb 8</td>
<td id="week05">
Low level web - Write a dynamic web site the hard way.
<br/>(HTTP again, request/response, CGI, mod_python, WSGI)
<br/>
<br/>Lightning talks: Jesse, Andrew, Tim
<br/>
<br/><strong>files:</strong><br/>
<a href="week05/week05_slides.pdf">lecture slides</a><br/>
<a href="https://github.com/briandorsey/uwpython_web/tree/master/week05">example scripts from the labs</a><br/>
<br/><strong>assignment url:</strong><br/>
<a href="http://bit.ly/uwipip_week5">http://bit.ly/uwipip_week5</a><br/>
</td>
<td>
<strong>readings:</strong><br/>
<a href="http://webpython.codepoint.net/cgi_tutorial">
CGI tutorial</a> - Read the following sections:
<br/>Hello World, Debugging, Form. Other sections optional.
<br/>Follow along, hosting CGI scripts either via Apache on our
<br/>VMs, or locally using CGIHTTPServer.
<br/>
<br/>
<a href="http://webpython.codepoint.net/wsgi_tutorial">
WSGI tutorial</a> - Follow along, hosting WSGI scripts either via
<br/>Apache on our VMs, or locally using wsgiref.
<br/>
<br/>
<br/>Prepare for class:<br/>
<a href="https://github.com/briandorsey/uwpython_web/tree/master/week05/cgi_example">
CGI example scripts</a> - Use these examples to get started
<br/>experimenting with CGI.
<br/>
<br/>
<br/>
<strong>reference:</strong><br/>
<a href="http://docs.python.org/release/2.6.5/library/cgi.html">
CGI module</a> - utilities for CGI scripts, mostly
<br/>form and query string parsing
<br/>
<a href="http://docs.python.org/release/2.6.5/library/urlparse.html">
Parse URLS into components</a><br/>
<a href="http://docs.python.org/release/2.6.5/library/cgihttpserver.html">
CGIHTTPServer</a> - python -m CGIHTTPServer
<br/>
<a href="http://docs.python.org/release/2.6.5/library/wsgiref.html">
WSGI Utilities and Reference implementation</a><br/>
<a href="http://www.python.org/dev/peps/pep-0333/">
WSGI 1.0 specification</a><br/>
<a href="http://python.org/dev/peps/pep-3333/">
WSGI 1.0.1 (Python 3 support)</a><br/>
<a href="http://hg.moinmo.in/moin/1.8/raw-file/tip/wiki/server/test.wsgi">
test WSGI server, like cgi.test()</a><br/>
<br/>Alternate WSGI introductions: <br/>
<a href="http://lucumr.pocoo.org/2007/5/21/getting-started-with-wsgi/">
Getting Started with WSGI</a> - by Armin Ronacher
<br/>
<a href="http://be.groovie.org/post/296349572/wsgi-and-wsgi-middleware-is-easy">
very minimal introduction to WSGI</a><br/>
</td></tr>
<tr><td>6</td><td>Feb 15</td>
<td id="week06">
Small web frameworks - Writing focused web sites.
<br/>(overview of frameworks and dive into <a href="http://www.cherrypy.org/">CherryPy</a>)
<br/>
<br/>Guest Speaker: Leo Parker Dirac (<a href="http://www.embracingchaos.com/">Blog</a>)
<br/>Topic: Pushing the limits of the HTTP protocol
<br/>
<br/>Lightning talks: Jeff S, Melissa, Patrick
<br/>
<br/><strong>files:</strong><br/>
<a href="week06/week06_slides.pdf">lecture slides</a><br/>
<a href="https://github.com/briandorsey/uwpython_web/tree/master/week06">example scripts from the labs</a><br/>
<br/><strong>assignment url:</strong><br/>
<a href="http://is.gd/uwipip_week6">http://is.gd/uwipip_week6</a><br/>
</td>
<td>
<strong>readings:</strong><br/>
<a href="http://www.cherrypy.org/wiki/CherryPyTutorial">
CherryPy Tutorial</a><br/>
<br/>run this in your VM:<br/>
<code>sudo apt-get install python-cherrypy3</code> <br/>
<code>svn co http://svn.cherrypy.org/tags/cherrypy-3.1.2/cherrypy/tutorial/</code><br/>
<br/>prepare for class:<br/>
<a href="http://www.cherrypy.org/browser/trunk/cherrypy/tutorial">
tutorial scripts</a> - more detailed example scripts
<br/>Work through as many of these as you can before class.
<br/>(The svn command above will copy the files to a
<code>tutorial</code> directory.)
<br/>We will be working with the current version: 3.1.2
<br/>
<br/>
<strong>reference:</strong><br/>
<a href="http://www.cherrypy.org/wiki/TableOfContents">
CherryPy official documentation</a><br/>
<a href="http://tools.cherrypy.org/wiki/InteractiveInterpreter">
slightly crazy screencast</a> - building a CherryPy application interactively
<br/>
<br/>
</td></tr>
<tr><td>7</td><td>Feb 22</td>
<td id="week07">
Large web frameworks 1 of 2 - Standing on the shoulders of giants.
<br/>(overview of frameworks and dive into Django)
<br/>
<br/>Guest speaker: Gary Bernhardt (<a href="http://blog.extracheese.org/">Blog</a>)
<br/>
<br/>Lightning talks: Sun Hee, Ted
<br/>
<br/><strong>files:</strong><br/>
<a href="week07/week07_slides.pdf">lecture slides</a><br/>
<a href="https://github.com/briandorsey/uwpython_web/tree/master/week07">example scripts from the labs</a><br/>
<br/><strong>assignment url:</strong><br/>
<a href="http://is.gd/uwipip_week7">http://is.gd/uwipip_week7</a><br/>
</td>
<td>
We will be using Django 1.2.5 (current stable)<br/>
<br/>
<strong>readings:</strong><br/>
<a href="http://docs.djangoproject.com/en/1.2/intro/overview/">Django at a glance</a><br/>
<a href="http://docs.djangoproject.com/en/1.2/intro/tutorial01/">Django tutorial</a>
<ul>
<li/>work through django tutorial parts 1, 2 and 3 on your local development machine <br/>
<li/>use the Django development server, not anything more complicated<br/>
<code>python manage.py runserver</code><br/>
<li/>don't configure a database, use the default: sqlite<br/>
</ul>
<pre>
# local install
(download http://media.djangoproject.com/releases/1.2/Django-1.2.5.tar.gz)
tar xvfz Django-1.2.5.tar.gz (or use 7zip on Windows)
cd Django-1.2.5/
python setup.py install
python
>>> import django
>>> django.get_version()
'1.2.5'
</pre>
If you want to also install it on our VMs,<br/>
Django 1.2.5 is *not* available via apt-get<br/>
in Ubuntu 10.4 on our VMs.<br/>
<pre>
# VM install:
$ wget http://media.djangoproject.com/releases/1.2/Django-1.2.5.tar.gz
$ tar xvfz Django-1.2.5.tar.gz
$ cd Django-1.2.5/
$ sudo python setup.py install
$ python
>>> import django
>>> django.get_version()
'1.2.5' </pre>
<strong>reference:</strong><br/>
<a href="http://docs.djangoproject.com/en/1.2/">Django documentation</a>
<br/>
<br/><strong>extra:</strong><br/>
"The following parable will take you on a journey
<br/>through the creation of a Git-like system from the ground up.
<br/>Understanding the concepts presented here will be the most
<br/>valuable thing you can do to prepare yourself to harness
<br/>the full power of Git":
<a href="http://tom.preston-werner.com/2009/05/19/the-git-parable.html">The Git Parable</a>
</td></tr>
<tr><td>8</td><td>Mar 1</td>
<td id="week08">
Large web frameworks 2 of 2 - Standing on the shoulders of giants.
<br/>(more Django)
<br/>
<br/>Guest Speaker: Ted Leung (<a href="http://www.sauria.com/blog/">Blog</a>)
<br/>
<br/>Lightning talks: Aaron B, Derek, Jon C
<br/>
<br/><strong>files:</strong><br/>
<a href="week08/week08_slides.pdf">lecture slides</a><br/>
<a href="https://github.com/briandorsey/uwpython_web/tree/master/week08">example scripts from the labs</a><br/>
<br/><strong>assignment url:</strong><br/>
<a href="http://is.gd/uwipip_week8">http://is.gd/uwipip_week8</a><br/>
</td>
<td>
<strong>readings:</strong>
<br/><a href="http://toys.jacobian.org/presentations/2009/pycon/building-django-notes.pdf">(PDF) Building Django - Jacob Kaplan-Moss (2009)</a>
<br/><a href="http://toys.jacobian.org/presentations/2009/pycon/real-world.pdf">(PDF) Django in the real world (2009)</a>
<br/> video instead? -
<a href="http://pycon.blip.tv/file/2083844/">part 1</a>
<a href="http://pycon.blip.tv/file/2084174/">part 2</a>
<a href="http://pycon.blip.tv/file/2084252/">part 3</a>
<br/>read a bit about each of the apps in this post:
<br/><a href="http://jacobian.org/writing/favorite-apps/">What's your favorite Django app?</a>
<br/>
<br/><strong>reference:</strong>
<br/><a href="http://www.djangopackages.com/">http://www.djangopackages.com/</a>
<br/>
<br/>A couple of good looking books:
<br/><a href="http://www.amazon.com/Django-Testing-Debugging-Karen-Tracey/dp/1847197566/ref=sr_1_11?s=books&ie=UTF8&qid=1298170104&sr=1-11">Django 1.1 Testing and Debugging</a>
<br/><a href="http://www.amazon.com/Beginning-Django-Commerce-James-McGaw/dp/1430225351/ref=pd_sim_b_3">Beginning Django E-Commerce</a>
<br/>
<br/><strong>extra:</strong><br/>
The real difference between fetch and pull:
<br/><em>"Don't use <code>git pull</code>,
use <code>git fetch</code> and then <code>git merge</code>."</em>
<br/><a href="http://longair.net/blog/2009/04/16/git-fetch-and-merge/">git: fetch and merge, don't pull - Mark Longair</a>
<br/>
<br/><em>"You can learn a whole lot about Unix from that one little command."</em>
<br/><a href="http://blog.extracheese.org/2010/05/the-tar-pipe.html">The Tar Pipe - Gary Bernhardt</a>
</td></tr>
<tr><td>9</td><td>Mar 8</td>
<td id="week09">
Databases - relational and otherwise.
<br/>(a tour of information storage methods)
<br/>
<br/> Guest Speaker: Dave Peck (<a href="http://davepeck.org/">Blog</a>)
<br/>Topic: Google App Engine and Amazon Web Services
<br/>
<br/>Lightning talks: Ben, Delane, Hitoshi
</td>
<td>
<strong>readings:</strong>
<br/><a href="http://en.wikipedia.org/wiki/Relational_database">(Wikipedia) Relational Database</a>
<br/><a href="http://en.wikipedia.org/wiki/SQL">(Wikipeia) SQL</a>
<br/><a href="http://www.readwriteweb.com/enterprise/2009/02/is-the-relational-database-doomed.php"> Is the relational database doomed?</a>
<br/><a href="http://techblog.netflix.com/2011/01/nosql-at-netflix.html"> NOSQL at Netflix</a>
<br/><a href="http://teddziuba.com/2010/03/i-cant-wait-for-nosql-to-die.html"> I can't wait for NOSQL to die</a>
<br/><a href="http://blog.zawodny.com/2010/03/28/nosql-is-software-darwinism/"> NOSQL is software darwinism</a>
<br/><a href="http://codemonkeyism.com/nosql-die/">Why NOSQL will not die</a>
<br/><a href="http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis">NOSQL Comparison</a>
<br/>
<br/><strong>extra:</strong>
<br/><a href="http://simonwillison.net/static/2010/redis-tutorial/">Redis Tutorial by Simon Willison</a>
</td></tr>
<tr><td>10</td><td>Mar 15</td>
<td id="week10">
Python in the Cloud - Let someone else run your servers.
<br/>(overview of the options and dive into Google App Engine)
<br/>
<br/>Guest Speaker: Brian Dorsey :)
<br/>Topic: PyCon 2011 - experiences and hot topics.
</td>
<td>
<strong>readings:</strong>
<br/><strong>Amazon Web Services</strong>
<br/><a href="http://aws.amazon.com/products/">Everything</a>
<br/>Overview pages:
<br/><a href="http://aws.amazon.com/ec2/">Amazon Elastic Compute Cloud (Amazon EC2)</a>
<br/><a href="http://aws.amazon.com/ebs/">Amazon Elastic Block Store (EBS)</a>
<br/><a href="http://aws.amazon.com/s3/">Amazon Simple Storage Service (Amazon S3)</a>
<br/><a href="http://aws.amazon.com/simpledb/">Amazon SimpleDB</a>
<br/><a href="http://aws.amazon.com/rds/">Amazon Relational Database Service (Amazon RDS)</a>
<br/>
<br/><strong>Google App Engine</strong>
<br/><a href="http://code.google.com/appengine/docs/whatisgoogleappengine.html">What Is Google App Engine?</a>
<br/><a href="http://code.google.com/appengine/docs/python/overview.html">App Engine Python Overview</a>
<br/>
<br/><strong>reference:</strong>
<br/><a href="http://code.google.com/appengine/docs/python/">App Engine Python Runtime Environment docs</a>
<br/><a href="http://code.google.com/appengine/docs/python/datastore/overview.html">Datastore Overview</a>
<br/><a href="http://oreilly.com/catalog/9780596522735/">Book: Programming Google App Engine</a>
<br/>(There don't appear to be any recent books,
<br/>you'll have to rely on the Google docs for new features.)
<br/>
<br/><strong>extra:</strong>
<br/><em>"Use your friends. Keep it simple. Play."</em>
<br/><a href="http://norvig.com/21-days.html">Teach Yourself Programming in Ten Years</a>
</td></tr>
</table>
</br>
<p>
Thank you very much to Blue Box Group, they have generously donated a Virtual Private Server for each of the students.
</p>
<a href="https://boxpanel.blueboxgrp.com/public/order/partner/45015">
<img src="data:image/jpg;base64,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">
</a>
</body>
</html>