%%% -*-BibTeX-*- %%% ==================================================================== %%% BibTeX-file{ %%% author = "Nelson H. F. Beebe", %%% version = "2.114", %%% date = "13 June 2017", %%% time = "12:13:30 MST", %%% filename = "python.bib", %%% address = "University of Utah %%% Department of Mathematics, 110 LCB %%% 155 S 1400 E RM 233 %%% Salt Lake City, UT 84112-0090 %%% USA", %%% telephone = "+1 801 581 5254", %%% FAX = "+1 801 581 4148", %%% URL = "http://www.math.utah.edu/~beebe", %%% checksum = "54082 38049 169959 1695251", %%% email = "beebe at math.utah.edu, beebe at acm.org, %%% beebe at computer.org (Internet)", %%% codetable = "ISO/ASCII", %%% keywords = "bibliography; BibTeX; object-oriented %%% programming language; Python; scripting %%% language", %%% license = "public domain", %%% supported = "yes", %%% docstring = "This is a bibliography of books and other %%% publications about Python, an object-oriented %%% scripting and programming language. %%% %%% This language has its own World Wide Web %%% site at %%% %%% http://www.python.org/ %%% %%% with information about the language, its %%% source code distributions, on-line %%% documentation, and e-mail discussion lists. %%% %%% At version 2.114, the year coverage looked %%% like this: %%% %%% 1991 ( 3) 2000 ( 23) 2009 ( 46) %%% 1992 ( 3) 2001 ( 20) 2010 ( 20) %%% 1993 ( 0) 2002 ( 23) 2011 ( 15) %%% 1994 ( 0) 2003 ( 17) 2012 ( 33) %%% 1995 ( 10) 2004 ( 9) 2013 ( 26) %%% 1996 ( 16) 2005 ( 12) 2014 ( 69) %%% 1997 ( 33) 2006 ( 32) 2015 ( 72) %%% 1998 ( 27) 2007 ( 41) 2016 ( 22) %%% 1999 ( 9) 2008 ( 42) 2017 ( 6) %%% 20xx ( 4) %%% %%% Article: 305 %%% Book: 269 %%% InCollection: 1 %%% InProceedings: 19 %%% MastersThesis: 2 %%% Misc: 7 %%% Proceedings: 15 %%% TechReport: 14 %%% Unpublished: 1 %%% %%% Total entries: 633 %%% %%% This bibliography was collected from the OCLC %%% library databases, from the Compendex %%% database, from the IEEE INSPEC database, from %%% the University of California MELVYL catalog, %%% from the U. S. Library of Congress catalog, %%% from the Python Web site, and from the %%% author's personal bibliography collections. %%% %%% Numerous errors in the sources noted above %%% have been corrected. Spelling has been %%% verified with the UNIX spell and GNU ispell %%% programs using the exception dictionary %%% stored in the companion file with extension %%% .sok. %%% %%% BibTeX citation tags are uniformly chosen as %%% name:year:abbrev, where name is the family %%% name of the first author or editor, year is a %%% 4-digit number, and abbrev is a 3-letter %%% condensation of important title words. %%% Citation tags were automatically generated by %%% software developed for the BibNet Project. %%% %%% In this bibliography, entries are sorted %%% first by ascending year, and within each %%% year, alphabetically by author or editor, %%% and then, if necessary, by the 3-letter %%% abbreviation at the end of the BibTeX %%% citation tag, using the bibsort -byyear %%% utility. Year order has been chosen to %%% make it easier to identify the most recent %%% work. %%% %%% The checksum field above contains a CRC-16 %%% checksum as the first value, followed by the %%% equivalent of the standard UNIX wc (word %%% count) utility output of lines, words, and %%% characters. This is produced by Robert %%% Solovay's checksum utility.", %%% } %%% ==================================================================== @Preamble{ "\ifx \undefined \booktitle \def \booktitle #1{{{\em #1}}} \fi" # "\ifx \undefined \pkg \def \pkg #1{{{\tt #1}}} \fi" } %%% ==================================================================== %%% Acknowledgement abbreviations: @String{ack-nhfb = "Nelson H. F. Beebe, University of Utah, Department of Mathematics, 110 LCB, 155 S 1400 E RM 233, Salt Lake City, UT 84112-0090, USA, Tel: +1 801 581 5254, FAX: +1 801 581 4148, e-mail: \path|beebe@math.utah.edu|, \path|beebe@acm.org|, \path|beebe@computer.org| (Internet), URL: \path|http://www.math.utah.edu/~beebe/|"} %%% ==================================================================== %%% Journal abbreviations: @String{j-ACM-COMM-COMP-ALGEBRA = "ACM Communications in Computer Algebra"} @String{j-BYTE = "Byte Magazine"} @String{j-CACM = "Communications of the ACM"} @String{j-CCPE = "Concurrency and Computation: Prac\-tice and Experience"} @String{j-COMP-ARCH-NEWS = "ACM SIGARCH Computer Architecture News"} @String{j-COMP-NET-ISDN = "Computer Networks and ISDN Systems"} @String{j-COMP-PHYS-COMM = "Computer Physics Communications"} @String{j-COMP-PHYSICS = "Computers in Physics"} @String{j-COMPUT-MATH-APPL = "Computers and Mathematics with Applications"} @String{j-COMPUT-SCI-ENG = "Computing in Science and Engineering"} @String{j-COMPUTER = "Computer"} @String{j-COMPUTING = "Computing"} @String{j-CONTEMP-PHYS = "Contemporary Physics"} @String{j-DDJ = "Dr. Dobb's Journal of Software Tools"} @String{j-DDJ-SOURCEBOOK = "Dr. Dobb's Sourcebook"} @String{j-FORTRAN-FORUM = "ACM Fortran Forum"} @String{j-FUT-GEN-COMP-SYS = "Future Generation Computer Systems"} @String{j-GRAPH-MODELS = "Graphical models"} @String{j-EXE = ".EXE: the software developers' magazine"} @String{j-IEEE-CGA = "IEEE Computer Graphics and Applications"} @String{j-IEEE-SOFTWARE = "IEEE Software"} @String{j-IJHPCA = "The International Journal of High Performance Computing Applications"} @String{j-INT-J-PAR-EMER-DIST-SYS = "International Journal of Parallel, Emergent and Distributed Systems: IJPEDS"} @String{j-INT-J-PARALLEL-PROG = "International Journal of Parallel Programming"} @String{j-INTERACTIONS = "Interactions (New York, N.Y.)"} @String{j-J-COMPUT-CHEM = "Journal of Computational Chemistry"} @String{j-J-PAR-DIST-COMP = "Journal of Parallel and Distributed Computing"} @String{j-J-RES-NATL-INST-STAND-TECHNOL = "Journal of research of the National Institute of Standards and Technology"} @String{j-J-STAT-SOFT = "Journal of Statistical Software"} @String{j-J-SUPERCOMPUTING = "The Journal of Supercomputing"} @String{j-JERIC = "ACM Journal on Educational Resources in Computing (JERIC)"} @String{j-JOCCH = "Journal on Computing and Cultural Heritage (JOCCH)"} @String{j-LECT-NOTES-COMP-SCI = "Lecture Notes in Computer Science"} @String{j-LINEAR-ALGEBRA-APPL = "Linear Algebra and its Applications"} @String{j-LINUX-J = "Linux journal"} @String{j-LOGIN = ";login: the USENIX Association newsletter"} @String{j-NUM-LIN-ALG-APPL = "Numerical Linear Algebra with Applications"} @String{j-OPER-SYS-REV = "Operating Systems Review"} @String{j-PARALLEL-PROCESS-LETT = "Parallel Processing Letters"} @String{j-SCI-COMPUT-PROGRAM = "Science of Computer Programming"} @String{j-SCI-PROG = "Scientific Programming"} @String{j-SIGACT = "ACM SIGACT News"} @String{j-SIGADA-LETTERS = "ACM SIGADA Ada Letters"} @String{j-SIGCSE = "SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education)"} @String{j-SIGPLAN = "ACM SIG{\-}PLAN Notices"} @String{j-SPE = "Soft\-ware\emdash Prac\-tice and Experience"} @String{j-SUNWORLD-ONLINE = "SunWorld online"} @String{j-TCBB = "IEEE/ACM Transactions on Computational Biology and Bioinformatics"} @String{j-TECS = "ACM Transactions on Embedded Computing Systems"} @String{j-THEOR-COMP-SCI = "Theoretical Computer Science"} @String{j-TIST = "ACM Transactions on Intelligent Systems and Technology (TIST)"} @String{j-TOCE = "ACM Transactions on Computing Education"} @String{j-TOG = "ACM Transactions on Graphics"} @String{j-TOMCCAP = "ACM Transactions on Multimedia Computing, Communications, and Applications"} @String{j-TOMS = "ACM Transactions on Mathematical Software"} @String{j-TOPS = "ACM Transactions on Privacy and Security (TOPS)"} @String{j-TUGboat = "TUGboat"} @String{j-UNIX-DEVELOPER = "UNIX Developer"} @String{j-WEB-REVIEW = "Web Review"} @String{j-WEB-TECHNIQUES = "Web Techniques"} @String{j-WORLD-WIDE-WEB-J = "World Wide Web Journal"} @String{j-X-J = "The {X} Journal: Computing Technology with the {X Window System}"} %%% ==================================================================== %%% Publisher abbreviations: @String{pub-ACM = "ACM Press"} @String{pub-ACM:adr = "New York, NY 10036, USA"} @String{pub-APRESS = "Apress"} @String{pub-APRESS:adr = "Berkeley, CA, USA"} @String{pub-AW = "Ad{\-d}i{\-s}on-Wes{\-l}ey"} @String{pub-AW:adr = "Reading, MA, USA"} @String{pub-AW-LONGMAN = "Ad{\-d}i{\-s}on-Wes{\-l}ey Longman"} @String{pub-AW-LONGMAN:adr = "Reading, MA, USA"} @String{pub-CAMBRIDGE = "Cambridge University Press"} @String{pub-CAMBRIDGE:adr = "Cambridge, UK"} @String{pub-CHAPMAN-HALL-CRC = "Chapman and Hall/CRC"} @String{pub-CHAPMAN-HALL-CRC:adr = "Boca Raton, FL, USA"} @String{pub-CNRI = "Corporation for National Research Initiatives"} @String{pub-CNRI:adr = "1895 Preston White Drive, Suite 100, Reston, VA 20191, USA"} @String{pub-CRC = "CRC Press"} @String{pub-CRC:adr = "2000 N.W. Corporate Blvd., Boca Raton, FL 33431-9868, USA"} @String{pub-CWI = "Centrum voor Wiskunde en Informatica"} @String{pub-CWI:adr = "P. O. Box 4079, 1009 AB Amsterdam, The Netherlands"} @String{pub-EUROPEN = "EurOpen"} @String{pub-EUROPEN:adr = "Buntingford, Herts, UK"} @String{pub-EYROLLES = "Eyrolles"} @String{pub-EYROLLES:adr = "Paris, France"} @String{pub-IEEE = "IEEE Computer Society Press"} @String{pub-IEEE:adr = "1109 Spring Street, Suite 300, Silver Spring, MD 20910, USA"} @String{pub-MAC = "Macmillan Publishing Company"} @String{pub-MAC:adr = "New York, NY, USA"} @String{pub-MANNING = "Manning Publications"} @String{pub-MANNING:adr = "Greenwich, CT, USA"} @String{pub-MORGAN-KAUFMANN = "Morgan Kaufmann Publishers"} @String{pub-MORGAN-KAUFMANN:adr = "San Francisco, CA, USA"} @String{pub-MT = "M\&T Books"} @String{pub-MT:adr = "M\&T Publishing, Inc., 501 Galveston Drive, Redwood City, CA 94063, USA"} @String{pub-NETWORK-THEORY = "Network Theory Ltd."} @String{pub-NETWORK-THEORY:adr = "Bristol, UK"} @String{pub-NO-STARCH = "No Starch Press"} @String{pub-NO-STARCH:adr = "San Francisco, CA, USA"} @String{pub-NRP = "New Riders Publishing"} @String{pub-NRP:adr = "Carmel, IN, USA"} @String{pub-ORA = "O'Reilly \& {Associates, Inc.}"} @String{pub-ORA:adr = "103a Morris Street, Sebastopol, CA 95472, USA, Tel: +1 707 829 0515, and 90 Sherman Street, Cambridge, MA 02140, USA, Tel: +1 617 354 5800"} @String{pub-ORA-MEDIA = "O'Reilly Media, Inc."} @String{pub-ORA-MEDIA:adr = "1005 Gravenstein Highway North, Sebastopol, CA 95472, USA"} @String{pub-OSBORNE = "Osborne/McGraw-Hill"} @String{pub-OSBORNE:adr = "Berkeley, CA, USA"} @String{pub-PACKT = "Packt Publishing"} @String{pub-PACKT:adr = "Birmingham, UK"} @String{pub-PEACHPIT = "Peachpit Press, Inc."} @String{pub-PEACHPIT:adr = "1085 Keith Avenue, Berkeley, CA 94708, USA"} @String{pub-PH = "Pren{\-}tice-Hall"} @String{pub-PH:adr = "Englewood Cliffs, NJ 07632, USA"} @String{pub-PHPTR = "P T R Pren{\-}tice-Hall"} @String{pub-PHPTR:adr = "Englewood Cliffs, NJ 07632, USA"} @String{pub-PRINCETON = "Princeton University Press"} @String{pub-PRINCETON:adr = "Princeton, NJ, USA"} @String{pub-SAMS = "SAMS Publishing"} @String{pub-SAMS:adr = "Indianapolis, IN, USA"} @String{pub-SIAM = "Society for Industrial and Applied Mathematics"} @String{pub-SIAM:adr = "Philadelphia, PA, USA"} @String{pub-STUDENTLITTERATUR = "Studentlitteratur"} @String{pub-STUDENTLITTERATUR:adr = "Lund, Sweden"} @String{pub-SV = "Spring{\-}er-Ver{\-}lag"} @String{pub-SV:adr = "Berlin, Germany~/ Heidelberg, Germany~/ London, UK~/ etc."} @String{pub-SYNGRESS = "Syngress Publishing, Inc."} @String{pub-SYNGRESS:adr = "Rockland, MA, USA"} @String{pub-USENIX = "USENIX"} @String{pub-USENIX:adr = "Berkeley, CA, USA"} @String{pub-WILEY = "Wiley"} @String{pub-WILEY:adr = "New York, NY, USA"} @String{pub-WORLD-SCI = "World Scientific Publishing Co."} @String{pub-WORLD-SCI:adr = "Singapore; Philadelphia, PA, USA; River Edge, NJ, USA"} @String{pub-WROX = "Wrox Press"} @String{pub-WROX:adr = "Chicago, IL, USA"} %%% ==================================================================== %%% Series abbreviations: @String{ser-LNCSE = "Lecture Notes in Computational Science and Engineering"} %%% ==================================================================== %%% Bibliography entries, sorted by year and then by citation label: @TechReport{MacLachlan:1991:CCL, author = "Rob MacLachlan", title = "{CMU Common Lisp} user's manual", type = "Research paper", number = "CMU-CS-91-108", institution = "School of Computer Science, Carnegie Mellon University", address = "Pittsburgh, PA, USA", pages = "vi + 168", month = feb, year = "1991", bibdate = "Mon Nov 18 14:18:28 MST 1996", bibsource = "http://www.math.utah.edu/pub/tex/bib/common-lisp.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", note = "This is a revised version of Technical Report CMU-CS-87-156.", abstract = "CMU Common Lisp is an implementation of Common Lisp that currently runs under Mach, a Berkeley Unix 4.3 binary compatible operating system. CMU Common Lisp is currently supported on MIPS-processor DECstations, SPARC-based workstations from Sun and the IBM RT PC, and other ports are planned. The largest single part of this document describes the Python compiler and the programming styles and techniques that the compiler encourages. The rest of the document describes extensions and the implementation dependent choices made in developing this implementation of Common Lisp. We have added several extensions, including the proposed error system, a source level debugger, an interface to Mach system calls, a foreign function call interface, support for interprocess communication and remote procedure call, and other features that provide a good environment for developing Lisp code.", acknowledgement = ack-nhfb, annote = "Sponsored by the Defense Advanced Research Projects Agency, Information Science and Technology Office.", keywords = "LISP (Computer program language)", } @InProceedings{vanRossum:1991:LSG, author = "G. {van Rossum} and J. {de Boer}", title = "Linking a stub generator ({AIL}) to a prototyping language ({Python})", crossref = "EurOpen:1991:EUD", pages = "229--247", year = "1991", bibdate = "Thu May 21 19:02:04 MDT 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, classification = "C5620 (Computer networks and techniques); C6110 (Systems analysis and programming); C6115 (Programming support); C6140D (High level languages); C6150C (Compilers, interpreters and other processors)", conflocation = "Tromso, Norway; 20-24 May 1991", corpsource = "CWI, Amsterdam, Netherlands", keywords = "AIL; Amoeba; client/server interfaces; distributed operating system; distributed processing; interpreted prototyping language; parallel languages; parallel programming; program processors; Python; Remote Procedure Call stub generator; software prototyping; usability", pubcountry = "UK", treatment = "P Practical", } @TechReport{MacLachlan:1992:CCL, author = "Rob MacLachlan", title = "{CMU Common Lisp} user's manual", type = "Research paper", number = "CMU-CS-92-161", institution = "School of Computer Science, Carnegie Mellon University", address = "Pittsburgh, PA, USA", pages = "v + 142", month = jul, year = "1992", bibdate = "Mon Nov 18 14:18:28 MST 1996", bibsource = "http://www.math.utah.edu/pub/tex/bib/common-lisp.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", note = "Supersedes Technical Reports CMU-CS-87-156 and CMU-CS-91-108.", abstract = "CMU Common Lisp is an implementation of that Common Lisp is [sic] currently supported on MIPS-processor DECstations, SPARC-based workstations from Sun and the IBM RT PC, and other ports are planned. All architectures are supported under Mach, a Berkeley Unix 4.3 binary compatible operating system. The SPARC is also supported under SunOS. The largest single part of this document describes the Python compiler and the programming styles and techniques that the compiler encourages. The rest of the document describes extensions and the implementation dependent choices made in developing this implementation of Common Lisp. We have added several extensions, including a source level debugger, an interface to Unix system calls, a foreign function call interface, support for interprocess communication and remote procedure call, and other features that provide a good environment for developing Lisp code.", acknowledgement = ack-nhfb, annote = "Supported in part by the Defense Advanced Research Projects Agency, Information Science and Technology Office, issued by DARPA/CMO.", keywords = "COMMON LISP (Computer program language); Compilers (Computer programs)", } @InProceedings{MacLachlan:1992:PCC, author = "Robert A. MacLachlan", title = "{Python} compiler for {CMU Common Lisp}", crossref = "ACM:1992:PAC", pages = "235--246", year = "1992", bibdate = "Wed Aug 6 19:54:46 MDT 1997", bibsource = "Compendex database; http://www.math.utah.edu/pub/tex/bib/common-lisp.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "The Python compiler for CMU Common Lisp has been under development for over five years, and now forms the core of a production quality public domain Lisp implementation. Python synthesizes the good ideas from Lisp compilers and source transformation systems with mainstream optimization and retargetability techniques. Novel features include strict type checking and source-level debugging of compiled code. Unusual attention has been paid to the compiler's user interface.", acknowledgement = ack-nhfb, affiliation = "Carnegie Mellon Univ", affiliationaddress = "Pittsburgh, PA, USA", classification = "723.1; 723.1.1", keywords = "Algorithms; Lisp (programming language); Mainstream optimization and retargetability techniques; Program compilers; Program debugging; Program processors; Python compiler; Source level debugging; Type checking; User interfaces", sponsor = "ACM; SIGPLAN; SIGACT; SIGART", } @Article{Anonymous:1995:NIP, author = "Anonymous", title = "{NIST} Investigates {Python} Programming Language", journal = j-J-RES-NATL-INST-STAND-TECHNOL, volume = "100", number = "1", pages = "101--101", month = jan # "\slash " # feb, year = "1995", CODEN = "JRITEF", ISSN = "1044-677X (print), 2165-7254 (electronic)", ISSN-L = "1044-677X", bibdate = "Thu May 21 16:28:33 MDT 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://nvl.nist.gov/pub/nistpubs/jres/jrescont.pdf", acknowledgement = ack-nhfb, fjournal = "Journal of research of the National Institute of Standards and Technology", journal-URL = "http://www.nist.gov/nvl/jres.cfm", } @Article{Conway:1995:PGD, author = "Matthew J. Conway", title = "{Python}: a {GUI} development tool", journal = j-INTERACTIONS, volume = "2", number = "2", pages = "23--28", month = apr, year = "1995", CODEN = "IERAE3", ISSN = "1072-5520", ISSN-L = "1072-5520", bibdate = "Thu May 21 19:02:04 MDT 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, classification = "C6115 (Programming support); C6140D (High level languages); C6180G (Graphical user interfaces)", corpsource = "Virginia Univ., Charlottesville, VA, USA", fjournal = "Interactions (New York, N.Y.)", keywords = "authoring languages; authoring systems; Eiffel; graphical user interfaces; GUI development tool; Modula-3; Perl5; Prolog; Python; Scheme; Self; Tcl/Tk; Tk-aware interpreted languages; user interface management systems", treatment = "P Practical", } @InProceedings{Huang:1995:CEM, author = "C. C. Huang and G. S. Couch and E. F. Pettersen and T. E. Ferrin", title = "{Chimera}: an extensible molecular modeling application constructed using standard components", crossref = "Hunter:1995:PSB", pages = "724--??", year = "1995", bibdate = "Thu May 21 19:02:04 MDT 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, classification = "A3520B (General molecular conformation and symmetry; A3620H (Macromolecular configuration (bonds, dimensions)); A8715B (Biomolecular structure, configuration, conformation, and active sites); C6110B (Software engineering techniques); C6130B (Graphics techniques); C7320 (Physics and chemistry computing); C7330 (Biology and medical computing); stereochemistry)", conftitle = "Proceedings of Biocomputing '96", corpsource = "Lab. of Comput. Graphics, California Univ., San Francisco, CA, USA", keywords = "application availability evaluation; biology computing; Chimera; computer graphics; digital simulation; interoperability; Kinemage files; macromolecules; molecular biophysics; molecular configurations; molecular modeling application; Open Inventor; open systems; OpenGL; physics computing; programmable command language; Python language interpreter; software extensibility; software libraries; software portability; standard components; standard functionality; technological criteria; workstations; X Windows; X/MOTIF user interface", treatment = "P Practical", } @Article{UUIG:1995:VBA, author = "{UVa User Interface Group}", title = "{VR} Blackboard: {Alice}: Rapid Prototyping for Virtual Reality", journal = j-IEEE-CGA, volume = "15", number = "3", pages = "8--11", month = may, year = "1995", CODEN = "ICGADZ", ISSN = "0272-1716 (print), 1558-1756 (electronic)", ISSN-L = "0272-1716", bibdate = "Wed May 08 06:20:22 2002", bibsource = "Compendex database; http://www.math.utah.edu/pub/tex/bib/ieeecga.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, classification = "722.2; 723; 723.1; 723.5", fjournal = "IEEE Computer Graphics and Applications", journal-URL = "http://www.computer.org/portal/web/csdl/magazines/cga", journalabr = "IEEE Comput Graphics Appl", keywords = "Animation; Computer keyboards; Computer programs; Computer simulation; Computer software; Interactive computer graphics; Mice (computer peripherals); Object oriented programming; Python programming language; Software prototyping; Three dimensional computer graphics; Virtual reality", } @TechReport{vanRossum:1995:EEP, author = "Guido {van Rossum}", title = "Extending and embedding the {Python} interpreter", type = "Report", number = "CS-R9527", institution = pub-CWI, address = pub-CWI:adr, pages = "i + 22", month = apr, year = "1995", bibdate = "Thu May 21 14:06:05 MDT 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Python is an interpreted, object-oriented programming language. This document describes how to write modules in C or C++ to extend the Python interpreter with new modules. Those modules can define new functions but also new object types and their methods. The document also describes how to embed the Python interpreter in another application, for use as an extension language. Finally, it shows how to compile and link extension modules so that they can be loaded dynamically (at run time) into the interpreter, if the underlying operating system supports this feature. This document assumes basic knowledge about Python. For an informal introduction to the language, see the Python Tutorial. The Python Reference Manual gives a more formal definition of the language. The Python Library Reference documents the existing object types, functions and modules (both built-in and written in Python) that give the language its wide application range.", acknowledgement = ack-nhfb, keywords = "Object-oriented programming (Computer science); Programming languages (Electronic computers)", } @TechReport{vanRossum:1995:PLR, author = "Guido {van Rossum}", title = "{Python} library reference", type = "Report", number = "CS-R9524", institution = pub-CWI, address = pub-CWI:adr, pages = "iv + 186", month = apr, year = "1995", bibdate = "Fri May 22 14:34:22 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.python.org/doc/lib/lib.html", abstract = "Python is an extensible, interpreted, object-oriented programming language. It supports a wide range of applications, from simple text processing scripts to interactive WWW browsers. While the Python Reference Manual describes the exact syntax and semantics of the language, it does not describe the standard library that is distributed with the language, and which greatly enhances its immediate usability. This library contains built-in modules (written in C) that provide access to system functionality such as file I/O that would otherwise be inaccessible to Python programmers, as well as modules written in Python that provide standardized solutions for many problems that occur in everyday programming. Some of theses modules are explicitly designed to encourage and enhance the portability of Python programs. This library reference manual documents Python's standard library, as well as many optional library modules (which may or may not be available, depending on whether the underlying platform supports them and on the configuration choices made at compile time). It also documents the standard types of the language and its built-in functions and exceptions, many of which are not or incompletely documented in the Reference Manual. This manual assumes basic knowledge about the Python language. For an informal introduction to Python, see the Python Tutorial; the Python Reference Manual remains the highest authority on syntactic and semantic questions. Finally, the manual entitled Extending and Embedding the Python Interpreter describes how to add new extensions to Python and how to embed it in other applications.''", acknowledgement = ack-nhfb, keywords = "Object-oriented programming (Computer science); Programming languages (Electronic computers)", } @TechReport{vanRossum:1995:PRM, author = "Guido {van Rossum}", title = "{Python} reference manual", type = "Report", number = "CS-R9525", institution = pub-CWI, address = pub-CWI:adr, pages = "ii + 54", month = apr, year = "1995", bibdate = "Thu May 21 14:06:05 MDT 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.python.org/doc/ref/ref-1.html", abstract = "Python is a simple, yet powerful, interpreted programming language that bridges the gap between C and shell programming, and is thus ideally suited for `throw-away programming' and rapid prototyping. Its syntax is put together from constructs borrowed from a variety of other languages; most prominent are influences from ABC, C, Modula-3 and Icon. The Python interpreter is easily extended with new functions and data types implemented in C. Python is also suitable as an extension language for highly customizable C applications such as editors or window managers. Python is available for various operating systems, amongst which several flavors of UNIX (including Linux), the Apple Macintosh O.S., MS-DOS, MS-Windows 3.1, Windows NT, and OS/2. This reference manual describes the syntax and `core semantics' of the language. It is terse, but attempts to be exact and complete. The semantics of non-essential built-in object types and of the built-in functions and modules are described in the Python Library Reference. For an informal introduction to the language, see the Python Tutorial.", acknowledgement = ack-nhfb, keywords = "Object-oriented programming (Computer science); Programming languages (Electronic computers)", } @TechReport{vanRossum:1995:PT, author = "Guido {van Rossum}", title = "{Python} tutorial", type = "Report", number = "CS-R9526", institution = pub-CWI, address = pub-CWI:adr, pages = "iii + 65", month = apr, year = "1995", bibdate = "Thu May 21 14:06:05 MDT 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.python.org/doc/tut/tut.html", abstract = "Python is a simple, yet powerful programming language that bridges the gap between C and shell programming, and is thus ideally suited for `throw-away programming' and rapid prototyping. Its syntax is put together from constructs borrowed from a variety of other languages; most prominent are influences from ABC, C, Modula-3 and Icon. The Python interpreter is easily extended with new functions and data types implemented in C. Python is also suitable as an extension language for highly customizable C applications such as editors or window managers. Python is available for various operating systems, amongst which several flavors of UNIX, Amoeba, the Apple Macintosh O.S., and MS-DOS. This tutorial introduces the reader informally to the basic concepts and features of the Python language and system. It helps to have a Python interpreter handy for hands-on experience, but as the examples are self-contained, the tutorial can be read off-line as well. For a description of standard objects and modules, see the Python Library Reference manual. The Python Reference Manual gives a more formal definition of the language.", acknowledgement = ack-nhfb, keywords = "Object-oriented programming (Computer science); Programming languages (Electronic computers)", } @Article{Watters:1995:TAN, author = "Aaron R. Watters", title = "Tutorial Article No. 005: The What, Why, Who, and Where of {Python}", journal = "UnixWorld Online", volume = "??", number = "??", pages = "??--??", month = "????", year = "1995", bibdate = "Thu May 21 16:11:31 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.wcmh.com/uworld/archives/95/tutorial/005.html", acknowledgement = ack-nhfb, } @Article{Bauer:1996:IP, author = "Jeff Bauer", title = "An Introduction to {Python}", journal = j-LINUX-J, volume = "21", pages = "??--??", month = jan, year = "1996", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Fri Oct 9 08:35:26 MDT 1998", bibsource = "http://www.linuxjournal.com/issue21/index.html; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Do you need help in the rapid development of applications? Python could be the language for you.", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @InProceedings{Beazley:1996:SEU, author = "D. M. Beazley", title = "{SWIG}: an easy to use tool for integrating scripting languages with {C} and {C++}", crossref = "USENIX:1996:ATT", pages = "129--139", year = "1996", bibdate = "Thu May 21 19:02:04 MDT 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, classification = "C6115 (Programming support); C6140D (High level languages); C6180 (User interfaces)", corpsource = "Dept. of Comput. Sci., Utah Univ., Salt Lake City, UT, USA", keywords = "ANSI C/C++ declarations; ASCII format; authoring languages; automatic bindings generation; C language; C++ language; classes; data types; documentation; Guile; HTML; language integration; LaTeX; Perl; pointers; program development tool; programming environments; Python; scripting languages; Simplified Wrapper and Interface Generator; software tools; structures; SWIG; system documentation; Tcl/Tk; user interface management systems", treatment = "P Practical", } @Article{Crespo:1996:WBB, author = "Arturo Crespo and Eric A. Bier", title = "{WebWriter}: a browser-based editor for constructing {Web} applications", journal = j-COMP-NET-ISDN, volume = "28", number = "7--11", pages = "1291--1306", day = "1", month = may, year = "1996", CODEN = "CNISE9", ISSN = "0169-7552 (print), 1879-2324 (electronic)", ISSN-L = "0169-7552", bibdate = "Fri Sep 24 20:21:29 MDT 1999", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sgml.bib", URL = "http://www.elsevier.com/cgi-bin/cas/tree/store/comnet/cas_sub/browse/browse.cgi?year=1996&volume=28&issue=7-11&aid=1616", acknowledgement = ack-nhfb, affiliation = "Dept. of Comput. Sci., Stanford Univ., CA, USA", classification = "C6115 (Programming support); C6130D (Document processing techniques); C6130M (Multimedia); C6140D (High level languages); C6150N (Distributed systems software); C6180 (User interfaces)", conflocation = "Paris, France; 6-10 May 1996", conftitle = "Fifth International World Wide Web Conference", corpsource = "Dept. of Comput. Sci., Stanford Univ., CA, USA", fjournal = "Computer Networks and ISDN Systems", journal-URL = "http://www.sciencedirect.com/science/journal/01697552", keywords = "application generators; authoring systems; browser-based editor; CGI protocol; clickable maps; Common Gateway Interface; direct-manipulation Web page editor; HTML extensions; hypermedia; Hypertext Markup Language; network servers; nonprogrammers; output regions; page description languages; page stack; programming languages; Python; script; server-based authoring tools; server-based World Wide Web applications construction; server-side editors; SGML; software packages; text editing; toolkit; user interface layout; Web page generating programs; WebWriter; {Internet}", pubcountry = "Netherlands", treatment = "P Practical", } @Article{Dubois:1996:EPO, author = "P. F. Dubois and T.-Y. Yang", title = "Extending {Python} [Object-oriented language]", journal = j-COMP-PHYSICS, volume = "10", number = "4", pages = "359--365", month = jul # "\slash " # aug, year = "1996", CODEN = "CPHYE2", ISSN = "0894-1866 (print), 1558-4208 (electronic)", ISSN-L = "0894-1866", bibdate = "Thu May 21 19:02:04 MDT 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, classification = "C6110J (Object-oriented programming); C6120 (File organisation); C6130 (Data handling techniques); C6140D (High level languages); C6150C (Compilers, interpreters and other processors); C7300 (Natural sciences computing)", corpsource = "Lawrence Livermore Nat. Lab., CA, USA", fjournal = "Computers in Physics", keywords = "C language; C++; C++ static-constructor problem,; compiled sources; dynamic loading; embedding; exception handling; first-class functions; Fortran; free language; garbage collection; high-performance numerical extension; interpreted language; natural sciences computing; object types; object- oriented languages; object-oriented language; object-oriented programming; portable language; program interpreters; programmable application; Python interpreter; Python language; Python program; scientific programming; storage management; user interface", treatment = "P Practical", } @Article{Dubois:1996:NP, author = "P. F. Dubois and K. Hinsen and J. Hugunin", title = "Numerical {Python}", journal = j-COMP-PHYSICS, volume = "10", number = "3", pages = "262--267", month = may # "\slash " # jun, year = "1996", CODEN = "CPHYE2", ISSN = "0894-1866 (print), 1558-4208 (electronic)", ISSN-L = "0894-1866", bibdate = "Sun Apr 13 12:29:32 MDT 1997", bibsource = "http://www.math.utah.edu/pub/tex/bib/linux.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Python is a small and easy-to-learn language with surprising capabilities. It is an interpreted object-oriented scripting language and has a full range of sophisticated features such as first-class functions, garbage collection, and exception handling. Python has properties that make it especially appealing for scientific programming: Python is quite simple and easy to learn, but it is a full and complete language. It is simple to extend Python with your own compiled objects and functions. Python is portable, from Unix to Windows 95 to Linux to Macintosh. Python is free, with no license required even if you make a commercial product out of it. Python has a large user-contributed library of ``modules''. These modules cover a wide variety of needs, such as audio and image processing, World Wide Web programming, and graphical user interfaces. In particular, there is an interface to the popular Tk package for building windowing applications. And now, Python has a high-performance array module similar to the facilities in specialized array languages such as Matlab, IDL, Basis, or Yorick. This extension also adds complex numbers to the language. Array operations in Python lead to the execution of loops in C, so that most of the work is done at full compiled speed.", acknowledgement = ack-nhfb, classcodes = "C6140D (High level languages); C6110J (Object-oriented programming); C6150C (Compilers, interpreters and other processors); C7300 (Natural sciences computing)", corpsource = "Lawrence Livermore Nat. Lab., CA, USA", fjournal = "Computers in Physics", keywords = "applications; compiled objects; exception; first-class functions; garbage collection; graphical user interfaces; handling; high-performance array module; interpreted object-oriented scripting language; natural sciences computing; object-oriented languages; program interpreters; Python; scientific programming; Wide Web programming; windowing; World", treatment = "P Practical", } @Article{Dubois:1996:SPE, author = "Paul F. Dubois and T.-Y. Yang", title = "Scientific Programming: Extending {Python}", journal = j-COMP-PHYSICS, volume = "10", number = "4", pages = "359--??", month = "????", year = "1996", CODEN = "CPHYE2", ISSN = "0894-1866 (print), 1558-4208 (electronic)", ISSN-L = "0894-1866", bibdate = "Thu May 21 16:28:33 MDT 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computers in Physics", } @InProceedings{Fulton:1996:IPP, author = "Jim Fulton", title = "Introduction to the {Python} Programming Language", crossref = "USENIX:1996:PSUb", pages = "??--??", year = "1996", bibdate = "Mon Oct 21 14:29:18 2002", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.usenix.org/publications/library/proceedings/coots96/", acknowledgement = ack-nhfb, } @InProceedings{Hylton:1996:KPS, author = "J. Hylton and K. Manheimer and F. L. {Drake, Jr.} and B. Warsaw and R. Masse and G. {van Rossum}", title = "Knowbot Programming: system support for mobile agents", crossref = "Cabrera:1996:PFI", pages = "8--13", year = "1996", bibdate = "Thu May 21 19:02:04 MDT 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, classification = "C6110J (Object-oriented programming); C6130S (Data security); C6150N (Distributed systems software); C6170 (Expert systems)", conftitle = "Proceedings of the Fifth International Workshop on Object- Orientation in Operating Systems", corpsource = "Corporation for Nat. Res. Initiatives, Reston, VA, USA", keywords = "cooperative systems; distributed systems; Internet; interprocess communication; Knowbot Programs; mobile agents; multiple autonomous agents; network resources; object-oriented languages; object-oriented programming; object-oriented programming language; process migration; prototype system; Python; security; security of data; software agents", sponsororg = "IEEE Comput. Soc. Tech. Committee on Oper. Syst.; USENIX", treatment = "P Practical", } @Book{Lutz:1996:PP, author = "Mark Lutz", title = "Programming {Python}", publisher = pub-ORA, address = pub-ORA:adr, pages = "xxii + 880", month = "Fall", year = "1996", ISBN = "1-56592-197-6, 0-585-03222-X (e-book)", ISBN-13 = "978-1-56592-197-9, 978-0-585-03222-1 (e-book)", LCCN = "QA76.73.P98 L88 1996", bibdate = "Sat Jun 28 10:26:23 1997", bibsource = "http://www.math.utah.edu/pub/tex/bib/ora.bib; http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", note = "Also available in Japanese translation, see \path=http://www.oreilly.co.jp/BOOK/python1.htm=.", price = "US\$39.95", URL = "http://shell.rmi.net/~lutz/; http://www.oreilly.com/catalog/python", acknowledgement = ack-nhfb, keywords = "Python (Computer program language)", } @Article{Troan:1996:FSSa, author = "Erik Troan", title = "Free Software Solutions: The {Python} Language", journal = j-X-J, volume = "5", number = "5", pages = "96--??", month = may, year = "1996", CODEN = "XJOUEA", ISSN = "1056-7003", bibdate = "Thu Sep 05 09:14:34 1996", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/xjournal.bib", acknowledgement = ack-nhfb, fjournal = "The X Journal", } @Article{Troan:1996:FSSb, author = "Erik Troan", title = "Free Software Solutions: Basic {X} Programming in {Python}", journal = j-X-J, volume = "5", number = "6", pages = "84--??", month = jun, year = "1996", CODEN = "XJOUEA", ISSN = "1056-7003", bibdate = "Thu Sep 05 09:14:34 1996", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/xjournal.bib", acknowledgement = ack-nhfb, fjournal = "The X Journal", } @Article{Troan:1996:FSSc, author = "Erik Troan", title = "Free Software Solutions: Meta Widgets in {Python}", journal = j-X-J, volume = "5", number = "7", pages = "??--??", month = jul # "\slash " # aug, year = "1996", CODEN = "XJOUEA", ISSN = "1056-7003", bibdate = "Wed Sep 4 09:14:40 1996", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/xjournal.bib; http://www.sigs.com/publications/docs/txjr/9607/txjr9607.toc.html", fjournal = "The X Journal", } @Book{Watters:1996:IPP, author = "Aaron Watters and Guido {van Rossum} and James C. Ahlstrom", title = "{Internet} programming with {Python}", publisher = pub-MT, address = pub-MT:adr, pages = "xviii + 477", year = "1996", ISBN = "1-55851-484-8", ISBN-13 = "978-1-55851-484-3", LCCN = "QA76.73.P98 W38 1996", bibdate = "Thu May 21 11:05:40 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", price = "US\$34.95", URL = "http://www.fsbassociates.com/books/python.htm", acknowledgement = ack-nhfb, annote = "See book review \cite{Johnson:1997:BRI}.", keywords = "Internet (Computer network); Python (Computer program language)", } @Article{Anonymous:1997:BRI, author = "Anonymous", title = "Book Review: {Internet Programming with Python}", journal = j-LINUX-J, volume = "42", pages = "??--??", month = oct, year = "1997", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Fri Oct 9 08:35:26 MDT 1998", bibsource = "http://www.linuxjournal.com/issue42/index.html; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.linuxjournal.com/2152.html", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Anonymous:1997:BRPe, author = "Anonymous", title = "Book Review: {{\booktitle{Programming Python}}: By Mark Lutz. O'Reilly, Sebastopol, CA. (1996). 880 pages. \$44.95}", journal = j-COMPUT-MATH-APPL, volume = "33", number = "5", pages = "132--132", month = mar, year = "1997", CODEN = "CMAPDK", ISSN = "0898-1221 (print), 1873-7668 (electronic)", ISSN-L = "0898-1221", bibdate = "Wed Mar 1 21:48:37 MST 2017", bibsource = "http://www.math.utah.edu/pub/tex/bib/computmathappl1990.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.sciencedirect.com/science/article/pii/S0898122197829525", acknowledgement = ack-nhfb, fjournal = "Computers and Mathematics with Applications", journal-URL = "http://www.sciencedirect.com/science/journal/08981221", } @Article{Arnold:1997:HDO, author = "David Arnold and Andy Bond and Martin Chilvers", title = "{Hector}: Distributed Objects in {Python}", journal = j-DDJ-SOURCEBOOK, volume = "??", number = "??", pages = "??--??", month = jan # "\slash " # feb, year = "1997", ISSN = "1077-9019", bibdate = "Thu May 21 15:33:54 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.ddj.com/ddsbk/1997/1997_01/arno.htm", acknowledgement = ack-nhfb, fjournal = "Dr. Dobb's Sourcebook", } @InProceedings{Beazley:1997:BFL, author = "David M. Beazley and Peter S. Lomdahl", title = "Building flexible large-scale scientific computing applications with scripting languages", crossref = "Heath:1997:PES", year = "1997", bibdate = "Fri May 22 09:14:10 MDT 1998", bibsource = "Compendex database; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "We describe our use of scripting languages with a large-scale molecular dynamics code. We will show how one can build an interactive, highly modular, and easily extensible system without sacrificing performance, building a huge monolithic package, or complicating code development. We will also describe our use of the Python language and the SWIG automated interface generation tool that we have developed for easily creating scripting language interfaces to C/C++ programs.", acknowledgement = ack-nhfb, affiliation = "Univ of Utah", affiliationaddress = "Salt Lake City, UT, USA", journalabr = "Proc SIAM Conf Parallel Process Sci Comput", pagecount = "8", } @InProceedings{Beazley:1997:EMP, author = "D. M. Beazley and P. S. Lomdahl", title = "Extensible message passing application development and debugging with {Python}", crossref = "IEEE:1997:PIP", pages = "650--655", year = "1997", bibdate = "Thu May 21 19:02:04 MDT 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, classification = "C5220P (Parallel architecture)C5440 (Multiprocessing systems); C6110P (Parallel programming); C6115 (Programming support); C6140D (High level languages); C6150C (Compilers, interpreters and other processors); C6150G (Diagnostic, testing, debugging and evaluating systems); C6150N (Distributed systems software)", conftitle = "Proceedings 11th International Parallel Processing Symposium", corpsource = "Dept. of Comput. Sci., Utah Univ., Salt Lake City, UT, USA", keywords = "application specific debugging; CM-5; Cray T3D; extensible message passing application debugging; extensible message passing application development; interpreted object oriented scripting language; large-scale message passing applications; message passing; message passing program writing; molecular dynamics application; MPI; multiprocessing systems; object-oriented languages; parallel machines; parallel programming; program debugging; program interpreters; Python parallelisation; rapid prototyping; software prototyping; Sun multiprocessor servers", sponsororg = "IEEE Comput. Soc. Tech. Committee on Parallel Process.; ACM SIGARCH; Eur. Assoc. Theor. Comput. Sci. (EATCS); Swiss Special Interest Group on Parallelism (SIPAR); SPPEDUP Soc", treatment = "P Practical", } @Article{Bielak:1997:UPG, author = "Richie Bielak", title = "Using {Python} to Generate {HTML} Pages", journal = "Linux Gazette", volume = "19", number = "??", pages = "??--??", month = jul, year = "1997", bibdate = "Thu May 21 15:19:57 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.ssc.com/lg/issue19/python.html", acknowledgement = ack-nhfb, } @InProceedings{Hammer:1997:ESI, author = "J. Hammer and H. Garcia-Molina and J. Cho and R. Aranha and Crespo and A.", title = "Extracting semistructured information from the {Web}", crossref = "Anonymous:1997:PWM", pages = "18--25", year = "1997", bibdate = "Thu May 21 19:02:04 MDT 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, classification = "C6160B (Distributed databases); C7210 (Information services and centres); C7250 (Information storage and retrieval)", conflocation = "Tucson, AZ, USA; 16 May 1997", conftitle = "Proceedings of Workshop on Management of Semi-Structured Data", corpsource = "Dept. of Comput. Sci., Stanford Univ., CA, USA", keywords = "configurable tool; DARPA I/sup 3/ technology demonstration; database objects; declarative specification; distributed databases; HTML pages; information conversion; information retrieval; Internet; Python programming language; semistructured information extraction; TSIMMIS testbed; various WWW sites; weather data extraction; Web extractor", sponsororg = "NSF", treatment = "P Practical", } @Unpublished{Hugunin:1997:PJB, author = "Jim Hugunin", title = "{Python} and {Java}: The Best of Both Worlds", year = "1997", bibdate = "Tue Jan 06 09:29:45 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/java.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", note = "Discusses an implementation of the Python scripting language in Java. The article and the code are available electronically.", URL = "http://www.python.org/jpython/", acknowledgement = ack-nhfb, } @Article{Johnson:1997:BRI, author = "Dwight Johnson", title = "Book Review: {{\em Internet Programming with Python}}", journal = j-LINUX-J, volume = "42", pages = "??--??", month = oct, year = "1997", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Fri Apr 30 10:36:13 1999", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", note = "See book \cite{Watters:1996:IPP}.", URL = "http://www.ssc.com/lj/issue42/2152.html", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Kim:1997:DIW, author = "Hyeon Jong Kim and Ki Ho Lee", title = "Design and implementation of {Web} documents creating system with {HTML}-supporting library", journal = "Journal of KISS(C) (Computing Practices)", volume = "3", number = "4", pages = "375--383", month = aug, year = "1997", CODEN = "CKNCFY", ISSN = "1226-2293", bibdate = "Thu May 21 19:02:04 MDT 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, classification = "C5620W (Other computer networks); C6110J (Object-oriented programming); C6130D (Document processing techniques); C6130M (Multimedia); C6140D (High level languages); C6150N (Distributed systems software); C7210 (Information services and centres)", corpsource = "Korea Inf. Sci. Soc., Seoul, South Korea", keywords = "CGI program; compact program; GUI; HTML documents; HTML supporting library; hypermedia; Internet; nonsequential construction; object oriented design; object oriented programming language; object-oriented languages; page description languages; print statements; Python; Web browser; Web document creation system; Web documents", language = "Korean", pubcountry = "South Korea", treatment = "P Practical", } @Article{Kuchling:1997:PU, author = "Andrew Kuchling", title = "{Python} Update", journal = j-LINUX-J, volume = "37", pages = "??--??", month = may, year = "1997", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Fri Oct 9 08:35:26 MDT 1998", bibsource = "http://www.linuxjournal.com/issue37/index.html; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Laird:1997:CSL, author = "Cameron Laird and Kathryn Soraiz", title = "Choosing a scripting language: {Perl}, {Tcl}, and {Python}: they're not your father's scripting languages", journal = j-SUNWORLD-ONLINE, volume = "??", number = "??", pages = "??--??", month = oct, year = "1997", ISSN = "1091-8914", bibdate = "Thu May 21 15:17:09 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.sun.com/sunworldonline/swol-10-1997/swol-10-scripting.html", acknowledgement = ack-nhfb, fjournal = "SunWorld online", } @Article{Orlowski:1997:NSC, author = "A. Orlowski", title = "And now for something completely different? [{Python} language]", journal = j-EXE, volume = "12", number = "2", pages = "34--35, 37, 39, 41", month = jul, year = "1997", CODEN = "EXEEE5", ISSN = "0268-6872", bibdate = "Thu May 21 19:02:04 MDT 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, classification = "C6110J (Object-oriented programming); C6140D (High level languages); C6150N (Distributed systems software)", fjournal = ".EXE: the software developers' magazine", keywords = "Amoeba operating system; API; application program interfaces; authoring languages; BSD- style sockets; CGI facilities; client- server systems; client-server system; CORBA; graphical user interface; GUI toolkits; ILU; object-oriented languages; object-oriented programming; operating systems (computers); Python language; scripting language; shared objects; software libraries; SQL interfaces", pubcountry = "UK", treatment = "P Practical", } @InProceedings{Pierce:1997:AEU, author = "J. S. Pierce and S. Audia and T. Burnette and K. Christiansen and D. Cosgrove and M. Conway and K. Hinckley and K. Monkaitis and J. Patten and J. Shothet and D. Staack and B. Stearns and Sturgill and C. and G. Williams and R. Pausch", title = "{Alice}: easy to use interactive {3D} graphics", crossref = "ACM:1997:PAS", pages = "77--78", year = "1997", bibdate = "Thu May 21 19:02:04 MDT 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, classification = "C6115 (Programming support); C6130B (Graphics techniques); C6180 (User interfaces)", conftitle = "Proceedings of Tenth Annual Symposium on User Interface Software and Technology", corpsource = "Dept. of Comput. Sci., Carnegie Mellon Univ., Pittsburgh, PA, USA", keywords = "Alice; authoring languages; ease of use; human factors; interactive 3D graphics; interactive development environment; interactive systems; Internet; interpreted language; Python; rapid prototyping system; scripting language; simulations; software prototyping; solid modelling; three dimensional graphics; usability; user actions; user interfaces; virtual reality; virtual reality applications; Windows 95", sponsororg = "ACM", treatment = "P Practical", } @InProceedings{Plosch:1997:DCP, author = "R. Plosch", title = "Design by contract for {Python}", crossref = "IEEE:1997:PAP", pages = "213--219", year = "1997", bibdate = "Thu May 21 19:02:04 MDT 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, classification = "C6110J (Object-oriented programming); C6140D (High level languages)", conftitle = "Proceedings of Joint 4th International Computer Science Conference and 4th Asia Pacific Software Engineering Conference", corpsource = "Johannes Kepler Univ., Linz, Austria", keywords = "design by contract; instance variables; object-oriented languages; object-oriented programming; object-oriented software systems; prototyping-oriented software life cycle; run-time system; software prototyping; statically typed object-oriented programming language Eiffel", sponsororg = "Croucher Found.; UNU/IIST; IEEE Hong Kong Sect. Comput. Chapter; ACM Hong Kong Chapter; Hong Kong Comput. Soc", treatment = "P Practical", } @Misc{Rook:1997:LCC, author = "David Rook", title = "A Language Collector Comments On: {Java}, {Perl} \& {Python}", month = oct, year = "1997", bibdate = "Thu May 21 15:18:28 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.chips.navy.mil/chips/archives/97_oct/file12.htm", acknowledgement = ack-nhfb, } @Article{Shell:1997:PDS, author = "Jeffrey P. Shell", title = "{Python} Does Scripts and Objects --- {Python} is a platform-independent {OOP} language with capabilities ranging from simple scripting to sophisticated object libraries", journal = j-BYTE, volume = "22", number = "2", pages = "63--64", month = feb, year = "1997", CODEN = "BYTEDJ", ISSN = "0360-5280 (print), 1082-7838 (electronic)", ISSN-L = "0360-5280", bibdate = "Sat Feb 15 16:36:48 MST 1997", bibsource = "http://www.math.utah.edu/pub/tex/bib/byte1995.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, classification = "C6110J (Object-oriented programming); C6140D (High level languages)", fjournal = "BYTE Magazine", keywords = "client/server databases; common gateway interface scripts; dynamic range; large object oriented programming libraries; neutral byte code; object-oriented languages; object-oriented programming; objects; programming languages; Python; rapid applications prototyping; scripts; Unix system administration tools", treatment = "P Practical", } @Article{Suzuki:1997:P, author = "Junichi Suzuki", title = "{Python}", journal = "Japanese Dr Dobbs", volume = "??", number = "??", pages = "??--??", month = "????", year = "1997", bibdate = "Thu May 21 15:23:47 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", note = "A series of seven articles on Python.", acknowledgement = ack-nhfb, } @Article{Troan:1997:FSS, author = "Eric Troan", title = "Free Software Solutions: From {Python} to {Java}", journal = j-UNIX-DEVELOPER, volume = "1", number = "1", pages = "77--78", month = jan # "\slash " # feb, year = "1997", ISSN = "1090-2279", bibdate = "Thu Jan 16 17:23:49 1997", bibsource = "http://www.math.utah.edu/pub/tex/bib/java.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "UNIX Developer", } @Article{Vanaken:1997:WCS, author = "Michel Vanaken", title = "Writing {CGI} Scripts in {Python}", journal = j-LINUX-J, volume = "34", pages = "??--??", month = feb, year = "1997", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Fri Oct 9 08:35:26 MDT 1998", bibsource = "http://www.linuxjournal.com/issue34/index.html; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Python, a simple, yet powerful, interpreted programming language that bridges the gap between C and shell programming, from a CGI perspective.", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{vanRossum:1997:P, author = "Guido {van Rossum}", title = "{Python}", journal = j-WORLD-WIDE-WEB-J, volume = "2", number = "2", pages = "??--??", month = "Spring", year = "1997", CODEN = "WWWFFI", ISSN = "1085-2301", ISSN-L = "1085-2298", bibdate = "Thu May 21 15:26:49 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.ora.com/catalog/wj6/", acknowledgement = ack-nhfb, fjournal = "World Wide Web Journal", xxnote = "Find correct title??", } @Book{vonLowis:1997:PB, author = "Martin {von L{\"o}wis} and Nils Fischbeck", title = "{Das Python-Buch}", publisher = pub-AW-LONGMAN, address = pub-AW-LONGMAN:adr, pages = "495", year = "1997", ISBN = "3-8273-1110-1", ISBN-13 = "978-3-8273-1110-8", LCCN = "", bibdate = "Thu May 21 14:49:49 1998", bibsource = "http://www.addison-wesley.de/katalog/item.ppml?textexpr=Python&id=00086; http://www.math.utah.edu/pub/tex/bib/python.bib", note = "Includes CD-ROM.", price = "DM 69,90; ATS 510; CHR 63,00", acknowledgement = ack-nhfb, } @Misc{WalnutCreek:1997:PA, author = "{Walnut Creek}", title = "The {Python} Archive", howpublished = "CD ROM.", month = jun, year = "1997", bibdate = "Thu May 21 15:21:13 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", note = "Includes precompiled versions of Python for: AIX, BeOS, BSDI, Digital Unix (DEC OSF/1), DGUX, FreeBSD, HPUX, IRIX, Linux, Mac OS, OpenVMS (alpha and VAX), OS/2 (emx), RS6000, SCO, Sequent PTS, SGI IRIX, Solaris x86, Sparc/Solaris, Sparc/SunOS, Ultrix, VMS/VAX, and Windows 95/NT.", price = "US\$39.95", URL = "http://www.cdrom.com/titles/prog/python.htm", acknowledgement = ack-nhfb, } @Article{Willison:1997:BEP, author = "Frank Willison", title = "Bleeding Edge: {Python}: It's Not Just For Laughs", journal = j-WEB-REVIEW, volume = "??", number = "??", pages = "??--??", day = "3", month = jan, year = "1997", bibdate = "Thu May 21 15:29:27 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://webreview.com/wr/pub/Willison_Frank", acknowledgement = ack-nhfb, fjournal = "Web Review", } @Article{Wilson:1997:PBP, author = "Gregory V. Wilson", title = "Programmer's Bookshelf: Perusing the Bookshelf", journal = j-DDJ, volume = "22", number = "11", pages = "125, 127", month = nov, year = "1997", CODEN = "DDJOEB", ISSN = "1044-789X", bibdate = "Fri Nov 28 17:28:03 MST 1997", bibsource = "http://www.math.utah.edu/pub/tex/bib/dr-dobbs.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "This month on the bookshelf, you'll find Greg's reports on Object-Oriented Software Testing, by Shel Siegel, UML and C++, by Richard C. Lee and William M. Tepfenhart, Software Metrics, by Norman E. Fenton and Shari Lawrence Pfleeger, Programming Python, by Mark Lutz, and Computing Tomorrow: Future Research Directions in Computer Science, edited by Ilan Wand and Robin Milner (eds).", acknowledgement = ack-nhfb, fjournal = "Dr. Dobb's Journal of Software Tools", } @MastersThesis{Zhou:1997:CCJ, author = "Ling Zhou", title = "A comparison of {C++}, {Java} and {Python}", type = "Thesis (M.S.)", school = "Department of Computer Science, Texas A\&M University", address = "College Station, TX, USA", pages = "vi + 44", year = "1997", bibdate = "Thu May 21 14:06:05 MDT 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, } @InProceedings{Zukowski:1997:ISU, author = "Monty Zukowski", title = "Implementing a Selective Undo Framework in {Python}", crossref = "Anonymous:1997:PIP", pages = "69--75", year = "1997", bibdate = "Mon Dec 29 14:27:24 1997", bibsource = "http://www.math.utah.edu/pub/tex/bib/litprog.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.python.org/workshops/1997-10/proceedings/zukowski.html", acknowledgement = ack-nhfb, } @TechReport{Achtzehnter:1998:ILU, author = "Joachim Achtzehnter and Judy Anderson and Antony Courtney and Doug Cutting and Mark Davidson and Jeanette Figueroa and Ken Fishkin and Scott Hassan and Rob Head and Chris Jacobi and Bill Janssen and Swen Johnson and Dan Larner and Bill Nell and Denis Severson and Bridget Spitznagel and Mike Spreitzer and Mark Stefik and Martin von L{\"o}wis and Farrell Wymore and Rick Yardumian", title = "Inter-Language Unification", type = "Technical Report", number = "??", institution = "Xerox Palo Alto Research Center", address = "Palo Alto, CA, USA", day = "12", month = may, year = "1998", bibdate = "Thu May 21 15:35:52 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", note = "The ILU system can be used from C++, Common Lisp, Guile, Java, Modula-3, Perl, Python, Scheme, and Standard C.", URL = "ftp://ftp.parc.xerox.com/pub/ilu/ilu.html", acknowledgement = ack-nhfb, } @Article{Anonymous:1998:P, author = "Anonymous", title = "{Python}", journal = j-WEB-REVIEW, volume = "??", number = "??", pages = "??--??", day = "10", month = apr, year = "1998", bibdate = "Thu May 21 15:40:28 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://webreview.com/wr/pub/freeware/python.html", acknowledgement = ack-nhfb, fjournal = "Web Review", } @Article{Anonymous:1998:PDA, author = "Anonymous", title = "The {Python DB-API}", journal = j-LINUX-J, volume = "??", number = "??", pages = "??--??", month = apr, year = "1998", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Thu May 21 14:57:47 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.ssc.com/lj/", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @TechReport{Anonymous:1998:PEL, author = "Anonymous", title = "{Python} Extensions: {LLNL}-Distributed Extensions", type = "Technical Report", number = "UCRL-128569", institution = "Lawrence Livermore National Laboratory", address = "Livermore, CA, USA", year = "1998", bibdate = "Thu May 21 15:14:21 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", note = "Includes Numerical Python, Python\slash Pact-PDB interface, PyGraphics, PyHistory, RNG (random number generator), CXX\_Objects (Python extensions in C++).", URL = "http://xfiles.llnl.gov/python.htm", acknowledgement = ack-nhfb, } @Article{Anonymous:1998:SLG, author = "Anonymous", title = "Scripting Languages Go Prime Time", journal = "Software Development magazine", volume = "??", number = "??", pages = "??", month = apr, year = "1998", bibdate = "Thu May 21 14:56:04 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", note = "Discusses Python, Perl, and Tcl.", URL = "http://www.sdmagazine.com", acknowledgement = ack-nhfb, } @TechReport{Anonymous:1998:WPF, author = "Anonymous", title = "The whole {Python FAQ}", type = "Technical Report", institution = pub-CNRI, address = pub-CNRI:adr, year = "1998", bibdate = "Wed Oct 28 07:23:01 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", note = "For Python Release 1.5.1.", URL = "http://www.python.org/doc/FAQ.html", acknowledgement = ack-nhfb, } @Article{Beazley:1998:SAC, author = "David Beazley", title = "{SWIG} and Automated {C/C++} Scripting Extensions", journal = j-DDJ, volume = "23", number = "2", pages = "30, 32, 34--36, 100", month = feb, year = "1998", CODEN = "DDJOEB", ISSN = "1044-789X", bibdate = "Sat Mar 07 08:28:08 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "SWIG, short for ``Simplified Wrapper and Interface Generator,'' is a freely available tool that lets you generate interfaces to a variety of scripting languages from a common interface description", acknowledgement = ack-nhfb, fjournal = "Dr. Dobb's Journal of Software Tools", } @Article{Dougherty:1998:PGV, author = "Dale Dougherty", title = "{Python}'s {Guido van Rossum}", journal = j-WEB-REVIEW, volume = "??", number = "??", pages = "??--??", day = "10", month = apr, year = "1998", bibdate = "Thu May 21 15:42:10 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://webreview.com/wr/pub/Dougherty_Dale", acknowledgement = ack-nhfb, fjournal = "Web Review", } @Article{Garberson:1998:LEP, author = "John D. Garberson", title = "Letter to the {Editor}: Programming {Python}", journal = j-LOGIN, volume = "23", number = "4", pages = "??--??", month = jun, year = "1998", CODEN = "LOGNEM", ISSN = "1044-6397", bibdate = "Tue Apr 11 06:42:33 MDT 2006", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.usenix.org/publications/login/contents/contents.jun98.html", acknowledgement = ack-nhfb, fjournal = ";login: the USENIX Association newsletter", } @Article{Hamilton:1998:PHM, author = "Michael Hamilton", title = "The {Python HTMLgen} Module", journal = j-LINUX-J, volume = "55", pages = "22, 24--26", month = nov, year = "1998", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Tue Oct 20 16:41:32 1998", bibsource = "http://www.linuxjournal.com/issue55/index.html; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "ftp://ftp.ssc.com/pub/lj/listings/issue55/2986.tgz", abstract = "An easy way to generate HTML-formatted text.", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Howes:1998:TPC, author = "Brad Howes", title = "Template processing classes for {Python}", journal = j-DDJ, volume = "23", number = "2", pages = "38, 40, 42, 44--46, 48, 100", month = feb, year = "1998", CODEN = "DDJOEB", ISSN = "1044-789X", bibdate = "Thu May 21 19:02:04 MDT 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/dr-dobbs.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Brad shows how you can embed Python objects in HTML pages using boilerplate template processing classes. Then Python creator Guido van Rossum adds a note on what's new in the just-released Python 1.5.", acknowledgement = ack-nhfb, classification = "C6130D (Document processing techniques); C6130M (Multimedia); C6160J (Object- oriented databases)", fjournal = "Dr. Dobb's Journal of Software Tools", keywords = "application program interfaces; BoilerPlate; CGI infrastructure; conditional control; Emacs; embedded HTML text; errors; HTML document template; HTML editing; hypermedia; iterative control; multithreaded CGI service; object database; object paradigm; object-oriented databases; page description languages; persistent objects; placeholders; print statements; Python; run- time values; run-time HTML generation; syntax coloring; tagged locations; template HTML constructs; template processing classes; text regions", treatment = "P Practical", } @Article{Kuchling:1998:CFP, author = "Andrew M. Kuchling", title = "A {CGI} framework in {Python}", journal = j-WEB-TECHNIQUES, volume = "3", number = "2", pages = "43--46", month = feb, year = "1998", CODEN = "WETEFA", ISSN = "1086-556X", bibdate = "Thu May 21 19:02:04 MDT 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.webtechniques.com/features/1998/02/kuchling/kuchling.shtml", acknowledgement = ack-nhfb, classification = "C6110B (Software engineering techniques); C6115 (Programming support); C6150N (Distributed systems software); C7210 (Information services and centres)", fjournal = "Web Techniques", keywords = "authoring languages; CGI framework; CGI scripts; common gateway interface; complete computer programs; error handling code; HTML; hypermedia; Internet; page description languages; Python; site development; software libraries; software tools; standard library; user registration scheme; World Wide Web", treatment = "P Practical", } @Article{Kuchling:1998:LIG, author = "Andrew Kuchling", title = "{LJ} Interviews {Guido van Rossum}", journal = j-LINUX-J, volume = "55", pages = "18, 20--21", month = nov, year = "1998", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Tue Oct 20 16:41:32 1998", bibsource = "http://www.linuxjournal.com/issue55/index.html; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "A talk with the creator of Python.", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Kuchling:1998:PDA, author = "Andrew M. Kuchling", title = "The {Python DB-API}", journal = j-LINUX-J, volume = "49", pages = "??--??", month = may, year = "1998", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Fri Oct 9 08:35:26 MDT 1998", bibsource = "http://www.linuxjournal.com/issue49/index.html; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Laird:1998:GTW, author = "Cameron Laird and Kathryn Soraiz", title = "{GUI} toolkits: What are your options? An overview of today's best-bet {GUI} toolkits", journal = j-SUNWORLD-ONLINE, volume = "??", number = "??", pages = "??--??", month = mar, year = "1998", ISSN = "1091-8914", bibdate = "Thu May 21 14:58:54 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", note = "Discusses Python.", URL = "http://www.sun.com/sunworldonline/swol-02-1998/swol-02-python.html", acknowledgement = ack-nhfb, fjournal = "SunWorld online", } @InCollection{Lutz:1998:POO, author = "Mark Lutz", editor = "Peter H. Salus", booktitle = "Handbook of Programming Languages", title = "{Python}: an Object Oriented Scripting Language", publisher = pub-MAC, address = pub-MAC:adr, pages = "120 (est.)", year = "1998", ISBN = "1-57870-008-6 (vol. 1), 1-57870-009-4 (vol. 2), 1-57870-010-8 (vol. 3), 1-57870-011-6 (vol. 4)", ISBN-13 = "978-1-57870-008-0 (vol. 1), 978-1-57870-009-7 (vol. 2), 978-1-57870-010-3 (vol. 3), 978-1-57870-011-0 (vol. 4)", LCCN = "QA76.7 .H363 1998", bibdate = "Thu May 21 15:54:27 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://shell.rmi.net/~lutz/whatsnew.html#S13", acknowledgement = ack-nhfb, tableofcontents = "[1]. Object-oriented programming languages \\ [2]. Imperative programming languages \\ [3]. Little languages and tools \\ [4]. Functional and logic programming languages", } @Book{Lutz:1998:PPR, author = "Mark Lutz", title = "{Python} Pocket Reference", publisher = pub-ORA, address = pub-ORA:adr, pages = "iii + 75", year = "1998", ISBN = "1-56592-500-9", ISBN-13 = "978-1-56592-500-7", LCCN = "QA76.73.P98 L882 1998", bibdate = "Mon Apr 18 14:55:56 MDT 2005", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", price = "US\$6.95", URL = "http://www.oreilly.com/catalog/9781565925007; http://www.oreilly.com/catalog/pythonpr/", acknowledgement = ack-nhfb, subject = "Python (Computer program language)", } @Article{McGrath:1998:IPX, author = "Sean McGrath", title = "{Internet} Programming: {XML} Programming in {Python}", journal = j-DDJ, volume = "23", number = "2", pages = "82, 84--87, 101--104", month = feb, year = "1998", CODEN = "DDJOEB", ISSN = "1044-789X", bibdate = "Mon Feb 09 12:29:56 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/dr-dobbs.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "XML brings to the document world what the database world has had for a long time --- interoperability via open systems. Sean shows how you can use Python as a development platform for XML programming.", acknowledgement = ack-nhfb, fjournal = "Dr. Dobb's Journal of Software Tools", } @Article{McGrath:1998:PBT, author = "Sean McGrath", title = "Programmer's Bookshelf: The {Tcl\slash Tk} and {Python} Scripting Environments", journal = j-DDJ, volume = "23", number = "10", pages = "143, 145", month = oct, year = "1998", CODEN = "DDJOEB", ISSN = "1044-789X", bibdate = "Fri Sep 11 09:12:05 MDT 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.ddj.com/ddj/1998/1998_10/index.htm", abstract = "Tcl and Python are Sean McGrath's focus as he examines Effective Tcl/Tk Programming, by Mark Harrison and Michael J. McLennan, and Internet Programming with Python, by Aaron Watters, Guido van Rossum, and James C. Ahlstrom. FORUM", acknowledgement = ack-nhfb, fjournal = "Dr. Dobb's Journal of Software Tools", } @Article{McGrath:1998:XPP, author = "S. McGrath", title = "{XML} programming in {Python}", journal = j-DDJ, volume = "23", number = "2", pages = "82--??, 84--87, 101--104", month = feb, year = "1998", CODEN = "DDJOEB", ISSN = "1044-789X", bibdate = "Thu May 21 19:02:04 MDT 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, classification = "C6110J (Object-oriented programming); C6110P (Parallel programming); C6115 (Programming support); C6140D (High level languages); C6150N (Distributed systems software); C7210 (Information services and centres)", fjournal = "Dr. Dobb's Journal of Software Tools", keywords = "authoring languages; complete computer programs; data description language; data representation format; Extensible Markup Languag; functional programming; hierarchical data structures; highly portable language; HTML; imperative programming features; information description; Internet; Internet programming tool; Internet protocols; object oriented data structures; object oriented scripting language; object- oriented programming; object-oriented languages; page description languages; parallel programming; processing power; Python extensions; recursive structures; web applications; World Wide Web; XML encoded information; XML programming", treatment = "P Practical", } @Article{Raymond:1998:SPO, author = "Eric Raymond", title = "Stop the Presses: Open Source Summit", journal = j-LINUX-J, volume = "50", pages = "??--??", month = "", year = "1998", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Thu May 21 15:07:35 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", note = "Discusses Perl, Python, and Tcl.", URL = "http://www.ssc.com/lj/issue50/2918.html", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Rooker:1998:BRP, author = "Terry Rooker", title = "Book Review: {{\em Programming Python}}", journal = j-LOGIN, volume = "23", number = "2", pages = "??--??", month = apr, year = "1998", CODEN = "LOGNEM", ISSN = "1044-6397", bibdate = "Tue Apr 11 06:42:31 MDT 2006", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.usenix.org/publications/login/contents/contents.apr98.html", URL = "http://www.usenix.org/publications/login/1998-4/python.html", acknowledgement = ack-nhfb, fjournal = ";login: the USENIX Association newsletter", } @TechReport{vanRossum:1998:EEP, author = "Guido {van Rossum}", title = "Extending and Embedding the {Python} Interpreter", type = "Technical Report", institution = pub-CNRI, address = pub-CNRI:adr, day = "14", month = apr, year = "1998", bibdate = "Wed Oct 28 07:23:02 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", note = "For Python Release 1.5.1.", URL = "http://www.python.org/doc/ext/ext.html", acknowledgement = ack-nhfb, } @TechReport{vanRossum:1998:PCA, author = "Guido {van Rossum}", title = "{Python}/{C} {API} Reference Manual", type = "Technical Report", institution = pub-CNRI, address = pub-CNRI:adr, year = "1998", bibdate = "Wed Oct 28 07:23:03 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", note = "For Python Release 1.5.1.", URL = "http://www.python.org/doc/api/api.html", acknowledgement = ack-nhfb, } @InProceedings{vanRossum:1998:TPL, author = "G. {van Rossum}", title = "A Tour of the {Python} Language", crossref = "Ege:1998:PTO", pages = "370--??", year = "1998", bibdate = "Fri May 22 08:52:28 MDT 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, } @InProceedings{Yang:1998:SOO, author = "T.-Y. Brian Yang and Geoffrey Furnish and Paul F. Dubois", title = "Steering object-oriented scientific computations", crossref = "Ege:1998:PTO", pages = "112--119", year = "1998", bibdate = "Fri May 22 09:14:10 MDT 1998", bibsource = "Compendex database; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Issues relevant to the steering mechanism for object-oriented scientific computations are examined in this paper. The concept of computation steering is delineated, and its benefits are discussed based on past experiences with its application to scientific computations. Experiences of using an object-oriented scripting language called Python to steer C++ applications are presented in further details. It is found that Python and C++ can be combined in an elegant way which combines the benefits of steering and the advantages of using an efficient object-oriented language for scientific modeling.", acknowledgement = ack-nhfb, affiliation = "Lawrence Livermore Natl Lab", affiliationaddress = "Livermore, CA, USA", classification = "723.1; 723.1.1; 723.2; C6110J (Object-oriented programming); C6140D (High level languages); C7300 (Natural sciences computing)", conftitle = "Proceedings of TOOLS USA 97. International Conference on Technology of Object Oriented Systems and Languages", corpsource = "Lawrence Livermore Nat. Lab., CA, USA", keywords = "C (programming language); C++ application steering; Computation steering mechanisms; Computer simulation languages; natural sciences computing; Natural sciences computing; Object oriented programming; Object oriented scripting language; object-oriented languages; object-oriented programming; object-oriented scientific computations; object-oriented scripting language; Phyton programming language; Python; scientific modeling; steering mechanism", sponsororg = "Interactive Software Eng", treatment = "P Practical", } @Article{Angell:1999:PTE, author = "Kirby W. Angell", title = "Programmer's Toolchest: Examining {JPython}: a {Java} test engine puts {Python} to the test", journal = j-DDJ, volume = "24", number = "4", pages = "78, 81--83", month = apr, year = "1999", CODEN = "DDJOEB", ISSN = "1044-789X", bibdate = "Wed Mar 3 06:30:11 MST 1999", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.ddj.com/ftp/1999/1999_04/jpython.txt; http://www.ddj.com/ftp/1999/1999_04/jpython.zip", abstract = "JPython is a freely available version of Python implemented in 100 percent pure Java. Since JPython is written in Java, it is easy to include the JPython packages in a Java application and use JPython as your application's scripting engine. JPython also makes an excellent tool for prototyping Java applets that are embedded in web browsers. Additional resources include jpython.txt (listings) and jpython.zip (source code).", acknowledgement = ack-nhfb, fjournal = "Dr. Dobb's Journal of Software Tools", } @Article{Dubois:1999:SPE, author = "Paul F. Dubois and T.-Y. Yang", title = "Scientific Programming: Extending {Python} with {Fortran}", journal = j-COMPUT-SCI-ENG, volume = "1", number = "5", pages = "66--73", month = sep # "\slash " # oct, year = "1999", CODEN = "CSENFA", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Fri Oct 13 14:31:09 2000", bibsource = "http://www.computer.org/cse/cs1999; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://dlib.computer.org/cs/books/cs1999/pdf/c5066.pdf; http://www.computer.org/cse/cs1999/c5066abs.htm", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Article{Ernst:1999:TMP, author = "T. Ernst", title = "{TRAPping Modelica} with {Python}", journal = j-LECT-NOTES-COMP-SCI, volume = "1575", pages = "288--291", year = "1999", CODEN = "LNCSD9", ISSN = "0302-9743 (print), 1611-3349 (electronic)", ISSN-L = "0302-9743", bibdate = "Tue Sep 14 06:09:05 MDT 1999", bibsource = "http://www.math.utah.edu/pub/tex/bib/lncs1999a.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Lecture Notes in Computer Science", keywords = "CC; compiler construction; ETAPS; software", } @Article{Hughes:1999:LP, author = "Phil Hughes", title = "Learning {Python}", journal = j-LINUX-J, volume = "66", pages = "??--??", month = oct, year = "1999", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Thu Sep 21 14:31:45 MDT 2000", bibsource = "http://noframes.linuxjournal.com/lj-issues/issue66/index.html; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://noframes.linuxjournal.com/lj-issues/issue66/3541.html", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Klatchko:1999:DRS, author = "Ron Klatchko", title = "Dynamically Reconfigurable Servers: {Python}'s extensibility makes it easy", journal = j-DDJ, volume = "24", number = "1", pages = "80, 82--84", month = jan, year = "1999", CODEN = "DDJOEB", ISSN = "1044-789X", bibdate = "Thu Dec 3 09:32:09 MST 1998", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.ddj.com/ddj/ftp/1999/1999_01/cprofile.zip", abstract = "The dynamically reconfigurable server Ron presents here is implemented in Python, a portable, interpreted, extensible object-oriented programming language. Additional resources include cprofile.zip (source code). PROGRAMMER'S TOOLCHEST", acknowledgement = ack-nhfb, fjournal = "Dr. Dobb's Journal of Software Tools", } @Book{Kuchling:1999:PT, editor = "Andrew Kuchling and Fred Drake", title = "{Python} tutorial", publisher = "toExcel", address = "San Jose, CA", pages = "????", year = "1999", ISBN = "1-58348-375-6 (soft cover)", ISBN-13 = "978-1-58348-375-6 (soft cover)", LCCN = "????", bibdate = "Mon Jul 4 17:11:22 MDT 2005", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", acknowledgement = ack-nhfb, remark = "Did this book ever appear?", } @Book{Lutz:1999:LP, author = "Mark Lutz and David Ascher", title = "Learning {Python}", publisher = pub-ORA, address = pub-ORA:adr, pages = "xvi + 366", year = "1999", ISBN = "1-56592-464-9", ISBN-13 = "978-1-56592-464-2", LCCN = "QA76.73.P98 L8798 1999", bibdate = "Mon Apr 18 14:55:31 MDT 2005", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", price = "US\$29.95", URL = "http://www.oreilly.com/catalog/9781565924642; http://www.oreilly.com/catalog/lpython/", acknowledgement = ack-nhfb, keywords = "Python (computer program language)", subject = "Python (Computer program language)", } @Article{Lutz:1999:UP, author = "Mark Lutz", title = "Using {Python}", journal = j-LOGIN, volume = "24", number = "1s", pages = "??--??", month = jan, year = "1999", CODEN = "LOGNEM", ISSN = "1044-6397", bibdate = "Tue Apr 11 06:42:43 MDT 2006", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.usenix.org/publications/login/contents/contents.jan99.html", note = "Special issue on tools.", URL = "http://www.usenix.org/publications/login/1999-1/python.html", acknowledgement = ack-nhfb, fjournal = ";login: the USENIX Association newsletter", } @Book{vanRossum:1999:PT, author = "Guido van Rossum and Fred L. Drake and Andrew Kuchling", title = "{Python} tutorial", publisher = "Open Docs Library", address = "Lincoln, NE, USA", year = "1999", ISBN = "1-58348-375-6 (soft cover)", ISBN-13 = "978-1-58348-375-6 (soft cover)", LCCN = "QA76.73.P98 V36 2000b", bibdate = "Mon Jul 4 17:09:31 MDT 2005", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; umlibr.library.umass.edu:210/INNOPAC", URL = "ftp://uiarchive.cso.uiuc.edu/pub/etext/gutenberg/", acknowledgement = ack-nhfb, remark = "Release 1.5.2.", subject = "Python (Computer program language); Handbooks, manuals, etc; Object-oriented programming (Computer science); Handbooks, manuals, etc", } @Article{Ang:2000:WBL, author = "Cheng-Chai Ang", title = "A {Web}-Based Lunch Ordering System", journal = j-LINUX-J, volume = "79", pages = "176--??", month = nov, year = "2000", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Sat Oct 21 16:25:36 MDT 2000", bibsource = "http://noframes.linuxjournal.com/lj-issues/issue79/index.html; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "The author demonstrates how easy it is to write in Python --- and make sure you get steamed, not fried rice.", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Angell:2000:PSPa, author = "Kirby W. Angell", title = "{Python} Server Pages: Part 1", journal = j-DDJ, volume = "25", number = "1", pages = "44, 46--47, 50", month = jan, year = "2000", CODEN = "DDJOEB", ISSN = "1044-789X", bibdate = "Thu Nov 9 08:25:13 MST 2000", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.ddj.com/ftp/2000/2000_01/psp1.txt; http://www.ddj.com/ftp/2000/2000_01/psp100.zip", abstract = "Python Server Pages (PSP) is a server-side scripting engine designed along the lines of Microsoft's Active Server Pages (ASP) and Sun's Java Server Pages (JSP). Additional resources include psp1.txt (listings) and psp100.zip (source code).", acknowledgement = ack-nhfb, fjournal = "Dr. Dobb's Journal of Software Tools", } @Article{Angell:2000:PSPb, author = "Kirby W. Angell", title = "{Python} Server Pages: {Part II}", journal = j-DDJ, volume = "25", number = "2", pages = "54, 57--61", month = feb, year = "2000", CODEN = "DDJOEB", ISSN = "1044-789X", bibdate = "Thu Nov 9 08:25:13 MST 2000", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.ddj.com/ftp/2000/2000_02/psp2.txt", abstract = "Last month, Kirby introduced Python Server Pages and looked at how HTML pages with embedded scripts are translated into compilable JPython code. This month, he examines the Java Servlet side of PSP. Additional resources include psp2.txt (listings).", acknowledgement = ack-nhfb, fjournal = "Dr. Dobb's Journal of Software Tools", } @Article{Anonymous:2000:BRLb, author = "Anonymous", title = "Book Reviews: {Linux Programmer's Reference Second Edition by Ibrahim F. Haddad; Python and Tkinter Programming by Phil Hughes; sendmail for Linux by Russell J. T. Dyer}", journal = j-LINUX-J, volume = "77", pages = "??--??", month = sep, year = "2000", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Thu Sep 21 07:44:13 MDT 2000", bibsource = "http://noframes.linuxjournal.com/lj-issues/issue77/index.html; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://noframes.linuxjournal.com/lj-issues/issue77/3861.html; http://noframes.linuxjournal.com/lj-issues/issue77/3989.html; http://noframes.linuxjournal.com/lj-issues/issue77/4184.html", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Anonymous:2000:BRPf, author = "Anonymous", title = "Book Review: {{\booktitle{Python programming on Win32}}: By Mark Hammond and Andy Robinson. O'Reilly, Sebastopol, CA. (2000). 652 pages. \$34.95}", journal = j-COMPUT-MATH-APPL, volume = "40", number = "2--3", pages = "418--418", month = jul # "\slash " # aug, year = "2000", CODEN = "CMAPDK", ISSN = "0898-1221 (print), 1873-7668 (electronic)", ISSN-L = "0898-1221", bibdate = "Wed Mar 1 21:49:10 MST 2017", bibsource = "http://www.math.utah.edu/pub/tex/bib/computmathappl2000.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.sciencedirect.com/science/article/pii/S0898122100901974", acknowledgement = ack-nhfb, fjournal = "Computers and Mathematics with Applications", journal-URL = "http://www.sciencedirect.com/science/journal/08981221", } @Article{Anonymous:2000:POR, author = "Anonymous", title = "Products: {Oracle} Releases {XDK} Update; {Starbase}'s Code Editing System; {Arc Second}'s Palm {PC CAD} Viewer; {Minolta}'s Network Document Server for {Windows 2000}; {Borland}'s {Java} Development Tools for {Palm OS}; {Rational}'s Code Management Tools; {Blaxxun Interactive}'s {Web} Communications Platform Tools; {Informix Software}'s {Linux} Database Engine; {ActiveState} Updates Free {Python} Distribution; {KDE 2.0} Released", journal = j-COMPUTER, volume = "33", number = "12", pages = "144--146", month = dec, year = "2000", CODEN = "CPTRB4", ISSN = "0018-9162 (print), 1558-0814 (electronic)", ISSN-L = "0018-9162", bibdate = "Wed Dec 6 18:12:09 MST 2000", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://dlib.computer.org/co/books/co2000/pdf/rz144.pdf", acknowledgement = ack-nhfb, fjournal = "Computer", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=2", } @Book{Beazley:2000:PER, author = "David M. Beazley", title = "{Python} essential reference", publisher = pub-NRP, address = pub-NRP:adr, pages = "xviii + 319", year = "2000", ISBN = "0-7357-0901-7", ISBN-13 = "978-0-7357-0901-0", LCCN = "QA76.73.P98 B43 2000", bibdate = "Tue Nov 7 06:58:49 MST 2000", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", series = "New Riders professional library", acknowledgement = ack-nhfb, keywords = "Python (computer program language)", } @Book{Brown:2000:PAA, author = "Martin C. Brown", title = "{Python} annotated archives", publisher = pub-OSBORNE, address = pub-OSBORNE:adr, pages = "xxii + 722", year = "2000", ISBN = "0-07-212104-1", ISBN-13 = "978-0-07-212104-9", LCCN = "QA76.73.P98 B76 2000", bibdate = "Tue Nov 7 06:58:49 MST 2000", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", note = "Includes CD-ROM.", acknowledgement = ack-nhfb, keywords = "Python (computer program language)", } @Article{Chapman:2000:EPT, author = "Mitch Chapman and Brian Kelley", title = "Examining the {PyGtk} Toolkit", journal = j-DDJ, volume = "25", number = "4", pages = "82, 84, 86, 88", month = apr, year = "2000", CODEN = "DDJOEB", ISSN = "1044-789X", bibdate = "Thu Nov 9 08:25:14 MST 2000", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.ddj.com/ftp/2000/2000_04/pygtk.txt", abstract = "PyGtk brings the benefits of a high-level programming language to Gtk+ developers, and gives Python programmers access to a modern, high-performance GUI toolkit. Additional resources include pygtk.txt (listings).", acknowledgement = ack-nhfb, fjournal = "Dr. Dobb's Journal of Software Tools", } @Book{Dutt:2000:GBG, author = "Christoph Dutt and Joachim Freiburg", title = "{GiMP: Bilder gestalten, Fotos retuschieren; [Grundlagen der professionellen Bildbearbeitung, der Umgang mit Fotos, Grafiken und Text, Bilder f{\"u}r das Internet richtig vorbereiten; auf der CD: GIMP f{\"u}r Windows, SCO Unix, Debian GNU Linux, Solaris, OS/2 und BSD, Quelltext aller GIMP- und GTK-Versionen, {\"u}ber 300 Plug-ins in C, Perl, tcl, Python und Scheme, XFree86/23.3.6, GIMP User Manual als PDF-Dateien]}", publisher = "C und L", address = "B{\"o}blingen, Germany", pages = "522 + 98", year = "2000", ISBN = "3-932311-64-7", ISBN-13 = "978-3-932311-64-2", LCCN = "????", bibdate = "Tue Sep 17 07:02:55 2002", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", note = "Includes CD-ROM.", acknowledgement = ack-nhfb, language = "German", } @Book{Grayson:2000:PTP, author = "John E. Grayson", title = "{Python} and {Tkinter} Programming", publisher = pub-MANNING, address = pub-MANNING:adr, pages = "xxiii + 658", year = "2000", ISBN = "1-884777-81-3", ISBN-13 = "978-1-884777-81-3", LCCN = "????", bibdate = "Thu Sep 21 10:22:40 2000", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", price = "US\$49.95", acknowledgement = ack-nhfb, } @Book{Hammond:2000:PPW, author = "Mark Hammond and Andy Robinson", title = "{Python} Programming on {Win32}: Help for {Windows} Programmers", publisher = pub-ORA, address = pub-ORA:adr, pages = "xvii + 652", month = jan, year = "2000", ISBN = "1-56592-621-8 (paperback), 1-56592-925-X (e-book)", ISBN-13 = "978-1-56592-621-9 (paperback), 978-1-56592-925-8 (e-book)", LCCN = "QA76.73.P98 H36 2000", bibdate = "Mon Jul 30 06:50:24 MDT 2001", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.oreilly.com/catalog/", price = "US\$34.95", URL = "http://www.oreilly.com/catalog/pythonwin32", acknowledgement = ack-nhfb, keywords = "Microsoft Win32; Python (computer program language)", } @InProceedings{Hardt:2000:PPZ, author = "Dick Hardt and Gisle Aas and Paul Everitt", title = "{Perl}, {Python} and {Zope}", crossref = "USENIX:2000:PAL", pages = "??--??", year = "2000", bibdate = "Wed Oct 16 05:17:16 2002", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.usenix.org/publications/library/proceedings/als2000/aas.html", acknowledgement = ack-nhfb, } @Book{Matthew:2000:PLP, author = "Neil Matthew and Richard Stones and others", title = "Professional {Linux} programming", publisher = pub-WROX, address = pub-WROX:adr, pages = "xviii + 1155", year = "2000", ISBN = "1-86100-301-3", ISBN-13 = "978-1-86100-301-0", LCCN = "QA76.76.O63 P754 2000", bibdate = "Tue Mar 13 17:42:37 2001", bibsource = "http://www.math.utah.edu/pub/tex/bib/linux.bib; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sqlbooks.bib; http://www.math.utah.edu/pub/tex/bib/unix.bib", acknowledgement = ack-nhfb, tableofcontents = "1: Application Design \\ Requirements Capture \\ Development Models \\ `Fast Track' Development \\ Test Early, Test Often \\ DVD Store \\ Initial Requirements \\ Analyzing the User Requirements \\ Statement of Requirements \\ Use Cases \\ Application Architecture \\ Detailed Design \\ Data Access Functions \\ Member Functions \\ Title Functions \\ Disk Functions \\ Rental Functions \\ Reference Implementation \\ 2: CVS \\ Tools for Linux \\ Repository \\ Single User CVS Projects \\ CVS Command Format \\ Environment Variables \\ Importing a New Project \\ Starting Work on Our Project \\ Checking Our Changes Against the Repository \\ Updating the Repository with Our Changes \\ Releasing the Project \\ Reviewing Changes \\ Adding and Removing Files from a Project \\ Keyword Substitution \\ Revisions, Tags and Branches \\ Revisions \\ Tags \\ Branches \\ Multi-user CVS \\ Working Collaboratively \\ Working with Watches \\ More Fun with CVS \\ Binary Files \\ Correcting Bad Annotations \\ Accessing CVS Across a Network \\ GUI CVS Clients \\ 3: Databases \\ Choosing a Database \\ mSQL \\ MySQL \\ PostgreSQL \\ Which is Right for Me? \\ PostgreSQL \\ Installation and Commissioning \\ Database Fundamentals \\ First Normal Form \\ Second Normal Form \\ Third Normal Form \\ De-normalization \\ Simple Database \\ Using psql \\ Commands to psql \\ Data Definition Commands \\ Data Manipulation Commands \\ Transactions \\ Database Design Tips \\ 4: PostgreSQL Interfacing \\ Accessing PostgreSQL from Code \\ Libpq \\ ECPG \\ Which Method to Use? \\ Application \\ 5: MySQL \\ Installation and Commissioning \\ Pre-compiled Packages \\ Building from Source \\ Post-install Configuration \\ MySQL Administration \\ Commands \\ Creating Users, and Giving Them Permissions \\ Passwords \\ Creating a Database \\ SQL Support in PostgreSQL and MySQL \\ Accessing MySQL Data from C \\ Connection Routines \\ Error Handling \\ Executing SQL Statements \\ Miscellaneous Functions \\ 6: Tackling Bugs \\ Error Classes \\ Reporting Errors \\ Detecting Software Errors \\ Types of Software Error \\ Debug Statements \\ Assertions \\ Where Are You? \\ Backtrace \\ Preparing to Debug \\ Using the Debugger \\ Simple GDB Commands \\ Other GDB Features \\ 7: LDAP Directory Services \\ What is a Directory Service? \\ X.500 and LDAP \\ Structure of a Directory Server \\ Naming of Parts \\ dn Naming \\ Object Components \\ LDAP Directory Tree \\ LDIF Files \\ Installing and Configuring an LDAP Server \\ Steps in Installing OpenLDAP \\ Configuring OpenLDAP \\ Running the Server \\ Accessing LDAP from C \\ Initialize the LDAP Library \\ Bind to the LDAP Server \\ LDAP Error Handling \\ First LDAP Client Program \\ Searching \\ Changing the Data \\ Adding a New Entry \\ Modifying an Entry \\ Deleting an Entry \\ Application \\ 8: GUI Programming with GTK+/GNOME \\ GTK+/GNOME libraries \\ glib \\ Types \\ Macros \\ String functions \\ Memory Allocation \\ Lists \\ GTK+ \\ Widgets \\ gtk{\"o}init and gtk{\"o}main \\ Example GTK+ Application \\ GNOME Basics \\ Menus and Toolbars \\ Dialogs \\ Example GNOME Application \\ GNOME Source Tree \\ Configuration Saving \\ Session Management \\ Command Line Parsing Using popt \\ GNOME/GTK+ Resources \\ 9: GUI Building with Glade and GTK+/GNOME \\ Overview of Glade \\ Word on GUI Design \\ Glade Tutorial \\ Main Window \\ Palette \\ Properties Window \\ Glade-built Source Tree \\ lookup{\"o}widget \\ Adding Code \\ Libglade \\ DVD Store GNOME GUI \\ Design \\ Compiling and Running dvdstore \\ Structure \\ Code \\ 10: Flex and Bison \\ Input Structure \\ Scanners and Parsers \\ How Generators Work \\ Scanners \\ Simple Scanner \\ Scanner Specifications \\ Longest Match Principle \\ Regular Expressions \\ Actions \\ Redirecting Scanner Input and Output \\ Returning Tokens \\ Context Sensitive Scanners \\ Options to flex \\ Parsers \\ Generating Parsers \\ Creating a Syntax Tester \\ Token Types \\ Actions in Rules \\ Options to bison \\ Conflicts in Grammars \\ Arithmetic Expressions \\ 11: Testing Tools \\ Testing Requirements Types \\ Application Architecture \\ Steps \\ General Testing \\ Regression Testing \\ Test Program \\ Testing the dvdstore Program \\ Scripting Tests \\ Expect \\ Memory Problems \\ Installing mpatrol \\ Using mpatrol \\ Testing Coverage \\ Performance Testing \\ 12: Secure Programming \\ What is Secure Programming? \\ Why Secure Programming is Hard \\ Filesystem Security \\ Authenticating Users \\ Using Cryptography Securely \\ Secure Network Programming \\ Writing Protocols \\ Standard Network Cryptography Tools \\ Problems with the Environment \\ Python \\ PHP \\ 13: GUI Programming with KDE/Qt \\ About Qt \\ About KDE \\ Installing Qt \\ Installing KDE \\ Libraries \\ Programming Applications Using Qt \\ Getting Started: Hello World \\ Simplifying Makefile Management with tmake \\ Signals and Slots \\ `Hello World' Revisited \\ Deriving From Base Classes \\ Widgets \\ Layouts \\ Programming Applications Using KDE \\ Simple Text Editor \\ 14: Writing the DVD Store GUI Using KDE/Qt \\ Application Design \\ Main Window \\ Member Dialog \\ Rent Dialog \\ Rental Report Dialog \\ Search Window \\ Settings Manager \\ Adjusting the Code to KDE \\ KConfig and SettingsManager \\ 15: Python \\ Python: The Right Tool for the Job \\ \ldots{} But Not Every Job! \\ Installing Python \\ Running Python \\ Interactive Interpreter \\ Command Argument \\ Script Argument \\ `Standalone' Executable \\ Details \\ Interpreter and Byte-compilation \\ Comment Syntax \\ Case Sensitivity \\ Built-in Data Types and Operators \\ Variables \\ Block Structure Syntax \\ Statement Syntax \\ Functions \\ Built-in Functions \\ Namespaces \\ Modules and Packages \\ Some Modules from the Standard Distribution \\ Classes and Objects \\ Extending Python \\ Example Program: Penny Pinching \\ 16: Creating Web Interfaces with PHP \\ PHP and Server-side Scripting \\ Server-side Scripting \\ PHP Capabilities \\ Installing and Configuring PHP \\ Introducing PHP Syntax \\ Variables, Constants and Data Types \\ Operators in PHP \\ Statements \\ Functions \\ Arrays \\ Using PHP with the DVD Project \\ HTTP, HTML and PHP \\ Application \\ Login \\ Reservation Status \\ Search for Titles \\ Reserve Titles \\ Cancellation \\ dvdstorefunctions.php \\ dvdstorecommon.php \\ dvdstorelogin.php \\ dvdstoresearch.php \\ dvdstorestatus.php \\ dvdstorecancel.php \\ dvdstorereserve.php \\ 17: Embedding and Extending Python with C/C++ \\ Extending Python with a C/C++ Extension Module \\ Embedding Python in a Host Program \\ Developing Extension Modules in C/C++ \\ Required Software Tools \\ Extending Python Using SWIG \\ Extending Python Using the C API \\ Python Object Types \\ Reference Counting and Ownership \\ Overview of Developing C Extension Modules \\ Simple Functions \\ Slightly More Complex Function \\ Global Interpreter Lock \\ Creating New Python Object Types \\ Encapsulating C++ Objects Using the C API \\ Embedding Python in C/C++ Programs \\ Embedding Development Environment \\ Embedding Python Using High-level Functions \\ Statically Linking a Host Program to an Extension Module \\ Embedding Python Using Lower-level Calls \\ 18: Remote Procedure Calls \\ Simple Networked DVD Store Database \\ BSD Sockets \\ Coding Issues Using the BSD Socket Interface \\ ONC RPC Architecture and Concepts \\ Why Use RPC in the DVD Store Application? \\ RPC Tools and Utilities \\ rpcgen \\ the RPC Protocol Compiler \\ Applying RPCs to the DVD Store \\ Functions Without Arguments or Return Types \\ Functions With Simple Arguments and Simple Return Types \\ More Complex Examples \\ Returning Arrays \\ Client Timeouts \\ Authentication \\ AUTH{\"O}NONE \\ AUT{\"O}HUNIX \\ Client Side Authentication Support \\ Server Side Authentication Support \\ Using RPC Servers with /etc/inetd.conf \\ Other Methods to Simplify Network Programming \\ 19: Multimedia and Linux \\ Current State of Affairs \\ Program Integration \\ Sound \\ Devices \\ Handling Standard Audio Formats \\ Do It Yourself \\ Moving Pictures \\ Software Players \\ Hardware Players \\ Hybrids \\ Political and Legal Issues \\ 20: CORBA \\ Interface Definition Language (IDL) \\ Object Request Broker (ORB) \\ Interoperable Object Reference (IOR) \\ Object Adapter \\ Servers \\ Naming and Trading Services \\ Evaluating CORBA \\ CORBA and RPC \\ CORBA and Sockets \\ Systems Similar to CORBA \\ DCOM or COM+ \\ Java Remote Method Invocation (RMI) \\ Enterprise JavaBeans \\ IBM MQSeries \\ SOAP \\ IDL: Defining Interfaces \\ Modules \\ Interfaces \\ Basic Data Types \\ Template Types \\ Example DVD Application \\ Language Mappings \\ Language Mapping Components \\ C Mappings \\ Introductory Example: A Simple Messaging System \\ Simple Messaging \\ Using ORBit with the IDL \\ Message Client \\ Message Server \\ Compiling the ORBit Application \\ Running The Message Application \\ 21: Implementing CORBA with ORBit \\ Using CORBA for the DVD Store Application \\ DVD Client \\ DVD Server \\ Logging Server \\ Validation Server \\ Client Code \\ Log Server \\ DVD Server \\ Using libgnorba \\ Configuring ORBit for Multi Host Use \\ GOAD \\ GNOME Object Activation Directory \\ Use of CORBA in GNOME \\ Advanced CORBA Functionality \\ Dynamic Interface Invocation \\ CORBAServices \\ CORBAFacilities \\ Designing and Running Scalable CORBA Services \\ 22: Diskless Systems \\ Little History \\ What, No Disk? \\ Why Go Diskless? \\ How Does It Work? \\ Starting a Diskless System \\ Network Identification for Diskless Systems \\ Running an Operating System \\ Server Configuration \\ Boot Image Creation \\ Diskless Linux Kernel \\ Root File Systems \\ Client Applications \\ 23: XML and libxml \\ XML Document Structure \\ XML Syntax \\ Well-formed XML \\ Valid XML \\ XML Parsing \\ DOM \\ SAX \\ libXML a.k.a. gnome-xml \\ Complete Parser \\ 24: Beowulf Clusters \\ Hardware Setup \\ Software Configuration \\ Programming a Beowulf Cluster \\ Programming Using MPI \\ Basic Functionality of an MPI Program \\ Compiling and Executing a Simple MPI Program \\ Distributed MP3 Encoder \\ Communication Performance of a Beowulf Cluster \\ Review of Advanced Features of MPI \\ Some MPI Programming Examples \\ Programming with PVM \\ Comparison with MPI \\ Obtaining and Installing PVM \\ Review of PVM Library Routines \\ Sample PVM Program \\ 25: Documentation \\ Defining the Audience \\ End User Documentation: GUIs \\ Documenting GUIs Running on the Local Machine \\ Documenting Web GUIs \\ Power User/System Administrator Documentation \\ Command-line Options: Providing-help \\ Manual Pages \\ Keeping Things Manageable \\ Fonts \\ Paragraphs \\ Writing Manual Pages for APIs \\ Next Generation Manpages \\ info Files \\ It's All About Structure: From Single Program to Distributed Systems \\ Documentation Tools \\ Old, But Still Going Strong: TeX, LaTeX \\ New Breed: HTML, XML, and DocBook \\ Painting the Big Picture: HOWTO and FAQ Files \\ Developer Documentation \\ Perl's `pod' Method \\ Literary Programming \\ Lightweight Literary Programming \\ Document Interchange \\ PDF Files \\ 26: Device Drivers \\ Execution Context \\ Module and Initialization Code \\ Linker Sections \\ Example Module Code \\ PCI Devices and Drivers \\ struct pci{\"o}dev \\ Finding PCI Devices \\ PCI Drivers \\ PCI Access Functions \\ Resource Allocation \\ Interrupt Handlers \\ Access to User Space Memory \\ kiobuf Architecture \\ Locking Primitives \\ Scheduling and Wait Queues \\ Module Use Counts \\ Making It Build \\ What to Do with Your New Driver \\ Submitting a New Driver \\ 27: Distributing the Application \\ RPM Packages \\ RPM User \\ What Do I Have Installed? \\ RPM Database \\ Anatomy of an RPM Package \\ Source Packages \\ configure, autoconf and automake \\ Source RPM Packages \\ Building an RPM Package \\ Patches \\ Making a Patch \\ Applying a Patch \\ GNATS \\ 28: Internationalization \\ I18N Terminology \\ Isn't Unicode the Answer? \\ Unicode \\ Character Encoding Problem \\ ISO 2022: Extension Techniques for Coded Character Sets \\ Programming with Unicode \\ I18N Models and the System Environment \\ POSIX Locale Model \\ X/Open Portability Guide (XPG) \\ Output Formatting and Input Processing \\ X Window System \\ Practical Considerations of I18N Programming \\ I18N and Internal Text Processing \\ Programming with Locales \\ I18N and Xlib Programming \\ I18N and Linux GUIs \\ Status of I18N for Linux Software Development \\ I18N in Real Software Development Projects \\ Object Oriented Programming and I18N \\ Application Builders and I18N \\ Where Next for Linux I18N? \\ Appendix A: GTK+/GNOME Object Reference \\ GTK+ Widgets and Functions \\ GtkButton \\ GtkCheckButton \\ GtkCList \\ GtkCombo \\ GtkEntry \\ GtkFrame \\ GtkHBox \\ GtkHButtonBox \\ GtkHSeparator \\ GtkLabel \\ GtkMenu \\ GtkMenuBar \\ GtkMenultem \\ GtkNotebook \\ GtkOptionMenu \\ GtkPixmapMenultem \\ GtkScrolledWindow \\ GtkSpinButton \\ GtkTable \\ GtkText \\ GtkVBox \\ GtkWindow \\ GNOME Widgets and Functions \\ GnomeAbout \\ GnomeApp \\ GnomeAppBar \\ GnomeDateEdit \\ GnomeDialog \\ GnomeDock \\ GnomeDockItem \\ GnomeEntry \\ GnomePropertyBox \\ Appendix B: DVD Store RPC Protocol Definition \\ Appendix C: Open Source Licenses \\ Appendix D: Support, Errata, and P2P.Wrox.Com", } @Book{McGrath:2000:XPP, author = "Sean McGrath", title = "{XML} processing with {Python}", publisher = pub-PH, address = pub-PH:adr, pages = "xxiv + 527", year = "2000", ISBN = "0-13-021119-2", ISBN-13 = "978-0-13-021119-4", LCCN = "QA76.76.H94 M3885 2000", bibdate = "Tue Nov 07 06:37:21 2000", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sgml2000.bib", note = "Includes CD-ROM.", price = "US\$44.99", series = "The Charles F. Goldfarb series on open information management", URL = "http://www.phptr.com/ptrbooks/ptr_0130211192.html", acknowledgement = ack-nhfb, keywords = "Python (computer program language); XML (document markup language)", subject = "XML (Document markup language); Python (Computer program language); Python (Computer program language); XML (Document markup language); XML.; Python (programmeertaal); Python (Programmiersprache); XML.; Python (Programmiersprache); XML.", tableofcontents = "1: Introduction \\ 2: Installing Python \\ 3: Installing the XML Package \\ 4: Tools of the Trade \\ 5: Just Enough Python \\ 6: Some Important Details \\ 7: Processing XML with Regular Expressions \\ 8: Event-driven XML Processing \\ 9: Tree-driven XML Processing \\ 10: Just Enough SAX \\ 11: Just Enough DOM \\ 12: Pyxie: An Open Source XML-Processing Library for Python \\ 13: xFS: Filesystem Information in XML \\ 14: xMail: E-mail as XML \\ 15: xMySQL: Relational Database Harvesting with Python SAX \\ 16: xTract: A Query-By-Example XML Retrieval System \\ 17: The C3 XML Editor/Viewer \\ App. A: An Overview of Python for Java Programmers", } @Book{Mitchell:2000:DAS, author = "Scott Mitchell", title = "Designing {Active Server Pages}: {Scott Mitchell}'s Guide to Writing Reusable Code", publisher = pub-ORA, address = pub-ORA:adr, pages = "xii + 348", month = sep, year = "2000", ISBN = "0-596-00044-8", ISBN-13 = "978-0-596-00044-8", LCCN = "TK5105.8885.A26 M58 2000", bibdate = "Mon Apr 18 15:02:00 MDT 2005", bibsource = "http://www.math.utah.edu/pub/tex/bib/ora.bib; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.oreilly.com/catalog/; z3950.loc.gov:7090/Voyager", price = "US\$29.95", URL = "http://catdir.loc.gov/catdir/enhancements/fy0715/00062331-d.html; http://catdir.loc.gov/catdir/enhancements/fy0912/00062331-b.html; http://catdir.loc.gov/catdir/enhancements/fy1008/00062331-t.html; http://www.oreilly.com/catalog/9780596000448; http://www.oreilly.com/catalog/designasp", acknowledgement = ack-nhfb, subject = "Active server pages; Web sites; Design; Web publishing", tableofcontents = "What Is Application Design? \\ What's Wrong with ASP Design? \\ Why Hasn't ASP Design Advanced? \\ What Can Be Done to Improve ASP Design? \\ Choosing a Server-Side Scripting Language \\ The Popularity of VBScript \\ Specifying the Scripting Language \\ Creating ASP Pages with JScript \\ Creating ASP Pages with PerlScript \\ Creating ASP Pages with Python \\ Exception Handling \\ A Bit of Terminology \\ Detecting When Exceptions Occur \\ Responding to Exceptions \\ Creating Custom HTTP Error Pages \\ Regular Expressions, Classes, and Dynamic Evaluation and Execution \\ Using the RegExp Object \\ Using Object-Oriented Programming with VBScript \\ Using Dynamic Evaluation and Execution \\ Form Reuse \\ The Importance of Code Reuse \\ A Primer on Form Use \\ Form Validation \\ Creating Reusable Server-Side Form Validation Routines \\ Developing Reusable Form Creation Routines \\ The Practicality of Reuse \\ Database Reuse \\ Examining Database Usage \\ The Building Blocks for Creating Reusable Administration Pages \\ Creating Reusable Administration Pages \\ Using Components \\ COM--A Quick Overview \\ Lesser-Known Microsoft COM Components \\ Enhancing Microsoft's COM Components \\ Building Components \\ Enhancing Your Web Site with Third-Party Components \\ Executing DOS and Windows Applications on the Web Server with ASPExec \\ Obtaining Detailed Information About Your Users's Browsers \\ Grabbing Information from Other Web Servers \\ Encrypting Information \\ Uploading Files from the Browser to the Web Server", } @Article{Prechelt:2000:ECS, author = "Lutz Prechelt", title = "An Empirical Comparison of Seven Programming Languages", journal = j-COMPUTER, volume = "33", number = "10", pages = "23--29", month = oct, year = "2000", CODEN = "CPTRB4", ISSN = "0018-9162 (print), 1558-0814 (electronic)", ISSN-L = "0018-9162", bibdate = "Mon Oct 30 17:20:21 MST 2000", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://dlib.computer.org/co/books/co2000/pdf/rx023.pdf; http://www.computer.org/computer/co2000/rx023abs.htm", abstract = "The author takes a first step toward providing hard data about the relative effectiveness of the C, C++, Java, Perl, Python, Rexx and Tcl programming languages", acknowledgement = ack-nhfb, fjournal = "Computer", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=2", } @Article{Pulleyn:2000:EPM, author = "Ivan Pulleyn", title = "Embedding {Python} in Multi-Threaded {C\slash C++} Applications", journal = j-LINUX-J, volume = "73", pages = "??--??", month = may, year = "2000", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Thu Sep 21 07:44:12 MDT 2000", bibsource = "http://noframes.linuxjournal.com/lj-issues/issue73/index.html; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Python provides a clean intuitive interface to complex,threaded applications.", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Ramu:2000:CCP, author = "Chenna Ramu and Christina Gemuend", title = "cgimodel: {CGI} Programming Made Easy with {Python}", journal = j-LINUX-J, volume = "75", pages = "??--??", month = jul, year = "2000", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Thu Sep 21 07:44:13 MDT 2000", bibsource = "http://noframes.linuxjournal.com/lj-issues/issue75/index.html; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Scherer:2000:SPV, author = "David Scherer and Paul Dubois and Bruce Sherwood", title = "Scientific Programming: {VPython}: {$3$D} Interactive Scientific Graphics for Students", journal = j-COMPUT-SCI-ENG, volume = "2", number = "5", pages = "56--62", month = sep # "\slash " # oct, year = "2000", CODEN = "CSENFA", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Fri Oct 13 14:31:09 2000", bibsource = "http://www.computer.org/cse/cs1999; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://dlib.computer.org/cs/books/cs2000/pdf/c5056.pdf", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Article{Talbot:2000:WGT, author = "Hugues Talbot", title = "{wxPython}, a {GUI} Toolkit", journal = j-LINUX-J, volume = "74", pages = "??--??", month = jun, year = "2000", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Thu Sep 21 07:44:13 MDT 2000", bibsource = "http://noframes.linuxjournal.com/lj-issues/issue74/index.html; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Wilson:2000:PBP, author = "Gregory V. Wilson", title = "Programmer's Bookshelf: {Python}, {C++}, and Other Religions", journal = j-DDJ, volume = "25", number = "8", pages = "145--147", month = aug, year = "2000", CODEN = "DDJOEB", ISSN = "1044-789X", bibdate = "Thu Nov 9 08:25:16 MST 2000", bibsource = "http://www.ddj.com/; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Python, C++, and a lot more are on Greg's mind this month, as he examines The Quick Python Book, by Daryl Harms and Kenneth McDonald; Python Annotated Archives, by Martin C. Brown; Python Essential Reference, by David M. Beazley; Python Programming on Win32, by Mark Hammond and Andy Robinson; Efficient C++: Performance Programming Techniques by Dov Bulka and David Mayhew; Exceptional C++, by Herb Sutter; Core Jini, by W. Keith Edwards; Designing Web Usability, by Jakob Nielsen; Understanding Search Engines, by Michael W. Berry and Murray Browne; Toward Zero-Defect Programming, by Allan M. Stavely; and Game Architecture and Design, by Andrew Rollings and Dave Morris.", acknowledgement = ack-nhfb, fjournal = "Dr. Dobb's Journal of Software Tools", } @Article{Agoren:2001:KKL, author = "Izzet Agoren", title = "Kernel Korner: {Linux} Teleconferencing: Improving the Wireless Network", journal = j-LINUX-J, volume = "85", pages = "24, 26, 28, 30", month = may, year = "2001", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Thu Aug 30 10:41:31 2001", bibsource = "http://noframes.linuxjournal.com/lj-issues/issue85/index.html; http://www.math.utah.edu/pub/tex/bib/linux-journal.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", note = "See erratum \cite{Anonymous:2001:EIA}.", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Anonymous:2001:EIA, author = "Anonymous", title = "Errata: {Izzet Agoren's Kernel Corner, May 2001}, {Mitch Chapman's ``Create User Interfaces with Glade'' (July 2001)}", journal = j-LINUX-J, volume = "89", pages = "6--6", month = sep, year = "2001", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Thu Aug 30 06:06:53 MDT 2001", bibsource = "http://noframes.linuxjournal.com/lj-issues/issue89/index.html; http://www.math.utah.edu/pub/tex/bib/python.bib", note = "See \cite{Agoren:2001:KKL,Chapman:2001:CUI}.", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Anonymous:2001:PPS, author = "Anonymous", title = "Products: {ProxySource}'s Software Design and Collaboration Application; {YesSoftware}'s Code Generation Application; {Persistence Software}'s Transactional Application Server; {Instantiation}'s {Java} Productivity Tools; {JCanvas} Visual Rapid Application {IDE}; {theKompany.com}'s {Python} Development Environment; {NeuVis} Updates {E}-Business Visual Modeling Tools; {LegacyJ}'s {Java}-Compliant {Cobol} Compiler", journal = j-COMPUTER, volume = "34", number = "3", pages = "108--109", month = mar, year = "2001", CODEN = "CPTRB4", ISSN = "0018-9162 (print), 1558-0814 (electronic)", ISSN-L = "0018-9162", bibdate = "Wed Mar 14 07:01:26 MST 2001", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://dlib.computer.org/co/books/co2001/pdf/r3108.pdf", acknowledgement = ack-nhfb, fjournal = "Computer", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=2", } @Article{Baxter:2001:BRC, author = "Michael Baxter", title = "Book Reviews: {{\em Core Python Programming}}", journal = j-LINUX-J, volume = "85", pages = "100--101", month = may, year = "2001", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Wed May 23 15:20:33 MDT 2001", bibsource = "http://noframes.linuxjournal.com/lj-issues/issue85/index.html; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://noframes.linuxjournal.com/lj-issues/issue85/4564.html", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Book{Beazley:2001:PER, author = "David M. Beazley", title = "{Python} essential reference", publisher = pub-NRP, address = pub-NRP:adr, edition = "Second", pages = "xviii + 398", year = "2001", ISBN = "0-7357-1091-0", ISBN-13 = "978-0-7357-1091-7", LCCN = "QA76.73.P98 B43 2001", bibdate = "Tue Mar 12 07:20:53 MST 2002", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, keywords = "Python (computer program language)", } @Article{Bisca:2001:UPQ, author = "Mihai Bisca", title = "Using {Python} to Query {MySQL} over the Net", journal = j-LINUX-J, volume = "85", pages = "104--106, 108", month = may, year = "2001", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Wed May 23 15:20:33 MDT 2001", bibsource = "http://noframes.linuxjournal.com/lj-issues/issue85/index.html; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Use Python to upgrade your site's search.", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Chapman:2001:CUI, author = "Mitch Chapman", title = "Create User Interfaces with {Glade}", journal = j-LINUX-J, volume = "87", pages = "88, 90--92, 94", month = jul, year = "2001", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Thu Aug 30 10:40:31 2001", bibsource = "http://noframes.linuxjournal.com/lj-issues/issue87/index.html; http://www.math.utah.edu/pub/tex/bib/python.bib", note = "See erratum \cite{Anonymous:2001:EIA}.", URL = "http://noframes.linuxjournal.com/lj-issues/issue87/4702.html", abstract = "Discover the joys of creating GUI apps with Glade and Python--Chapman shows us how.", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Book{Chun:2001:CPP, author = "Wesley Chun", title = "Core {Python} programming", publisher = pub-PHPTR, address = pub-PHPTR:adr, pages = "xxix + 771", year = "2001", ISBN = "0-13-026036-3", ISBN-13 = "978-0-13-026036-9", LCCN = "QA76.73.P98 C48 2001", bibdate = "Tue Mar 12 07:20:53 MST 2002", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", series = "Prentice Hall PTR core series", URL = "http://www.phptr.com/ptrbooks/ptr_0130260363.html", acknowledgement = ack-nhfb, keywords = "Python (computer program language)", } @Article{Dalke:2001:MCE, author = "Andrew Dalke", title = "Making {C} Extensions More {Pythonic}", journal = j-DDJ, volume = "26", number = "1", pages = "68, 70, 72, 74, 76", month = jan, year = "2001", CODEN = "DDJOEB", ISSN = "1044-789X", bibdate = "Thu Feb 15 12:14:40 MST 2001", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.ddj.com/ftp/2001/2001_01/cpython.txt; http://www.ddj.com/ftp/2001/2001_01/cpython.zip", abstract = "Andrew presents PyDaylight, an object-oriented wrapper for Python that provides the low-level interface to the underlying C libraries. Additional resources include cpython.txt (listings) and cpython.zip (source code).", acknowledgement = ack-nhfb, fjournal = "Dr. Dobb's Journal of Software Tools", } @Book{dosSantosLessa:2001:PDH, author = "Andr{\'e} {dos Santos Lessa}", title = "{Python} Developer's Handbook", publisher = pub-SAMS, address = pub-SAMS:adr, pages = "xxv + 929", year = "2001", ISBN = "0-672-31994-2", ISBN-13 = "978-0-672-31994-5", LCCN = "QA76.73.P98 L47 2001", bibdate = "Tue Mar 12 07:27:34 2002", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", price = "US\$44.99", abstract = "The \booktitle{Python Developer's Handbook} is designed to expose experienced developers to Python and its uses. Beginning with a brief introduction to the language and its syntax, the book moves quickly into more advanced programming topics.", acknowledgement = ack-nhfb, keywords = "Python (computer program language)", subject = "Python (Computer program language); Object-oriented programming (Computer science); Object-oriented programming (Computer science); Python (Computer program language); Python (programmeertaal)", tableofcontents = "Part I : Basic Programming \\ Main Technical Features / 13 \\ Python Distribution / 16 \\ Installing and Configuring Python / 18 \\ Python and Other Languages / 22 \\ Patches and Bugs List / 25 \\ PSA and the Python Consortium / 26 \\ 2 : Language Review / 31 \\ The Shell Environment / 32 \\ Programs / 35 \\ Built-In Data Types / 40 \\ Operators / 47 \\ Expressions / 49 \\ Control Statements / 59 \\ Data Structures / 62 \\ Functions and Procedures / 71 \\ Modules and Packages / 77 \\ Input and Output / 82 \\ File Handling / 86 \\ 3 : Python Libraries / 97 \\ Python Services / 99 \\ The String Group / 110 \\ Generic Operational System / 119 \\ Optional Operational System / 127 \\ Debugger / 130 \\ Profiler / 131 \\ Internet Protocol and Support / 131 \\ Internet Data Handling / 134 \\ Restricted Execution / 137 \\ Multimedia / 137 \\ Cryptographic / 139 \\ UNIX Specific / 140 \\ SGI IRIX Specific / 143 \\ Sun OS Specific / 145 \\ MS Windows Specific / 145 \\ Macintosh Specific / 145 \\ Undocumented Modules / 146 \\ 4 : Exception Handling / 153 \\ Exception Handling / 153 \\ Standard Exceptions (Getting Help from Other Modules) / 157 \\ Raising Exceptions / 159 \\ Catching Exceptions / 165 \\ try/finally / 167 \\ Creating User-defined Exceptions / 168 \\ The Standard Exception Hierarchy / 169 \\ 5 : Object-Oriented Programming / 179 \\ An Introduction to Python OOP / 180 \\ Python Classes and Instances / 183 \\ Methods Handling / 190 \\ Special Methods / 192 \\ Inheritance / 198 \\ Polymorphism / 201 \\ Encapsulation / 204 \\ Metaclasses / 206 \\ Part II : Advanced Programming \\ 6 : Extending and Embedding Python / 221 \\ Extending and Embedding Python / 221 \\ The Python/C API / 223 \\ Extending / 223 \\ Compiling and Linking Extension Modules / 237 \\ SWIG \\ The Simple Wrapper Interface Generator / 243 \\ Other Wrappers / 245 \\ Embedding / 246 \\ 7 : Objects Interfacing and Distribution / 259 \\ Interfacing Objects / 260 \\ Introduction to COM Objects / 261 \\ Implementing COM Objects in Python / 266 \\ Distributing Objects with Python / 285 \\ 8 : Working with Databases / 305 \\ Working with Databases / 305 \\ Flat Databases / 306 \\ DBM (Database Managers) Databases / 309 \\ Object Serialization and Persistent Storage / 315 \\ The ODBC Module / 322 \\ ADO (ActiveX Data Objects) / 325 \\ Using SQL / 327 \\ Python DB API / 335 \\ 9 : Other Advanced Topics / 351 \\ Manipulating Images / 352 \\ Working with Sounds / 355 \\ Restricted Execution Mode / 360 \\ Scientific Computing / 363 \\ Regular Expressions / 369 \\ Threads / 376 \\ Part III : Network Programming \\ 10 : Basic Network Background / 391 \\ Networking / 391 \\ HTTP / 405 \\ Accessing URLs / 414 \\ FTP / 417 \\ SMTP/POP3/IMAP / 418 \\ Newsgroups \\ Telnet and Gopher / 421 \\ 11 : Web Development / 427 \\ Web Development / 427 \\ Configuring Web Servers for Python/CGI Scripts / 428 \\ Third-Party Internet Applications / 433 \\ Other Applications / 439 \\ Site Management Tools / 442 \\ 12 : Scripting Programming / 451 \\ Web Programming / 451 \\ An Introduction to CGI / 452 \\ The CGI Module / 454 \\ Creating, Installing, and Running Your Script / 456 \\ Python Active Scripting / 481 \\ 13 : Data Manipulation / 491 \\ Parsing and Manipulating Data / 491 \\ XML Processing / 492 \\ XML-RPC / 510 \\ XDR Data Exchange Format / 512 \\ Handling Other Markup Languages / 517 \\ MIME Parsing and Manipulation / 530 \\ Generic Conversion Functions / 544 \\ Part IV : Graphical Interfaces \\ 14 : Python and GUIs / 555 \\ Python GUI Toolkits / 555 \\ The Tkinter Module / 557 \\ Overview of Other GUI Modules / 558 \\ Designing a Good Interface / 571 \\ 15 : Tkinter / 575 \\ Introduction to Tcl/Tk / 575 \\ Geometry Management / 580 \\ Handling Tkinter Events / 585 \\ Tkinter Widgets / 590 \\ Designing Applications / 624 \\ PMW \\ Python Mega Widgets / 630 \\ Part V : Developing with Python \\ 16 : Development Environment / 635 \\ Building Python Applications / 635 \\ Development Strategy / 636 \\ Integrated Development Environments / 647 \\ IDLE / 647 \\ Pythonwin / 661 \\ 17 : Development Tools / 673 \\ The Development Process of Python Programs / 673 \\ Compiling Python / 674 \\ Editing Code / 678 \\ Emacs / 679 \\ Python Scripts / 681 \\ Generating an Executable Python Bytecode / 685 \\ Interpreter / 686 \\ Debugging the Application / 689 \\ Profiling Python / 697 \\ Distributing Python Applications / 708 \\ Part VI : Python and Java \\ 18 : JPython / 717 \\ Welcome to JPython / 717 \\ Java Integration / 722 \\ Downloading and Installing JPython / 723 \\ The Interpreter / 727 \\ The JPython Registry / 729 \\ Creating Graphical Interfaces / 731 \\ Embedding / 732 \\ jpythonc / 734 \\ Running JPython Applets / 736 \\ A Python/C API / 741 \\ Python/C API / 741 \\ The Very High Level Layer / 751 \\ Reference Counting / 753 \\ Exception Handling / 754 \\ Standard Exceptions / 757 \\ Utilities / 759 \\ Abstract Objects Layer / 762 \\ Concrete Objects Layer / 771 \\ Initialization, Finalization, and Threads / 789 \\ Memory Management / 800 \\ Defining New Object Types / 804 \\ B : Running Python on Specific Platforms / 807 \\ Python on Win32 Systems / 807 \\ Python on MacOS Systems / 810 \\ Python on UNIX Systems / 814 \\ Other Platforms / 815 \\ Python 1.6 or Python 2.0. Which One to Choose? / 828 \\ New Development Process / 828 \\ Enhancements / 828 \\ Expected Code Breaking / 831", } @Article{Esterbrook:2001:UMI, author = "Chuck Esterbrook", title = "Using Mix-ins with {Python}", journal = j-LINUX-J, volume = "84", pages = "114, 116, 118, 120--121", month = apr, year = "2001", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Fri Apr 13 06:26:46 MDT 2001", bibsource = "http://noframes.linuxjournal.com/lj-issues/issue84/index.html; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://noframes.linuxjournal.com/lj-issues/issue84/4540.html", abstract = "Python provides an ideal language for mix-in development.", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Hughes:2001:BRP, author = "Phil Hughes", title = "Book Reviews: {{\em Python Developer's Handbook}}", journal = j-LINUX-J, volume = "82", pages = "180--180", month = feb, year = "2001", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Thu Feb 15 08:04:55 MST 2001", bibsource = "http://noframes.linuxjournal.com/lj-issues/issue82/index.html; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Book{Lundh:2001:PSL, author = "Fredrik Lundh", title = "{Python} Standard Library", publisher = pub-ORA, address = pub-ORA:adr, pages = "xvi + 281", month = may, year = "2001", ISBN = "0-596-00096-0", ISBN-13 = "978-0-596-00096-7", LCCN = "QA76.73.P98 L86 2001", bibdate = "Tue Mar 12 07:28:12 2002", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.oreilly.com/catalog/", price = "US\$29.95", series = "Nutshell handbook", URL = "http://www.oreilly.com/catalog/pythonsl", acknowledgement = ack-nhfb, keywords = "Python (computer program language)", } @Book{Lutz:2001:PPO, author = "Mark Lutz", title = "Programming {Python}: Object-Oriented Scripting", publisher = pub-ORA, address = pub-ORA:adr, edition = "Second", pages = "xxxvii + 1255", month = mar, year = "2001", ISBN = "0-596-00085-5", ISBN-13 = "978-0-596-00085-1", LCCN = "QA76.73.P98 L88 2001", bibdate = "Mon Apr 18 15:02:28 MDT 2005", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.oreilly.com/catalog/; z3950.loc.gov:7090/Voyager", note = "Includes CD-ROM.", price = "US\$54.95", URL = "http://www.oreilly.com/catalog/9780596000851; http://www.oreilly.com/catalog/python2", acknowledgement = ack-nhfb, subject = "Python (Computer program language)", } @Misc{Pelletier:2001:Z, author = "Michel Pelletier", title = "{Zope}", year = "2001", bibdate = "Tue Oct 15 15:38:06 2002", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", note = "Unpublished invited talk, LISA 2001: 15th Systems Administration Conference, December 2--7, 2001, Town and Country Resort Hotel, San Diego, CA.", URL = "http://db.usenix.org/publications/library/proceedings/lisa2001/tech/", abstract = "Zope is an open-source Web application server written in Python and C and published by Digital Creations. Michel is a software developer and documentation writer for DC who has worked with Zope for over two years and is co-author of the New Riders publication {\em The Zope Book}. He will be presenting some of the cooler features Zope has to offer to the presentation designer, content manager, programmer, and system administrator.", acknowledgement = ack-nhfb, } @Article{Rempt:2001:PPT, author = "Boudewijn Rempt", title = "{Python}'s {PyQt} Toolkit", journal = j-DDJ, volume = "26", number = "1", pages = "88, 90, 92, 94", month = jan, year = "2001", CODEN = "DDJOEB", ISSN = "1044-789X", bibdate = "Thu Feb 15 12:14:40 MST 2001", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.ddj.com/ftp/2001/2001_01/pyqt.txt", abstract = "Boudewijn examines PyQt, one of the most advanced Python GUI libraries, focusing on the innovative signals-and-slots paradigm it offers you. Additional resources include pyqt.txt (listings).", acknowledgement = ack-nhfb, fjournal = "Dr. Dobb's Journal of Software Tools", } @Article{Rempt:2001:SJP, author = "Boudewijn Rempt", title = "Scripting With {Java} and {Python}: Building a {Python} console window in a {Java} application", journal = j-DDJ, volume = "26", number = "10", pages = "56, 60--61", month = oct, year = "2001", CODEN = "DDJOEB", ISSN = "1044-789X", bibdate = "Tue Feb 12 05:21:40 MST 2002", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.ddj.com/ftp/2001/2001_10/pyconsol.txt; http://www.ddj.com/ftp/2001/2001_10/pyconsol.zip", abstract = "Boudewijn shows how you can embed a standard language such as Python into a Java application. Additional resources include {\tt pyconsol.txt} (listings) and {\tt pyconsol.zip} (source code).", acknowledgement = ack-nhfb, fjournal = "Dr. Dobb's Journal of Software Tools", } @Article{Richardson:2001:LEO, author = "Bruce Richardson and Anonymous and Nathan Hokanson and Ken O. Burtch and Jim V. and Jerel Crosland and Paul Taylor and Sheldon Dubrowin and Paul Dale Roberts and Dean Provins and Kathy Lynn and Andre Lessa", title = "Letters to the Editor: Offended; {A} Real Bastard; Common Misconception; {Ada} Boy!; Wacky Names; Penultimate {Linux} Box?; {SuSe} Too Loosa; {LJ} Interactive; Sold on {{\em Soldier}}; {\tt groff} is Great; What's up with {Ogg}?; Changes to the {{\em Python Developer's Handook}}", journal = j-LINUX-J, volume = "83", pages = "6, 141--142", month = mar, year = "2001", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Tue Feb 20 11:49:34 2001", bibsource = "http://noframes.linuxjournal.com/lj-issues/issue83/index.html; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Tan:2001:JWP, author = "C. K. Tan", title = "A {JDBC} Wrapper --- In {Python}!", journal = j-DDJ, volume = "26", number = "8", pages = "50, 52, 54", month = aug, year = "2001", CODEN = "DDJOEB", ISSN = "1044-789X", bibdate = "Wed Jul 11 06:31:35 MDT 2001", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.ddj.com/ftp/2001/2001_08/jdbcpy.txt; http://www.ddj.com/ftp/2001/2001_08/jdbcpy.zip", abstract = "Database access via JDBC can be less than straightforward. To simplify the process, C.K. presents a Python-based framework that wraps around JDBC. Additional resources include jdbcpy.txt (listings) and jdbcpy.zip (source code).", acknowledgement = ack-nhfb, fjournal = "Dr. Dobb's Journal of Software Tools", } @Article{Wilson:2001:PBT, author = "Gregory V. Wilson", title = "Programmer's Bookshelf: Time Warps", journal = j-DDJ, volume = "26", number = "2", pages = "159--160", month = feb, year = "2001", CODEN = "DDJOEB", ISSN = "1044-789X", bibdate = "Thu Feb 15 12:14:41 MST 2001", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.ddj.com/", abstract = "Greg looks at a bunch of books, including Programming Ruby, Program Development in Java, The Interpretation of Object-Oriented Programming Languages, MMIXware: A RISC Computer for the Third Millennium, Essential XML, XML Processing with Python, Presenting C\#, and Women in Computer Sciences: Closing the Gap in Higher Education.", acknowledgement = ack-nhfb, fjournal = "Dr. Dobb's Journal of Software Tools", } @Article{Anonymous:2002:CPF, author = "Anonymous", title = "Correction: {``Python and Finite Elements''}", journal = j-DDJ, volume = "27", number = "4--4", pages = "10--10", month = apr, year = "2002", CODEN = "DDJOEB", ISSN = "1044-789X", bibdate = "Tue Mar 5 07:08:41 MST 2002", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", note = "See \cite{Pletzer:2002:PFE}.", URL = "http://www.ddj.com/", acknowledgement = ack-nhfb, fjournal = "Dr. Dobb's Journal of Software Tools", } @Article{Baumgartner:2002:DIP, author = "Florian Baumgartner and Torsten Braun and Bharat Bhargava", title = "Design and Implementation of a Python-Based Active Network Platform for Network Management and Control", journal = j-LECT-NOTES-COMP-SCI, volume = "2546", pages = "177--??", year = "2002", CODEN = "LNCSD9", ISSN = "0302-9743 (print), 1611-3349 (electronic)", ISSN-L = "0302-9743", bibdate = "Sat Nov 30 20:58:13 MST 2002", bibsource = "http://link.springer-ny.com/link/service/series/0558/tocs/t2546.htm; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://link.springer.de/link/service/series/0558/bibs/2546/25460177.htm; http://link.springer.de/link/service/series/0558/papers/2546/25460177.pdf", acknowledgement = ack-nhfb, fjournal = "Lecture Notes in Computer Science", } @Book{Blaess:2002:LSS, author = "Christophe Blaess", title = "Langages de scripts sous {Linux}: {Shell Bash}, {Sed}, {Awk}, {Perl}, {Tcl}, {Tk}, {Python}, {Ruby}", publisher = pub-EYROLLES, address = pub-EYROLLES:adr, pages = "xx + 733", year = "2002", ISBN = "2-212-11028-6", ISBN-13 = "978-2-212-11028-9", LCCN = "QA76.7 B4 2002", bibdate = "Fri Jul 01 14:51:40 2005", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, } @Article{Brinkmann:2002:GGG, author = "Peter Brinkmann", title = "{Gumbie}: a {GUI} Generator For {Jython}", journal = j-DDJ, volume = "27", number = "4", pages = "46--50", month = apr, year = "2002", CODEN = "DDJOEB", ISSN = "1044-789X", bibdate = "Tue Mar 5 07:08:41 MST 2002", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.ddj.com/ftp/2002/2002_04/gumbie.txt; http://www.ddj.com/ftp/2002/2002_04/gumbie.zip", abstract = "Jython is a 100 percent pure Java implementation of Python that makes Java scriptable. Peter uses it to build his Gumbie GUI tool. Additional resources include gumbie.txt (listings) and gumbie.zip (source code).", acknowledgement = ack-nhfb, fjournal = "Dr. Dobb's Journal of Software Tools", } @Book{Christopher:2002:PPP, author = "Thomas W. Christopher", title = "{Python} programming patterns", publisher = pub-PHPTR, address = pub-PHPTR:adr, pages = "xix + 538", year = "2002", ISBN = "0-13-040956-1", ISBN-13 = "978-0-13-040956-0", LCCN = "QA76.73.P98 C47 2002", bibdate = "Tue Mar 12 07:20:53 MST 2002", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.phptr.com/ptrbooks/ptr_0130409561.html", acknowledgement = ack-nhfb, keywords = "Python (computer program language)", subject = "Python (Computer program language); Python (Programmiersprache)", tableofcontents = "1: Getting Started \\ 2: Statements \\ 3: Modules and Packages \\ 4: Objects and Classes \\ 5: Object-Oriented Patterns \\ 6: Functions \\ 7: Input/Output \\ 8: Sequences \\ 9: Strings \\ 10: Dictionaries \\ 11: Exceptions \\ 12: Types \\ 13: Programs and Run-Time Compilation \\ 14: Abstract Data Types and Special Methods \\ 15: Abstract Container Data Types \\ 16: Priority Queues \\ 17: Sets \\ 18: Concurrency \\ 19: Transactions \\ 20: Run Queues \\ 21: Regular Expressions \\ 22: Parser \\ 23: Wrap-Up", } @Article{Chun:2002:KPR, author = "Wesley J. Chun", title = "Keeping Up with {Python}: the 2.2 Release", journal = j-LINUX-J, volume = "99", pages = "??--??", month = jul, year = "2002", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Sat Apr 12 06:59:06 MDT 2003", bibsource = "http://noframes.linuxjournal.com/lj-issues/issue99/index.html; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.linuxjournal.com/article/5597", abstract = "Unification, iterators and more--the improvements to the Python 2.2 release series.", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Chun:2002:PQG, author = "Wesley J. Chun", title = "{Python 2.2} {Q\&A} with {Guido van Rossum}, Creator of {Python}", journal = j-LINUX-J, volume = "98", pages = "??--??", month = jun, year = "2002", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Sat Apr 12 06:59:06 MDT 2003", bibsource = "http://noframes.linuxjournal.com/lj-issues/issue98/index.html; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.linuxjournal.com/article.php?sid=5948", abstract = "No full monty, just Guido's honest opinions.", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Book{Deitel:2002:PHP, author = "Harvey M. Deitel and Paul Deitel and Jonathan Liperi and Ben Wiedermann", title = "{Python} How To Program", publisher = pub-PHPTR, address = pub-PHPTR:adr, pages = "lviii + 1292 + 6", year = "2002", ISBN = "0-13-092361-3 (paperback), 0-13-092557-8 (CD-ROM)", ISBN-13 = "978-0-13-092361-5 (paperback), 978-0-13-092557-2 (CD-ROM)", LCCN = "QA76.73.P98 P98 2002", bibdate = "Thu Oct 31 18:16:58 2002", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", price = "US\$74.00", URL = "http://www.phptr.com/ptrbooks/ptr_0130923613.html", acknowledgement = ack-nhfb, remark = "CD-ROM contents: Alice 99 interactive 3D graphics programming system -- Python 2.2 (Windows/Linux) -- Apache web server 1.3.22 / from the Apache Software Foundation -- Webware 0.6 for Python (Windows/Linux) -- Pixo Internet microbrowser 2.1 -- IBM WebSphere voice server SDK 2.0 for Windows 2000 for evaluation.", remark-2 = "System requirements for accompanying CD-ROM: Pentium 166 MHz or faster processor (366 MHz (or higher) required for WebSphere Voice Server for Windows 2000); 64 MHz RAM (128 MHz for NT/2000); Windows 9x, Windows NT (or later) (some software packages require particular versions of Windows), or Red Hat Linux 6.2 (or later); 32 MB (48 MB recommended); CD-ROM drive; Internet connection.", subject = "Python (Computer program language)", } @Article{Farrell:2002:MP, author = "Doug Farrell", title = "Mediator\slash {Python}", journal = j-LINUX-J, volume = "98", pages = "??--??", month = jun, year = "2002", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Sat Apr 12 06:59:06 MDT 2003", bibsource = "http://noframes.linuxjournal.com/lj-issues/issue98/index.html; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.linuxjournal.com/article.php?sid=5858", abstract = "Sure it's no system for a basis of government, but Python can help build smart dialog boxes.", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Book{Fehily:2002:VQG, author = "Chris Fehily", title = "Visual quickstart guide: {Python}", publisher = pub-PEACHPIT, address = pub-PEACHPIT:adr, pages = "xxvi + 410", year = "2002", ISBN = "????", ISBN-13 = "????", LCCN = "A76.73.P98 F44 2002", bibdate = "Thu Apr 16 11:52:32 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://proquest.safaribooksonline.com/0201748843", acknowledgement = ack-nhfb, } @Book{Hetland:2002:PP, author = "Magnus Lie Hetland", title = "Practical {Python}", publisher = pub-APRESS, address = pub-APRESS:adr, pages = "xxi + 619", year = "2002", ISBN = "1-59059-006-6", ISBN-13 = "978-1-59059-006-5", LCCN = "QA76.73.P98 H47 2002", bibdate = "Fri Nov 07 05:28:22 2003", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, } @Article{Hinsen:2002:HLS, author = "K. Hinsen", title = "High-Level Scientific Programming with {Python}", journal = j-LECT-NOTES-COMP-SCI, volume = "2331", pages = "691--??", year = "2002", CODEN = "LNCSD9", ISSN = "0302-9743 (print), 1611-3349 (electronic)", ISSN-L = "0302-9743", bibdate = "Tue Sep 10 19:09:36 MDT 2002", bibsource = "http://link.springer-ny.com/link/service/series/0558/tocs/t2331.htm; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://link.springer-ny.com/link/service/series/0558/bibs/2331/23310691.htm; http://link.springer-ny.com/link/service/series/0558/papers/2331/23310691.pdf", acknowledgement = ack-nhfb, fjournal = "Lecture Notes in Computer Science", } @Article{Jackson:2002:PPI, author = "Keith R. Jackson", title = "{pyGlobus}: a {Python} interface to the {Globus Toolkit TM}", journal = j-CCPE, volume = "14", number = "13--15", pages = "1075--1083", month = nov # "\slash " # dec, year = "2002", CODEN = "CCPEBO", DOI = "http://dx.doi.org/10.1002/cpe.683", ISSN = "1532-0626 (print), 1532-0634 (electronic)", ISSN-L = "1532-0626", bibdate = "Tue Jan 13 09:28:02 MST 2004", bibsource = "http://www.interscience.wiley.com/jpages/1532-0626; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www3.interscience.wiley.com/journalfinder.html", acknowledgement = ack-nhfb, fjournal = "Concurrency and Computation: Prac\-tice and Experience", journal-URL = "http://www.interscience.wiley.com/jpages/1532-0626", onlinedate = "8 Jan 2003", } @Book{Jones:2002:PX, author = "Christopher A. Jones and Fred L. Drake", title = "{Python} and {XML}", publisher = pub-ORA, address = pub-ORA:adr, pages = "xvi + 360", year = "2002", ISBN = "0-596-00128-2", ISBN-13 = "978-0-596-00128-5", LCCN = "QA76.73.P98 J66 2002", bibdate = "Tue Mar 12 07:20:53 MST 2002", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, keywords = "Python (computer program language); XML (document markup language)", } @Book{Lutz:2002:PPR, author = "Mark Lutz", title = "{Python} Pocket Reference", publisher = pub-ORA, address = pub-ORA:adr, edition = "Second", pages = "iv + 124", year = "2002", ISBN = "0-596-00189-4", ISBN-13 = "978-0-596-00189-6", LCCN = "QA76.73.P98 L89 2002", bibdate = "Mon Apr 18 15:03:38 MDT 2005", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.oreilly.com/catalog/prdindex.html; z3950.loc.gov:7090/Voyager", price = "US\$11.95", URL = "http://safari.oreilly.com/0596001894; http://www.oreilly.com/catalog/9780596001896; http://www.oreilly.com/catalog/pythonpr2", acknowledgement = ack-nhfb, keywords = "Python (computer program language)", publishersummary = "The Python Pocket Reference, 2nd Edition covers the latest Python release 2.2. It is a short, concise reference for the Python programming language, and its most commonly used libraries and tools. Designed to be a quick and easy to use resource for developers, this book serves as a natural companion to O'Reilly's Learning Python and Programming Python, 2nd Edition. This edition includes new summary material for Python's GUI, Internet, and database programming tools.", subject = "Python (Computer program language)", } @Book{Martelli:2002:PC, editor = "David Ascher Alex Martelli", title = "{Python} Cookbook", publisher = pub-ORA, address = pub-ORA:adr, pages = "xxix + 574", year = "2002", ISBN = "0-596-00167-3", ISBN-13 = "978-0-596-00167-4", LCCN = "QA76.73.P98 P983 2002 Stacks", bibdate = "Wed Oct 30 16:15:17 MST 2002", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.oreilly.com/catalog/prdindex.html", price = "US\$39.95", URL = "http://safari.oreilly.com/0596001673; http://www.oreilly.com/catalog/pythoncook", acknowledgement = ack-nhfb, keywords = "Python (computer program language)", publishersummary = "The Python Cookbook is a collection of problems, solutions, and practical examples for Python programmers, written by Python programmers. It contains over two hundred recipes for text manipulation, object oriented programming, XML processing, system administration, and much more. This book is a treasure trove of useful code for both novices and advanced practitioners, with contributions from such Python luminaries as Guido van Rossum, Tim Peters, Paul Prescod, and Mark Hammond.", } @Article{Maurer:2002:CPL, author = "W. Douglas Maurer", title = "The comparative programming languages course: a new chain of development", journal = j-SIGCSE, volume = "34", number = "1", pages = "336--340", month = mar, year = "2002", CODEN = "SIGSD3", DOI = "http://dx.doi.org/10.1145/563517.563472", ISSN = "0097-8418", ISSN-L = "0097-8418", bibdate = "Sat Nov 17 16:56:52 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigcse2000.bib", note = "Inroads: paving the way towards excellence in computing education.", abstract = "The programming language concepts which ought to be presented in the comparative programming languages course (either graduate or undergraduate) are all covered by choosing C++, Java, Perl, and Python as the languages to be compared. These include dynamic typing, object orientation, multiple inheritance, interpreters and compilers, keyword and default parameters, generics, operator overloading, complex numbers, universal hierarchies, exceptions, and garbage collection. We describe such a course, which we have given.", acknowledgement = ack-nhfb, fjournal = "SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education)", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J688", } @Book{Pedroni:2002:JE, author = "Samuele Pedroni and Noel Rappin", title = "Jython Essentials", publisher = pub-ORA, address = pub-ORA:adr, pages = "xx + 277", year = "2002", ISBN = "0-596-00247-5", ISBN-13 = "978-0-596-00247-3", LCCN = "QA76.73.J38 P43 2002 Stacks", bibdate = "Wed Oct 30 16:15:17 MST 2002", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.oreilly.com/catalog/prdindex.html", price = "US\$24.95", URL = "http://www.oreilly.com/catalog/jythoness", acknowledgement = ack-nhfb, keywords = "Java (computer program language); Python (computer program language)", publishersummary = "Jython is an implementation of the Python programming language written in Java, allowing Python programs to integrate seamlessly with any Java code. The secret to Jython's popularity lies in the combination of Java's libraries and tools with Python's rapid development capabilities. Jython Essentials provides a solid introduction to the language, numerous examples of Jython/Java interaction, and valuable reference material on modules and libraries of use to Jython programmers.", } @Article{Petrone:2002:DPP, author = "Jason Petrone", title = "{$3$-D} Programming with {Python}", journal = j-LINUX-J, volume = "94", pages = "89--94", month = feb, year = "2002", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Fri Feb 8 16:59:02 MST 2002", bibsource = "http://noframes.linuxjournal.com/lj-issues/issue94/index.html; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Accessing PyOpenGL for faster 3-D programming.", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Pletzer:2002:PFE, author = "Alexander Pletzer", title = "{Python} and Finite Elements", journal = j-DDJ, volume = "27", number = "3", pages = "36, 38--40", month = mar, year = "2002", CODEN = "DDJOEB", ISSN = "1044-789X", bibdate = "Tue Feb 12 05:21:42 MST 2002", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", note = "See correction \cite{Anonymous:2002:CPF}.", URL = "http://www.ddj.com/ftp/2002/2002_03/ellipt2d.txt; http://www.ddj.com/ftp/2002/2002_03/ellipt2d.zip", abstract = "ELLIPT2D is a finite element package written in Python that's designed to solve elliptic equations in two dimensions. Additional resources include {\tt ellipt2d.txt} (listings) and {\tt ellipt2d.zip} (source code).", acknowledgement = ack-nhfb, fjournal = "Dr. Dobb's Journal of Software Tools", } @Article{Sitaker:2002:PPW, author = "Kragen Sitaker", title = "{Python} or {Perl}: Which is Better?", journal = j-LOGIN, volume = "27", number = "3", pages = "??--??", month = jun, year = "2002", CODEN = "LOGNEM", ISSN = "1044-6397", bibdate = "Tue Apr 11 10:52:16 MDT 2006", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.usenix.org/publications/login/2002-06/index.html", URL = "http://www.usenix.org/publications/login/2002-06/pdfs/sitaker.pdf", acknowledgement = ack-nhfb, fjournal = ";login: the USENIX Association newsletter", } @Book{Thiruvathukal:2002:WPT, author = "George K. (George Kuriakose) Thiruvathukal and John P. Shafaee and Thomas W. Christopher", title = "{Web} programming: techniques for integrating {Python}, {Linux}, {Apache}, and {MySQL}", publisher = pub-PHPTR, address = pub-PHPTR:adr, pages = "xviii + 745", year = "2002", ISBN = "0-13-041065-9", ISBN-13 = "978-0-13-041065-8", LCCN = "QA76.625 .T48 2002", bibdate = "Tue Mar 12 07:20:53 MST 2002", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.phptr.com/ptrbooks/ptr_0130410659.html", acknowledgement = ack-nhfb, keywords = "Internet programming; Web sites -- design", } @Article{Wilson:2002:PBS, author = "Gregory V. Wilson", title = "Programmer's Bookshelf: Sometimes You Get What You Want", journal = j-DDJ, volume = "27", number = "2", pages = "107--170", month = feb, year = "2002", CODEN = "DDJOEB", ISSN = "1044-789X", bibdate = "Tue Feb 12 05:21:41 MST 2002", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.ddj.com/", abstract = "The books Greg examines this month include C++ Footprint and Performance Optimization; Python Standard Library; Applying Use Case Driven Object Modeling with UML; and Structure and Interpretation of Classical Mechanics.", acknowledgement = ack-nhfb, fjournal = "Dr. Dobb's Journal of Software Tools", } @Article{Blank:2003:PPB, author = "Douglas Blank and Deepak Kumar and Lisa Meeden and Holly Yanco", title = "{Pyro}: a {Python}-based versatile programming environment for teaching robotics", journal = j-JERIC, volume = "3", number = "4", pages = "1--15", month = dec, year = "2003", CODEN = "????", ISSN = "1531-4278", bibdate = "Tue Apr 26 17:40:41 MDT 2005", bibsource = "http://www.acm.org/pubs/contents/journals/jeric/; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "ACM Journal on Educational Resources in Computing (JERIC)", } @Article{Blank:2003:PRE, author = "Douglas Blank and Lisa Meeden and Deepak Kumar", title = "{Python} robotics: an environment for exploring robotics beyond {LEGOs}", journal = j-SIGCSE, volume = "35", number = "1", pages = "317--321", month = jan, year = "2003", CODEN = "SIGSD3", DOI = "http://dx.doi.org/10.1145/792548.611996", ISSN = "0097-8418", ISSN-L = "0097-8418", bibdate = "Sat Nov 17 16:56:59 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigcse2000.bib", abstract = "This paper describes Pyro, a robotics programming environment designed to allow inexperienced undergraduates to explore topics in advanced robotics. Pyro, which stands for Python Robotics, runs on a number of advanced robotics platforms. In addition, programs in Pyro can abstract away low-level details such that individual programs can work unchanged across very different robotics hardware. Results of using Pyro in an undergraduate course are discussed.", acknowledgement = ack-nhfb, fjournal = "SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education)", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J688", } @Article{Cottom:2003:USB, author = "Teresa L. Cottom", title = "Using {SWIG} to Bind {C++} to {Python}", journal = j-COMPUT-SCI-ENG, volume = "5", number = "2", pages = "88--96, c3", month = mar # "\slash " # apr, year = "2003", CODEN = "CSENFA", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Sat Jan 3 18:25:05 MST 2004", bibsource = "http://csdl.computer.org/comp/mags/cs/2003/02/c2toc.htm; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://csdl.computer.org/comp/mags/cs/2003/02/c2088abs.htm; http://csdl.computer.org/dl/mags/cs/2003/02/c2088.htm; http://csdl.computer.org/dl/mags/cs/2003/02/c2088.pdf", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Book{Dawson:2003:PPA, author = "Michael Dawson", title = "{Python} programming for the absolute beginner", publisher = "Premier Press Inc.", address = "Boston, MA, USA", pages = "xviii + 452", year = "2003", ISBN = "1-59200-073-8 (paperback), 1-59200-073-8, 1-59200-269-2 (e-book)", ISBN-13 = "978-1-59200-073-9 (paperback), 978-1-59200-073-9, 978-1-59200-269-6 (e-book)", LCCN = "QA76.73.P98 D387 2003", bibdate = "Thu Apr 16 12:30:41 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://proquest.safaribooksonline.com/1592000738", acknowledgement = ack-nhfb, } @Article{Guzdial:2003:MCC, author = "Mark Guzdial", title = "A media computation course for non-majors", journal = j-SIGCSE, volume = "35", number = "3", pages = "104--108", month = sep, year = "2003", CODEN = "SIGSD3", DOI = "http://dx.doi.org/10.1145/961290.961542", ISSN = "0097-8418", ISSN-L = "0097-8418", bibdate = "Sat Nov 17 16:57:03 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigcse2000.bib", abstract = "Computing may well become considered an essential part of a liberal education, but introductory programming courses will not look like the way that they do today. Current CSI course are failing dramatically. We are developing a new course, to be taught starting in Spring 2003, which uses computation for communication as a guiding principle. Students learn to program by writing Python programs for manipulating sound, images, and movies. This paper describes the course development and the tools developed for the course. The talk will include the first round of assessment results.", acknowledgement = ack-nhfb, fjournal = "SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education)", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J688", } @Book{Hightower:2003:PPJ, author = "Richard Hightower", title = "{Python} programming with the {Java} class libraries: a tutorial for building {Web} and Enterprise applications with {Jython}", publisher = pub-AW, address = pub-AW:adr, pages = "xii + 620", year = "2003", ISBN = "0-201-61616-5", ISBN-13 = "978-0-201-61616-3", LCCN = "QA76.73.P98 H54 2003", bibdate = "Tue May 6 05:26:58 MDT 2003", bibsource = "http://www.math.utah.edu/pub/tex/bib/java2000.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "This tutorial begins with coverage of some of the basics of Python programming. Using plenty of skill-building exercises and interactive programming sessions, this book will help those new to programming develop an understanding of concepts and practical techniques. For experienced programmers, the book demonstrates Python's breadth of capabilities and shows the ways that Python interfaces with Java APIs for professional application development.'' ``In addition, the book contains instructions for downloading and installing the Python language and the Java Development Kit (JDK). Terminology, definitions, explanations, and numerous code samples make this book a useful learning experience.'' ``Whether you are sophisticated computer user new to programming or a serious application developer, Python Programming with the Java Class Libraries will give you insight into the power of Python and the know-how to put it to work.", acknowledgement = ack-nhfb, keywords = "application software -- development; Java (computer program language); Python (computer program language)", tableofcontents = "1: Jython Overview \\ 2: Statements and Expressions \\ 3: Operators and String Formatting \\ 4: Control Flow \\ 5: Organizing Your Code \\ 6: Object-Oriented Programming \\ 7: Errors and Exceptions \\ 8: Working with Files \\ 9: Built-In Functions \\ 10: Working with Strings \\ 11: Interfacing with Java \\ 12: Working with Java Streams \\ 13: JFC Fundamentals \\ 14: First Swing Application, Layout, and Menus \\ 15: Graphics and Events \\ 16: Advanced Swing \\ 17: SQL and JDBC \\ 18: Applets \\ App. A: Installing Jython on Windows \\ App. B: Installing Jython on Linux / Jaysen Lorenzen \\ App. C: The Power of Scripting \\ App. D: Java and Python: A Comparison \\ App. E: Regular Expressions / Jaysen Lorenzen", } @Article{Hinsen:2003:HLP, author = "Konrad Hinsen", title = "High-Level Parallel Software Development with {Python} and {BSP}", journal = j-PARALLEL-PROCESS-LETT, volume = "13", number = "3", pages = "473--??", month = sep, year = "2003", CODEN = "PPLTEE", ISSN = "0129-6264 (print), 1793-642X (electronic)", bibdate = "Sat Nov 6 18:06:31 MST 2004", bibsource = "http://ejournals.wspc.com.sg/ppl/; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Parallel Processing Letters", journal-URL = "http://www.worldscientific.com/loi/ppl", } @InProceedings{Langtangen:2003:UDP, author = "H. P. Langtangen and K.-A. Mardal", title = "Using {Diffpack} from {Python} Scripts", crossref = "Langtangen:2003:ATC", volume = "33", pages = "321--360", year = "2003", DOI = "http://dx.doi.org/10.1007/978-3-642-18237-2_8", bibdate = "Fri Dec 21 16:04:02 MST 2012", bibsource = "http://www.math.utah.edu/pub/tex/bib/lncse.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://link.springer.com/content/pdf/10.1007/978-3-642-18237-2_8", acknowledgement = ack-nhfb, book-DOI = "http://dx.doi.org/10.1007/978-3-642-18237-2", book-URL = "http://www.springerlink.com/content/978-3-642-18237-2", } @Book{Martelli:2003:PN, author = "Alex Martelli", title = "{Python} in a nutshell", publisher = pub-ORA, address = pub-ORA:adr, pages = "xv + 636", year = "2003", ISBN = "0-596-00188-6", ISBN-13 = "978-0-596-00188-9", LCCN = "QA76.73.P98 M37 2003", bibdate = "Mon Apr 18 15:03:37 MDT 2005", bibsource = "http://www.math.utah.edu/pub/tex/bib/ora.bib; http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", URL = "http://www.oreilly.com/catalog/9780596001889", acknowledgement = ack-nhfb, subject = "Python (Computer program language)", tableofcontents = "Part I: Getting Started with Python \\ 1: Introduction to Python \\ 2: Installation \\ 3: The Python Interpreter \\ Part II: Core Python Language and Built-ins \\ 4: The Python Language \\ 5: Object-Oriented Python \\ 6: Exceptions \\ 7: Modules \\ 8: Core Built-ins \\ 9: Strings and Regular Expressions \\ Part III: Python Library and Extension Modules \\ 10: File and Text Operations \\ 11: Persistence and Databases \\ 12: Time Operations \\ 13: Controlling Execution \\ 14: Threads and Processes \\ 15: Numeric Processing \\ 16: Tkinter GUIs \\ 17: Testing, Debugging, and Optimizing \\ Part IV: Network and Web Programming \\ 18: Client-Side Network Protocol Modules", } @Book{Mertz:2003:TPP, author = "David Mertz", title = "Text processing in {Python}", publisher = pub-AW, address = pub-AW:adr, pages = "xix + 520", year = "2003", ISBN = "0-321-11254-7", ISBN-13 = "978-0-321-11254-5", LCCN = "QA76.9.T48 M47 2003", bibdate = "Wed Oct 14 08:00:43 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "\booktitle{Text Processing in Python} is an example-driven, hands-on tutorial that carefully teaches programmers how to accomplish numerous text processing tasks using the Python language. Filled with concrete examples, this book provides efficient and effective solutions to specific text processing problems and practical strategies for dealing with all types of text processing challenges.", acknowledgement = ack-nhfb, subject = "Text processing (Computer science); Python (Computer program language); Python (Computer program language); Text processing (Computer science); Python (programmeertaal); Tekstverwerking.; Programming Languages", tableofcontents = "1: Python Basics \\ 2: Basic String Operations \\ 3: Regular Expressions \\ 4: Parsers and State Machines \\ 5: Internet Tools and Techniques \\ App. A: Selective and Impressionistic Short Review of Python \\ App. B: Data Compression Primer \\ App. C: Understanding Unicode \\ App. D: A State Machine for Adding Markup to Text", } @Article{Miller:2003:OCP, author = "W. W. Miller and C. Sontag and J. F. Rose", title = "{OPUS}: a {CORBA} Pipeline for {Java}, {Python}, and {Perl} Applications", journal = "Astronomical Society of the Pacific Conference Series", volume = "295", pages = "261--264", year = "2003", CODEN = "????", ISSN = "1050-3390", bibdate = "Tue Sep 2 06:25:03 MDT 2003", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; Ingenta database", acknowledgement = ack-nhfb, } @Article{Porter:2003:MDX, author = "Brett Porter", title = "Managing Devices with {XML-RPC}", journal = j-DDJ, volume = "28", number = "4", pages = "66, 68--70", month = apr, year = "2003", CODEN = "DDJOEB", ISSN = "1044-789X", bibdate = "Thu Jun 12 05:46:22 MDT 2003", bibsource = "http://www.ddj.com/articles/2003/0304/; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.ddj.com/documents/s=7827/ddj0304h/", abstract = "Brett presents a client-side monitor application (written in Python) that uses XML-RPC to monitor the state of a simulated device.", acknowledgement = ack-nhfb, fjournal = "Dr. Dobb's Journal of Software Tools", } @Article{Prechelt:2003:SLG, author = "L. Prechelt", title = "Are Scripting Languages Any Good? {A} Validation of {Perl}, {Python}, {Rexx}, and {Tcl} against {C}, {C}++, and {Java}", journal = "Advances in Computers", volume = "57", publisher = "Academic Press, Inc.", pages = "207--271", year = "2003", CODEN = "????", ISSN = "0065-2458", bibdate = "Tue Aug 5 06:56:44 MDT 2003", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; Ingenta database", acknowledgement = ack-nhfb, } @Article{Shannon:2003:ABF, author = "Christine Shannon", title = "Another breadth-first approach to {CS I} using {Python}", journal = j-SIGCSE, volume = "35", number = "1", pages = "248--251", month = jan, year = "2003", CODEN = "SIGSD3", DOI = "http://dx.doi.org/10.1145/792548.611980", ISSN = "0097-8418", ISSN-L = "0097-8418", bibdate = "Sat Nov 17 16:56:59 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigcse2000.bib", abstract = "In an effort to serve the needs of both majors and non-majors, the Computer Science Department at Centre College has restructured the CS I course so that it uses the language Python, devotes more attention to the Internet and the World Wide Web, addresses ethical and societal issues, and introduces students to programmable robots and an SQL database. This diverse course has been attractive to the students while still maintaining a strong emphasis on programming.", acknowledgement = ack-nhfb, fjournal = "SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education)", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J688", } @Book{Stubblebine:2003:REP, author = "Tony Stubblebine", title = "Regular expression pocket reference", publisher = pub-ORA, address = pub-ORA:adr, pages = "vi + 93", year = "2003", ISBN = "0-596-00415-X", ISBN-13 = "978-0-596-00415-6", LCCN = "QA76.9.T48 S78 2003", bibdate = "Mon Apr 18 15:06:11 MDT 2005", bibsource = "http://www.math.utah.edu/pub/tex/bib/ora.bib; http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", URL = "http://www.oreilly.com/catalog/9780596004156", acknowledgement = ack-nhfb, remark = "``Regular expressions for Perl, C, PHP, Python, Java, and .NET'' --- cover.", subject = "Text processing (Computer science); Programming languages (Electronic computers); Syntax", } @Book{vanRossum:2003:IPR, editor = "Guido van Rossum and Fred L. {Drake, Jr.}", title = "An introduction to {Python}: release 2.2.2", publisher = pub-NETWORK-THEORY, address = pub-NETWORK-THEORY:adr, pages = "ii + 115", year = "2003", ISBN = "0-9541617-6-9", ISBN-13 = "978-0-9541617-6-7", LCCN = "????", bibdate = "Mon Jul 4 16:13:06 MDT 2005", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; library.ox.ac.uk:210/ADVANCE", acknowledgement = ack-nhfb, remark = "Reissued in 2006 as release 2.6, but with same ISBN.", subject = "Python (Computer program language)", } @Book{Blaess:2004:SSL, author = "Christophe Blaess", title = "Scripts sous {Linux}: {Shell Bash}, {Sed}, {Awk}, {Perl}, {TCL}, {Tk}, {Python}, {Ruby}", publisher = pub-EYROLLES, address = pub-EYROLLES:adr, edition = "Second", pages = "xxi + 761", year = "2004", ISBN = "2-212-11405-2", ISBN-13 = "978-2-212-11405-8", LCCN = "QA76.76O63; QA76.7", bibdate = "Fri Jul 01 14:51:40 2005", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, } @Article{Blank:2004:PPB, author = "Douglas Blank and Deepak Kumar and Lisa Meeden and Holly Yanco", title = "{Pyro}: a python-based versatile programming environment for teaching robotics", journal = j-JERIC, volume = "4", number = "3", pages = "1--15", month = sep, year = "2004", CODEN = "????", ISSN = "1531-4278", bibdate = "Sat Sep 17 14:21:54 MDT 2005", bibsource = "http://www.acm.org/pubs/contents/journals/jeric/; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "ACM Journal on Educational Resources in Computing (JERIC)", } @Article{Decaluwe:2004:MPB, author = "Jan Decaluwe", title = "{MyHDL}: a {Python}-based hardware description language", journal = j-LINUX-J, volume = "2004", number = "127", pages = "??--??", month = nov, year = "2004", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Sat Dec 24 17:46:02 MST 2005", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Book{Gutschmidt:2004:GPP, author = "Tom Gutschmidt", title = "Game programming with {Python}, {Lua}, and {Ruby}", publisher = "Premier Press", address = "Boston, MA, USA", pages = "xxvi + 437", year = "2004", ISBN = "1-59200-077-0, 1-59200-408-3 (e-book)", ISBN-13 = "978-1-59200-077-7, 978-1-59200-408-9 (e-book)", LCCN = "QA76.76.C672 G88 2004b", bibdate = "Thu Apr 16 12:29:09 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://proquest.safaribooksonline.com/1592000770", acknowledgement = ack-nhfb, } @Article{Kirby:2004:AFN, author = "Robert C. Kirby", title = "{Algorithm 839}: {FIAT}, a new paradigm for computing finite element basis functions", journal = j-TOMS, volume = "30", number = "4", pages = "502--516", month = dec, year = "2004", CODEN = "ACMSCU", DOI = "http://dx.doi.org/10.1145/1039813.1039820", ISSN = "0098-3500 (print), 1557-7295 (electronic)", ISSN-L = "0098-3500", bibdate = "Tue Apr 12 06:34:31 MDT 2005", bibsource = "http://www.acm.org/pubs/contents/journals/toms/; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Much of finite element computation is constrained by the difficulty of evaluating high-order nodal basis functions. While most codes rely on explicit formulae for these basis functions, we present a new approach that allows us to construct a general class of finite element basis functions from orthonormal polynomials and evaluate and differentiate them at any points. This approach relies on fundamental ideas from linear algebra and is implemented in Python using several object-oriented and functional programming techniques.", acknowledgement = ack-nhfb, fjournal = "ACM Transactions on Mathematical Software", journal-URL = "http://portal.acm.org/toc.cfm?idx=J782", } @Book{Lutz:2004:LP, author = "Mark Lutz and David Ascher", title = "Learning {Python}", publisher = pub-ORA, address = pub-ORA:adr, edition = "Second", pages = "xxvi + 591", year = "2004", ISBN = "0-596-00281-5", ISBN-13 = "978-0-596-00281-7", LCCN = "QA76.73.P98 L877 2004", bibdate = "Mon Apr 18 15:04:41 MDT 2005", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", URL = "http://www.oreilly.com/catalog/9780596002817", acknowledgement = ack-nhfb, subject = "Python (Computer program language)", } @Book{Pilgrim:2004:DP, author = "Mark Pilgrim", title = "Dive into {Python}", publisher = pub-APRESS, address = pub-APRESS:adr, pages = "xviii + 413", year = "2004", ISBN = "1-59059-356-1 (paperback)", ISBN-13 = "978-1-59059-356-1 (paperback)", LCCN = "QA76.73.P98 P55 2004", bibdate = "Tue Mar 10 17:27:28 MDT 2015", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", series = "The expert's voice in open source.", acknowledgement = ack-nhfb, subject = "Python (Computer program language)", tableofcontents = "Installing Python \\ Your first Python program \\ Native datatypes \\ The power of introspection \\ Objects and object-orientation \\ Exceptions and file handling \\ Regular expressions \\ HTML processing \\ XML processing \\ Scripts and streams \\ HTTP web services \\ SOAP web services \\ Unit testing \\ Test-first programming \\ Refactoring \\ Functional programming \\ Dynamic functions \\ Performance tuning", } @Article{Reed:2004:RAD, author = "David Reed", title = "Rapid application development with {Python} and {Glade}", journal = j-LINUX-J, volume = "2004", number = "123", pages = "??--??", month = jul, year = "2004", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Sat Dec 24 17:45:58 MST 2005", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Book{Stubblebine:2004:SHD, author = "Tony Stubblebine and Junko Mishima", title = "Seiki hyogen desukutoppu rifarensu: regular expressions for {Perl}, {C}, {PHP}, {Python}, {Java}, and {.NET}", publisher = "Orairi Japan", address = "Tokyo, Japan", pages = "vi + 96", year = "2004", ISBN = "4-87311-170-6", ISBN-13 = "978-4-87311-170-4", LCCN = "????", bibdate = "Wed Oct 14 08:00:43 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/ora.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, } @Article{Broker:2005:UPL, author = "Oliver Br{\"o}ker and Oscar Chinellato and Roman Geus", title = "Using {Python} for large scale linear algebra applications", journal = j-FUT-GEN-COMP-SYS, volume = "21", number = "6", pages = "969--979", month = jun, year = "2005", CODEN = "FGSEVI", ISSN = "0167-739X (print), 1872-7115 (electronic)", ISSN-L = "0167-739X", bibdate = "Fri Jul 15 08:00:46 MDT 2005", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.sciencedirect.com/science/journal/0167739X", acknowledgement = ack-nhfb, fjournal = "Future Generation Computer Systems", journal-URL = "http://www.sciencedirect.com/science/journal/0167739X", } @Article{Cai:2005:PPP, author = "Xing Cai and Hans Petter Langtangen and Halvard Moe", title = "On the performance of the {Python} programming language for serial and parallel scientific computations", journal = j-SCI-PROG, volume = "13", number = "1", pages = "31--56", month = "????", year = "2005", CODEN = "SCIPEV", ISSN = "1058-9244 (print), 1875-919X (electronic)", ISSN-L = "1058-9244", bibdate = "Wed Sep 1 14:50:28 MDT 2010", bibsource = "http://www.iospress.nl/; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Scientific Programming", journal-URL = "http://iospress.metapress.com/content/1058-9244", } @Article{Dalcin:2005:MP, author = "Lisandro Dalc{\'\i}n and Rodrigo Paz and Mario Storti", title = "{MPI} for {Python}", journal = j-J-PAR-DIST-COMP, volume = "65", number = "9", pages = "1108--1115", month = sep, year = "2005", CODEN = "JPDCER", ISSN = "0743-7315 (print), 1096-0848 (electronic)", ISSN-L = "0743-7315", bibdate = "Fri Jul 11 20:32:33 MDT 2008", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.sciencedirect.com/science/journal/07437315", acknowledgement = ack-nhfb, fjournal = "Journal of Parallel and Distributed Computing", journal-URL = "http://www.sciencedirect.com/science/journal/07437315", } @Article{Dubois:2005:NP, author = "Paul F. Dubois", title = "A Nest of {Pythons}", journal = j-COMPUT-SCI-ENG, volume = "7", number = "6", pages = "81--84", month = nov # "\slash " # dec, year = "2005", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2005.108", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Mon Apr 3 09:37:32 MDT 2006", bibsource = "http://csdl.computer.org/comp/mags/cs/2005/06/c6toc.htm; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Book{Hetland:2005:BPN, author = "Magnus Lie Hetland", title = "Beginning {Python}: from novice to professional", publisher = pub-APRESS, address = pub-APRESS:adr, pages = "xxx + 604", year = "2005", ISBN = "1-59059-519-X", ISBN-13 = "978-1-59059-519-0", LCCN = "QA76.73.P98 H48 2005", bibdate = "Mon Jun 26 17:17:50 MDT 2006", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", acknowledgement = ack-nhfb, remark = "The expert's voice in Open Source.", subject = "Python (Computer program language)", } @Article{Kinder:2005:EDP, author = "Ken Kinder", title = "Event-driven programming with {Twisted} and {Python}", journal = j-LINUX-J, volume = "2005", number = "131", pages = "??--??", month = mar, year = "2005", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Sat Dec 24 17:46:05 MST 2005", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Book{Lutz:2005:PPR, author = "Mark Lutz", title = "{Python} pocket reference", publisher = pub-ORA-MEDIA, address = pub-ORA-MEDIA:adr, edition = "Third", pages = "ix + 148", year = "2005", ISBN = "0-596-00940-2 (paperback)", ISBN-13 = "978-0-596-00940-3 (paperback)", LCCN = "QA76.73.P98 L89 2005", bibdate = "Thu Sep 22 19:02:42 MDT 2005", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", URL = "http://www.oreilly.com/catalog/9780596009403", acknowledgement = ack-nhfb, subject = "Python (Computer program language)", } @Book{Martelli:2005:PC, editor = "Alex Martelli and Anna {Martelli Ravenscroft} and David Ascher", title = "{Python} cookbook", publisher = pub-ORA-MEDIA, address = pub-ORA-MEDIA:adr, edition = "Second", pages = "xxxiii + 807", year = "2005", ISBN = "0-596-00797-3", ISBN-13 = "978-0-596-00797-3", LCCN = "QA76.73.P98 P983 2005", bibdate = "Thu Oct 6 07:23:24 MDT 2005", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; melvyl.cdlib.org:210/CDL90", acknowledgement = ack-nhfb, remark = "Recipes from the Python community. Covers Python 2.3 and 2.4---Cover.", subject = "Python (Computer program language)", } @Article{Orr:2005:RDP, author = "Mike Orr", title = "Review: {{\em Dive into Python}}", journal = j-LINUX-J, volume = "2005", number = "130", pages = "??--??", month = feb, year = "2005", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Sat Dec 24 17:46:04 MST 2005", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Book{vanRossum:2005:PLR, author = "Guido van Rossum and Fred L. {Drake, Jr.}", title = "{Python} Language Reference Manual", publisher = pub-NETWORK-THEORY, address = pub-NETWORK-THEORY:adr, pages = "ii + 112", year = "2005", ISBN = "0-9541617-8-5", ISBN-13 = "978-0-9541617-8-1", LCCN = "QA76.73.P98", bibdate = "Mon Jul 04 16:02:34 2005", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; library.ox.ac.uk:210/ADVANCE", URL = "http://www.network-theory.co.uk/python/language/", acknowledgement = ack-nhfb, subject = "Python (Computer program language)", } @Book{vanRossum:2005:PTI, author = "Guido van Rossum and Fred L. {Drake, Jr.}", title = "The {Python} Tutorial --- An Introduction to {Python}", publisher = pub-NETWORK-THEORY, address = pub-NETWORK-THEORY:adr, pages = "124 (est.)", year = "2005", ISBN = "0-9541617-6-9", ISBN-13 = "978-0-9541617-6-7", LCCN = "????", bibdate = "Mon Jul 04 16:04:19 2005", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, } @Book{Wilson:2005:DCS, author = "Greg Wilson", title = "Data crunching: solve everyday problems using {Java}, {Python} and more", publisher = "Pragmatic Bookshelf", address = "Raleigh, NC, USA", pages = "viii + 193", year = "2005", ISBN = "0-9745140-7-1", ISBN-13 = "978-0-9745140-7-9", LCCN = "QA63 .W55 2005", bibdate = "Thu Oct 6 07:25:06 MDT 2005", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; melvyl.cdlib.org:210/CDL90", series = "The pragmatic programmers", acknowledgement = ack-nhfb, subject = "Problem solving; Data processing; Java (Computer program language); Python (Computer program language)", } @Book{Andersson:2006:PSN, author = "Mats Andersson and Robert Wedin", title = "{Python} scripting for network management: {PyMIP--TeMIP} made simple", howpublished = "Examensarbete, ,", publisher = "Lule{\aa} tekniska universitet", address = "Skellefte{\aa}, Sweden", year = "2006", ISSN = "1404-5494", bibdate = "Thu Apr 16 08:24:40 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", series = "Examensarbete, H{\"o}gskoleingenj{\"o}rsprogrammet", URL = "http://epubl.ltu.se/1404-5494/2006/043/; http://epubl.ltu.se/1404-5494/2006/043/LTU-HIP-EX-06043-SE.pdf", acknowledgement = ack-nhfb, language = "Swedish", } @Book{Beazley:2006:PER, author = "David M. Beazley", title = "{Python} essential reference", publisher = pub-SAMS, address = pub-SAMS:adr, edition = "Third", pages = "xiii + 625", year = "2006", ISBN = "0-672-32862-3 (paperback)", ISBN-13 = "978-0-672-32862-6 (paperback)", LCCN = "QA76.73.P98 B43 2006", bibdate = "Thu Apr 16 08:47:14 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", acknowledgement = ack-nhfb, remark = "Previous ed.: Indianapolis, Ind.: New Riders, 2001.", subject = "Python (Computer program language)", } @Article{Briggs:2006:IER, author = "Keith Briggs", title = "Implementing exact real arithmetic in {python}, {C++} and {C}", journal = j-THEOR-COMP-SCI, volume = "351", number = "1", pages = "74--81", day = "14", month = feb, year = "2006", CODEN = "TCSCDI", ISSN = "0304-3975 (print), 1879-2294 (electronic)", ISSN-L = "0304-3975", bibdate = "Tue Mar 29 06:48:55 MDT 2011", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.sciencedirect.com/science/journal/03043975", abstract = "I discuss the design and performance issues arising in the efficient implementation of the scaled-integer exact real arithmetic model introduced by Boehm and others. This system represents a real number with a automatically controlled level of precision by a rational with implicit denominator. I describe three practical codes, in python, C++ and C. These allow the convenient use of this computational paradigm in commonly used imperative languages.", acknowledgement = ack-nhfb, fjournal = "Theoretical Computer Science", journal-URL = "http://www.sciencedirect.com/science/journal/03043975", } @Book{Browning:2006:DLP, author = "James Burton Browning", title = "Design, logic, and programming with {Python}: a hands-on approach", publisher = "iUniverse", address = "New York, NY, USA", pages = "xii + 214", year = "2006", ISBN = "0-595-40810-9", ISBN-13 = "978-0-595-40810-8", LCCN = "????", bibdate = "Thu Apr 16 09:29:02 2009", bibsource = "http://copac.ac.uk/; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, remark = "Edited by C. Anne Joyner.", } @InProceedings{Cai:2006:PPS, author = "Xing Cai and Hans Petter Langtangen", title = "Parallelizing {PDE} Solvers Using the {Python} Programming Language", crossref = "Bruaset:2006:NSP", volume = "51", pages = "295--325", year = "2006", DOI = "http://dx.doi.org/10.1007/3-540-31619-1_9", bibdate = "Fri Dec 21 16:46:42 MST 2012", bibsource = "http://www.math.utah.edu/pub/tex/bib/lncse.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://link.springer.com/content/pdf/10.1007/3-540-31619-1_9", acknowledgement = ack-nhfb, book-DOI = "http://dx.doi.org/10.1007/3-540-31619-1", book-URL = "http://www.springerlink.com/content/978-3-540-31619-0", } @Book{Dawson:2006:PPA, author = "Mike Dawson", title = "{Python} programming for the absolute beginner", publisher = "Thomson Course Technology", address = "Boston, MA, USA", edition = "Second", pages = "xxiv + 447", year = "2006", ISBN = "1-59863-112-8", ISBN-13 = "978-1-59863-112-8", LCCN = "QA76.73.P98 D39 2006", bibdate = "Thu Apr 16 08:48:00 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", acknowledgement = ack-nhfb, subject = "Python (Computer program language)", } @Book{Fettig:2006:TNP, author = "Abe Fettig and Glyph Lefkowitz", title = "Twisted network programming essentials", publisher = pub-ORA, address = pub-ORA:adr, pages = "xix + 213", year = "2006", ISBN = "0-596-10032-9", ISBN-13 = "978-0-596-10032-2", LCCN = "QA76.73.P98 F48 2005eb; QA76.73.P98", bibdate = "Tue Aug 5 17:47:55 MDT 2008", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; melvyl.cdlib.org:210/CDL90", URL = "http://www.oreilly.com/catalog/9780596100322", acknowledgement = ack-nhfb, remark = "Foreword by Glyph Lefkowitz, creator of Twisted", subject = "Python (Computer program language); Internet programming; Computer networks; Design and construction; Open source software", } @Book{Goebel:2006:BPT, author = "John A. Goebel and Adil Hasan and Francesco Safai Tehran", title = "The book of {Python}: from the tip of the tongue to the end of the tale", publisher = pub-NO-STARCH, address = pub-NO-STARCH:adr, pages = "1000", year = "2006", ISBN = "1-59327-103-4 (paperback)", ISBN-13 = "978-1-59327-103-9 (paperback)", LCCN = "QA76.73.P98", bibdate = "Thu Apr 16 09:18:13 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; library.tcd.ie:210/advance; z3950.gbv.de:20011/gvk", URL = "http://www.loc.gov/catdir/toc/ecip064/2005034382.html", acknowledgement = ack-nhfb, subject = "Python (Computer program language)", } @Book{Harrison:2006:MSP, author = "Guy Harrison and Steven Feuerstein", title = "{MySQL} stored procedure programming: building high-performance web applications with {PHP}, {Perl}, {Python}, {Java} \& {.NET}", publisher = pub-ORA, address = pub-ORA:adr, pages = "xxiii + 609", year = "2006", ISBN = "0-596-10089-2", ISBN-13 = "978-0-596-10089-6", LCCN = "QA76.73.S67 H377 2006eb; QA76.73.S67", bibdate = "Tue Aug 5 17:49:10 MDT 2008", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; melvyl.cdlib.org:210/CDL90", URL = "http://www.oreilly.com/catalog/9780596100896", acknowledgement = ack-nhfb, subject = "SQL (Computer program language); Database management", } @Article{Hinsen:2006:UBP, author = "Konrad Hinsen and Hans Petter Langtangen and Ola Skavhaug and {\AA}smund {\O}deg{\aa}rd", title = "Using {BSP} and {Python} to simplify parallel programming", journal = j-FUT-GEN-COMP-SYS, volume = "22", number = "1--2", pages = "123--157", month = jan, year = "2006", CODEN = "FGSEVI", ISSN = "0167-739X (print), 1872-7115 (electronic)", ISSN-L = "0167-739X", bibdate = "Sat Sep 11 13:08:05 MDT 2010", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.sciencedirect.com/science/journal/0167739X", acknowledgement = ack-nhfb, fjournal = "Future Generation Computer Systems", journal-URL = "http://www.sciencedirect.com/science/journal/0167739X", } @Article{Holt:2006:IPF, author = "Alexander Holt and Sarah Rauchas and Ian Sanders", title = "Introducing {Python} into the first year curriculum at {Wits}", journal = j-SIGCSE, volume = "38", number = "3", pages = "335--335", month = sep, year = "2006", CODEN = "SIGSD3", DOI = "http://dx.doi.org/10.1145/1140123.1140243", ISSN = "0097-8418", ISSN-L = "0097-8418", bibdate = "Sat Nov 17 16:57:28 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigcse2000.bib", abstract = "Since 1999 the School of Computer Science (CS) at the University of Witwatersrand (Wits) has been using Scheme as the first programming language our students encounter [2]. We chose Scheme because it is a language unfamiliar to most of the first year students, so that the students with imperative programming experience from school would not have an advantage over those who did not. Also, it has a simple syntax which we felt that students without prior programming experience could easily learn. Finally, the functional paradigm allows a more direct mapping of mathematical concepts to programs, which fits with the mathematical emphasis in our curriculum.", acknowledgement = ack-nhfb, fjournal = "SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education)", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J688", } @Article{Howard:2006:MYS, author = "Mike Howard", title = "Maybe You Should Use {Python}", journal = j-LOGIN, volume = "31", number = "5", pages = "??--??", month = oct, year = "2006", CODEN = "LOGNEM", ISSN = "1044-6397", ISSN-L = "1044-6397", bibdate = "Fri Dec 7 11:34:26 MST 2012", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/usenix2000.bib; https://www.usenix.org/publications/login", URL = "https://www.usenix.org/publications/login/october-2006-volume-31-number-5/maybe-you-should-use-python", acknowledgement = ack-nhfb, fjournal = ";login: the USENIX Association newsletter", } @MastersThesis{Lacheiner:2006:EPB, author = "Hermann Lacheiner", title = "{Entwicklung einer auf Python basierenden Rich Client Platform f{\"u}r Linux}. ({German}) [{Development} of a {Python}-based {Rich Client Platform} for {Linux}]", type = "{Diplome-Arbeit}", school = "Universit{\"a}t Linz", address = "Linz, Austria", pages = "v + 86", year = "2006", bibdate = "Thu Apr 16 09:12:12 2009", bibsource = "http://meteor.bibvb.ac.at/; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, language = "German", } @Book{Langtangen:2006:PSC, author = "Hans Petter Langtangen", title = "{Python} scripting for computational science", volume = "3", publisher = pub-SV, address = pub-SV:adr, edition = "Second", pages = "xxiv + 736", year = "2006", DOI = "http://dx.doi.org/10.1007/3-540-31269-2", ISBN = "3-540-29415-5", ISBN-13 = "978-3-540-29415-3", LCCN = "????", bibdate = "Thu Apr 16 08:29:23 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.bibsys.no:2100/BIBSYS", series = "Texts in computational science and engineering", acknowledgement = ack-nhfb, subject = "Python", } @Book{Lindblad:2006:PP, author = "Erik Lindblad", title = "Programmering i {Python}", publisher = pub-STUDENTLITTERATUR, address = pub-STUDENTLITTERATUR:adr, pages = "406", year = "2006", ISBN = "91-44-04520-4", ISBN-13 = "978-91-44-04520-7", LCCN = "????", bibdate = "Thu Apr 16 08:22:02 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.bibsys.no:2100/BIBSYS", acknowledgement = ack-nhfb, language = "Swedish", subject = "Python", } @Book{Lingl:2006:PKC, author = "Gregor Lingl", title = "{Python f{\"u}r Kids: [mit CD ; auf CD: aktuelles Python 2.5, das Grafik-Modul xturtle und alle Programmbeispiele]}", publisher = "bhv, Redline", address = "Heidelberg, Germany", edition = "Second", pages = "416", year = "2006", ISBN = "3-8266-8622-5", ISBN-13 = "978-3-8266-8622-1", LCCN = "????", bibdate = "Thu Apr 16 09:07:47 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.gbv.de:20011/gvk", price = "EUR 19.95", acknowledgement = ack-nhfb, language = "German", subject = "Python (Programmiersprache); Kindersachbuch; CD-ROM f{\"u}r Kinder", } @Book{Lutz:2006:PP, author = "Mark Lutz", title = "Programming {Python}", publisher = pub-ORA, address = pub-ORA:adr, edition = "Third", pages = "xlii + 1552", year = "2006", ISBN = "0-596-00925-9", ISBN-13 = "978-0-596-00925-0", LCCN = "QA76.73.P98 L88 2006eb; QA76.73.P98 L88 2006; QA76.73.P98", bibdate = "Tue Aug 5 17:45:53 MDT 2008", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; melvyl.cdlib.org:210/CDL90", URL = "http://www.oreilly.com/catalog/9780596009250", abstract = "This third edition has been updated to reflect current best practices and the abundance of changes introduced by the latest version of the language, Python 2.5. Whether you're a novice or an advanced practitioner, you'll find this refreshed book more than lives up to its reputation. Programming Python, 3rd Edition, teaches you the right way to code. It explains Python language syntax and programming techniques in a clear and concise manner, with numerous examples that illustrate both correct usage and common idioms. By reading this comprehensive guide, you'll learn how to apply Python in real-world problem domains such as: GUI programming, Internet scripting, parallel processing, database management, networked applications. You'll also learn how to use the Python language in realistically scaled programs--concepts such as Object-Oriented Programming (OOP) and code reuse are recurring side themes throughout this text.", acknowledgement = ack-nhfb, remark = "Previous edition 2001.", subject = "Python (Computer program language)", tableofcontents = "Part I: The Beginning \\ 1: Introducing Python / 3 \\ ``And Now for Something Completely Different'' / 3 \\ Python Philosophy 101 / 3 \\ The Life of Python / 8 \\ Signs of the Python Times / 9 \\ The Compulsory Features List / 15 \\ What's Python Good For? / 17 \\ What's Python Not Good For? / 20 \\ Truth in Advertising / 22 \\ 2: A Sneak Preview / 24 \\ ``Programming Python: The Short Story'' / 24 \\ The Task / 24 \\ Step 1: Representing Records / 25 \\ Step 2: Storing Records Persistently / 35 \\ Step 3: Stepping Up to OOP / 47 \\ Step 4: Adding Console Interaction / 57 \\ Step 5: Adding a GUI / 60 \\ Step 6: Adding a Web Interface / 70 \\ The End of the Demo / 86 \\ Part II: System Programming \\ 3: System Tools / 89 \\ ``The os.path to Knowledge'' / 89 \\ System Scripting Overview / 90 \\ Introducing the sys Module / 100 \\ Introducing the os Module / 104 \\ Script Execution Context / 113 \\ Current Working Directory / 114 \\ Command-Line Arguments / 117 \\ Shell Environment Variables / 119 \\ Standard Streams / 123 \\ 4: File and Directory Tools / 142 \\ ``Erase Your Hard Drive in Five Easy Steps!'' / 142 \\ File Tools / 142 \\ Directory Tools / 159 \\ 5: Parallel System Tools / 175 \\ ``Telling the Monkeys What to Do'' / 175 \\ Forking Processes / 176 \\ Threads / 183 \\ Program Exits / 201 \\ Interprocess Communication / 208 \\ Pipes / 209 \\ Signals / 218 \\ Other Ways to Start Programs / 221 \\ A Portable Program-Launch Framework / 230 \\ Other System Tools / 235 \\ 6: System Examples: Utilities / 236 \\ ``Splits and Joins and Alien Invasions'' / 236 \\ Splitting and Joining Files / 237 \\ Generating Forward-Link Web Pages / 247 \\ A Regression Test Script / 251 \\ Packing and Unpacking Files / 254 \\ Automated Program Launchers / 265 \\ 7: System Examples: Directories / 294 \\ ``The Greps of Wrath'' / 294 \\ Fixing DOS Line Ends / 294 \\ Fixing DOS Filenames / 307 \\ Searching Directory Trees / 311 \\ Visitor: Walking Trees Generically / 317 \\ Copying Directory Trees / 339 \\ Deleting Directory Trees / 345 \\ Comparing Directory Trees / 349 \\ Part III: GUI Programming \\ 8: Graphical User Interfaces / 365 \\ ``Here's Looking at You, Kid'' / 365 \\ Python GUI Development Options / 367 \\ Tkinter Overview / 371 \\ Climbing the GUI Learning Curve / 375 \\ Tkinter Coding Basics / 377 \\ Tkinter Coding Alternatives / 380 \\ Adding Buttons and Callbacks / 386 \\ Adding User-Defined Callback Handlers / 389 \\ Adding Multiple Widgets / 401 \\ Customizing Widgets with Classes / 406 \\ Reusable GUI Components with Classes / 408 \\ The End of the Tutorial / 414 \\ Python/Tkinter for Tcl/Tk Converts / 416 \\ 9: A Tkinter Tour, Part 1 / 418 \\ ``Widgets and Gadgets and GUIs, Oh My!'' / 418 \\ Configuring Widget Appearance / 419 \\ Top-Level Windows / 422 \\ Dialogs / 427 \\ Binding Events / 443 \\ Message and Entry / 448 \\ Checkbutton, Radiobutton, and Scale / 456 \\ Running GUI Code Three Ways / 468 \\ Images / 478 \\ Viewing and Processing Images with PIL / 483 \\ 10: A Tkinter Tour, Part 2 / 499 \\ ``On Today's Menu: Spam, Spam, and Spam'' / 499 \\ Menus / 499 \\ Listboxes and Scrollbars / 511 \\ Text / 517 \\ Canvas / 529 \\ Grids / 543 \\ Time Tools, Threads, and Animation / 559 \\ The End of the Tour / 570 \\ The PyDemos and PyGadgets Launchers / 571 \\ 11: GUI Coding Techniques / 583 \\ ``Building a Better Mouse Trap'' / 583 \\ GuiMixin: Common Tool Mixin Classes / 584 \\ GuiMaker: Automating Menus and Toolbars / 586 \\ ShellGui: GUIs for Command-Line Tools / 597 \\ GuiStreams: Redirecting Streams to Widgets / 605 \\ Reloading Callback Handlers Dynamically / 609 \\ Wrapping Up Top-Level Window Interfaces / 611 \\ GUIs, Threads, and Queues / 616 \\ More Ways to Add GUIs to Non-GUI Code / 624 \\ 12: Complete GUI Programs / 636 \\ ``Python, Open Source, and Camaros'' / 636 \\ PyEdit: A Text Editor Program/Object / 638 \\ PyPhoto: An Image Viewer and Resizer / 657 \\ PyView: An Image and Notes Slideshow / 668 \\ PyDraw: Painting and Moving Graphics / 676 \\ PyClock: An Analog/Digital Clock Widget / 685 \\ PyToe: A Tic-Tac-Toe Game Widget / 700 \\ Where to Go from Here / 704 \\ Part IV: Internet Programming \\ 13: Network Scripting / 709 \\ ``Tune In, Log On, and Drop Out'' / 709 \\ Plumbing the Internet / 713 \\ Socket Programming / 720 \\ Handling Multiple Clients / 732 \\ A Simple Python File Server / 753 \\ 14: Client-Side Scripting / 766 \\ ``Socket to Me!'' / 766 \\ FTP: Transferring Files over the Net / 767 \\ Processing Internet Email / 808 \\ POP: Fetching Email / 809 \\ SMTP: Sending Email / 817 \\ email: Parsing and Composing Mails / 826 \\ pymail: A Console-Based Email Client / 831 \\ The mailtools Utility Package / 839 \\ NNTP: Accessing Newsgroups / 862 \\ HTTP: Accessing Web Sites / 866 \\ Module urllib Revisited / 869 \\ Other Client-Side Scripting Options / 874 \\ 15: The PyMailGUI Client / 876 \\ ``Use the Source, Luke'' / 876 \\ A PyMailGUI Demo / 883 \\ PyMailGUI Implementation / 911 \\ 16: Server-Side Scripting / 962 \\ ``Oh What a Tangled Web We Weave'' / 962 \\ What's a Server-Side CGI Script? / 962 \\ Running Server-Side Examples / 966 \\ Climbing the CGI Learning Curve / 971 \\ Saving State Information in CGI Scripts / 1011 \\ The Hello World Selector / 1020 \\ Refactoring Code for Maintainability / 1029 \\ More on HTML and URL Escapes / 1038 \\ Transferring Files to Clients and Servers / 1046 \\ 17: The PyMailCGI Server / 1063 \\ ``Things to Do When Visiting Chicago'' / 1063 \\ The PyMailCGI Web Site / 1064 \\ The Root Page / 1070 \\ Sending Mail by SMTP / 1073 \\ Reading POP Email / 1080 \\ Processing Fetched Mail / 1097 \\ Utility Modules / 1106 \\ CGI Script Trade-Offs / 1121 \\ 18: Advanced Internet Topics / 1129 \\ ``Surfing on the Shoulders of Giants'' / 1129 \\ Zope: A Web Application Framework / 1130 \\ HTMLgen: Web Pages from Objects / 1145 \\ Jython: Python for Java / 1150 \\ Grail: A Python-Based Web Browser / 1161 \\ XML Processing Tools / 1164 \\ Windows Web Scripting Extensions / 1169 \\ Python Server Pages / 1186 \\ Rolling Your Own Servers in Python / 1189 \\ And Other Cool Stuff / 1190 \\ Part V: Tools and Techniques \\ 19: Databases and Persistence / 1197 \\ ``Give Me an Order of Persistence, but Hold the Pickles'' / 1197 \\ Persistence Options in Python / 1197 \\ DBM Files / 1198 \\ Pickled Objects / 1201 \\ Shelve Files / 1207 \\ The ZODB Object-Oriented Database / 1216 \\ SQL Database Interfaces / 1227 \\ PyForm: A Persistent Object Viewer / 1254 \\ 20: Data Structures / 1280 \\ ``Roses Are Red, Violets Are Blue; Lists Are Mutable, and So Is Set Foo'' / 1280 \\ Implementing Stacks / 1281 \\ Implementing Sets / 1293 \\ Subclassing Built-In Types / 1304 \\ Binary Search Trees / 1307 \\ Graph Searching / 1312 \\ Reversing Sequences / 1316 \\ Permuting Sequences / 1318 \\ Sorting Sequences / 1320 \\ Data Structures Versus Python Built-Ins / 1322 \\ PyTree: A Generic Tree Object Viewer / 1323 \\ 21: Text and Language / 1336 \\ ``See Jack Hack. Hack, Jack, Hack'' / 1336 \\ Strategies for Parsing Text in Python / 1336 \\ String Method Utilities / 1337 \\ Regular Expression Pattern Matching / 1346 \\ Advanced Language Tools / 1357 \\ Handcoded Parsers / 1359 \\ PyCalc: A Calculator Program/Object / 1377 \\ Part VI: Integration \\ 22: Extending Python / 1405 \\ ``I Am Lost at C'' / 1405 \\ Integration Modes / 1406 \\ C Extensions Overview / 1408 \\ A Simple C Extension Module / 1409 \\ Extension Module Details / 1412 \\ The SWIG Integration Code Generator / 1422 \\ Wrapping C Environment Calls / 1428 \\ A C Extension Module String Stack / 1434 \\ A C Extension Type String Stack / 1439 \\ Wrapping C++ Classes with SWIG / 1451 \\ Other Extending Tools / 1460 \\ 23: Embedding Python / 1463 \\ ``Add Python. Mix Well. Repeat.'' / 1463 \\ C Embedding API Overview / 1463 \\ Basic Embedding Techniques / 1466 \\ Registering Callback Handler Objects / 1478 \\ Using Python Classes in C / 1483 \\ A High-Level Embedding API: ppembed / 1486 \\ Other Integration Topics / 1499 \\ 24: Conclusion: Python and the Development Cycle / 1507 \\ ``That's the End of the Book, Now Here's the Meaning of Life'' / 1507 \\ ``Something's Wrong with the Way We Program Computers'' / 1507 \\ The ``Gilligan Factor'' / 1508 \\ Doing the Right Thing / 1509 \\ Enter Python / 1510 \\ But What About That Bottleneck? / 1512 \\ On Sinking the Titanic / 1516 \\ So What's ``Python: The Sequel''? / 1518 \\ In the Final Analysis / 1519", } @Book{Martelli:2006:PN, author = "Alex Martelli", title = "{Python} in a nutshell", publisher = pub-ORA, address = pub-ORA:adr, edition = "Second", pages = "xiv + 695", year = "2006", ISBN = "0-596-10046-9", ISBN-13 = "978-0-596-10046-9", LCCN = "QA76.73.P98 M37 2006eb; QA76.73.P98 M37 2006; QA76.73.P98", bibdate = "Tue Aug 5 17:48:02 MDT 2008", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; melvyl.cdlib.org:210/CDL90", URL = "http://www.oreilly.com/catalog/9780596100469", acknowledgement = ack-nhfb, subject = "Python (Computer program language)", } @Book{Martelli:2006:PPE, author = "Alex Martelli and Anna Martelli Ravensroft and David Ascher", title = "{Python} par l'exemple", publisher = pub-ORA, address = pub-ORA:adr, pages = "xxv + 525", year = "2006", ISBN = "2-84177-379-5", ISBN-13 = "978-2-84177-379-4", LCCN = "????", bibdate = "Thu Apr 16 08:54:26 MDT 2009", bibsource = "carmin.sudoc.abes.fr:210/ABES-Z39-PUBLIC; http://www.math.utah.edu/pub/tex/bib/python.bib", note = "French translation by {\'E}ric Jacoboni.", acknowledgement = ack-nhfb, language = "French", } @Book{Maruch:2006:PD, author = "Stef Maruch and Aahz Maruch", title = "{Python} for dummies", publisher = pub-WILEY, address = pub-WILEY:adr, pages = "xx + 410", year = "2006", ISBN = "0-471-77864-8 (paperback)", ISBN-13 = "978-0-471-77864-6 (paperback)", LCCN = "QA76.73.P98 M374 2006", bibdate = "Thu Apr 16 08:38:44 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", URL = "http://www.loc.gov/catdir/enhancements/fy0741/2006924031-b.html; http://www.loc.gov/catdir/enhancements/fy0741/2006924031-d.html; http://www.loc.gov/catdir/toc/fy0713/2006924031.html", acknowledgement = ack-nhfb, subject = "Python (Computer program language)", } @Article{Nagel:2006:EPY, author = "William Nagel", title = "Embedding {Python} in your {C} programs", journal = j-LINUX-J, volume = "2006", number = "142", pages = "8--8", month = feb, year = "2006", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Thu Mar 9 06:03:10 MST 2006", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Radenski:2006:PFL, author = "Atanas Radenski", title = "``{Python} first'': a lab-based digital introduction to computer science", journal = j-SIGCSE, volume = "38", number = "3", pages = "197--201", month = sep, year = "2006", CODEN = "SIGSD3", DOI = "http://dx.doi.org/10.1145/1140123.1140177", ISSN = "0097-8418", ISSN-L = "0097-8418", bibdate = "Sat Nov 17 16:57:28 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigcse2000.bib", abstract = "The emphasis on Java and other commercial languages in CS1 has established the perception of computer science as a dry and technically difficult discipline among undecided students who are still seeking careers. This may not be a big problem during an enrolment boom, but in times of decreased enrolment such negative perception may have a devastating effect on computer science programs and therefore should not be ignored. We have made our CS1 course offerings more attractive to students (1) by introducing an easy to learn yet effective scripting language --- Python, (2) by making all course resources available in a comprehensive online study pack, and (3) by offering an extensive set of detailed and easy to follow self-guided labs. Our custom-designed online study pack comprises a wealth of new, original learning modules: extensive e-texts, detailed self-guided labs, numerous sample programs, quizzes, and slides. Our recent student survey demonstrates that students like and prefer Python as a first language and that they also perceive the online study pack as very beneficial. Our ``Python First'' course, originally required for computer science majors, has been so well received that it has been recently approved as a general education science elective, thus opening new recruitment opportunities for the computer science major. Our ``Python First'' digital pack is published online at http://studypack.com.", acknowledgement = ack-nhfb, fjournal = "SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education)", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J688", } @Article{Ranum:2006:SAT, author = "David Ranum and Bradley Miller and John Zelle and Mark Guzdial", title = "Successful approaches to teaching introductory computer science courses with {Python}", journal = j-SIGCSE, volume = "38", number = "1", pages = "396--397", month = mar, year = "2006", CODEN = "SIGSD3", DOI = "http://dx.doi.org/10.1145/1124706.1121465", ISSN = "0097-8418", ISSN-L = "0097-8418", bibdate = "Sat Nov 17 16:57:23 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigcse2000.bib", acknowledgement = ack-nhfb, fjournal = "SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education)", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J688", } @Article{Rickett:2006:RPF, author = "Christopher D. Rickett and Sung-Eun Choi and Craig E. Rasmussen and Matthew J. Sottile", title = "Rapid prototyping frameworks for developing scientific applications: a case study", journal = j-J-SUPERCOMPUTING, volume = "36", number = "2", pages = "123--134", month = may, year = "2006", CODEN = "JOSUED", DOI = "http://dx.doi.org/10.1007/s11227-006-7953-6", ISSN = "0920-8542 (print), 1573-0484 (electronic)", ISSN-L = "0920-8542", bibdate = "Wed Jul 9 17:32:28 MDT 2008", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.springerlink.com/openurl.asp?genre=article&issn=0920-8542&volume=36&issue=2&spage=123", acknowledgement = ack-nhfb, fjournal = "The Journal of Supercomputing", journal-URL = "http://link.springer.com/journal/11227", keywords = "CCA; Components; Python", } @Book{Schroeder:2006:VTO, author = "Will Schroeder and Ken Martin and Bill Lorensen", title = "The visualization toolkit: an object-oriented approach to {3D} graphics [visualize data in {3D} --- medical, engineering or scientific; build your own applications with {C}++, Tcl, Java or Python; includes source code for {VTK} (supports {UNIX}, Windows and Mac)]", publisher = "Kitware", address = "Clifton Park, NY", edition = "Fourth", pages = "xvi + 512", year = "2006", ISBN = "1-930934-19-X", ISBN-13 = "978-1-930934-19-1", LCCN = "????", bibdate = "Thu Apr 16 09:20:47 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.bibsys.no:2100/BIBSYS", acknowledgement = ack-nhfb, subject = "Visualisering; Datamaskinassistert presentasjon; Python", } @Article{Stelter:2006:BHA, author = "Fred Stelter", title = "Building a home automation and security system with {Python}", journal = j-LINUX-J, volume = "2006", number = "142", pages = "4--4", month = feb, year = "2006", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Thu Mar 9 06:03:10 MST 2006", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Book{Tanimoto:2006:IPA, author = "Steven L. Tanimoto", title = "Introduction to {Python} for Artificial Intelligence", publisher = pub-IEEE, address = pub-IEEE:adr, pages = "????", year = "2006", ISBN = "????", ISBN-13 = "????", LCCN = "????", bibdate = "Tue Mar 07 16:44:55 2006", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", price = "US\$19.00", URL = "http://www.computer.org/portal/pages/ieeecs/ReadyNotes/tanimotoabstract.html", acknowledgement = ack-nhfb, } @Book{Telles:2006:PPC, author = "Matthew A. Telles", title = "{Python} power!: the comprehensive guide", publisher = "Thomson Course Technology PTR", address = "Boston, MA, USA", pages = "xx + 508", year = "2006", ISBN = "1-59863-158-6", ISBN-13 = "978-1-59863-158-6", LCCN = "QA76.73.P98 T45 2006", bibdate = "Thu Apr 16 08:20:41 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", acknowledgement = ack-nhfb, remark = "Reissued in 2008 with same ISBN.", subject = "Python (Computer program language)", } @Book{Weigend:2006:OPP, author = "Michael Weigend", title = "{Objektorientierte Programmierung mit Python: [Klassen, Objekte, Vererbung und Polymorphie praktisch angewendet; XML, GUI-Programmierung, Threads und CGI-Scripting; {\"U}bungen mit Musterl{\"o}sungen zu jedem Kapitel]}", publisher = "mitp", address = "Bonn, Germany", edition = "Third", pages = "700", year = "2006", ISBN = "3-8266-1660-X", ISBN-13 = "978-3-8266-1660-0", LCCN = "????", bibdate = "Thu Apr 16 09:07:41 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.gbv.de:20011/gvk", price = "EUR 36.95", series = "Programmierung", URL = "http://www.gbv.de/dms/ilmenau/toc/510475221.PDF", acknowledgement = ack-nhfb, subject = "Python ", } @Book{Weigend:2006:PGP, author = "Michael Weigend", title = "{Python Ge-Packt: [schneller Zugriff auf Module, Klassen und Funktionen; XML, Tkinter, Datenbanken, Internet-Programmierung; objektorientierte Programmierung und New-Style-Klassen]}", publisher = "mitp", address = "Heidelberg, Germany", edition = "Third", pages = "618", year = "2006", ISBN = "3-8266-1659-6", ISBN-13 = "978-3-8266-1659-4", LCCN = "????", bibdate = "Thu Apr 16 09:01:14 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.gbv.de:20011/gvk", price = "EUR 17.95", series = "Ge-Packte Referenz", URL = "http://www.gbv.de/dms/bsz/toc/bsz254799760inh.pdf", acknowledgement = ack-nhfb, language = "German", subject = "Python 2.5", } @Book{Ziade:2006:PP, author = "Tarek Ziad{\'e}", title = "Programmation {Python}", publisher = pub-EYROLLES, address = pub-EYROLLES:adr, pages = "xxxviii + 537", year = "2006", ISBN = "2-212-11677-2", ISBN-13 = "978-2-212-11677-9", LCCN = "????", bibdate = "Thu Apr 16 08:48:15 MDT 2009", bibsource = "carmin.sudoc.abes.fr:210/ABES-Z39-PUBLIC; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, language = "French", } @Article{Backer:2007:CPE, author = "Arnd B{\"a}cker", title = "Computational Physics Education with {Python}", journal = j-COMPUT-SCI-ENG, volume = "9", number = "3", pages = "30--33", month = may # "\slash " # jun, year = "2007", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2007.48", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Thu Jul 3 11:16:39 MDT 2008", bibsource = "http://csdl.computer.org/comp/mags/cs/2007/03/c3toc.htm; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Article{Bienstman:2007:PNR, author = "Peter Bienstman and Lieven Vanholme and Wim Bogaerts and Pieter Dumon and Peter Vandersteegen", title = "{Python} in Nanophotonics Research", journal = j-COMPUT-SCI-ENG, volume = "9", number = "3", pages = "46--47", month = may # "\slash " # jun, year = "2007", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2007.59", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Thu Jul 3 11:16:39 MDT 2008", bibsource = "http://csdl.computer.org/comp/mags/cs/2007/03/c3toc.htm; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Article{Borcherds:2007:PLC, author = "P. H. Borcherds", title = "{Python}: a language for computational physics", journal = j-COMP-PHYS-COMM, volume = "177", number = "1--2", pages = "199--201", month = jul, year = "2007", CODEN = "CPHCBZ", DOI = "http://dx.doi.org/10.1016/j.cpc.2007.02.019", ISSN = "0010-4655 (print), 1879-2944 (electronic)", ISSN-L = "0010-4655", bibdate = "Mon Feb 13 23:42:20 MST 2012", bibsource = "http://www.math.utah.edu/pub/tex/bib/compphyscomm2000.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.sciencedirect.com/science/article/pii/S0010465507000732", acknowledgement = ack-nhfb, fjournal = "Computer Physics Communications", journal-URL = "http://www.sciencedirect.com/science/journal/00104655", } @Book{Chun:2007:ACPa, author = "Wesley J. Chun", title = "Au coeur de {Python}: Notions fondamentales. ({French}) [{Core Python}: Fundamental ideas]", publisher = "CampusPress", address = "Paris, France", pages = "xxviii + 645", year = "2007", ISBN = "2-7440-2148-2", ISBN-13 = "978-2-7440-2148-0", LCCN = "????", bibdate = "Thu Apr 16 09:56:12 MDT 2009", bibsource = "carmin.sudoc.abes.fr:210/ABES-Z39-PUBLIC; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, language = "French", } @Book{Chun:2007:ACPb, author = "Wesley J. Chun", title = "Au coeur de {Python}: Notions avanc{\'e}es. ({French}) [{Core Python}: Advanced ideas]", publisher = "CampusPress", address = "Paris, France", pages = "xxii + 337", year = "2007", ISBN = "2-7440-2195-4", ISBN-13 = "978-2-7440-2195-4", LCCN = "????", bibdate = "Thu Apr 16 09:56:12 MDT 2009", bibsource = "carmin.sudoc.abes.fr:210/ABES-Z39-PUBLIC; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, language = "French", } @Book{Chun:2007:CPP, author = "Wesley J. Chun", title = "Core {Python} programming", publisher = pub-PH, address = pub-PH:adr, edition = "Second", pages = "xxxvii + 1077", year = "2007", ISBN = "0-13-226993-7 (paperback)", ISBN-13 = "978-0-13-226993-3 (paperback)", LCCN = "QA76.73.P98 C48 2007", bibdate = "Thu Apr 16 10:01:59 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", series = "Prentice Hall core series", URL = "http://www.loc.gov/catdir/toc/ecip0615/2006019559.html", acknowledgement = ack-nhfb, subject = "Python (Computer program language)", tableofcontents = "1: Welcome to Python! \\ 2: Getting started \\ 3: Python basics \\ 4: Python objects \\ 5: Numbers \\ 6: Sequences : strings, lists, and tuples \\ 7: Mapping and set types \\ 8: Conditionals and loops \\ 9: Files and input/output \\ 10: Errors and exceptions \\ 11: Functions and functional programming \\ 12: Modules \\ 13: Object-oriented programming \\ 14: Execution environment \\ 15: Regular expressions \\ 16: Network programming \\ 17: Internet client programming \\ 18: Multithreaded programming \\ 19: GUI programming \\ 20: Web programming \\ 21: Database programming \\ 22: Extending Python \\ 23: Miscellaneous", } @Article{Cooper:2007:ERH, author = "Jonathan Cooper and Steve McKeever", title = "Experience report: a {Haskell} interpreter for {cellML}", journal = j-SIGPLAN, volume = "42", number = "9", pages = "247--250", month = sep, year = "2007", CODEN = "SINODQ", DOI = "http://dx.doi.org/10.1145/1291151.1291190", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "In this paper we present our use of functional programming (FP), specifically Haskell, to provide an operational semantics for a domain-specific language, CellML, that describes mathematical models of biological processes. We analyse the benefits and shortcomings of this approach, in comparison with other semantic definitions for CellML.\par It is our claim that using FP for our semantics results in a more concise and useful artifact for describing what such a model means. The use of lazy evaluation removes the need to explicitly determine an evaluation order for the model, resulting in a more elegant interpreter. Crucially, using FP enables us to prove the correctness of optimisation techniques for such models. This gives us more confidence in scientific deductions from simulation results. We compare the Python implementation of these optimisation techniques with our use of Haskell in proving their correctness.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J706", keywords = "cellML; Haskell", } @Book{Daly:2007:NGW, author = "Liza Daly", title = "Next-generation web frameworks in {Python}", publisher = pub-ORA, address = pub-ORA:adr, year = "2007", ISBN = "0-596-51371-2", ISBN-13 = "978-0-596-51371-9", LCCN = "QA76.73.P98 L59 2007eb; QA76.73.P98", bibdate = "Tue Aug 5 17:55:28 MDT 2008", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; melvyl.cdlib.org:210/CDL90", URL = "http://www.oreilly.com/catalog/9780596513719", acknowledgement = ack-nhfb, subject = "Python (Computer program language)", } @Book{Dayley:2007:PPE, author = "Brad Dayley", title = "{Python} phrasebook: essential code and commands", publisher = pub-SAMS, address = pub-SAMS:adr, pages = "v + 275", year = "2007", ISBN = "0-672-32910-7 (paperback)", ISBN-13 = "978-0-672-32910-4 (paperback)", LCCN = "QA76.73.P98 D395 2007", bibdate = "Thu Apr 16 08:47:38 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", series = "Developer's library", URL = "http://www.loc.gov/catdir/toc/fy0706/2006922308.html", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Terminology", } @Book{Dayley:2007:PTC, author = "Brad Dayley", title = "{Python} in tasca: codice e commandi in tasca", publisher = "Pearson Education", address = "Milano, Italy", pages = "vi + 277", year = "2007", ISBN = "88-7192-405-3", ISBN-13 = "978-88-7192-405-2", LCCN = "????", bibdate = "Thu Apr 16 10:29:01 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, language = "Italian", } @Article{Dubois:2007:GEI, author = "Paul F. Dubois", title = "{Guest Editor}'s Introduction: {Python}: Batteries Included", journal = j-COMPUT-SCI-ENG, volume = "9", number = "3", pages = "7--9", month = may # "\slash " # jun, year = "2007", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2007.51", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Thu Jul 3 11:16:39 MDT 2008", bibsource = "http://csdl.computer.org/comp/mags/cs/2007/03/c3toc.htm; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://csdl.computer.org/comp/mags/cs/2007/03/c3007.pdf", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Article{Goldwasser:2007:INP, author = "Michael H. Goldwasser and David Letscher", title = "Introducing network programming into a {CS1} course", journal = j-SIGCSE, volume = "39", number = "3", pages = "19--22", month = sep, year = "2007", CODEN = "SIGSD3", DOI = "http://dx.doi.org/10.1145/1269900.1268793", ISSN = "0097-8418", ISSN-L = "0097-8418", bibdate = "Sat Nov 17 16:57:36 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigcse2000.bib", note = "Proceedings of the 12th Annual SIGCSE Conference on Innovation and Technology in Computer Science Education (ITiCSE'07).", abstract = "Incorporating advanced programming concepts into an introductory programming course has to be done carefully to avoid overwhelming the students. We describe our experiences doing network programming in a CS1 course taught in Python. The simplicity of the built-in libraries allowed a fair amount of networking to be introduced in a week-long module of the course. In this short time we had the students writing both multithreaded clients and servers.", acknowledgement = ack-nhfb, fjournal = "SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education)", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J688", } @Article{Goldwasser:2007:TOO, author = "Michael H. Goldwasser and David Letscher", title = "Teaching object-oriented programming in {Python}", journal = j-SIGCSE, volume = "39", number = "3", pages = "365--366", month = sep, year = "2007", CODEN = "SIGSD3", DOI = "http://dx.doi.org/10.1145/1269900.1268937", ISSN = "0097-8418", ISSN-L = "0097-8418", bibdate = "Sat Nov 17 16:57:36 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigcse2000.bib", note = "Proceedings of the 12th Annual SIGCSE Conference on Innovation and Technology in Computer Science Education (ITiCSE'07).", abstract = "Python's use in education has grown rapidly, due to its elegantly simple syntax. Though often viewed as a ``scripting language,'' Python is a fully object-oriented language with an extremely consistent object model and a rich set of built-in classes. In this tutorial, we share our experiences using Python in the context of an object-oriented CS1 course. We will begin with an overview of the language, with particular emphasis on the object-orientation. We then present several coherent teaching strategies and a variety of graphical and non-graphical projects. Both new and experienced Python users are welcome.", acknowledgement = ack-nhfb, fjournal = "SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education)", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J688", } @Article{Greenfield:2007:RSP, author = "Perry Greenfield", title = "Reaching for the Stars with {Python}", journal = j-COMPUT-SCI-ENG, volume = "9", number = "3", pages = "38--40", month = may # "\slash " # jun, year = "2007", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2007.62", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Thu Jul 3 11:16:39 MDT 2008", bibsource = "http://csdl.computer.org/comp/mags/cs/2007/03/c3toc.htm; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Book{Harris:2007:GPL, author = "Andy Harris", title = "Game programming: the {L Line}: the express line to learning", publisher = pub-WILEY, address = pub-WILEY:adr, pages = "xxv + 570", year = "2007", ISBN = "0-470-06822-1 (paperback)", ISBN-13 = "978-0-470-06822-9 (paperback)", LCCN = "QA76.76.C672", bibdate = "Thu Apr 16 10:36:13 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.gbv.de:20011/gvk", URL = "http://www.loc.gov/catdir/enhancements/fy0741/2006936755-b.html; http://www.loc.gov/catdir/enhancements/fy0741/2006936755-d.html; http://www.loc.gov/catdir/enhancements/fy0741/2006936755-t.html", acknowledgement = ack-nhfb, subject = "Computer games; Programming; Python", } @Article{Hinsen:2007:PSP, author = "Konrad Hinsen", title = "Parallel Scripting with {Python}", journal = j-COMPUT-SCI-ENG, volume = "9", number = "6", pages = "82--89", month = nov # "\slash " # dec, year = "2007", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2007.117", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Thu Jul 3 11:16:40 MDT 2008", bibsource = "http://csdl.computer.org/comp/mags/cs/0000/00/c0toc.htm; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Article{Krauss:2007:PMM, author = "Ryan W. Krauss and Wayne J. Book", title = "A {Python} Module for Modeling and Control Design of Flexible Robots", journal = j-COMPUT-SCI-ENG, volume = "9", number = "3", pages = "41--45", month = may # "\slash " # jun, year = "2007", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2007.44", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Thu Jul 3 11:16:39 MDT 2008", bibsource = "http://csdl.computer.org/comp/mags/cs/2007/03/c3toc.htm; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Book{Langtangen:2007:PSC, author = "Hans Petter Langtangen", title = "{Python} scripting for computational science", volume = "3", publisher = pub-SV, address = pub-SV:adr, edition = "Third", pages = "????", year = "2007", ISBN = "3-540-73915-7", ISBN-13 = "978-3-540-73915-9", LCCN = "????", bibdate = "Thu Apr 16 10:03:45 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", series = "Texts in computational science and engineering", acknowledgement = ack-nhfb, } @Article{Luszczek:2007:HPD, author = "Piotr Luszczek and Jack Dongarra", title = "High Performance Development for High End Computing With {Python Language Wrapper (PLW)}", journal = j-IJHPCA, volume = "21", number = "3", pages = "360--369", month = aug, year = "2007", CODEN = "IHPCFL", DOI = "http://dx.doi.org/10.1177/1094342007078444", ISSN = "1094-3420 (print), 1741-2846 (electronic)", ISSN-L = "1094-3420", bibdate = "Tue Aug 31 09:59:45 MDT 2010", bibsource = "http://hpc.sagepub.com/content/21/3.toc; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://hpc.sagepub.com/content/21/3/360.full.pdf+html", acknowledgement = ack-nhfb, journal-URL = "http://hpc.sagepub.com/content/by/year", } @Book{Lutz:2007:EPM, author = "Mark Lutz and David Ascher and Dinu C.. Gherman", title = "{Einf{\"u}hrung in Python: [moderne OO-Programmierung; behandelt Python 2.5]}", publisher = pub-ORA, address = pub-ORA:adr, edition = "Second", pages = "xxvii + 624", year = "2007", ISBN = "3-89721-488-1", ISBN-13 = "978-3-89721-488-0", LCCN = "????", bibdate = "Thu Apr 16 10:09:57 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.gbv.de:20011/gvk", price = "EUR 39.90", URL = "http://www.gbv.de/dms/ilmenau/toc/527924601.PDF", acknowledgement = ack-nhfb, language = "German", } @Article{Mardal:2007:UPS, author = "Kent-Andre Mardal and Ola Skavhaug and Glenn T. Lines and Gunnar A. Staff and {\AA}smund {\O}deg{\aa}rd", title = "Using {Python} to Solve Partial Differential Equations", journal = j-COMPUT-SCI-ENG, volume = "9", number = "3", pages = "48--51", month = may # "\slash " # jun, year = "2007", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2007.64", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Thu Jul 3 11:16:39 MDT 2008", bibsource = "http://csdl.computer.org/comp/mags/cs/2007/03/c3toc.htm; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Book{Martelli:2007:PC, author = "Alex Martelli", title = "{Python} en concentr{\'e}", publisher = pub-ORA, address = pub-ORA:adr, edition = "Second", pages = "xvi + 802", year = "2007", ISBN = "2-84177-452-X", ISBN-13 = "978-2-84177-452-4", LCCN = "????", bibdate = "Thu Apr 16 09:49:46 MDT 2009", bibsource = "carmin.sudoc.abes.fr:210/ABES-Z39-PUBLIC; http://www.math.utah.edu/pub/tex/bib/python.bib", note = "French translation by {\'E}ric Jacoboni and Yann Serra.", acknowledgement = ack-nhfb, language = "French", } @Book{McGugan:2007:BGD, author = "Will McGugan", title = "Beginning game development with {Python} and {Pygame}: from novice to professional", publisher = pub-APRESS, address = pub-APRESS:adr, pages = "xxiii + 316", year = "2007", DOI = "http://dx.doi.org/10.1007/978-1-4302-0325-4", ISBN = "1-59059-872-5", ISBN-13 = "978-1-59059-872-6", LCCN = "????", bibdate = "Thu Apr 16 10:36:14 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.gbv.de:20011/gvk", series = "The expert's voice in open source", acknowledgement = ack-nhfb, } @Book{McGuire:2007:GSP, author = "Paul McGuire", title = "Getting started with {{\tt pyparsing}}", publisher = pub-ORA, address = pub-ORA:adr, year = "2007", ISBN = "0-596-51423-9", ISBN-13 = "978-0-596-51423-5", LCCN = "QA76.76.A65 M33 2007eb; QA76.76.A65", bibdate = "Tue Aug 5 17:57:21 MDT 2008", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; melvyl.cdlib.org:210/CDL90", series = "O'Reilly shortcuts", URL = "http://www.oreilly.com/catalog/9780596514235", acknowledgement = ack-nhfb, subject = "Application software; Python (Computer program language)", } @Book{Miller:2007:CSP, author = "Bradley N. Miller and David L. Ranum", title = "Computer science: the {Python} programming language", publisher = "Jones and Bartlett Publishers", address = "Sudbury, MA, USA", pages = "59", year = "2007", ISBN = "0-7637-4316-X", ISBN-13 = "978-0-7637-4316-1", LCCN = "QA76.73.P98 M537 2007", bibdate = "Thu Apr 16 10:04:41 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", acknowledgement = ack-nhfb, subject = "Python (Computer program language)", } @Article{Millman:2007:AFM, author = "K. Jarrod Millman and Matthew Brett", title = "Analysis of Functional Magnetic Resonance Imaging in {Python}", journal = j-COMPUT-SCI-ENG, volume = "9", number = "3", pages = "52--55", month = may # "\slash " # jun, year = "2007", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2007.46", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Thu Jul 3 11:16:39 MDT 2008", bibsource = "http://csdl.computer.org/comp/mags/cs/2007/03/c3toc.htm; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Book{Moore:2007:PPF, author = "Dana Moore and Raymond Budd and William Wright", title = "Professional {Python} frameworks: {Web 2.0} programming with {Django} and {TurboGears}", publisher = pub-WILEY, address = pub-WILEY:adr, pages = "xxvii + 420", year = "2007", ISBN = "0-470-13809-2 (paperback)", ISBN-13 = "978-0-470-13809-0 (paperback)", LCCN = "TK5105.888 .M663 2007", bibdate = "Thu Apr 16 09:37:39 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", series = "Wrox professional guides", URL = "http://www.loc.gov/catdir/enhancements/fy0741/2007032138-d.html; http://www.loc.gov/catdir/enhancements/fy0741/2007032138-t.html; http://www.loc.gov/catdir/enhancements/fy0804/2007032138-b.html", acknowledgement = ack-nhfb, subject = "Web site development; Python (Computer program language)", } @Article{Myers:2007:PEC, author = "Christopher R. Myers and James P. Sethna", title = "{Python} for Education: Computational Methods for Nonlinear Systems", journal = j-COMPUT-SCI-ENG, volume = "9", number = "3", pages = "75--79", month = may # "\slash " # jun, year = "2007", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2007.56", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Thu Jul 3 11:16:39 MDT 2008", bibsource = "http://csdl.computer.org/comp/mags/cs/2007/03/c3toc.htm; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Article{Myers:2007:PUS, author = "Christopher R. Myers and Ryan N. Gutenkunst and James P. Sethna", title = "{Python} Unleashed on Systems Biology", journal = j-COMPUT-SCI-ENG, volume = "9", number = "3", pages = "34--37", month = may # "\slash " # jun, year = "2007", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2007.60", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Thu Jul 3 11:16:39 MDT 2008", bibsource = "http://csdl.computer.org/comp/mags/cs/2007/03/c3toc.htm; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Article{Nilsen:2007:MIQ, author = "Jon Kristian Nilsen", title = "{MontePython}: Implementing Quantum {Monte Carlo} using {Python}", journal = j-COMP-PHYS-COMM, volume = "177", number = "10", pages = "799--814", day = "15", month = nov, year = "2007", CODEN = "CPHCBZ", DOI = "http://dx.doi.org/10.1016/j.cpc.2007.06.013", ISSN = "0010-4655 (print), 1879-2944 (electronic)", ISSN-L = "0010-4655", bibdate = "Mon Feb 13 23:42:26 MST 2012", bibsource = "http://www.math.utah.edu/pub/tex/bib/compphyscomm2000.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.sciencedirect.com/science/article/pii/S0010465507003141", acknowledgement = ack-nhfb, fjournal = "Computer Physics Communications", journal-URL = "http://www.sciencedirect.com/science/journal/00104655", } @Article{Nilsen:2007:PSC, author = "Jon K. Nilsen", title = "{Python} in scientific computing: Applications to {Bose--Einstein} condensates", journal = j-COMP-PHYS-COMM, volume = "177", number = "1--2", pages = "45--45", month = jul, year = "2007", CODEN = "CPHCBZ", DOI = "http://dx.doi.org/10.1016/j.cpc.2007.02.093", ISSN = "0010-4655 (print), 1879-2944 (electronic)", ISSN-L = "0010-4655", bibdate = "Mon Feb 13 23:42:20 MST 2012", bibsource = "http://www.math.utah.edu/pub/tex/bib/compphyscomm2000.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.sciencedirect.com/science/article/pii/S0010465507001312", acknowledgement = ack-nhfb, fjournal = "Computer Physics Communications", journal-URL = "http://www.sciencedirect.com/science/journal/00104655", } @Article{Oliphant:2007:PSC, author = "Travis E. Oliphant", title = "{Python} for Scientific Computing", journal = j-COMPUT-SCI-ENG, volume = "9", number = "3", pages = "10--20", month = may # "\slash " # jun, year = "2007", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2007.58", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Thu Jul 3 11:16:39 MDT 2008", bibsource = "http://csdl.computer.org/comp/mags/cs/2007/03/c3toc.htm; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Article{Perez:2007:ISI, author = "Fernando P{\'e}rez and Brian E. Granger", title = "{IPython}: a System for Interactive Scientific Computing", journal = j-COMPUT-SCI-ENG, volume = "9", number = "3", pages = "21--29", month = may # "\slash " # jun, year = "2007", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2007.53", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Thu Jul 3 11:16:39 MDT 2008", bibsource = "http://csdl.computer.org/comp/mags/cs/2007/03/c3toc.htm; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Book{Ramm:2007:RWA, author = "Mark Ramm and Kevin Dangoor and Gigi Sayfan", title = "Rapid {Web} applications with {TurboGears}: using {Python} to create {Ajax}-powered sites", publisher = pub-PH, address = pub-PH:adr, pages = "xxvii + 472", year = "2007", ISBN = "0-13-243388-5 (paperback)", ISBN-13 = "978-0-13-243388-4 (paperback)", LCCN = "TK5105.888 .R355 2007", bibdate = "Thu Apr 16 10:13:01 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", series = "Prentice Hall open source software development series", acknowledgement = ack-nhfb, subject = "Web site development; Python (Computer program language); TurboGears (Computer file); Ajax (Web site development technology)", tableofcontents = "Preface xxiii \\ Acknowledgments xxv \\ Part I: TurboGears Fundamentals \\ Chapter 1: Introduction to TurboGears / 3 \\ Chapter 2 Getting Started with TurboGears / 13 \\ Chapter 3: The Architecture of a TurboGears Application / 25 \\ Part II: Building a Simple TurboGears Application \\ Chapter 4: Creating a Simple Application / 43 \\ Chapter 5: Enhancing Our Bookmark Application / 59 \\ Part III: Exploring a Real World TurboGears Application \\ Chapter 6: Exploring More Complex Models in WhatWhat Status / 83 \\ Chapter 7: Controllers, Views, and JavaScript in the WhatWhat Status / 97 \\ Chapter 8: RSS, Cookies, and Dynamic Views in WhatWhat Status / 115 \\ Chapter 9: Ajax and WhatWhat Status Projects / 133 \\ Part IV: SQLObject and TurboGears Models \\ Chapter 10: SQLObject Basics / 151 \\ Chapter 11: Mastering SQLObject / 165 \\ Chapter 12: Customizing SQLObject Behavior / 183 \\ Part V: TurboGears View Technologies \\ Chapter 13: Dynamic Templates with Kid / 209 \\ Chapter 14: Creating Better JavaScript with MochiKit / 225 \\ Chapter 15: Effective Ajax with MochiKit / 273 \\ Chapter 16: TurboGears Widgets: Bringing CSS, XHTML, and JavaScript Together in Reusable Components 309 Part VI: CherryPy and TurboGears Controller Technologies \\ Chapter 17: CherryPy and TurboGears Decorators / 335 \\ Chapter 18: TurboGears Deployment 355 Part VII: TurboGears Extras \\ Chapter 19 The TurboGears Toolbox and Other Tools / 371 \\ Chapter 20: Internationalization / 383 \\ Chapter 21: Testing a TurboGears Application / 397 \\ Chapter 22: TurboGears Identity and Security / 417 \\ Part VIII: Appendix \\ Appendix: SQLAlchemy / 431 \\ Index / 449", } @Article{Sanders:2007:SMM, author = "Ian Douglas Sanders and Vashti C. Galpin", title = "Students' mental models of recursion at wits", journal = j-SIGCSE, volume = "39", number = "3", pages = "317--317", month = sep, year = "2007", CODEN = "SIGSD3", DOI = "http://dx.doi.org/10.1145/1269900.1268883", ISSN = "0097-8418", ISSN-L = "0097-8418", bibdate = "Sat Nov 17 16:57:36 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigcse2000.bib", note = "Proceedings of the 12th Annual SIGCSE Conference on Innovation and Technology in Computer Science Education (ITiCSE'07).", abstract = "Recursion is a concept which all computer scientists should understand and be able to use but novices find it difficult to master. In the School of Computer Science at the University of the Witwatersrand (Wits) we have for a long time been concerned about how we can assist our students with recursion [4, 1, 3]. One thrust of our research is the study of the mental models of recursion (c.f. Kahney [2]) which our first year students develop. Most of our students encounter recursion for the first time in our Fundamental Algorithmic Concepts (FAC) course. When we originally investigated the mental models of our students we noted that although many of them seem to develop the viable copies model there are still many that develop models which are non-viable (i.e., that cannot be relied on to lead to a correct result) [1]. Thus we adapted the way in which recursion was introduced in FAC in 2003, 2004 and 2005 by introducing more complex recursive algorithms earlier to help in the development of the copies mental model. We then compared the mental models developed by the 2003, 2004 and 2005 students to those developed by the earlier group [3]. The results indicate that more of the students were developing viable mental models of recursion and thus that the changes to our teaching were benefitting our students. In 2006 we changed the programming language in which our students implement algorithms to Python (from Scheme). In essence the programming language was the only change made as the course was still taught in a ``functional'' style to emphasize the link between the formal specification of a problem, the solution to the problem and the program. We did, however, feel it was important to assess the impact of the change on our students' mental models of recursion. We thus did a similar study on the 2006 students to that on earlier cohorts. The students' traces from two recursive algorithms were categorised into the mental models previously observed [1,3] by identifying how the student deals with the active flow, base case and passive flow in their trace and then by combining this information into an overall categorisation of the trace for that algorithm. Overall the results are in line with our previous results which showed that the copies model is the dominant model for a recurrence relation type of recursive function but that for list manipulation problems some students showed an active or looping model. These results indicate that our teaching approach, even with the switch to Python, is assisting our students in developing a viable copies mental model of recursion. Such a mental model is more likely to lead to correct traces of recursive algorithms. An interesting new result was the emergence of a passive mental model. Here the students recognised that the recursive algorithm would somehow get to the base case and then used the base case plus the implicit definition of the function in the algorithm to build up the required solution. This model may have arisen because the students were given a recurrence in Tutorial 1 and asked to calculate what value would be returned. Solving the recurrence essentially meant working up from the value where the result is defined directly until the desired answer is found. Some students may have adopted this as their model of recursion.", acknowledgement = ack-nhfb, fjournal = "SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education)", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J688", } @Book{Scheible:2007:MPR, author = "J{\"u}rgen Scheible and Ville Tuulos and others", title = "Mobile {Python}: rapid prototyping of applications on the mobile platform", publisher = pub-WILEY, address = pub-WILEY:adr, pages = "xx + 327", year = "2007", ISBN = "0-470-51505-8 (paperback)", ISBN-13 = "978-0-470-51505-1 (paperback)", LCCN = "QA76.73.P98 S34 2007", bibdate = "Thu Apr 16 09:39:06 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", URL = "http://www.loc.gov/catdir/enhancements/fy0739/2007029113-d.html; http://www.loc.gov/catdir/enhancements/fy0833/2007029113-b.html; http://www.loc.gov/catdir/enhancements/fy0833/2007029113-t.html", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Nokia smartphones; Symbian OS (Computer file); Cellular telephones; Programming", } @Book{Segaran:2007:PCI, author = "Toby Segaran", title = "Programming collective intelligence: building {Smart Web 2.0} applications", publisher = pub-ORA, address = pub-ORA:adr, pages = "xxi + 334", year = "2007", ISBN = "0-596-52932-5, 0-596-55068-5", ISBN-13 = "978-0-596-52932-1, 978-0-596-55068-4", LCCN = "T58.5 .S43 2007", bibdate = "Tue Aug 5 18:11:14 MDT 2008", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/ora.bib; http://www.math.utah.edu/pub/tex/bib/python.bib; melvyl.cdlib.org:210/CDL90", URL = "http://www.oreilly.com/catalog/9780596529321", abstract = "Want to tap the power behind search rankings, product recommendations, social bookmarking, and online matchmaking? This fascinating book demonstrates how you can build Web 2.0 applications to mine the enormous amount of data created by people on the Internet. With the sophisticated algorithms in this book, you can write smart programs to access interesting datasets from other web sites, collect data from users of your own applications, and analyze and understand the data once you've found it.Programming Collective Intelligence takes you into the world of machine learning and statistics, and ex.", acknowledgement = ack-nhfb, remark = "Description based upon print version of record.", subject = "Computer science; Information technology; Social aspects; Programming; Internet programming", tableofcontents = "Programming Collective Intelligence \\ preface \\ Style of Examples \\ Why Python? \\ Significant Whitespace \\ List comprehensions \\ Open Apis \\ Overview of the Chapters \\ Conventions \\ Using Code Examples \\ How to Contact Us \\ Safari\? Books Online \\ Acknowledgments \\ 1. Introduction to Collective Intelligence \\ What Is Machine Learning? \\ Limits of Machine Learning \\ Real-Life Examples \\ Other Uses for Learning Algorithms \\ 2. Making Recommendations \\ Collecting Preferences \\ Finding Similar Users \\ Pearson Correlation Score \\ Which Similarity Metric Should You Use? \\ Ranking the Critics \\ Recommending Items \\ Matching Products \\ Building a del.icio.us Link Recommender \\ Building the Dataset \\ Recommending Neighbors and Links \\ Item-Based Filtering \\ Getting Recommendations \\ Using the MovieLens Dataset \\ User-Based or Item-Based Filtering? \\ Exercises \\ 3. Discovering Groups \\ Word Vectors \\ Counting the Words in a Feed \\ Hierarchical Clustering \\ Drawing the Dendrogram \\ Column Clustering \\ K-Means Clustering \\ Clusters of Preferences \\ Beautiful Soup \\ Scraping the Zebo Results \\ Defining a Distance Metric \\ Clustering Results \\ Viewing Data in Two Dimensions \\ Other Things to Cluster \\ Exercises \\ 4. Searching and Ranking \\ A Simple Crawler \\ Crawler Code \\ Building the Index \\ Finding the Words on a Page \\ Adding to the Index \\ Querying \\ Content-Based Ranking \\ Word Frequency \\ Document Location \\ Word Distance \\ Using Inbound Links \\ The PageRank Algorithm \\ Using the Link Text \\ Learning from Clicks \\ Setting Up the Database \\ Feeding Forward \\ Training with Backpropagation \\ Training Test \\ Connecting to the Search Engine \\ Exercises \\ 5. Optimization \\ Representing Solutions \\ The Cost Function \\ Random Searching \\ Hill Climbing \\ Simulated Annealing \\ Genetic Algorithms \\ Real Flight Searches \\ The minidom PackageFlight Searches \\ Optimizing for Preferences \\ The Cost Function \\ Running the Optimization \\ Network Visualization \\ Counting Crossed Lines \\ Drawing the Network \\ Other Possibilities \\ Exercises \\ 6. Document Filtering \\ Documents and Words \\ Training the Classifier \\ Calculating Probabilities \\ A Na{\~A}ve Classifier \\ A Quick Introduction to Bayes and Theorem \\ Choosing a Category \\ The Fisher Method \\ Combining the Probabilities \\ Classifying Items \\ Persisting the Trained Classifiers \\ Filtering Blog Feeds \\ Improving Feature Detection \\ Using Akismet \\ Alternative Methods \\ Exercises \\ 7. Modeling with Decision Trees\\ Introducing Decision Trees \\ Training the Tree \\ Choosing the Best Split \\ Entropy \\ Recursive Tree Building \\ Displaying the Tree \\ Classifying New Observations \\ Pruning the Tree \\ Dealing with Missing Data \\ Dealing with Numerical Outcomes \\ Modeling Home Prices \\ Modeling ``Hotness'' \\ When to Use Decision Trees \\ Exercises \\ 8. Building Price Models \\ k-Nearest Neighbors \\ Defining Similarity \\ Code for k-Nearest Neighbors \\ Weighted Neighbors \\ Subtraction Function \\ Gaussian Function \\ Weighted kNn \\ Cross-Validation \\ Heterogeneous Variables \\ Scaling Dimensions \\ Optimizing the Scale", } @Article{Shi:2007:PIG, author = "Xuan Shi", title = "{Python} for {Internet} {GIS} Applications", journal = j-COMPUT-SCI-ENG, volume = "9", number = "3", pages = "56--59", month = may # "\slash " # jun, year = "2007", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2007.57", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Thu Jul 3 11:16:39 MDT 2008", bibsource = "http://csdl.computer.org/comp/mags/cs/2007/03/c3toc.htm; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Book{Stubblebine:2007:REP, author = "Tony Stubblebine", title = "Regular expression pocket reference: Regular expressions for {Perl}, {Ruby}, {PHP}, {Python}, {C}, {Java}, and {.NET}.", publisher = pub-ORA, address = pub-ORA:adr, edition = "Second", pages = "vii + 117", year = "2007", ISBN = "0-596-51427-1 (paperback)", ISBN-13 = "978-0-596-51427-3 (paperback)", LCCN = "QA76.9.T48 S78 2007", bibdate = "Thu Apr 16 10:31:52 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/ora.bib; http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", URL = "http://proquest.safaribooksonline.com/9780596514273; http://www.loc.gov/catdir/toc/fy0802/2007281074.html", acknowledgement = ack-nhfb, subject = "Text processing (Computer science); Programming languages (Electronic computers); Syntax", } @Book{Tidwell:2007:XMX, author = "Doug Tidwell", title = "{XSLT}: mastering {XML} transformations", publisher = pub-ORA, address = pub-ORA:adr, edition = "Second", pages = "xviii + 965", year = "2007", ISBN = "0-596-52721-7 (paperback)", ISBN-13 = "978-0-596-52721-1 (paperback)", LCCN = "QA76.73.X58 T53 2008", bibdate = "Mon Oct 13 15:15:17 MDT 2008", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; library.tcd.ie:210/advance", price = "US\$31.99", acknowledgement = ack-nhfb, keywords = "Extensible Markup Language; Extensible Style sheet Language for Transformation (XSLT); HTM Web pages; HTML CSS markup language; HTML home pages; HTML hypertext; HTML markup language; XHTML; XML hypertext markup language; XML Python; XML SVG markup language", subject = "XSLT (Computer program language)", } @Book{Walerowski:2007:PSV, editor = "Peter Walerowski", title = "{Python: 5 Stunden Video-Training: PC, Mac und TV}", volume = "6080", publisher = pub-AW, address = pub-AW:adr, year = "2007", ISBN = "3-8273-6080-3", ISBN-13 = "978-3-8273-6080-9", LCCN = "????", bibdate = "Thu Apr 16 10:10:11 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.gbv.de:20011/gvk", note = "One DVD.", price = "EUR 49.95", series = "Video2Brain; Addison-Wesley; Open source library", acknowledgement = ack-nhfb, language = "German", } @Book{Bailly:2008:IPA, author = "Yves Bailly", title = "Initiation {\`a} la programmation avec {Python} et {C++}", publisher = "Pearson Education France", address = "Paris, France", pages = "xi + 255", year = "2008", LCCN = "????", bibdate = "Thu Apr 16 11:04:16 MDT 2009", bibsource = "carmin.sudoc.abes.fr:210/ABES-Z39-PUBLIC; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, language = "French", } @Book{Bassi:2008:PB, author = "Sebastian Bassi", title = "{Python} for bioinformatics", publisher = pub-CHAPMAN-HALL-CRC, address = pub-CHAPMAN-HALL-CRC:adr, pages = "????", year = "2008", ISBN = "1-58488-929-2 (paperback)", ISBN-13 = "978-1-58488-929-8 (paperback)", LCCN = "????", bibdate = "Thu Apr 16 11:46:17 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; library.tcd.ie:210/advance", series = "Chapman and Hall/CRC mathematical and computational biology series", acknowledgement = ack-nhfb, remark = "Includes CD-ROM.", subject = "Python (Computer program language); Bioinformatics", } @Book{Bennett:2008:PDP, author = "James Bennett", title = "Practical {Django} projects", publisher = pub-APRESS, address = pub-APRESS:adr, pages = "xvii + 237", year = "2008", ISBN = "1-59059-996-9", ISBN-13 = "978-1-59059-996-9", LCCN = "TK5105.888.B4512; TK5105.888.B4512 2008", bibdate = "Thu Apr 16 11:21:25 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; library.mit.edu:9909/mit01", series = "The expert's voice in Web development", acknowledgement = ack-nhfb, keywords = "Python", subject = "Django (Electronic resource); Web site development", tableofcontents = "Ch. 1. Welcome to Django \\ Ch. 2. Your First Django Site: A Simple CMS \\ Ch. 3. Customizing the Simple CMS \\ Ch. 4. A Django-Powered Weblog \\ Ch. 5. Expanding the Weblog \\ Ch. 6. Templates for the Weblog \\ Ch. 7. Finishing the Weblog \\ Ch. 8. A Social Code-Sharing Site \\ Ch. 9. Form Processing in the Code-Sharing Application \\ Ch. 10. Finishing the Code-Sharing Application \\ Ch. 11. Writing Reusable Django Applications", } @Book{Chun:2008:PF, author = "Wesley Chun", title = "{Python} fundamentals", publisher = pub-PH, address = pub-PH:adr, pages = "vi + 94", year = "2008", ISBN = "0-13-714341-9 (paperback)", ISBN-13 = "978-0-13-714341-2 (paperback)", LCCN = "????", bibdate = "Thu Apr 16 11:00:33 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; library.ox.ac.uk:210/ADVANCE", acknowledgement = ack-nhfb, remark = "Based on Core Python Programming, Second Edition. 7+ Hours of Video Instruction.", subject = "Python (Computer program language)", } @Book{Copeland:2008:ES, author = "Rick Copeland", title = "Essential {SQLAlchemy}", publisher = pub-ORA-MEDIA, address = pub-ORA-MEDIA:adr, pages = "xi + 215", year = "2008", ISBN = "0-596-51614-2", ISBN-13 = "978-0-596-51614-7", LCCN = "QA76.9.W43 C67 2008", bibdate = "Sat Nov 13 10:17:02 MST 2010", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; melvyl.cdlib.org:210/CDL90; prodorbis.library.yale.edu:7090/voyager", acknowledgement = ack-nhfb, subject = "Python (Computer program language); SQL (Computer program language); Web databases", } @Article{Dalcin:2008:MPP, author = "Lisandro Dalc{\'\i}n and Rodrigo Paz and Mario Storti and Jorge D'El{\'\i}a", title = "{MPI} for {Python}: Performance improvements and {MPI-2} extensions", journal = j-J-PAR-DIST-COMP, volume = "68", number = "5", pages = "655--662", month = may, year = "2008", CODEN = "JPDCER", ISSN = "0743-7315 (print), 1096-0848 (electronic)", ISSN-L = "0743-7315", bibdate = "Fri Jul 11 20:32:36 MDT 2008", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.sciencedirect.com/science/journal/07437315", acknowledgement = ack-nhfb, fjournal = "Journal of Parallel and Distributed Computing", journal-URL = "http://www.sciencedirect.com/science/journal/07437315", } @Article{Doring:2008:ESL, author = "Holger D{\"o}ring", title = "Evaluating Scripting Languages: How {Python} Can Help Political Methodologists", journal = "The Political Methodologist", volume = "16", number = "1", institution = "Bibliothek der Universit{\"a}t Konstanz", pages = "8--12", year = "2008", bibdate = "Thu Apr 16 11:32:19 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, } @Book{Ernesti:2008:PUH, author = "Johannes Ernesti and Peter Kaiser", title = "{Python: das umfassende Handbuch; [aktuell zu Python 2.5; Einf{\"u}hrung, Praxis, Referenz; Sprachgrundlagen, Objektorientierung, Modularisierung; Web-Programmierung mit Django, GUIs, Netzwerkkommunikation u.v.m.] }", publisher = "Galileo Press", address = "Bonn, Germany", pages = "????", year = "2008", ISBN = "3-8362-1110-6", ISBN-13 = "978-3-8362-1110-9", LCCN = "????", bibdate = "Thu Apr 16 11:34:36 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, } @Book{Flaig:2008:BPP, author = "Ruediger-Marcus Flaig", title = "Bioinformatics programming in {Python}: a practical course for beginners", publisher = "Wiley-VCH", address = "Weinheim, Germany", pages = "ix + 418", year = "2008", ISBN = "3-527-32094-6 (paperback)", ISBN-13 = "978-3-527-32094-3 (paperback)", LCCN = "????", bibdate = "Thu Apr 16 11:45:12 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; library.tcd.ie:210/advance", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Bioinformatics", } @Book{Gift:2008:PUL, author = "Noah Gift and Jeremy M. Jones", title = "{Python} for {Unix} and {Linux} system administration", publisher = pub-ORA, address = pub-ORA:adr, pages = "xix + 433", year = "2008", ISBN = "0-596-51582-0", ISBN-13 = "978-0-596-51582-9", LCCN = "????", bibdate = "Thu Apr 16 10:53:11 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.bibsys.no:2100/BIBSYS", acknowledgement = ack-nhfb, } @Book{Goebel:2008:BPR, author = "John A. Goebel and Adil Hasan and Francesco Safai Tehrani", title = "The book of {Python}: a real-world reference", publisher = pub-NO-STARCH, address = pub-NO-STARCH:adr, pages = "????", year = "2008", ISBN = "1-59327-103-4", ISBN-13 = "978-1-59327-103-9", LCCN = "QA76.73.P98 G62 2008", bibdate = "Thu Apr 16 11:26:33 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", URL = "http://www.loc.gov/catdir/toc/ecip064/2005034382.html", acknowledgement = ack-nhfb, subject = "Python (Computer program language)", } @Book{Goldwasser:2008:OOP, author = "Michael H. Goldwasser and David Letscher", title = "Object-oriented programming in {Python}", publisher = "Pearson Prentice Hall", address = "Upper Saddle River, NJ, USA", pages = "xxii + 666", year = "2008", ISBN = "0-13-615031-4", ISBN-13 = "978-0-13-615031-2", LCCN = "QA76.73.P98.G65; QA76.73.P98.G65 2008", bibdate = "Thu Apr 16 10:06:48 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; library.mit.edu:9909/mit01", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Object-oriented programming (Computer science); Object-oriented programming languages", tableofcontents = "I. Fundamental Topics \\ 1. Cornerstones of Computing \\ 2. Getting Started in Python \\ 3. Getting Started with Graphics \\ 4. Elementary Control Structures \\ 5. Additional Control Structures \\ 6. Defining Our Own Classes \\ 7. Good Software Practices \\ 8. Input, Output, and Files \\ 9. Inheritance \\ II. Advanced Topics \\ 10. Deeper Understanding of the Management of Objects \\ 11. Recursion \\ 12. More Python Containers \\ 13. Implementing Data Structures \\ 14. Sorting Algorithms \\ 15. Event-Driven Programming \\ 16. Network Programming \\ App. A. Using IDLE \\ App. B. Python, Java, and C++: a Transition Guide \\ App. C. Solutions to Practice Exercises \\ App. D. Glossary", } @Article{Goldwasser:2008:PGP, author = "Michael H. Goldwasser and David Letscher", title = "A {Python} graphics package for the first day and beyond", journal = j-SIGCSE, volume = "40", number = "3", pages = "326--326", month = sep, year = "2008", CODEN = "SIGSD3", DOI = "http://dx.doi.org/10.1145/1597849.1384369", ISSN = "0097-8418", ISSN-L = "0097-8418", bibdate = "Sat Nov 17 15:44:14 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigcse2000.bib", note = "Proceedings of ITiCSE '08.", abstract = "We demonstrate the use of a new Python graphics package named cs1graphics, while discussing its impact on pedagogy and showcasing the recent work of our students. Our package was originally developed with two goals in mind. First, we insisted that it be intuitive enough that students can sit down and make use of it from the very first day of an introductory class. Second, we wanted to provide seamless support for intermediate and advanced lessons as students progress. The resulting package is freely available at www.cs1graphics.org. We find its combination of simplicity and functionality unmatched by existing packages.", acknowledgement = ack-nhfb, fjournal = "SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education)", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J688", } @Article{Goldwasser:2008:TOO, author = "Michael H. Goldwasser and David Letscher", title = "Teaching an object-oriented {CS1} -: with {Python}", journal = j-SIGCSE, volume = "40", number = "3", pages = "42--46", month = sep, year = "2008", CODEN = "SIGSD3", DOI = "http://dx.doi.org/10.1145/1597849.1384285", ISSN = "0097-8418", ISSN-L = "0097-8418", bibdate = "Sat Nov 17 15:44:14 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigcse2000.bib", note = "Proceedings of ITiCSE '08.", abstract = "There is an ongoing debate regarding the role of object orientation in the introductory programming sequence. While the pendulum swings to and fro between the ``objects first'' and ``back to basics'' extremes, there is general agreement that object-oriented programming is central to modern software development and therefore integral to a computer science curriculum. Developing effective approaches to teach these principles raises challenges that have been exacerbated by the use of Java or C++ as the first instructional language. In this paper, we recommend Python as an excellent choice for teaching an object-oriented CS1. Although often viewed as a ``scripting'' language, Python is a fully object-oriented language with a consistent object model and a rich set of built-in classes. Based upon our experiences, we describe aspects of the language that help support a balanced introduction to object orientation in CS1. We also discuss the downstream effects on our students' transition to Java and C++ in subsequent courses.", acknowledgement = ack-nhfb, fjournal = "SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education)", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J688", } @Book{Hajji:2008:PPE, author = "Farid Hajji", title = "{Das Python Praxisbuch --- eBook: Der gro{\ss}e Profi-Leitfaden f{\"u}r Programmierer}", publisher = "Addison Wesley in Pearson Education Deutschland", address = "M{\"u}nchen, Germany", pages = "1328 (est.)", year = "2008", ISBN = "3-8273-6182-6", ISBN-13 = "978-3-8273-6182-0", LCCN = "????", bibdate = "Thu Apr 16 11:54:01 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, } @Article{Henderson:2008:AMC, author = "Peter B. Henderson", title = "Abstraction, model checking and software correctness", journal = j-SIGCSE, volume = "40", number = "2", pages = "23--24", month = jun, year = "2008", CODEN = "SIGSD3", DOI = "http://dx.doi.org/10.1145/1383602.1383624", ISSN = "0097-8418", ISSN-L = "0097-8418", bibdate = "Sat Nov 17 15:44:13 MST 2012", bibsource = "DBLP; http://dblp.uni-trier.de/db/journals/sigcse/sigcse40.html#Henderson08; http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigcse2000.bib", URL = "ftp://ftp.math.utah.edu/pub/mirrors/ftp.ira.uka.de/bibliography/Misc/DBLP/2008.bib", abstract = "I hope you were able to read the contribution from Maria and Gary Litvin, Pre-college Math Concepts vs Skills --- Preparation for Computing Studies, in my last column. This article addressed one of the most important issues our discipline faces, the preparation and motivation of young people to pursue a career in computing. To repeat, here is a quote from the back cover of their book for high school students Mathematics for the Digital Age and Programming in Python: ``The vision behind this book is that math and computer science should help each other. A programmer needs to be comfortable with abstractions, and that is precisely what math teaches. Computer science reciprocates by providing models and hands-on exercises that help clarify and illustrate more abstract math.'' This columns contribution ``Reflections on Teaching Abstraction and Other Soft Ideas'' by Orit Hazzan, which can be found on page?? of this issue of Inroads, further reinforces the relevance of abstraction for software developers.", acknowledgement = ack-nhfb, fjournal = "SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education)", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J688", } @Book{Hetland:2008:BPN, author = "Magnus Lie Hetland", title = "Beginning {Python}: from novice to professional", publisher = pub-APRESS, address = pub-APRESS:adr, edition = "Second", pages = "xxx + 656", year = "2008", ISBN = "1-59059-982-9", ISBN-13 = "978-1-59059-982-2", LCCN = "A76.73.P98 H48 2008eb", bibdate = "Thu Apr 16 10:25:57 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, } @Book{Holovaty:2008:DGD, author = "Adrian Holovaty and Jacob Kaplan-Moss", title = "The Definitive Guide to {Django}: {Web} Development Done Right", publisher = pub-APRESS, address = pub-APRESS:adr, pages = "xxxii + 447", year = "2008", DOI = "http://dx.doi.org/10.1007/978-1-4302-0331-5", ISBN = "1-59059-725-7", ISBN-13 = "978-1-59059-725-5", LCCN = "TK5105.888", bibdate = "Thu Apr 16 11:18:13 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.gbv.de:20011/gvk", series = "Springer eBook Collection Professional and Applied Computing [Dig. Serial]; Springer-12059 [Dig. Serial]", abstract = "Provides information on using the Python-based framework to create Web sites.", acknowledgement = ack-nhfb, subject = "software engineering; computer science; special purpose and application-based systems", } @Book{Johnson:2008:EPC, author = "Mark Johnson", title = "Essential {Python} for corpus linguistics", publisher = "Blackwell", address = "Oxford, UK", pages = "208", year = "2008", ISBN = "1-4051-4563-3 (hardcover), 1-4051-4564-1 (paperback)", ISBN-13 = "978-1-4051-4563-3 (hardcover), 978-1-4051-4564-0 (paperback)", LCCN = "????", bibdate = "Thu Apr 16 08:40:14 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; library.ox.ac.uk:210/ADVANCE", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Computational linguistics", } @Book{Kak:2008:SOC, author = "Avinash C. Kak", title = "Scripting with objects: a comparative presentation of object-oriented scripting with {Perl} and {Python}", publisher = pub-WILEY, address = pub-WILEY:adr, pages = "xxxiv + 1279", year = "2008", ISBN = "0-470-17923-6 (paperback)", ISBN-13 = "978-0-470-17923-9 (paperback)", LCCN = "QA76.64.K3555; QA76.64.K3555 2008", bibdate = "Thu Apr 16 10:56:33 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; library.mit.edu:9909/mit01", price = "US\$89.95", URL = "http://www.loc.gov/catdir/enhancements/fy0743/2007035480-d.html; http://www.loc.gov/catdir/enhancements/fy0808/2007035480-b.html; http://www.loc.gov/catdir/enhancements/fy0835/2007035480-t.html", acknowledgement = ack-nhfb, subject = "Object-oriented programming (Computer science); Scripting languages (Computer science); Perl (Computer program language); Python (Computer program language)", } @Book{Knowlton:2008:PCM, author = "Jim Knowlton", title = "{Python}: create-modify-reuse", publisher = pub-WILEY, address = pub-WILEY:adr, pages = "xxv + 261", year = "2008", ISBN = "0-470-25932-9", ISBN-13 = "978-0-470-25932-0", LCCN = "????", bibdate = "Thu Apr 16 10:53:44 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.bibsys.no:2100/BIBSYS", series = "Wrox programmer to programmer", acknowledgement = ack-nhfb, subject = "Python; Multimedia; {\AA}pen-Kildekode?", } @Book{Langtangen:2008:PSC, author = "Hans Petter Langtangen", title = "{Python} Scripting for Computational Science", volume = "3", publisher = pub-SV, address = pub-SV:adr, edition = "Third", pages = "xxiv + 750", year = "2008", DOI = "http://dx.doi.org/10.1007/978-3-540-73916-6", ISBN = "3-540-73915-7, 3-540-73916-5", ISBN-13 = "978-3-540-73915-9, 978-3-540-73916-6", LCCN = "????", bibdate = "Thu Apr 16 11:07:58 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.gbv.de:20011/gvk", series = "Springer eBook Collection Mathematics and Statistics [Dig. Serial]; Springer-11649 [Dig. Serial]; Texts in Computational Science and Engineering", acknowledgement = ack-nhfb, subject = "Computer science; Engineering; Physics; Software engineering; Mathematics; Computational Science and Engineering; Numerical and Computational Methods; Numerical and Computational Methods in Engineering; Software Engineering/Programming and Operating Systems", } @Book{Litvin:2008:MDA, author = "Maria Litvin and Gary Litvin", title = "Mathematics for the digital age and programming in {Python}", publisher = "Skylight Pub.", address = "Andover, MA, USA", pages = "????", year = "2008", ISBN = "0-9727055-8-9", ISBN-13 = "978-0-9727055-8-5", LCCN = "????", bibdate = "Thu Apr 16 11:20:57 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", URL = "http://lccn.loc.gov/2007930214", acknowledgement = ack-nhfb, } @Article{Long:2008:SAR, author = "Philip D. Long", title = "Scalable apprenticeships: reconnecting students through technology", journal = j-SIGCSE, volume = "40", number = "3", pages = "3--4", month = sep, year = "2008", CODEN = "SIGSD3", DOI = "http://dx.doi.org/10.1145/1597849.1384273", ISSN = "0097-8418", ISSN-L = "0097-8418", bibdate = "Sat Nov 17 15:44:14 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigcse2000.bib", note = "Proceedings of ITiCSE '08.", abstract = "Today's students are typically over scheduled and hyper-connected, yet increasingly disconnected with their education. The classroom into which they step for core science, technology and engineering subjects is often removed from both the practice of the disciplines being taught and the technology tools which pervade other aspects of their life. A significant challenge is to reconnect the excitement and discovery that drew faculty into their disciplines back to the learning environments of STEM and CSE students they teach. Peer Instruction (inserting discussion and formative assessment into lecture) and project-based learning are two promising attempts at recapturing the process of science and engineering in introductory courses. Recent experiments in freshman project-based seminars such as nanoscale engineering and a major redesign of the introductory Course 6 (Computer Science and Electrical Engineering) at MIT are exploring ways to bring apprenticeship back to both small and large classes. Through Python-based tutoring tools, layered mentoring that includes just-in-time ``guest laboratory assistants'' to achieve 1:4 instructor-student ratios in large courses, and careful attention to learning space design new strategies for scaled apprenticeships are being forged.", acknowledgement = ack-nhfb, fjournal = "SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education)", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J688", } @Book{Lutz:2008:LP, author = "Mark Lutz", title = "Learning {Python}", publisher = pub-ORA, address = pub-ORA:adr, edition = "Third", pages = "xliv + 700", year = "2008", ISBN = "0-596-51398-4, 0-596-51398-4", ISBN-13 = "978-0-596-51398-6, 978-0-596-51398-6", LCCN = "QA76.73.P98 L877 2008; QA76.73.P98 L877 2008eb; QA76.73.P98 L8798 2008; QA76.73.P98", bibdate = "Tue Aug 5 17:56:24 MDT 2008", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; melvyl.cdlib.org:210/CDL90", URL = "http://www.oreilly.com/catalog/9780596513986", abstract = "Describes the features of the Python 2.5 programming language, covering such topics as types and operations, statements and syntax, functions, modules, classes and OOP, and exceptions and tools.", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Object-oriented programming (Computer science)", tableofcontents = "1. A Python Q and A Session \\ 2. How Python Runs Programs \\ 3. How You Run Programs \\ 4. Introducing Python Object Types \\ 5. Numbers \\ 6. The Dynamic Typing Interlude \\ 7. Strings \\ 8. Lists and Dictionaries \\ 9. Tuples, Files, and Everything Else \\ 10. Introducing Python Statements \\ 11. Assignment, Expressions, and print \\ 12. If Tests \\ 13. While and for Loops \\ 14. The Documentation Interlude \\ 15. Function Basics \\ 16. Scopes and Arguments \\ 17. Advanced Function Topics \\ 18. Modules: The Big Picture \\ 19. Module Coding Basics \\ 20. Module Packages \\ 21. Advanced Module Topics \\ 22. OOP: The Big Picture \\ 23. Class Coding Basics \\ 24. Class Coding Details \\ 25. Designing with Classes \\ 26. Advanced Class Topics \\ 27. Exception Basics \\ 28. Exception Objects \\ 29. Designing with Exceptions", } @Article{Meinke:2008:SVS, author = "Jan H. Meinke and Sandipan Mohanty and Frank Eisenmenger and Ulrich H. E. Hansmann", title = "{SMMP v. 3.0} --- Simulating proteins and protein interactions in {Python} and {Fortran}", journal = j-COMP-PHYS-COMM, volume = "178", number = "6", pages = "459--470", day = "15", month = mar, year = "2008", CODEN = "CPHCBZ", DOI = "http://dx.doi.org/10.1016/j.cpc.2007.11.004", ISSN = "0010-4655 (print), 1879-2944 (electronic)", ISSN-L = "0010-4655", bibdate = "Mon Feb 13 23:42:29 MST 2012", bibsource = "http://www.math.utah.edu/pub/tex/bib/compphyscomm2000.bib; http://www.math.utah.edu/pub/tex/bib/fortran3.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.sciencedirect.com/science/article/pii/S0010465507004614", acknowledgement = ack-nhfb, fjournal = "Computer Physics Communications", journal-URL = "http://www.sciencedirect.com/science/journal/00104655", } @Book{Mount:2008:PRF, author = "Sarah Mount and James Shuttleworth and Russel Winder", title = "{Python} for Rookies: a first course in programming", publisher = "Thomson Learning (EMEA)", address = "London, UK", pages = "xxi + 454", year = "2008", ISBN = "1-84480-701-0", ISBN-13 = "978-1-84480-701-7", LCCN = "QA76.73.P98 M68 2008", bibdate = "Thu Apr 16 11:37:01 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.libris.kb.se:210/libr", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Computer programming; Python (programspr{\aa}k)", } @Book{Nguyen:2008:CSL, author = "Quan Nguyen", title = "{CAD} scripting language: a collection of {Perl}, {Ruby}, {Python}, {TCL} and {Skill} scripts", publisher = "Ramacad", address = "San Jose, CA, USA", pages = "????", year = "2008", ISBN = "0-9777812-2-4", ISBN-13 = "978-0-9777812-2-5", LCCN = "????", bibdate = "Thu Apr 16 11:25:24 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", acknowledgement = ack-nhfb, } @TechReport{Nguyen:2008:IPCa, author = "Binh Q. Nguyen", title = "The Implementation of a {Python} Class for Structuring Network Data Collected in a Test Bed", type = "Technical report", number = "D-arl-tr-4423, AD-a479 698", institution = "United States Army Research Lab", address = "Adelphi, MD, USA", pages = "30", year = "2008", LCCN = "T1 U59 AD-a479 698", bibdate = "Thu Apr 16 11:11:19 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "This report documents an internally developed Python class that takes in a set of data files and organizes them into effective data structures that are suitable for the subsequent extraction, processing, and analysis. The report includes usage examples by describing Python snippets that perform statistical calculations and that transform the data into comma-separated values. Sample input and output data are appended to the report.", acknowledgement = ack-nhfb, } @TechReport{Nguyen:2008:IPCb, author = "Binh Q. Nguyen", title = "An Introduction to {Python} (a One-Hour Tour)", type = "Technical report", number = "AD-arl-tn-0328, AD-a484 316", institution = "United States Army Research Lab", address = "Adelphi, MD, USA", pages = "20", year = "2008", LCCN = "T1 U59 AD-a484 316", bibdate = "Thu Apr 16 11:11:19 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "This tutorial highlights and goes over essential features of the Python programming language while it is still evolving, but sufficiently stable and mature for the development of diverse solutions to computational, networking, and visualization problems. Although the technical details are kept to a minimum to fit diverse background and interests of the audience, they can be used as review materials for experienced and occasional developers of Python applications. The tutorial was presented to a team of engineers, scientists, and summer students on Wednesday 18 June 2008 at the U.S. Army Research Laboratory in Adelphi, MD.", acknowledgement = ack-nhfb, } @TechReport{Nguyen:2008:PPE, author = "Binh Q. Nguyen", title = "{pyGFC} --- a {Python} Extension to the {C++ Geodesy Foundation Classes}", type = "Technical report", number = "AD-arl-tr-4623, AD-a488 020", institution = "United States Army Research Lab", address = "Adelphi, MD, USA", year = "2008", bibdate = "Thu Apr 16 11:14:47 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "This report describes the results of the development of the pyGFC module, including the multi-step procedure and the implemented computer code. The pyGFC module is a Python extension to the C++ Geodesy Foundation Class, which has been used in the range model of the Mobile Ad-hoc Network (MANET) Emulation (MANE) software system that enables the dynamic connectivity of a MANET system in the Wireless Emulation Laboratory of the U.S. Army Research Laboratory (ARL). The pyGFC module was created to support the visualization of network topologies using the ARL Topodef tool, a graphical design and animation tool for custom-designing and editing a mobility scenario to create specific network topologies.", acknowledgement = ack-nhfb, } @Book{Nguyen:2008:SLC, editor = "Quan Nguyen", title = "Scripting languages: a collection of {Perl}, {Ruby}, {Python}, {TCL} and {Unix}", publisher = "Ramacad", address = "San Jose, CA, USA", pages = "????", year = "2008", ISBN = "0-9777812-3-2", ISBN-13 = "978-0-9777812-3-2", LCCN = "????", bibdate = "Thu Apr 16 11:25:48 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", acknowledgement = ack-nhfb, } @Article{Radenski:2008:DCS, author = "Atanas Radenski", title = "Digital {CS1} study pack based on {Moodle} and {Python}", journal = j-SIGCSE, volume = "40", number = "3", pages = "325--325", month = sep, year = "2008", CODEN = "SIGSD3", DOI = "http://dx.doi.org/10.1145/1597849.1384368", ISSN = "0097-8418", ISSN-L = "0097-8418", bibdate = "Sat Nov 17 15:44:14 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigcse2000.bib", note = "Proceedings of ITiCSE '08.", abstract = "We believe that CS1 courses can be made more attractive to students: by teaching a highly interactive scripting language --- Python by using an open source course management system --- such as Moodle --- to make all course resources available in a comprehensive digital study pack, and by offering detailed self-guided online labs . We have used Moodle [1] and Python [2] to develop a ``Python First'' digital study pack [3] which comprises a wealth of new, original learning modules: extensive e-texts, detailed self-guided labs, numerous sample programs, quizzes, and slides. Our digital study pack pedagogy is described in recent ITiCSE and SIGCSE papers [4, 5]. ``Python First'' digital packs instances have already been adopted by instructors at several universities. This demonstration reveals instructor and student perspectives to the ``Python First'' digital pack. In particular, we demonstrate how instructors can use standard Moodle functionality to customize and manage digital packs. We also demonstrate several Moodle-supported, Python-based self-guided labs.", acknowledgement = ack-nhfb, fjournal = "SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education)", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J688", } @Book{Rosenberg:2008:DCT, author = "Scott Rosenberg", title = "Dreaming in code: Two dozen Programmers, three years, 4,732 bugs, and one quest for transcendent software", publisher = "Three Rivers Press", address = "New York, NY, USA", pages = "403", year = "2008", ISBN = "????", ISBN-13 = "????", LCCN = "????", bibdate = "Thu Apr 16 11:19:24 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, keywords = "Python", } @Article{Sala:2008:PHP, author = "Marzio Sala and W. F. Spotz and M. A. Heroux", title = "{PyTrilinos}: {High-performance} distributed-memory solvers for {Python}", journal = j-TOMS, volume = "34", number = "2", pages = "7:1--7:33", month = mar, year = "2008", CODEN = "ACMSCU", DOI = "http://dx.doi.org/10.1145/1326548.1326549", ISSN = "0098-3500 (print), 1557-7295 (electronic)", ISSN-L = "0098-3500", bibdate = "Thu Jun 12 12:47:31 MDT 2008", bibsource = "http://www.acm.org/pubs/contents/journals/toms/; http://www.math.utah.edu/pub/bibnet/subjects/domain-decomp.bib; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/toms.bib", abstract = "PyTrilinos is a collection of Python modules that are useful for serial and parallel scientific computing. This collection contains modules that cover serial and parallel dense linear algebra, serial and parallel sparse linear algebra, direct and iterative linear solution techniques, domain decomposition and multilevel preconditioners, nonlinear solvers, and continuation algorithms. Also included are a variety of related utility functions and classes, including distributed I/O, coloring algorithms, and matrix generation. PyTrilinos vector objects are integrated with the popular NumPy Python module, gathering together a variety of high-level distributed computing operations with serial vector operations.\par PyTrilinos is a set of interfaces to existing, compiled libraries. This hybrid framework uses Python as front-end, and efficient precompiled libraries for all computationally expensive tasks. Thus, we take advantage of both the flexibility and ease of use of Python, and the efficiency of the underlying C++, C, and FORTRAN numerical kernels. Out numerical results show that, for many important problem classes, the overhead required by the Python interpreter is negligible.\par To run in parallel, PyTrilinos simply requires a standard Python interpreter. The fundamental MPI calls are encapsulated under an abstract layer that manages all interprocessor communications. This makes serial and parallel scripts using PyTrilinos virtually identical.", acknowledgement = ack-nhfb, articleno = "7", fjournal = "ACM Transactions on Mathematical Software", journal-URL = "http://portal.acm.org/toc.cfm?idx=J782", keywords = "direct solvers; multilevel preconditioners; nonlinear solvers; object-oriented programming; script languages", } @Article{Sanders:2008:SPP, author = "Ian D. Sanders and Sasha Langford", title = "Students' perceptions of {Python} as a first programming language at {Wits}", journal = j-SIGCSE, volume = "40", number = "3", pages = "365--365", month = sep, year = "2008", CODEN = "SIGSD3", DOI = "http://dx.doi.org/10.1145/1597849.1384407", ISSN = "0097-8418", ISSN-L = "0097-8418", bibdate = "Sat Nov 17 15:44:14 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigcse2000.bib", note = "Proceedings of ITiCSE '08.", abstract = "The first year curriculum at the University of the Witwatersrand (Wits) is a breadth-first curriculum where students are introduced to a variety of topics in Computer Science (see Sanders and Mueller [5] for details). As part of the course the students are expected to come to terms with a number of basic algorithms and data structures which they are required to implement. When the curriculum was designed we chose Scheme as the implementation language. One reason for doing so was because the main entrance requirement for our course is a solid mathematics background as evidenced by good marks at school level. Our students thus have a good understanding of functions and we felt that Scheme?s functional style would make it accessible to all of our students. Another reason for choosing Scheme was because it is a language which would be new to all of our students. Scheme was well received by those students who had never programmed before and proved to be a good language for meeting our teaching objectives but there was resistance to the language from the students who could already program as they considered it a waste of time to learn a language which was not (as they believed) used in the real world [3]. In addition, the use of Scheme did not really reduce the performance gap between the students with and without prior programming experience [2]. Python has been found to be a good first language for both experienced and inexperienced users [4] and its simple syntax and support of different programming paradigms seemed to make it an attractive option for our first year course. We believed that using Python would still allow us to meet our educational objectives ? it would be easily accessible to those students who had never programmed before and would support our approach of formulating algorithms Python has been found to be a good first language for both experienced and inexperienced users [4] and its simple syntax and support of different programming paradigms seemed to make it an attractive option for our first year course. We believed that using Python would still allow us to meet our educational objectives ? it would be easily accessible to those students who had never programmed before and would support our approach of formulating algorithms In late 2007 we did a survey to assess the first year students? impressions of Python. The students were asked to indicate agreement, disagreement or neutrality to a number of questions about the use of Python. 55 students completed the survey ? 27 of these had no prior programming experience and 28 had programmed before. The Wilcoxon signed rank test was used to test the hypotheses that both groups believed that Python was a good first year language. The results show strong evidence that the students feel that Python is a suitable language. There are. however, still some students with prior programming experience who are resistant to new languages.", acknowledgement = ack-nhfb, fjournal = "SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education)", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J688", } @Book{Stubblebine:2008:RAK, author = "Toni Stubblebine and Peter Klicman and Lars Schulten", title = "{Regul{\"a}re Ausdr{\"u}cke --- kurz and gut [f{\"u}r Perl, Ruby, PHP, C\#, Python, Java and .NET]}", publisher = pub-ORA, address = pub-ORA:adr, edition = "Second", pages = "131", year = "2008", ISBN = "3-89721-535-7", ISBN-13 = "978-3-89721-535-1", LCCN = "????", bibdate = "Thu Jul 15 18:31:10 MDT 2010", bibsource = "http://www.math.utah.edu/pub/tex/bib/ora.bib; http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.gbv.de:20011/gvk", price = "EUR 9.90", series = "O'Reillys Taschenbibliothek", acknowledgement = ack-nhfb, } @Book{Summerfield:2008:RGP, author = "Mark Summerfield", title = "Rapid {GUI} programming with {Python} and {Qt}: the definitive guide to {PyQt} programming", publisher = pub-PH, address = pub-PH:adr, pages = "xiv + 625", year = "2008", ISBN = "0-13-235418-7 (hardcover)", ISBN-13 = "978-0-13-235418-9 (hardcover)", LCCN = "QA76.9.U83 S89 2008", bibdate = "Thu Apr 16 10:48:43 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", series = "Prentice Hall open source software development series", acknowledgement = ack-nhfb, subject = "Qt (Electronic resource); Graphical user interfaces (Computer systems); Python (Computer program language)", } @Article{Vallisneri:2008:PXA, author = "Michele Vallisneri and Stanislav Babak", title = "{Python} and {XML} for Agile Scientific Computing", journal = j-COMPUT-SCI-ENG, volume = "10", number = "1", pages = "80--87", month = jan # "\slash " # feb, year = "2008", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2008.20", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Thu Jul 3 11:24:18 MDT 2008", bibsource = "http://csdl.computer.org/comp/mags/cs/2008/01/c1toc.htm; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Article{VanHensbergen:2008:HAR, author = "Eric {Van Hensbergen} and Charles Forsyth and Jim McKie and Ron Minnich", title = "Holistic aggregate resource environment", journal = j-OPER-SYS-REV, volume = "42", number = "1", pages = "85--91", month = jan, year = "2008", CODEN = "OSRED8", DOI = "http://dx.doi.org/10.1145/1341312.1341327", ISSN = "0163-5980 (print), 1943-586X (electronic)", ISSN-L = "0163-5980", bibdate = "Fri Jun 20 17:19:29 MDT 2008", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Within a few short years, we can expect to be dealing with multi-million-thread programs running on million-core systems [16]. This will no doubt stress the contemporary HPC software model which was developed in a time when 512 cores was a large number. Historical approaches have been further challenged by the increased desire of developers and end users for supercomputer light weight kernels (LWKs) to support the same environment, libraries, and tools as their desktops. As a result, the emerging workloads of today are far more sophisticated than those of the last two decades when much of the HPC infrastructure was developed, and feature the use of scripting environments such as Python, dynamic libraries, and complex multi-scale physics frameworks. Complicating this picture is the overwhelming management, monitoring and reliability problem created by the huge number of nodes in a system of that magnitude.\par We believe that a re-evaluation and exploration of distributed system principals is called for in order to address the challenges of ultrascale. To that end we will be evaluating and extending the Plan 9 [21] distributed system on the largest machines available to us, namely the BG/L [28] and BG/P [10] supercomputers. We have chosen Plan 9 based on our previous experiences with it in combination with previous research [17] which determined Plan 9 was a `right weight kernel', balancing trade offs between LWKs and more general purpose operating systems such as Linux. To deal with issues of scale, we plan on leveraging the use of the high-performance interconnects by system services as well as exploring aggregation as more of a first-class system construct -- providing dynamic hierarchical organization and management of all resources. Our plan is to evaluate the viability of these concepts at scale as well as create an alternative development and execution environment which compliments the features and capabilities of the existing system software and run time options. Our intent is to broaden the application base as well as make the system as a whole more approachable to a larger class of developers and end-users.", acknowledgement = ack-nhfb, fjournal = "ACM SIGOPS Operating Systems Review", } @Book{Younker:2008:FAP, author = "Jeff Younker", title = "Foundations of agile {Python} development: [{Python}, agile project methods, and a comprehensive open source tool chain!]", publisher = pub-APRESS, address = pub-APRESS:adr, pages = "xxi + 393", year = "2008", ISBN = "1-59059-981-0", ISBN-13 = "978-1-59059-981-5", LCCN = "QA76.73.P98", bibdate = "Thu Apr 16 11:22:52 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.gbv.de:20011/gvk", series = "The expert's voice in open source", acknowledgement = ack-nhfb, subject = "Python (Computer program language)", } @Book{Ziade:2008:EPP, author = "Tarek Ziad{\'e} and Paul Kennedy and Shannon Behrens and Wendy Langer and Siddharth Mangarole", title = "Expert {Python} programming: learn best practices to designing, coding, and distributing your {Python} software", publisher = pub-PACKT, address = pub-PACKT:adr, year = "2008", ISBN = "1-84719-494-X, 1-84719-495-8 (e-book)", ISBN-13 = "978-1-84719-494-7, 978-1-84719-495-4 (e-book)", LCCN = "A76.73.P98 Z53 2008", bibdate = "Thu Apr 16 10:17:37 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://proquest.safaribooksonline.com/9781847194947", acknowledgement = ack-nhfb, } @Book{Alchin:2009:PD, author = "Marty Alchin", title = "Pro {Django}", publisher = pub-APRESS, address = pub-APRESS:adr, pages = "????", year = "2009", DOI = "http://dx.doi.org/10.1007/978-1-4302-1048-1", ISBN = "1-4302-1048-6", ISBN-13 = "978-1-4302-1048-1", LCCN = "????", bibdate = "Thu Apr 16 12:30:58 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.gbv.de:20011/gvk", series = "Springer eBook Collection Professional and Applied Computing [Dig. Serial]; Springer-12059 [Dig. Serial]", acknowledgement = ack-nhfb, keywords = "Python", subject = "Computer science", } @Book{Beazley:2009:PER, author = "David M. Beazley", title = "{Python} essential reference", publisher = pub-AW, address = pub-AW:adr, edition = "Fourth", pages = "xxi + 717", year = "2009", ISBN = "0-672-32978-6", ISBN-13 = "978-0-672-32978-4", LCCN = "????", bibdate = "Thu Apr 16 13:03:27 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "\booktitle{Python Essential Reference} is the definitive reference guide to the Python programming language --- the one authoritative handbook that reliably untangles and explains both the core Python library. Designed for the practicing programmer, the book is concise, to the point, and highly accessible. It also includes detailed information on the Python library and many advanced subjects that is not available in either the official Python documentation or any other single reference source. Thoroughly updated to reflect the significant new programming language features and library modules that have been introduced in Python 2.6 and Python 3, the fourth edition of Python Essential Reference is the complete guide for programmers who need to modernize existing Python code or who are planning an eventual migration to Python 3.", acknowledgement = ack-nhfb, tableofcontents = "A tutorial introduction \\ Lexical conventions and syntax \\ Types and objects \\ OPerators and expressions \\ Program structure and control flow \\ Functions and functional programming \\ Classes and object-oriented programming \\ Modules, packages, and distribution \\ Input and output \\ Execution environment \\ Testing, debugging, profiling, and tuning \\ Built-in functions \\ Python runtime services \\ Mathematics \\ Data structures, algorithms, and code simplification \\ String and text handling \\ Python database access \\ File and directory handling \\ Operating system services \\ Threads and concurrency \\ Network programming and sockets \\ Internet application programming \\ Web programming \\ Internet data handling and encoding \\ Miscellaneous library modules \\ Extending and embedding python", } @Article{Beazley:2009:PGB, author = "David Beazley", title = "{Python 3}: The Good, the Bad, and the Ugly", journal = j-LOGIN, volume = "34", number = "2", pages = "??--??", month = apr, year = "2009", CODEN = "LOGNEM", ISSN = "1044-6397", ISSN-L = "1044-6397", bibdate = "Fri Dec 7 11:34:39 MST 2012", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/usenix2000.bib; https://www.usenix.org/publications/login", URL = "https://www.usenix.org/publications/login/april-2009-volume-34-number-2/python-3-good-bad-and-ugly", acknowledgement = ack-nhfb, fjournal = ";login: the USENIX Association newsletter", } @Book{Bird:2009:NLP, author = "Steven Bird and Ewan Klein and Edward Loper", title = "Natural Language Processing with {Python}", publisher = pub-ORA, address = pub-ORA:adr, pages = "500 (est)", year = "2009", ISBN = "0-596-51649-5", ISBN-13 = "978-0-596-51649-9", LCCN = "????", bibdate = "Thu Apr 16 13:05:00 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, } @Article{Boland:2009:IPD, author = "Michael G. Boland and Curtis Clifton", title = "Introducing {PyLighter}: dynamic code highlighter", journal = j-SIGCSE, volume = "41", number = "1", pages = "489--493", month = mar, year = "2009", CODEN = "SIGSD3", DOI = "http://dx.doi.org/10.1145/1539024.1509037", ISSN = "0097-8418", ISSN-L = "0097-8418", bibdate = "Sat Nov 17 15:44:19 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigcse2000.bib", note = "Proceedings of SIGCSE '09.", abstract = "Like a screenplay, a program is both a static artifact and instructions for a dynamic performance. This duality can keep laypeople from appreciating the complexity of software systems and can be a stumbling block for novice programmers. PyLighter lets laypeople and novice programmers perceive the relationship between static Python code and its execution. PyLighter works with everything from simple console applications to arcade-style games, and because PyLighter is easy to adopt and use, instructors can integrate it into any Python-based introductory course without changing the rest of their syllabus.", acknowledgement = ack-nhfb, fjournal = "SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education)", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J688", } @Article{Brune:2009:PUR, author = "Corey Brune", title = "{Python}: An Untapped Resource in System Administration", journal = j-LOGIN, volume = "34", number = "1", pages = "??--??", month = feb, year = "2009", CODEN = "LOGNEM", ISSN = "1044-6397", ISSN-L = "1044-6397", bibdate = "Fri Dec 7 11:34:38 MST 2012", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/usenix2000.bib; https://www.usenix.org/publications/login", URL = "https://www.usenix.org/publications/login/february-2009-volume-34-number-1/python-untapped-resource-system-administration", acknowledgement = ack-nhfb, fjournal = ";login: the USENIX Association newsletter", } @Book{Donaldson:2009:P, author = "Toby Donaldson", title = "{Python}", publisher = pub-PEACHPIT, address = pub-PEACHPIT:adr, edition = "Second", pages = "vi + 185", year = "2009", ISBN = "0-321-58544-5 (paperback)", ISBN-13 = "978-0-321-58544-8 (paperback)", LCCN = "X09.F00872", bibdate = "Thu Apr 16 10:54:00 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; library.ox.ac.uk:210/ADVANCE", series = "Visual quickstart guide", acknowledgement = ack-nhfb, subject = "Python (Computer program language)", } @Book{Downey:2009:PSD, author = "Allen Downey", title = "{Python} for software design: how to think like a computer scientist", publisher = pub-CAMBRIDGE, address = pub-CAMBRIDGE:adr, pages = "????", year = "2009", ISBN = "0-521-89811-0, 0-521-72596-8", ISBN-13 = "978-0-521-89811-9, 978-0-521-72596-5", LCCN = "QA76.73.P98 D693 2009", bibdate = "Thu Apr 16 12:09:42 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", acknowledgement = ack-nhfb, subject = "Python (Computer program language)", } @Article{Drummond:2009:PPB, author = "L. Anthony Drummond and Vicente Galiano and Violeta Migall{\'o}n and Jose Penad{\'e}s", title = "{PyACTS}: a {Python} Based Interface to {ACTS} Tools and Parallel Scientific Applications", journal = j-INT-J-PARALLEL-PROG, volume = "37", number = "1", pages = "58--77", month = feb, year = "2009", CODEN = "IJPPE5", ISSN = "0885-7458 (print), 1573-7640 (electronic)", ISSN-L = "0885-7458", bibdate = "Wed Sep 1 16:06:47 MDT 2010", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.springerlink.com/openurl.asp?genre=article&issn=0885-7458&volume=37&issue=1&spage=58", acknowledgement = ack-nhfb, fjournal = "International Journal of Parallel Programming", journal-URL = "http://link.springer.com/journal/10766", } @Article{Enbody:2009:PCP, author = "Richard J. Enbody and William F. Punch and Mark McCullen", title = "{Python CS1} as preparation for {C++ CS2}", journal = j-SIGCSE, volume = "41", number = "1", pages = "116--120", month = mar, year = "2009", CODEN = "SIGSD3", DOI = "http://dx.doi.org/10.1145/1539024.1508907", ISSN = "0097-8418", ISSN-L = "0097-8418", bibdate = "Sat Nov 17 15:44:19 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigcse2000.bib", note = "Proceedings of SIGCSE '09.", abstract = "How suitable is a Python-based CS1 course as preparation for a C++-based CS2 course? After fifteen years of using C++ for both CS1 and CS2, the Computer Science Department at Michigan State University changed the CS1 course to Python. This paper examines the impact of that change on the second course in the sequence, CS2, which kept C++ as its primary language. We report results on a CS2 class which had a mixture of students who had used either C++ or Python from our CS1 course. The CS2 class covered the same topics as previously, though with some changes, and even gave the same final exam as a previous offering. Independent samples t-tests were used to compare students from the Python group with students from the non-Python group on three outcomes: final exam grade, programming projects scores, and final grade for the course. The main result was that there were no significant differences between the groups for all three outcomes. In addition, multiple regression analysis showed that students' past performance (overall GPA) in the University predicted final grades, final exam scores, and programming project scores for the course, but there was no effect of the programming language feature: Python or non-Python. We feel this shows that the Python-based CS1 course prepared students for the C++-based CS2 course as well as the C++-based CS1 course did---while exposing them to a different, powerful and useful language.", acknowledgement = ack-nhfb, fjournal = "SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education)", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J688", } @Book{Ernesti:2009:PUH, author = "Johannes Ernesti and Peter Kaiser", title = "{Python 3: Das umfassende Handbuch}", publisher = "Galileo Press GmbH", address = "Bonn, Germany", edition = "Second", pages = "870 (est.)", year = "2009", ISBN = "3-8362-1412-1", ISBN-13 = "978-3-8362-1412-4", LCCN = "????", bibdate = "Thu Apr 16 12:01:42 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.gbv.de:20011/gvk", price = "EUR 39.90", series = "Galileo Computing", acknowledgement = ack-nhfb, language = "German", } @Book{Forcier:2009:PWD, author = "Jeff Forcier and Paul Bissex and Wesley Chun", title = "{Python Web} development with {Django}", publisher = pub-AW, address = pub-AW:adr, pages = "377", year = "2009", ISBN = "0-13-235613-9 (paperback)", ISBN-13 = "978-0-13-235613-8 (paperback)", LCCN = "TK5105.8885.D54 F68 2009", bibdate = "Thu Apr 16 12:09:18 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", series = "Developer's library", acknowledgement = ack-nhfb, subject = "Web site development; Django (Electronic resource); Python (Computer program language); Web sites; Authoring programs", tableofcontents = "Introduction / 1 \\ Part I: Getting Started \\ 1: Practical Python for Django / 7 \\ \\ 2: Django for the Impatient: Building a Blog / 57 \\ 3: Starting Out / 77 \\ Part II: Django in Depth \\ 4: Defining and Using Models / 89 \\ 5: URLs, HTTP Mechanisms, and Views / 117 \\ 6: Templates and Form Processing / 135 \\ Part III: Django Applications by Example \\ 7: Photo Gallery / 159 \\ 8: Content Management System / 181 \\ 9: Liveblog / 205 \\ 10: Pastebin / 221 \\ Part IV: Advanced Django Techniques and Features \\ 11: Advanced Django Programming / 235 \\ 12: Advanced Django Deployment / 261 \\ Part V: Appendices \\ Appendix A: Command Line Basics / 285 \\ Appendix B: Installing and Running Django / 295 \\ Appendix C: Tools for Practical Django Development / 313 \\ Appendix D: Finding, Evaluating, and Using Django Applications / 321 \\ Appendix E: Django on the Google App Engine / 325 \\ Appendix F: Getting Involved in the Django Project / 337 \\ Index / 339 \\ Colophon / 375", } @Article{Furr:2009:PGS, author = "Michael Furr and Jong-hoon (David) An and Jeffrey S. Foster", title = "Profile-guided static typing for dynamic scripting languages", journal = j-SIGPLAN, volume = "44", number = "10", pages = "283--300", month = oct, year = "2009", CODEN = "SINODQ", DOI = "http://dx.doi.org/10.1145/1640089.1640110", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Many popular scripting languages such as Ruby, Python, and Perl include highly dynamic language constructs, such as an eval method that evaluates a string as program text. While these constructs allow terse and expressive code, they have traditionally obstructed static analysis. In this paper we present PRuby, an extension to Diamondback Ruby (DRuby), a static type inference system for Ruby. PRuby augments DRuby with a novel dynamic analysis and transformation that allows us to precisely type uses of highly dynamic constructs. PRuby's analysis proceeds in three steps. First, we use run-time instrumentation to gather per-application profiles of dynamic feature usage. Next, we replace dynamic features with statically analyzable alternatives based on the profile. We also add instrumentation to safely handle cases when subsequent runs do not match the profile. Finally, we run DRuby's static type inference on the transformed code to enforce type safety.\par We used PRuby to gather profiles for a benchmark suite of sample Ruby programs. We found that dynamic features are pervasive throughout the benchmarks and the libraries they include, but that most uses of these features are highly constrained and hence can be effectively profiled. Using the profiles to guide type inference, we found that DRuby can generally statically type our benchmarks modulo some refactoring, and we discovered several previously unknown type errors. These results suggest that profiling and transformation is a lightweight but highly effective approach to bring static typing to highly dynamic languages.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J706", keywords = "profile guided analysis; RIL; ruby; scripting languages", } @Book{Gaddis:2009:SP, author = "Tony Gaddis", title = "Starting out with {Python}", publisher = "Pearson Addison Wesley", address = "Boston, MA, USA", pages = "xv + 482", year = "2009", ISBN = "0-321-53711-4", ISBN-13 = "978-0-321-53711-9", LCCN = "QA76.73.P98 G34 2009", bibdate = "Thu Apr 16 08:59:10 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", URL = "http://www.loc.gov/catdir/toc/fy0804/2008001684.html", acknowledgement = ack-nhfb, subject = "Python (Computer program language)", tableofcontents = "Introduction to computers and programming \\ Input, processing, and output \\ Simple functions \\ Decision structures and Boolean logic \\ Repetition structures \\ Value-returning functions and modules \\ Files and exceptions \\ Working with sequences: strings and lists \\ Classes and object-oriented programming \\ Inheritance \\ Recursion \\ GUI programming \\ Appendix A: Installing Python \\ Appendix B: Introduction to IDLE \\ Appendix C: The ASCII character set", } @Book{Gardner:2009:DGP, author = "James Gardner", title = "The definitive guide to {Pylons}: [{Pylons} is a lightweight web framework emphasizing flexibility and rapid development using standard tools from the {Python} community; includes {SQLAlchemy}, {JavaScript}, and {WSG}!]", publisher = pub-APRESS, address = pub-APRESS:adr, pages = "xxv + 536", year = "2009", ISBN = "1-59059-934-9 (paperback)", ISBN-13 = "978-1-59059-934-1 (paperback)", LCCN = "????", bibdate = "Thu Apr 16 12:30:45 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.gbv.de:20011/gvk", price = "US\$46,99", series = "The expert's voice in web development; Books for professionals by professionals", acknowledgement = ack-nhfb, } @Article{Goldwasser:2009:GPF, author = "Michael H. Goldwasser and David Letscher", title = "A graphics package for the first day and beyond", journal = j-SIGCSE, volume = "41", number = "1", pages = "206--210", month = mar, year = "2009", CODEN = "SIGSD3", DOI = "http://dx.doi.org/10.1145/1539024.1508945", ISSN = "0097-8418", ISSN-L = "0097-8418", bibdate = "Sat Nov 17 15:44:19 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigcse2000.bib", note = "Proceedings of SIGCSE '09.", abstract = "We describe cs1graphics, a new Python drawing package designed with pedagogy in mind. The package is simple enough that students can sit down and make use of it from the first day of an introductory class. Yet it provides seamless support for intermediate and advanced lessons as students progress. In this paper, we discuss its versatility in the context of an introductory course. The package is available at www.cs1graphics.org.", acknowledgement = ack-nhfb, fjournal = "SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education)", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J688", } @Article{Guyer:2009:FPD, author = "Jonathan E. Guyer and Daniel Wheeler and James A. Warren", title = "{FiPy}: Partial Differential Equations with {Python}", journal = j-COMPUT-SCI-ENG, volume = "11", number = "3", pages = "6--15", month = may # "\slash " # jun, year = "2009", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2009.52", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Thu May 13 11:08:14 2010", bibsource = "http://www.computer.org/portal/web/csdl/magazines/cise; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Article{Hambrusch:2009:MAT, author = "Susanne Hambrusch and Christoph Hoffmann and John T. Korb and Mark Haugan and Antony L. Hosking", title = "A multidisciplinary approach towards computational thinking for science majors", journal = j-SIGCSE, volume = "41", number = "1", pages = "183--187", month = mar, year = "2009", CODEN = "SIGSD3", DOI = "http://dx.doi.org/10.1145/1539024.1508931", ISSN = "0097-8418", ISSN-L = "0097-8418", bibdate = "Sat Nov 17 15:44:19 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigcse2000.bib", note = "Proceedings of SIGCSE '09.", abstract = "This paper describes the development and initial evaluation of a new course ``Introduction to Computational Thinking'' taken by science majors to fulfill a college computing requirement. The course was developed by computer science faculty in collaboration with science faculty and it focuses on the role of computing and computational principles in scientific inquiry. It uses Python and Python libraries to teach computational thinking via basic programming concepts, data management concepts, simulation, and visualization. Problems with a computational aspect are drawn from different scientific disciplines and are complemented with lectures from faculty in those areas. Our initial evaluation indicates that the problem-driven approach focused on scientific discovery and computational principles increases the student's interest in computing.", acknowledgement = ack-nhfb, fjournal = "SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education)", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J688", } @Book{Kinser:2009:PB, author = "Jason M. Kinser", title = "{Python} for bioinformatics", publisher = "Jones and Bartlett Publishers", address = "Sudbury, MA, USA", pages = "xvii + 417", year = "2009", ISBN = "0-7637-5186-3", ISBN-13 = "978-0-7637-5186-9", LCCN = "QH324.2.K55; QH324.2.K55 2009", bibdate = "Thu Apr 16 12:32:38 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; library.mit.edu:9909/mit01", series = "Jones and Bartlett series in biomedical informatics", acknowledgement = ack-nhfb, remark = "Ch. 1. Introduction \\ Ch. 2. NumPy and SciPy \\ Ch. 3. Image Manipulation \\ Ch. 4. The Akando and Dancer Modules \\ Ch. 5. Statistics \\ Ch. 6. Parsing DNA Data Files \\ Ch. 7. Sequence Alignment \\ Ch. 8. Dynamic Programming \\ Ch. 9. Tandem Repeats \\ Ch. 10. Hidden Markov Models \\ Ch. 11. Genetic Algorithms \\ Ch. 12. Multiple Sequence Alignment \\ Ch. 13. Gapped Alignments \\ Ch. 14. Trees \\ Ch. 15. Text Mining \\ Ch. 16. Measuring Complexity \\ Ch. 17. Clustering \\ Ch. 18. Self-Organizing Maps \\ Ch. 19. Principal Component Analysis \\ Ch. 20. Species Identification \\ Ch. 21. Fourier Transforms \\ Ch. 22. Correlations \\ Ch. 23. Numerical Sequence Alignment \\ Ch. 24. Gene Expression Array Files \\ Ch. 25. Spot Finding and Measurement \\ Ch. 26. Spreadsheet Arrays and Data Displays \\ Ch. 27. Applications with Expression Arrays", subject = "Bioinformatics", } @Book{Langtangen:2009:PSP, author = "Hans Petter Langtangen", title = "A primer on scientific programming with {Python}", volume = "6", publisher = pub-SV, address = pub-SV:adr, pages = "xxvii + 693", year = "2009", DOI = "http://dx.doi.org/10.1007/978-3-642-02475-7", ISBN = "3-642-02475-0, 3-642-02474-2", ISBN-13 = "978-3-642-02475-7, 978-3-642-02474-0", ISSN = "1611-0994", LCCN = "QA76.73.P98 L286 2009", bibdate = "Mon Jul 12 16:17:14 MDT 2010", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; library.mit.edu:9909/mit01", series = "Texts in computational science and engineering", acknowledgement = ack-nhfb, subject = "Python (Computer program language); mathematics; computer science; software engineering; physics", } @Article{LeVeque:2009:PTR, author = "Randall J. LeVeque", title = "{Python} Tools for Reproducible Research on Hyperbolic Problems", journal = j-COMPUT-SCI-ENG, volume = "11", number = "1", pages = "19--27", month = jan # "\slash " # feb, year = "2009", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2009.13", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Thu May 13 11:08:14 2010", bibsource = "http://www.computer.org/portal/web/csdl/magazines/cise; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Book{Lewis:2009:HPP, author = "Andrew Lewis", title = "High performance {Python}", publisher = pub-ORA, address = pub-ORA:adr, pages = "????", year = "2009", ISBN = "0-596-15996-X", ISBN-13 = "978-0-596-15996-2", LCCN = "????", bibdate = "Thu Apr 16 13:02:33 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, } @Article{Lister:2009:FER, author = "Raymond Lister and Colin Fidge and Donna Teague", title = "Further evidence of a relationship between explaining, tracing and writing skills in introductory programming", journal = j-SIGCSE, volume = "41", number = "3", pages = "161--165", month = sep, year = "2009", CODEN = "SIGSD3", DOI = "http://dx.doi.org/10.1145/1595496.1562930", ISSN = "0097-8418", ISSN-L = "0097-8418", bibdate = "Sat Nov 17 15:44:23 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigcse2000.bib", note = "Proceedings of ITiCSE '09.", abstract = "This paper reports on a replication of earlier studies into a possible hierarchy of programming skills. In this study, the students from whom data was collected were at a university that had not provided data for earlier studies. Also, the students were taught the programming language ``Python'', which had not been used in earlier studies. Thus this study serves as a test of whether the findings in the earlier studies were specific to certain institutions, student cohorts, and programming languages. Also, we used a non-parametric approach to the analysis, rather than the linear approach of earlier studies. Our results are consistent with the earlier studies. We found that students who cannot trace code usually cannot explain code, and also that students who tend to perform reasonably well at code writing tasks have also usually acquired the ability to both trace code and explain code.", acknowledgement = ack-nhfb, fjournal = "SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education)", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J688", } @Book{Lutz:2009:LPa, author = "Mark Lutz", title = "Learning {Python}", publisher = pub-ORA, address = pub-ORA:adr, edition = "Fourth", pages = "xlix + 1160", year = "2009", ISBN = "0-596-15806-8 (paperback)", ISBN-13 = "978-0-596-15806-4 (paperback)", LCCN = "QA76.73.P98 L877 2009", bibdate = "Sat Nov 13 10:06:19 MST 2010", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; melvyl.cdlib.org:210/CDL90", acknowledgement = ack-nhfb, remark = "Covers Python 2.6 and 3.x.", subject = "Python (Computer program language); Object-oriented programming (Computer science)", } @Book{Lutz:2009:LPb, author = "Mark Lutz", title = "Learning {Python}", publisher = pub-ORA-MEDIA, address = pub-ORA-MEDIA:adr, edition = "Fourth", pages = "????", year = "2009", ISBN = "0-596-80539-X", ISBN-13 = "978-0-596-80539-5", LCCN = "QA76.73.P98 L877 2009", bibdate = "Sat Nov 13 10:06:19 MST 2010", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; melvyl.cdlib.org:210/CDL90; prodorbis.library.yale.edu:7090/voyager", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Object-oriented programming (Computer science)", } @Article{Martins:2009:POO, author = "Joaquim R. R. A. Martins and Christopher Marriage and Nathan Tedford", title = "{pyMDO}: An Object-Oriented Framework for Multidisciplinary Design Optimization", journal = j-TOMS, volume = "36", number = "4", pages = "20:1--20:25", month = aug, year = "2009", CODEN = "ACMSCU", DOI = "http://dx.doi.org/10.1145/1555386.1555389", ISSN = "0098-3500 (print), 1557-7295 (electronic)", ISSN-L = "0098-3500", bibdate = "Mon Aug 31 15:04:00 MDT 2009", bibsource = "http://www.acm.org/pubs/contents/journals/toms/; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "We present pyMDO, an object-oriented framework that facilitates the usage and development of algorithms for multidisciplinary optimization (MDO). The resulting implementation of the MDO methods is efficient and portable. The main advantage of the proposed framework is that it is flexible, with a strong emphasis on object-oriented classes and operator overloading, and it is therefore useful for the rapid development and evaluation of new MDO methods. The top layer interface is programmed in Python and it allows for the layers below the interface to be programmed in C, C++, Fortran, and other languages. We describe an implementation of pyMDO and demonstrate that we can take advantage of object-oriented programming to obtain intuitive, easy-to-read, and easy-to-develop codes that are at the same time efficient. This allows developers to focus on the new algorithms they are developing and testing, rather than on implementation details. Examples demonstrate the user interface and the corresponding results show that the various MDO methods yield the correct solutions.", acknowledgement = ack-nhfb, articleno = "20", fjournal = "ACM Transactions on Mathematical Software", journal-URL = "http://portal.acm.org/toc.cfm?idx=J782", } @Article{Mentis:2009:RAD, author = "Alexander S. Mentis", title = "A robotics {API} dialect for type-safe robots: translating {Myro} to {Ada}", journal = j-SIGADA-LETTERS, volume = "29", number = "3", pages = "91--102", month = dec, year = "2009", CODEN = "AALEE5", DOI = "http://dx.doi.org/10.1145/1653616.1647442", ISSN = "1094-3641 (print), 1557-9476 (electronic)", ISSN-L = "1094-3641", bibdate = "Mon Jun 21 14:04:37 MDT 2010", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "In this paper, we present an Ada robotics API designed to be used in teaching undergraduate-level computer science. Our API is inspired by Myro, a Python-based API, but we improve upon Myro's usability, readability, modularity, and documentation by using features of the Ada programming language and the GNAT Programming Studio's documentation generation tool. The encapsulation, abstraction, and data hiding provided by Ada's packages make it easy for beginning programmers to use the API for advanced tasks, while Ada's syntax and readability allow educators to use the underlying code later in a course or curriculum to illustrate more advanced concepts to the same students as their knowledge and experience grow.", acknowledgement = ack-nhfb, fjournal = "ACM SIGAda Ada Letters", keywords = "Myro; scribbler; undergraduate computer science education", } @Book{Miller:2009:PPC, author = "Bradley N. Miller and David L. Ranum", title = "{Python} programming in context", publisher = "Jones and Bartlett Publishers", address = "Sudbury, MA, USA", pages = "xxv + 492", year = "2009", ISBN = "0-7637-4602-9 (paperback)", ISBN-13 = "978-0-7637-4602-5 (paperback)", LCCN = "QA76.73.P98 M544 2009", bibdate = "Thu Apr 16 10:46:48 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", acknowledgement = ack-nhfb, subject = "Python (Computer program language)", } @Article{Misra:2009:MCT, author = "Ananya Misra and Douglas Blank and Deepak Kumar", title = "A music context for teaching introductory computing", journal = j-SIGCSE, volume = "41", number = "3", pages = "248--252", month = sep, year = "2009", CODEN = "SIGSD3", DOI = "http://dx.doi.org/10.1145/1595496.1562955", ISSN = "0097-8418", ISSN-L = "0097-8418", bibdate = "Sat Nov 17 15:44:23 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigcse2000.bib", note = "Proceedings of ITiCSE '09.", abstract = "We describe myro.chuck, a Python module for controlling music synthesis, and its applications to teaching introductory computer science. The module was built within the Myro framework using the ChucK programming language, and was used in an introductory computer science course combining robots, graphics and music. The results supported the value of music in engaging students and broadening their view of computer science.", acknowledgement = ack-nhfb, fjournal = "SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education)", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J688", } @Article{Ochem:2009:MLP, author = "Quentin Ochem", title = "Multi-language programming with {Ada}", journal = j-SIGADA-LETTERS, volume = "29", number = "3", pages = "19--20", month = dec, year = "2009", CODEN = "AALEE5", DOI = "http://dx.doi.org/10.1145/1647420.1647431", ISSN = "1094-3641 (print), 1557-9476 (electronic)", ISSN-L = "1094-3641", bibdate = "Mon Jun 21 14:04:37 MDT 2010", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Building complex applications often requires putting together pieces of software or requirements that have not been made to work together in the first place. Thinking of a project with a high integrity kernel written in Ada, using a set of low level libraries and drivers written in C or C++, with a graphical interface done in Java and unit tests driven by python is not thinking of science fiction anymore. It's actual concrete and day-to-day work. Unfortunately, having all of these technologies talking to each other is not straightforward, and often requires a deep knowledge of both sides of the technology and extensive manual work.\par In this tutorial, we'll first study how to interface directly Ada with native languages, such as C or C++. We'll then have a deep look at communications with languages running on virtual machines, such as Java, Python and the .NET framework. Finally, we'll see how Ada can be interfaced with an arbitrary language using a middleware solution, such as SOAP or CORBA We?ll see how the communication can be manually done using low level features and APIs, and how a substantial part of this process can be automated using high level binding generators.", acknowledgement = ack-nhfb, fjournal = "ACM SIGAda Ada Letters", keywords = "Ada; APIs; communication; interfacing; languages; middleware; programming; software; systems", } @Book{Pilgrim:2009:DP, author = "Mark Pilgrim", title = "Dive into {Python 3}", publisher = pub-APRESS, address = pub-APRESS:adr, pages = "xlix + 360", year = "2009", ISBN = "1-4302-2415-0", ISBN-13 = "978-1-4302-2415-0", LCCN = "QA76.73.P98 P57 2009", bibdate = "Tue Mar 10 17:27:24 MDT 2015", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", series = "The expert's voice in open source", URL = "http://www.loc.gov/catdir/enhancements/fy1502/2011377607-b.html; http://www.loc.gov/catdir/enhancements/fy1502/2011377607-d.html; http://www.loc.gov/catdir/enhancements/fy1502/2011377607-t.html", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Object-oriented programming (Computer science)", tableofcontents = "Your first Python program \\ Native datatypes \\ Comprehensions \\ Strings \\ Regular expressions \\ Closures and generators \\ Classes and iterators \\ Advanced iterators \\ Unit Testing \\ Refactoring \\ Files \\ XML \\ Serializing Python objects \\ HTTP web services \\ Case study : porting chardet to Python 3 \\ Packaging Python libraries", } @Article{Pradal:2009:PPB, author = "C. Pradal and F. Boudon and C. Nouguier and J. Chopard and C. Godin", title = "{PlantGL}: a {Python}-based geometric library for {$3$D} plant modelling at different scales", journal = j-GRAPH-MODELS, volume = "71", number = "1", pages = "1--21", month = jan, year = "2009", CODEN = "GRMOFM", DOI = "http://dx.doi.org/10.1016/j.gmod.2008.10.001", ISSN = "1524-0703 (print), 1524-0711 (electronic)", ISSN-L = "1524-0703", bibdate = "Sat Dec 10 08:38:11 MST 2011", bibsource = "http://www.math.utah.edu/pub/tex/bib/cvgip.bib; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.sciencedirect.com/science/journal/15240703", URL = "http://www.sciencedirect.com/science/article/pii/S1524070308000143", acknowledgement = ack-nhfb, fjournal = "Graphical Models", journal-URL = "http://www.sciencedirect.com/science/journal/15240703", } @Article{Ravitch:2009:AGL, author = "Tristan Ravitch and Steve Jackson and Eric Aderhold and Ben Liblit", title = "Automatic generation of library bindings using static analysis", journal = j-SIGPLAN, volume = "44", number = "6", pages = "352--362", month = jun, year = "2009", CODEN = "SINODQ", DOI = "http://dx.doi.org/10.1145/1543135.1542516", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "High-level languages are growing in popularity. However, decades of C software development have produced large libraries of fast, time-tested, meritorious code that are impractical to recreate from scratch. Cross-language bindings can expose low-level C code to high-level languages. Unfortunately, writing bindings by hand is tedious and error-prone, while mainstream binding generators require extensive manual annotation or fail to offer the language features that users of modern languages have come to expect.\par We present an improved binding-generation strategy based on static analysis of unannotated library source code. We characterize three high-level idioms that are not uniquely expressible in C's low-level type system: array parameters, resource managers, and multiple return values. We describe a suite of interprocedural analyses that recover this high-level information, and we show how the results can be used in a binding generator for the Python programming language. In experiments with four large C libraries, we find that our approach avoids the mistakes characteristic of hand-written bindings while offering a level of Python integration unmatched by prior automated approaches. Among the thousands of functions in the public interfaces of these libraries, roughly 40\% exhibit the behaviors detected by our static analyses.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J706", keywords = "bindings; dataflow analysis; FFI; foreign function interfaces; multi-language code reuse; static library analysis", } @Book{Reed:2009:DSA, author = "David M. Reed and John M. Zelle", title = "Data structures and algorithms using {Python} and {C++}", publisher = "Franklin, Beedle and Associates, Inc.", address = "Wilsonville, OR, USA", pages = "????", year = "2009", ISBN = "1-59028-233-7", ISBN-13 = "978-1-59028-233-5", LCCN = "QA76.73.P98 R44 2009", bibdate = "Thu Apr 16 12:10:06 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", acknowledgement = ack-nhfb, remark = "Builds on knowledge from a first course in computer programming using Python. Makes a transition from programming in Python to a data structures course and programming in C++", subject = "Python (Computer program language); C++ (Computer program language); Data structures (Computer science); Computer algorithms", } @Article{Riehl:2009:LEO, author = "Jonathan Riehl", title = "Language embedding and optimization in {Mython}", journal = j-SIGPLAN, volume = "44", number = "12", pages = "39--48", month = dec, year = "2009", CODEN = "SINODQ", DOI = "http://dx.doi.org/10.1145/1640134.1640141", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Aug 31 22:04:07 MDT 2010", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Mython is an extensible variant of the Python programming language. Mython achieves extensibility by adding a quotation mechanism that accepts an additional parameter as well as the code being quoted. The additional quotation parameter takes the form of a Mython expression. Unlike other user code, Mython evaluates the quotation parameter at compile-time. The result of the compile-time expression is a function that is used to both parse the quoted code, and extend the compile-time environment. By explicitly passing the compilation environment to compile-time quotation functions, Mython's parameterized quotation allows users to inject code into the language compiler. Injected code can extend the language by modifying the compilation phases, which are visible to the compilation environment. The Mython language is realized by the MyFront compiler, a tool for translating Mython into Python byte-code modules. This paper introduces the Mython language, describes the implementation and usage of the MyFront tool, and shows how MyFront can be used to implement domain-specific optimizations using a little rewrite language.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J706", keywords = "compile-time metaprogramming; extensible languages; open compilers", } @Book{Scott:2009:PLP, author = "Michael L. Scott", title = "Programming Language Pragmatics", publisher = pub-MORGAN-KAUFMANN, address = pub-MORGAN-KAUFMANN:adr, edition = "Third", pages = "xxx + 910", year = "2009", ISBN = "0-12-374514-4", ISBN-13 = "978-0-12-374514-9", LCCN = "????", bibdate = "Thu May 21 16:07:05 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.gbv.de:20011/gvk", note = "Many sections of the book are relegated to the accompanying CD-ROM.", acknowledgement = ack-nhfb, keywords = "awk; perl; python; ruby; sed; sh; tcl", } @Book{Seitz:2009:GPP, author = "Justin Seitz", title = "{Gray Hat Python}: {Python} programming for hackers and reverse engineers", publisher = pub-NO-STARCH, address = pub-NO-STARCH:adr, pages = "????", year = "2009", ISBN = "1-59327-192-1, 1-59327-224-3 (e-book)", ISBN-13 = "978-1-59327-192-3, 978-1-59327-224-1 (e-book)", LCCN = "QA76.9.A25 S457 2009", bibdate = "Thu Apr 16 12:07:47 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", URL = "http://proquest.safaribooksonline.com/9781593271923", abstract = "Python is the high-level language of choice for hacking, vulnerability discovery, and security research. 'Gray Hat Python' explains the intricacies of using Python to assist in a range of security analysis tasks.", acknowledgement = ack-nhfb, subject = "Computer security; Python (Computer program language)", tableofcontents = "Setting up your development environment \\ Debuggers and debugger design \\ Building a Windows debugger \\ PyDbg : a pure Python Windows debugger \\ Immunity debugger : the best of both worlds \\ Hooking \\ DLL and code injection \\ Fuzzing \\ Sulley \\ Fuzzing Windows drivers \\ DAPython -Scripting IDA Pro \\ PyEmu --- The scriptable emulator", } @Article{Shacham:2009:CAS, author = "Ohad Shacham and Martin Vechev and Eran Yahav", title = "{Chameleon}: adaptive selection of collections", journal = j-SIGPLAN, volume = "44", number = "6", pages = "408--418", month = jun, year = "2009", CODEN = "SINODQ", DOI = "http://dx.doi.org/10.1145/1542476.1542522", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Languages such as Java and C\#, as well as scripting languages like Python, and Ruby, make extensive use of Collection classes. A collection implementation represents a fixed choice in the dimensions of operation time, space utilization, and synchronization. Using the collection in a manner not consistent with this fixed choice can cause significant performance degradation. In this paper, we present CHAMELEON, a low-overhead automatic tool that assists the programmer in choosing the appropriate collection implementation for her application. During program execution, CHAMELEON computes elaborate trace and heap-based metrics on collection behavior. These metrics are consumed on-the-fly by a rules engine which outputs a list of suggested collection adaptation strategies. The tool can apply these corrective strategies automatically or present them to the programmer. We have implemented CHAMELEON on top of a IBM's J9 production JVM, and evaluated it over a small set of benchmarks. We show that for some applications, using CHAMELEON leads to a significant improvement of the memory footprint of the application.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J706", keywords = "bloat; collections; Java; semantic profiler", } @Book{Summerfield:2009:PPC, author = "Mark Summerfield", title = "Programming in {Python 3}: a complete introduction to the {Python} language", publisher = pub-AW, address = pub-AW:adr, pages = "xiv + 525", year = "2009", ISBN = "0-13-712929-7 (paperback)", ISBN-13 = "978-0-13-712929-4 (paperback)", LCCN = "QA76.73.P98 S86 2009", bibdate = "Thu Apr 16 08:04:00 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", series = "Developer's library", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Object-oriented programming (Computer science)", tableofcontents = "Introduction / 1 \\ 1: Rapid Introduction to Procedural Programming / 7 \\ Creating and Running Python Programs / 7 \\ Python's ``Beautiful Heart'' / 12 \\ Example / 36 \\ Summary / 42 \\ Exercises / 44 \\ 2:Data Types / 47 \\ Identifiers and Keywords / 47 \\ Integral Types / 50 \\ Floating-Point Types / 54 \\ Strings / 61 \\ Examples / 88 \\ Summary / 95 \\ Exercises / 97 \\ 3: Collection Data Types / 99 \\ Sequence Types / 9 \\ Set Types / 112 \\ Mapping Types / 117 \\ Iterating and Copying Collections / 127 \\ Examples / 138 \\ Summary / 146 \\ Exercises / 147 \\ 4: Control Structures and Functions / 149 \\ Control Structures / 149 \\ Exception Handling / 153 \\ Custom Functions / 161 \\ Example: make\_html\_skeleton.py / 175 \\ Summary / 181 \\ Exercise / 182 \\ 5: Modules / 185 \\ Modules and Packages / 185 \\ Overview of Python's Standard Library / 20 \\ Summary / 219 \\ Exercise / 220 \\ 6: Object-Oriented Programming / 223 \\ The Object-Oriented Approach / 224 \\ Custom Classes / 228 \\ Custom Collection Classes / 25 \\ Summary / 272 \\ Exercises / 274 \\ 7: File Handling / 277 \\ Writing and Reading Binary Data / 282 \\ Writing and Parsing Text Files / 294 \\ Writing and Parsing XML Files / 302 \\ Random Access Binary Files / 313 \\ Summary / 326 \\ Exercises / 327 \\ 8: Advanced Programming Techniques / 329 \\ Further Procedural Programming / 330 \\ Further Object-Oriented Programming / 353 \\ Functional-Style Programming / 384 \\ Example: Valid.py / 388 \\ Summary / 390 \\ Exercises / 392 \\ 9: Processes and Threading / 395 \\ Delegating Work to Processes / 396 \\ Delegating Work to Threads / 400 \\ Summary / 409 \\ Exercises / 410 \\ 10: Networking / 413 \\ Creating a TCP Client / 414 \\ Creating a TCP Server / 420 \\ Summary / 427 \\ Exercises / 427 \\ 11: Database Programming / 431 \\ DBM Databases / 432 \\ SQL Databases / 436 \\ Summary / 443 \\ Exercise / 444 \\ 12: Regular Expressions / 445 \\ Python's Regular Expression Language / 446 \\ The Regular Expression Module / 455 \\ Summary / 464 \\ Exercises / 465 \\ 13: Introduction to GUI Programming \\ Dialog-Style Programs \\ Main-Window-Style Programs \\ Summary \\ Exercises \\ Epilogue \\ About the Author \\ Production \\ Index", } @Book{Sweigart:2009:PPL, author = "Albert Sweigart", title = "Playing with {Python}: learn to program by making games", publisher = pub-NO-STARCH, address = pub-NO-STARCH:adr, pages = "????", year = "2009", ISBN = "1-59327-198-0 (paperback)", ISBN-13 = "978-1-59327-198-5 (paperback)", LCCN = "????", bibdate = "Thu Apr 16 13:05:01 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; library.tcd.ie:210/advance", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Computer games; Programming", } @Book{Swinnen:2009:APA, author = "G{\'e}rard Swinnen", title = "Apprendre {\'a} programmer avec Python: objet, multithreading, {\'e}v{\'e}nements, bases de donn{\'e}es, programmation web, programmation r{\'e}seau, Unicode", publisher = pub-EYROLLES, address = pub-EYROLLES:adr, pages = "xviii + 341", year = "2009", LCCN = "????", bibdate = "Thu Apr 16 12:00:29 MDT 2009", bibsource = "carmin.sudoc.abes.fr:210/ABES-Z39-PUBLIC; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, language = "French", } @Book{Theis:2009:EPC, author = "Thomas Theis", title = "{Einstieg in Python 3: [auf CD: Python 3 und alle Code-Beispiele des Buchs ; f{\"u}r Programmanf{\"a}nger und Umsteiger ; mit vielen Beispielen und {\`e}Ubungsaufgaben ; inkl. objektorientierter Programmierung, Datenbanken, Internet u.v.m.]}", publisher = "Galileo Press", address = "Bonn, Germany", edition = "Second", pages = "399", year = "2009", ISBN = "3-8362-1406-7", ISBN-13 = "978-3-8362-1406-3", LCCN = "????", bibdate = "Thu Apr 16 12:02:26 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.gbv.de:20011/gvk", price = "EUR 24.90", series = "Galileo computing", acknowledgement = ack-nhfb, language = "German", remark = "Mit Online-Aktualisierung unter www.galileocomputing.de.", } @Article{Tohline:2009:CPM, author = "Joel E. Tohline and Jinghya Ge and Wesley Even and Erik Anderson", title = "A Customized {Python} Module for {CFD} Flow Analysis within {VisTrails}", journal = j-COMPUT-SCI-ENG, volume = "11", number = "3", pages = "68--73", month = may # "\slash " # jun, year = "2009", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2009.44", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Thu May 13 11:08:14 2010", bibsource = "http://www.computer.org/portal/web/csdl/magazines/cise; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Book{Tosi:2009:MPD, author = "Sandro Tosi", title = "{Matplotlib} for {Python} developers: build remarkable publication quality plots the easy way", publisher = pub-PACKT, address = pub-PACKT:adr, pages = "iv + 293", year = "2009", ISBN = "1-84719-790-6", ISBN-13 = "978-1-84719-790-0", LCCN = "QA76.73.P48 T67 2009", bibdate = "Mon Jul 12 16:23:13 MDT 2010", bibsource = "aubrey.tamu.edu:7090/voyager; http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.gbv.de:20011/gvk", series = "From technologies to solutions", acknowledgement = ack-nhfb, } @Book{Vaingast:2009:BPV, author = "Shai Vaingast", title = "Beginning {Python} visualization: crafting visual transformation scripts", publisher = pub-APRESS, address = pub-APRESS:adr, pages = "xx + 363", year = "2009", ISBN = "1-4302-1843-6 (paperback)", ISBN-13 = "978-1-4302-1843-2 (paperback)", LCCN = "QA76.73.P98 V35 2009", bibdate = "Mon Jul 12 15:08:11 MDT 2010", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Object-oriented programming (Computer science)", } @Book{Weigend:2009:OPP, author = "Michael Weigend", title = "{Objektorientierte Programmierung mit Python 3.0}", publisher = "REDLINE", address = "Heidelberg, Neckar, Germany", edition = "Fourth", pages = "752", year = "2009", ISBN = "3-8266-1750-9", ISBN-13 = "978-3-8266-1750-8", LCCN = "????", bibdate = "Thu Apr 16 11:58:18 MDT 2009", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.gbv.de:20011/gvk", price = "EUR 39.95", series = "mitp bei Redline", acknowledgement = ack-nhfb, language = "German", } @Article{Alnaes:2010:ESC, author = "Martin Sandve Aln{\ae}s and Kent-Andr{\'e} Mardal", title = "On the efficiency of symbolic computations combined with code generation for finite element methods", journal = j-TOMS, volume = "37", number = "1", pages = "6:1--6:26", month = jan, year = "2010", CODEN = "ACMSCU", DOI = "http://dx.doi.org/10.1145/1644001.1644007", ISSN = "0098-3500 (print), 1557-7295 (electronic)", ISSN-L = "0098-3500", bibdate = "Mon Mar 15 10:45:33 MDT 2010", bibsource = "http://www.acm.org/pubs/contents/journals/toms/; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Efficient and easy implementation of variational forms for finite element discretization can be accomplished with metaprogramming. Using a high-level language like Python and symbolic mathematics makes an abstract problem definition possible, but the use of a low-level compiled language is vital for run-time efficiency. By generating low-level C++ code based on symbolic expressions for the discrete weak form, it is possible to accomplish a high degree of abstraction in the problem definition while surpassing the run-time efficiency of traditional hand written C++ codes. We provide several examples where we demonstrate orders of magnitude in speedup.", acknowledgement = ack-nhfb, articleno = "6", fjournal = "ACM Transactions on Mathematical Software", journal-URL = "http://portal.acm.org/toc.cfm?idx=J782", keywords = "automation; code generation; compiler; finite element; metaprogramming; Variational forms", } @Article{Anderson:2010:UPS, author = "Erik W. Anderson and Gilbert A. Preston and Claudio T. Silva", title = "Using {Python} for Signal Processing and Visualization", journal = j-COMPUT-SCI-ENG, volume = "12", number = "4", pages = "90--95", month = jul # "\slash " # aug, year = "2010", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2010.91", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Tue Jul 27 16:37:11 2010", bibsource = "http://www.computer.org/portal/web/csdl/magazines/cise; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Book{Bassi:2010:PB, author = "Sebastian Bassi", title = "{Python} for bioinformatics", publisher = pub-CRC, address = pub-CRC:adr, pages = "xxv + 584", year = "2010", ISBN = "1-58488-929-2 (paperback)", ISBN-13 = "978-1-58488-929-8 (paperback)", LCCN = "QH324.2 .B387 2010", bibdate = "Thu Nov 15 17:15:53 MST 2012", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", series = "Chapman and Hall/CRC mathematical and computational biology series", acknowledgement = ack-nhfb, subject = "Bioinformatics; Python (Computer program language)", } @Article{Blundell:2010:RTR, author = "Colin Blundell and Arun Raghavan and Milo M. K. Martin", title = "{RETCON}: transactional repair without replay", journal = j-COMP-ARCH-NEWS, volume = "38", number = "3", pages = "258--269", month = jun, year = "2010", CODEN = "CANED2", DOI = "http://dx.doi.org/10.1145/1815961.1815995", ISSN = "0163-5964 (ACM), 0884-7495 (IEEE)", ISSN-L = "0163-5964", bibdate = "Tue Jul 6 14:11:46 MDT 2010", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Over the past decade there has been a surge of academic and industrial interest in optimistic concurrency, {\em i.e.\/} the speculative parallel execution of code regions that have the semantics of isolation. This work analyzes scalability bottlenecks of workloads that use optimistic concurrency. We find that one common bottleneck is updates to auxiliary program data in otherwise non-conflicting operations, {\em e.g.\/} reference count updates and hashtable occupancy field increments.\par To eliminate the performance impact of conflicts on such auxiliary data, this work proposes RETCON, a hardware mechanism that tracks the relationship between input and output values symbolically and uses this symbolic information to transparently repair the output state of a transaction at commit. RETCON is inspired by instruction replay-based mechanisms but exploits simplifying properties of the nature of computations on auxiliary data to perform repair {\em without\/} replay. Our experiments show that RETCON provides significant speedups for workloads that exhibit conflicts on auxiliary data, including transforming a transactionalized version of the Python interpreter from a workload that exhibits no scaling to one that exhibits near-linear scaling on 32 cores.", acknowledgement = ack-nhfb, fjournal = "ACM SIGARCH Computer Architecture News", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J89", keywords = "parallel programming; transactional memory", } @Book{Dawson:2010:PPA, author = "Mike Dawson", title = "{Python} programming for the absolute beginner", publisher = "Course Technology Cengage Learning", address = "Boston, MA, USA", edition = "Third", pages = "xxiii + 455", year = "2010", ISBN = "1-4354-5500-2", ISBN-13 = "978-1-4354-5500-9", LCCN = "QA76.73.P98 D39 2010", bibdate = "Fri Nov 29 07:00:01 MST 2013", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", series = "For the absolute beginner", URL = "http://catdir.loc.gov/catdir/enhancements/fy1105/2009933304-b.html; http://catdir.loc.gov/catdir/enhancements/fy1105/2009933304-d.html; http://catdir.loc.gov/catdir/enhancements/fy1105/2009933304-t.html; http://www.courseptr.com/downloads", abstract = "Teaches readers the basics of Python programming through simple game creation and describes how the skills learned can be used for more practical Python programming applications and real-world scenarios.", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Python (Computer program language)", tableofcontents = "Getting started: the game over program \\ Types, variables, and simple I/O: the useless trivia program \\ Branching, while loops, and program planning: the guess my number game \\ For loops, strings, and tuples: the word jumble game \\ Lists and dictionaries: the hangman gmae \\ Functions: the tic-tac-toe game \\ Files and exceptions: the trivia challenge game \\ Software objects: the critter caretaker program \\ Object-oriented programming: the blackjack game \\ GUI development: the mad lib program \\ Graphics: the pizza panic game \\ Sound, animation, and program development: the astrocrash game", } @Article{Gorbovitski:2010:AAO, author = "Michael Gorbovitski and Yanhong A. Liu and Scott D. Stoller and Tom Rothamel and Tuncay K. Tekle", title = "Alias analysis for optimization of dynamic languages", journal = j-SIGPLAN, volume = "45", number = "12", pages = "27--42", month = dec, year = "2010", CODEN = "SINODQ", DOI = "http://dx.doi.org/10.1145/1899661.1869635", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 15 10:25:15 MST 2010", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Dynamic languages such as Python allow programs to be written more easily using high-level constructs such as comprehensions for queries and using generic code. Efficient execution of programs then requires powerful optimizations - incrementalization of expensive queries and specialization of generic code. Effective incrementalization and specialization of dynamic languages require precise and scalable alias analysis. This paper describes the development and experimental evaluation of a may-alias analysis for a full dynamic object-oriented language, for program optimization by incrementalization and specialization. The analysis is flow-sensitive; we show that this is necessary for effective optimization of dynamic languages. It uses precise type analysis and a powerful form of context sensitivity, called trace sensitivity, to further improve analysis precision.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J706", } @Book{Hetland:2010:PAM, author = "Magnus Lie Hetland", title = "{Python} Algorithms: mastering basic algorithms in the {Python} Language", publisher = pub-APRESS, address = pub-APRESS:adr, pages = "xvi + 316", year = "2010", DOI = "http://dx.doi.org/10.1007/978-1-4302-3238-4", ISBN = "1-4302-3237-4", ISBN-13 = "978-1-4302-3237-7", LCCN = "QA76.73.P98 H485 2010", bibdate = "Fri Oct 23 15:26:47 MDT 2015", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", series = "Expert's voice in open source", URL = "http://www.loc.gov/catdir/enhancements/fy1502/2011287235-b.html; http://www.loc.gov/catdir/enhancements/fy1502/2011287235-d.html; http://www.loc.gov/catdir/toc/fy11pdf04/2011287235.html", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Computer algorithms", tableofcontents = "About the Author \\ About the Technical Reviewer \\ Acknowledgments \\ Preface \\ 1: Introduction \\ What's All This, Then? \\ Why Are You Here? \\ Some Prerequisites \\ What's in This Book \\ Summary \\ If You're Curious \ldots{} \\ Exercises \\ References \\ 2: The Basics \\ Some Core Ideas in Computing \\ Asymptotic Notation \\ It's Greek to Me! \\ Rules of the Road \\ Taking the Asymptotics for a Spin \\ Three Important Cases \\ Empirical Evaluation of Algorithms \\ Implementing Graphs and Trees \\ Adjacency Lists and the LikeAdjacency MatricesImplementing Trees \\ A Multitude of Representations \\ Beware of Black Boxes \\ Hidden Squares \\ The Trouble with Floats \\ Summary \\ If You're Curious \ldots{} \\ Exercises \\ References \\ 3: Counting 101 \\ The Skinny on Sums \\ More Greek \\ Working with Sums \\ A Tale of Two Tournaments \\ Shaking Hands \\ The Hare and the Tortoise \\ Subsets, Permutations, and Combinations \\ Recursion and Recurrences \\ Doing It by Hand \\ A Few Important Examples \\ Guessing and Checking \\ The Master Theorem: A Cookie-Cutter Solution \\ So What Was All That About? \\ Summary \\ If You're Curious \ldots{} \\ Exercises \\ References \\ 4: Induction and Recursion \ldots{} and Reduction Oh, That's Easy! \\ One, Two, Many \\ Mirror, Mirror \\ Designing with Induction (and Recursion) \\ Finding a Maximum Permutation \\ The Celebrity Problem \\ Topological Sorting \\ Stronger Assumptions \\ Invariants and Correctness \\ Relaxation and Gradual Improvement \\ Reduction + Contraposition = Hardness Proof \\ Problem Solving Advice \\ Summary \\ If You're Curious \ldots{} \\ Exercises \\ References \\ 5: Traversal: The Skeleton Key of Algorithmics \\ A Walk in the Park \\ No Cycles Allowed \\ How to Stop Walking in Circles \\ Go Deep!Depth-First Timestamps and Topological Sorting (Again)Infinite Mazes and Shortest (Unweighted) Paths \\ Strongly Connected Components \\ Summary \\ If You're Curious \ldots{} \\ Exercises \\ References \\ 6: Divide, Combine, and Conquer \\ Tree-Shaped Problems: All About the Balance \\ The Canonical D and C Algorithm \\ Searching by Halves \\ Traversing Search Trees \ldots{} with Pruning \\ Selection \\ Sorting by Halves \\ How Fast Can We Sort? \\ Three More Examples \\ Closest Pair \\ Convex Hull \\ Greatest Slice \\ Tree Balance \ldots{} and Balancing? \\ Summary \\ If You're Curious \ldots{} \\ Exercises \\ References \\ 7: Greed Is Good? Prove It! Staying Safe, Step by Step \\ The Knapsack Problem \\ Fractional Knapsack \\ Integer Knapsack \\ Huffman's Algorithm \\ The Algorithm \\ The First Greedy Choice \\ Going the Rest of the Way \\ Optimal Merging \\ Minimum spanning trees \\ The Shortest Edge \\ What About the Rest? \\ Kruskal's Algorithm \\ Prim's Algorithm \\ Greed Works. But When? \\ Keeping Up with the Best \\ No Worse Than Perfect \\ Staying Safe \\ Summary \\ If You're Curious \ldots{} \\ Exercises \\ References \\ 8: Tangled Dependencies and Memoization \\ Don't Repeat Yourself \\ Shortest Paths in Directed Acyclic Graphs", } @Article{Jankowski:2010:BRBa, author = "Richard Jankowski", title = "Book Review: {{\booktitle{Data Structures and Algorithms Using Python and C++}}, by David M. Reed and John Zelle Franklin, Beedle and Associates 2009}", journal = j-SIGACT, volume = "41", number = "1", pages = "13--15", month = mar, year = "2010", CODEN = "SIGNDM", DOI = "http://dx.doi.org/10.1145/1753171.1753174", ISSN = "0163-5700 (print), 1943-5827 (electronic)", ISSN-L = "0163-5700", bibdate = "Tue Mar 20 14:39:00 MDT 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigact.bib", note = "See \cite{Reed:2009:DSA}.", acknowledgement = ack-nhfb, fjournal = "ACM SIGACT News", journal-URL = "http://dl.acm.org/citation.cfm?id=J697", } @Book{Kiusalaas:2010:NME, author = "Jaan Kiusalaas", title = "Numerical methods in engineering with {Python}", publisher = pub-CAMBRIDGE, address = pub-CAMBRIDGE:adr, edition = "Second", pages = "x + 422", year = "2010", ISBN = "0-521-19132-7 (hardcover)", ISBN-13 = "978-0-521-19132-6 (hardcover)", LCCN = "TA345 .K584 2010", bibdate = "Mon Jan 31 15:16:50 MST 2011", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; melvyl.cdlib.org:210/CDL90; z3950.loc.gov:7090/Voyager", acknowledgement = ack-nhfb, subject = "Python (computer program language); MATLAB; engineering mathematics; data processing; numerical analysis", } @Article{Lee:2010:JSD, author = "Byeongcheol Lee and Ben Wiedermann and Martin Hirzel and Robert Grimm and Kathryn S. McKinley", title = "{Jinn}: synthesizing dynamic bug detectors for foreign language interfaces", journal = j-SIGPLAN, volume = "45", number = "6", pages = "36--49", month = jun, year = "2010", CODEN = "SINODQ", DOI = "http://dx.doi.org/10.1145/1809028.1806601", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 8 17:53:18 MDT 2010", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Programming language specifications mandate static and dynamic analyses to preclude syntactic and semantic errors. Although individual languages are usually well-specified, composing languages is not, and this poor specification is a source of many errors in {\em multilingual\/} programs. For example, virtually all Java programs compose Java and C using the Java Native Interface (JNI). Since JNI is informally specified, developers have difficulty using it correctly, and current Java compilers and virtual machines (VMs) inconsistently check only a subset of JNI constraints.\par This paper's most significant contribution is to show how to synthesize dynamic analyses from state machines to detect foreign function interface (FFI) violations. We identify three classes of FFI constraints encoded by eleven state machines that capture thousands of JNI and Python/C FFI rules. We use a mapping function to specify which state machines, transitions, and program entities (threads, objects, references) to check at each FFI call and return. From this function, we synthesize a context-specific dynamic analysis to find FFI bugs. We build bug detection tools for JNI and Python/C using this approach. For JNI, we dynamically and transparently interpose the analysis on Java and C language transitions through the JVM tools interface. The resulting tool, called Jinn, is compiler and virtual machine {\em independent}. It detects and diagnoses a wide variety of FFI bugs that other tools miss. This approach greatly reduces the annotation burden by exploiting common FFI constraints: whereas the generated Jinn code is 22,000+ lines, we wrote only 1,400 lines of state machine and mapping code. Overall, this paper lays the foundation for a more principled approach to developing correct multilingual software and a more concise and automated approach to FFI specification.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J706", keywords = "dynamic analysis; ffi bugs; foreign function interfaces (FFI); java native interface (jni); multilingual programs; python/C; specification; specification generation", } @Article{Liu:2010:LFI, author = "Yanhong A. Liu and Michael Gorbovitski and Scott D. Stoller", title = "A language and framework for invariant-driven transformations", journal = j-SIGPLAN, volume = "45", number = "2", pages = "55--64", month = feb, year = "2010", CODEN = "SINODQ", DOI = "http://dx.doi.org/10.1145/1837852.1621617", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Aug 31 22:37:56 MDT 2010", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "This paper describes a language and framework that allow coordinated transformations driven by invariants to be specified declaratively, as invariant rules, and applied automatically. The framework supports incremental maintenance of invariants for program design and optimization, as well as general transformations for instrumentation, refactoring, and other purposes. This paper also describes our implementations for transforming Python and C programs and experiments with successful applications of the systems in generating efficient implementations from clear and modular specifications, in instrumenting programs for runtime verification, profiling, and debugging, and in code refactoring.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J706", keywords = "incremental maintenance; invariants; program optimization; program transformation; runtime invariant checking", } @Article{Logg:2010:DAF, author = "Anders Logg and Garth N. Wells", title = "{DOLFIN}: {Automated} finite element computing", journal = j-TOMS, volume = "37", number = "2", pages = "20:1--20:28", month = apr, year = "2010", CODEN = "ACMSCU", DOI = "http://dx.doi.org/10.1145/1731022.1731030", ISSN = "0098-3500 (print), 1557-7295 (electronic)", ISSN-L = "0098-3500", bibdate = "Wed Apr 21 11:39:57 MDT 2010", bibsource = "http://www.acm.org/pubs/contents/journals/toms/; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "We describe here a library aimed at automating the solution of partial differential equations using the finite element method. By employing novel techniques for automated code generation, the library combines a high level of expressiveness with efficient computation. Finite element variational forms may be expressed in near mathematical notation, from which low-level code is automatically generated, compiled, and seamlessly integrated with efficient implementations of computational meshes and high-performance linear algebra. Easy-to-use object-oriented interfaces to the library are provided in the form of a C++ library and a Python module. This article discusses the mathematical abstractions and methods used in the design of the library and its implementation. A number of examples are presented to demonstrate the use of the library in application code.", acknowledgement = ack-nhfb, articleno = "20", fjournal = "ACM Transactions on Mathematical Software", journal-URL = "http://portal.acm.org/toc.cfm?idx=J782", keywords = "code generation; DOLFIN; FEniCS project; form compiler", } @Article{Patil:2010:PBS, author = "Anand Patil and David Huard and Christopher J. Fonnesbeck", title = "{{\tt PyMC}}: {Bayesian} Stochastic Modelling in {Python}", journal = j-J-STAT-SOFT, volume = "35", number = "4", pages = "??--??", month = jul, year = "2010", CODEN = "JSSOBK", ISSN = "1548-7660", bibdate = "Wed Aug 25 09:57:41 MDT 2010", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.jstatsoft.org/v35/i04", acknowledgement = ack-nhfb, fjournal = "Journal of Statistical Software", journal-URL = "http://www.jstatsoft.org/", pubdates = "Submitted 2008-12-22; Accepted 2010-01-22", } @Book{Phillips:2010:POO, author = "Dusty Phillips", title = "{Python 3} object oriented programming", publisher = pub-PACKT, address = pub-PACKT:adr, pages = "v + 388", year = "2010", ISBN = "1-84951-126-8, 1-84951-127-6 (e-book)", ISBN-13 = "978-1-84951-126-1, 978-1-84951-127-8 (e-book)", LCCN = "QA76.73.P98 P45 2010eb", bibdate = "Fri Nov 29 07:00:01 MST 2013", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Object-oriented programming (Computer science); Computers; Programming; Object Oriented.", } @Article{Pop:2010:ERH, author = "Iustin Pop", title = "Experience report: {Haskell} as a reagent: results and observations on the use of {Haskell} in a {Python} project", journal = j-SIGPLAN, volume = "45", number = "9", pages = "369--374", month = sep, year = "2010", CODEN = "SINODQ", DOI = "http://dx.doi.org/10.1145/1932681.1863595", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jan 26 15:13:43 MST 2011", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J706", } @Book{Rhodes:2010:FPN, author = "Brandon Rhodes and John Goerzen", title = "Foundations of {Python} network programming: the comprehensive guide to building network applications with {Python}", publisher = pub-APRESS, address = pub-APRESS:adr, edition = "Second", pages = "xx + 345", year = "2010", DOI = "http://dx.doi.org/10.1007/978-1-4302-3004-5", ISBN = "1-4302-3003-7 (paperback), 1-4302-3004-5 (e-book)", ISBN-13 = "978-1-4302-3003-8 (paperback), 978-1-4302-3004-5 (e-book)", LCCN = "QA76.73.P98 G64 2010eb", bibdate = "Fri Nov 29 07:00:01 MST 2013", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", series = "The expert's voice in open source", URL = "http://proquest.safaribooksonline.com/9781430230038", abstract = "This second edition of Foundations of Python Network Programming targets Python 2.5 through Python 2.7, the most popular production versions of the language. Python has made great strides since Apress released the first edition of this book back in the days of Python 2.3. The advances required new chapters to be written from the ground up, and others to be extensively revised. You will learn fundamentals like IP, TCP, DNS and SSL by using working Python programs; you will also be able to familiarize yourself with infrastructure components like memcached and message queues. You can also delve into network server designs, and compare threaded approaches with asynchronous event-based solutions. But the biggest change is this edition's expanded treatment of the web. The HTTP protocol is covered in extensive detail, with each feature accompanied by sample Python code. You can use your HTTP protocol expertise by studying an entire chapter on screen scraping and you can then test lxml and BeautifulSoup against a real-world web site. The chapter on web application programming now covers both the WSGI standard for component interoperability, as well as modern web frameworks like Django. Finally, all of the old favorites from the first edition are back: E-mail protocols like SMTP, POP, and IMAP get full treatment, as does XML-RPC. You can still learn how to code Python network programs using the Telnet and FTP protocols, but you are likely to appreciate the power of more modern alternatives like the paramiko SSH2 library. If you are a Python programmer who needs to learn the network, this is the book that you want by your side.", acknowledgement = ack-nhfb, subject = "Python (Computer program language); COMPUTERS; Programming Languages; C{\"A}; Java.; Pascal.; Python (Computer program language)", tableofcontents = "1 Introduction to Client/Server Networking \\ 2 UDP \\ 3 TCP \\ 4 Socket Names and DNS \\ 5 Network Data and Network Errors \\ 6 TLS and SSL \\ 7 Server Architecture \\ 8 Caches, Message Queues, and Map-Reduce \\ 9 HTTP \\ 10 Screen Scraping \\ 11 Web Applications \\ 12 E-mail Composition and Decoding \\ 14 SMTP \\ 14 POP \\ 15 IMAP \\ 16 Telnet and SSH \\ 17 FTP \\ 18 RPC", } @Book{Summerfield:2010:PPC, author = "Mark Summerfield", title = "Programming in {Python 3}: a complete introduction to the {Python} language", publisher = pub-AW, address = pub-AW:adr, edition = "Second", pages = "xvi + 630", year = "2010", ISBN = "0-321-68056-1 (paperback)", ISBN-13 = "978-0-321-68056-3 (paperback)", LCCN = "QA76.73.P98 S86 2010", bibdate = "Thu Mar 25 12:43:08 MDT 2010", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", series = "Developer's library", acknowledgement = ack-nhfb, subject = "Python (computer program language); object-oriented programming (computer science)", } @Article{Tabba:2010:ACP, author = "Fuad Tabba", title = "Adding concurrency in {Python} using a commercial processor's hardware transactional memory support", journal = j-COMP-ARCH-NEWS, volume = "38", number = "5", pages = "12--19", month = dec, year = "2010", CODEN = "CANED2", DOI = "http://dx.doi.org/10.1145/1978907.1978911", ISSN = "0163-5964 (ACM), 0884-7495 (IEEE)", ISSN-L = "0163-5964", bibdate = "Fri May 13 11:25:46 MDT 2011", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "This paper reports on our experiences of using a commercial processor's best-effort hardware transactional memory to improve concurrency in CPython, the reference Python implementation. CPython protects its data structures using a single global lock, which inhibits parallelism when running multiple threads.\par We modified the CPython interpreter to use best-effort hardware transactions available in Sun's Rock processor, and fall back on the single global lock when unable to commit in hardware. The modifications were minimal; however, we had to restructure some of CPython's shared data structures to handle false conflicts arising from CPython's management of the shared data. Our results show that the modified CPython interpreter can run small, simple, workloads and scale almost linearly, while improving the concurrency of more complex workloads.", acknowledgement = ack-nhfb, fjournal = "ACM SIGARCH Computer Architecture News", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J89", } @Article{Tatsubori:2010:EJT, author = "Michiaki Tatsubori and Akihiko Tozawa and Toyotaro Suzumura and Scott Trent and Tamiya Onodera", title = "Evaluation of a just-in-time compiler retrofitted for {PHP}", journal = j-SIGPLAN, volume = "45", number = "7", pages = "121--132", month = jul, year = "2010", CODEN = "SINODQ", DOI = "http://dx.doi.org/10.1145/1735997.1736015", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 8 17:55:01 MDT 2010", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Programmers who develop Web applications often use dynamic scripting languages such as Perl, PHP, Python, and Ruby. For general purpose scripting language usage, interpreter-based implementations are efficient and popular but the server-side usage for Web application development implies an opportunity to significantly enhance Web server throughput. This paper summarizes a study of the optimization of PHP script processing. We developed a PHP processor, P9, by adapting an existing production-quality just-in-time (JIT) compiler for a Java virtual machine, for which optimization technologies have been well-established, especially for server-side application. This paper describes and contrasts microbenchmarks and SPECweb2005 benchmark results for a well-tuned configuration of a traditional PHP interpreter and our JIT compiler-based implementation, P9. Experimental results with the microbenchmarks show 2.5-9.5x advantage with P9, and the SPECweb2005 measurements show about 20-30\% improvements. These results show that the acceleration of dynamic scripting language processing does matter in a realistic Web application server environment. CPU usage profiling shows our simple JIT compiler introduction reduces the PHP core runtime overhead from 45\% to 13\% for a SPECweb2005 scenario, implying that further improvements of dynamic compilers would provide little additional return unless other major overheads such as heavy memory copy between the language runtime and Web server frontend are reduced.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J706", keywords = "dynamic scripting languages; just-in-time compiler; php", } @Article{Xia:2010:CSP, author = "Xiao-Qin Xia and Michael McClelland and Yipeng Wang", title = "Code Snippet: {{\tt PypeR}}, a {Python} Package for Using {R} in {Python}", journal = j-J-STAT-SOFT, volume = "35", number = "CS-2", pages = "??--??", month = jul, year = "2010", CODEN = "JSSOBK", ISSN = "1548-7660", bibdate = "Wed Aug 25 09:57:41 MDT 2010", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.jstatsoft.org/v35/c02", acknowledgement = ack-nhfb, fjournal = "Journal of Statistical Software", journal-URL = "http://www.jstatsoft.org/", pubdates = "Submitted 2009-10-23; Accepted 2010-03-23", } @Article{Barry:2011:PA, author = "Paul Barry", title = "{Python} for {Android}", journal = j-LINUX-J, volume = "2011", number = "203", pages = "1:1--1:??", month = mar, year = "2011", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Fri Mar 18 09:08:58 MDT 2011", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, articleno = "1", fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Catanzaro:2011:CCE, author = "Bryan Catanzaro and Michael Garland and Kurt Keutzer", title = "{Copperhead}: compiling an embedded data parallel language", journal = j-SIGPLAN, volume = "46", number = "8", pages = "47--56", month = aug, year = "2011", CODEN = "SINODQ", DOI = "http://dx.doi.org/10.1145/2038037.1941562", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Aug 26 14:04:45 MDT 2013", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/pvm.bib; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib", note = "PPoPP '11 Conference proceedings.", abstract = "Modern parallel microprocessors deliver high performance on applications that expose substantial fine-grained data parallelism. Although data parallelism is widely available in many computations, implementing data parallel algorithms in low-level languages is often an unnecessarily difficult task. The characteristics of parallel microprocessors and the limitations of current programming methodologies motivate our design of Copperhead, a high-level data parallel language embedded in Python. The Copperhead programmer describes parallel computations via composition of familiar data parallel primitives supporting both flat and nested data parallel computation on arrays of data. Copperhead programs are expressed in a subset of the widely used Python programming language and interoperate with standard Python modules, including libraries for numeric computation, data visualization, and analysis. In this paper, we discuss the language, compiler, and runtime features that enable Copperhead to efficiently execute data parallel code. We define the restricted subset of Python which Copperhead supports and introduce the program analysis techniques necessary for compiling Copperhead code into efficient low-level implementations. We also outline the runtime support by which Copperhead programs interoperate with standard Python modules. We demonstrate the effectiveness of our techniques with several examples targeting the CUDA platform for parallel programming on GPUs. Copperhead code is concise, on average requiring 3.6 times fewer lines of code than CUDA, and the compiler generates efficient code, yielding 45-100\% of the performance of hand-crafted, well optimized CUDA code.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J706", } @Article{Joyner:2011:OSC, author = "David Joyner and Ond{\v{r}}ej {\v{C}}ert{\'\i}k and Aaron Meurer and Brian E. Granger", title = "Open source computer algebra systems: {SymPy}", journal = j-ACM-COMM-COMP-ALGEBRA, volume = "45", number = "3--4", pages = "225--234", month = sep, year = "2011", CODEN = "????", DOI = "http://dx.doi.org/10.1145/2110170.2110185", ISSN = "1932-2232 (print), 1932-2240 (electronic)", ISSN-L = "1932-2232", bibdate = "Thu Jan 26 16:43:28 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/gnu.bib; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigsam.bib", abstract = "This survey will look at SymPy, a free and open source computer algebra system started in 2005 by the second author (O.{\v{C}}.). It is written entirely in Python, available from http://sympy.org. SymPy is licensed under the ``modified BSD'' license, as is its beautiful logo designed by Fredrik Johansson.", acknowledgement = ack-nhfb, fjournal = "ACM Communications in Computer Algebra", issue = "177", } @Article{Klaver:2011:PC, author = "Adrian Klaver", title = "{Python} in the cloud", journal = j-LINUX-J, volume = "2011", number = "210", pages = "7:1--7:??", month = oct, year = "2011", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Sun Nov 6 07:06:26 MST 2011", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/linux-journal.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, articleno = "7", fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Kormanyos:2011:APC, author = "Christopher Kormanyos", title = "{Algorithm 910}: a Portable {C++} Multiple-Precision System for Special-Function Calculations", journal = j-TOMS, volume = "37", number = "4", pages = "45:1--45:??", month = feb, year = "2011", CODEN = "ACMSCU", DOI = "http://dx.doi.org/10.1145/1916461.1916469", ISSN = "0098-3500 (print), 1557-7295 (electronic)", ISSN-L = "0098-3500", bibdate = "Tue Mar 1 16:05:18 MST 2011", bibsource = "http://www.acm.org/pubs/contents/journals/toms/; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "This article presents a portable C++ system for multiple precision calculations of special functions called {\tt e\_float}. It has an extendible architecture with a uniform C++ layer which can be used with any suitably prepared MP type. The system implements many high-precision special functions and extends some of these to very large parameter ranges. It supports calculations with 30 \ldots{} 300 decimal digits of precision. Interoperabilities with Microsoft's CLR, Python, and Mathematica{\reg} are supported. The {\tt e\_float} system and its usage are described in detail. Implementation notes, testing results, and performance measurements are provided.", acknowledgement = ack-nhfb, articleno = "45", fjournal = "ACM Transactions on Mathematical Software (TOMS)", journal-URL = "http://portal.acm.org/toc.cfm?idx=J782", } @Article{Lambert:2011:PBO, author = "Emmanuel Lambert and Martin Fiers and Shavkat Nizamov and Martijn Tassaert and Steven G. Johnson and Peter Bienstman and Wim Bogaerts", title = "{Python} Bindings for the {Open Source Electromagnetic Simulator Meep}", journal = j-COMPUT-SCI-ENG, volume = "13", number = "3", pages = "53--65", month = may # "\slash " # jun, year = "2011", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2010.98", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Fri Apr 1 22:44:30 2011", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Book{Langtangen:2011:PSP, author = "Hans Petter Langtangen", title = "A primer on scientific programming with {Python}", volume = "6", publisher = pub-SV, address = pub-SV:adr, edition = "Second", pages = "xxix + 699", year = "2011", DOI = "http://dx.doi.org/10.1007/978-3-642-18366-9", ISBN = "3-642-18365-4, 3-642-18366-2 (e-book)", ISBN-13 = "978-3-642-18365-2, 978-3-642-18366-9 (e-book)", LCCN = "QA76.73.P98 L36 2011", bibdate = "Fri Nov 29 07:00:01 MST 2013", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", series = "Texts in computational science and engineering", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Computer programming", } @Book{Lee:2011:PPF, author = "Kent D. Lee", title = "{Python} programming fundamentals", publisher = pub-SV, address = pub-SV:adr, pages = "xii + 241", year = "2011", DOI = "http://dx.doi.org/10.1007/978-1-84996-537-8", ISBN = "1-84996-536-6, 1-84996-537-4 (e-book)", ISBN-13 = "978-1-84996-536-1, 978-1-84996-537-8 (e-book)", LCCN = "QA76.73.P98 L44 2011", bibdate = "Fri Nov 29 07:00:01 MST 2013", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", series = "Undergraduate topics in computer science", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Python (programmeertaal)", } @Article{List:2011:FUT, author = "Michael List and David Car", title = "A {Fortran} unit-testing framework utilizing templating and the {PyF95++} toolset", journal = j-FORTRAN-FORUM, volume = "30", number = "1", pages = "3--15", month = apr, year = "2011", CODEN = "????", DOI = "http://dx.doi.org/10.1145/1961363.1961364", ISSN = "1061-7264 (print), 1931-1311 (electronic)", ISSN-L = "1061-7264", bibdate = "Mon Mar 21 16:45:38 MDT 2011", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "A simple unit testing framework has been developed utilizing a templating capability and Python based preprocessor for Fortran. The implementation of this framework and its use for testing serial and parallel components is discussed. The capability was successfully applied to the development of a Fortran Standard Template Library and associated toolsets.", acknowledgement = ack-nhfb, fjournal = "ACM Fortran Forum", } @Article{Migallon:2011:PPL, author = "H{\'e}ctor Migall{\'o}n and Violeta Migall{\'o}n and Jos{\'e} Penad{\'e}s", title = "A {Parallel Python} library for nonlinear systems", journal = j-J-SUPERCOMPUTING, volume = "58", number = "3", pages = "438--448", month = dec, year = "2011", CODEN = "JOSUED", ISSN = "0920-8542 (print), 1573-0484 (electronic)", ISSN-L = "0920-8542", bibdate = "Tue Dec 13 15:25:17 MST 2011", bibsource = "http://www.math.utah.edu/pub/tex/bib/jsuper.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.springerlink.com/openurl.asp?genre=article&issn=0920-8542&volume=58&issue=3&spage=438", acknowledgement = ack-nhfb, fjournal = "The Journal of Supercomputing", journal-URL = "http://link.springer.com/journal/11227", } @Article{Millman:2011:PSE, author = "K. Jarrod Millman and Michael Aivazis", title = "{Python} for Scientists and Engineers", journal = j-COMPUT-SCI-ENG, volume = "13", number = "2", pages = "9--12", month = mar # "\slash " # apr, year = "2011", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2011.36", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Fri Apr 1 22:44:30 2011", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Article{Parkin:2011:DEL, author = "Tom Parkin", title = "Debugging embedded {Linux} platforms with {DGB} and {Python}", journal = j-LINUX-J, volume = "2011", number = "206", pages = "2:1--2:??", month = jun, year = "2011", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Tue Jun 7 18:47:07 MDT 2011", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, articleno = "2", fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Book{Payne:2011:BPU, author = "James Payne", title = "Beginning {Python}: using {Python 2.6} and {Python 3.1}", publisher = pub-WILEY, address = pub-WILEY:adr, pages = "xxxiv + 588", year = "2011", ISBN = "0-470-41463-4", ISBN-13 = "978-0-470-41463-7", LCCN = "????", bibdate = "Fri Oct 23 15:15:41 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", series = "Wrox programmer to programmer", abstract = "\booktitle{Beginning Python: Using Python 2.6 and Python 3.1} introduces this open source, portable, interpreted, object-oriented programming language that combines remarkable power with clear syntax. This book enables you to quickly create robust, reliable, and reusable Python applications by teaching the basics so you can quickly develop Web and scientific applications, incorporate databases, and master systems tasks on various operating systems, including Linux, MAC OS, and Windows. You'll get a comprehensive tutorial that guides you from writing simple, basic Python scripts all the way through complex concepts, and also features a reference of the standard modules with examples illustrating how to implement features in the various modules. Plus, the book covers using Python in specific program development domains, such as XML, databases, scientific applications, network programming, and Web development.", acknowledgement = ack-nhfb, subject = "programmeringssprog; programmering; objektorienteret programmering; vejledninger", tableofcontents = "Part I. Dipping Your Toe into Python \\ Part II. Python Language and the Standard Library \\ Part III. Putting Python to Work \\ Part IV. Appendices", } @Article{Perez:2011:PES, author = "Fernando Perez and Brian E. Granger and John D. Hunter", title = "{Python}: An Ecosystem for Scientific Computing", journal = j-COMPUT-SCI-ENG, volume = "13", number = "2", pages = "13--21", month = mar # "\slash " # apr, year = "2011", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2010.119", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Fri Apr 1 22:44:30 2011", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Book{Russell:2011:MSW, author = "Matthew A. (Computer scientist) Russell", title = "Mining the social web", publisher = pub-ORA, address = pub-ORA:adr, pages = "xx + 332", year = "2011", ISBN = "1-4493-8834-5 (paperback), 1-4493-0416-8 (e-book), 1-4493-0393-5 (e-book), 1-4493-9475-2", ISBN-13 = "978-1-4493-8834-8 (paperback), 978-1-4493-0416-4 (e-book), 978-1-4493-0393-8 (e-book), 978-1-4493-9475-2", LCCN = "QA76.9.D343 R87 2011", bibdate = "Sat Mar 21 07:10:21 MDT 2015", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", URL = "http://twitter.com/\#!/SocialWebMining", abstract = "Facebook, Twitter, and LinkedIn generate a tremendous amount of valuable social data, but how can you find out who's making connections with social media, what they're talking about, or where they're located? This book shows you how to answer these questions and more. Each chapter introduces techniques for mining data in different areas of the social web, including blogs and email.", acknowledgement = ack-nhfb, subject = "Data mining; Online social networks; Artificial intelligence; Social networking", tableofcontents = "Introduction: hacking on Twitter data \\ Microformats: semantic markup and common sense collide \\ Mailboxes: oldies but goodies \\ Twitter: friends, followers, and setwise operations \\ Twitter: the tweet, the whole tweet, and nothing but the tweet \\ LinkedIn: clustering your professional network for fun (and profit?) \\ Google buzz: TF-IDF, cosine similarity, and collocations \\ Blogs et al.: natural language processing (and beyond) \\ Facebook: the all-in-one wonder \\ The semantic web: a cocktail discussion", } @Article{Anonymous:2012:PSR, author = "Anonymous", title = "{Python} scripts as a replacement for {\tt bash} utility scripts", journal = j-LINUX-J, volume = "2012", number = "223", pages = "1:1--1:??", month = nov, year = "2012", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Tue Dec 11 07:44:23 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/linux-journal.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Learn how to use Python and existing UNIX tools to improve your productivity in the shell.", acknowledgement = ack-nhfb, articleno = "1", fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Autin:2012:UUC, author = "Ludovic Autin and Graham Johnson and Johan Hake and Arthur Olson and Michel Sanner", title = "{uPy}: a Ubiquitous {CG Python API} with Biological-Modeling Applications", journal = j-IEEE-CGA, volume = "32", number = "5", pages = "50--61", month = sep # "\slash " # oct, year = "2012", CODEN = "ICGADZ", DOI = "http://dx.doi.org/10.1109/MCG.2012.93", ISSN = "0272-1716 (print), 1558-1756 (electronic)", ISSN-L = "0272-1716", bibdate = "Mon Oct 22 06:56:23 2012", bibsource = "http://www.math.utah.edu/pub/tex/bib/ieeecga.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "IEEE Computer Graphics and Applications", journal-URL = "http://www.computer.org/portal/web/csdl/magazines/cga", } @Article{Baldwin:2012:SPG, author = "Doug Baldwin", title = "Special projects grants awarded", journal = j-SIGCSE, volume = "44", number = "3", pages = "6--6", month = jul, year = "2012", CODEN = "SIGSD3", DOI = "http://dx.doi.org/10.1145/2350216.2350222", ISSN = "0097-8418", ISSN-L = "0097-8418", bibdate = "Sat Nov 17 15:44:30 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigcse2010.bib", abstract = "SIGCSE received 15 Special Projects grant proposals for the May 2012 funding cycle. The Special Projects Committee is pleased to announce that the following four grants have been awarded: Anthony Allevato and Steve Edwards, Virginia Tech, ``Pythy---A Cloud-Based IDE for Novice Python Programmers'' (http://pythy.cs.vt.edu/). This project will develop a Web-based environment in which novice programmers can write and run Python programs and access documentation and tutorials. This environment reduces the barriers students often face if they have to install development tools on their own computers.", acknowledgement = ack-nhfb, fjournal = "SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education)", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J688", } @Article{Beazley:2012:TYP, author = "David Beazley", title = "Three Years of {Python 3}", journal = j-LOGIN, volume = "37", number = "1", pages = "??--??", month = feb, year = "2012", CODEN = "LOGNEM", ISSN = "1044-6397", ISSN-L = "1044-6397", bibdate = "Fri Dec 7 10:42:18 MST 2012", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/usenix2010.bib; https://www.usenix.org/publications/login", URL = "https://www.usenix.org/publications/login/february-2012/three-years-python-3", acknowledgement = ack-nhfb, fjournal = ";login: the USENIX Association newsletter", } @Article{Bell:2012:PSA, author = "Nathan Bell and Anil N. Hirani", title = "{PyDEC}: Software and Algorithms for Discretization of Exterior Calculus", journal = j-TOMS, volume = "39", number = "1", pages = "3:1--3:??", month = nov, year = "2012", CODEN = "ACMSCU", DOI = "http://dx.doi.org/10.1145/2382585.2382588", ISSN = "0098-3500 (print), 1557-7295 (electronic)", ISSN-L = "0098-3500", bibdate = "Thu Dec 6 07:36:30 MST 2012", bibsource = "http://www.acm.org/pubs/contents/journals/toms/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/toms.bib", abstract = "This article describes the algorithms, features, and implementation of PyDEC, a Python library for computations related to the discretization of exterior calculus. PyDEC facilitates inquiry into both physical problems on manifolds as well as purely topological problems on abstract complexes. We describe efficient algorithms for constructing the operators and objects that arise in discrete exterior calculus, lowest-order finite element exterior calculus, and in related topological problems. Our algorithms are formulated in terms of high-level matrix operations which extend to arbitrary dimension. As a result, our implementations map well to the facilities of numerical libraries such as NumPy and SciPy. The availability of such libraries makes Python suitable for prototyping numerical methods. We demonstrate how PyDEC is used to solve physical and topological problems through several concise examples.", acknowledgement = ack-nhfb, articleno = "3", fjournal = "ACM Transactions on Mathematical Software (TOMS)", journal-URL = "http://portal.acm.org/toc.cfm?idx=J782", } @Article{Briot:2012:GLAa, author = "Emmanuel Briot", title = "Gem \#105: {Lady Ada} kisses {Python} --- part 1", journal = j-SIGADA-LETTERS, volume = "32", number = "2", pages = "45--46", month = aug, year = "2012", CODEN = "AALEE5", DOI = "http://dx.doi.org/10.1145/2429574.2429587", ISSN = "1094-3641 (print), 1557-9476 (electronic)", ISSN-L = "1094-3641", bibdate = "Wed Jan 30 16:10:15 MST 2013", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigada.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGADA Ada Letters", } @Article{Briot:2012:GLAb, author = "Emmanuel Briot", title = "Gem \#106: {Lady Ada} kisses {Python} --- part 2", journal = j-SIGADA-LETTERS, volume = "32", number = "2", pages = "47--49", month = aug, year = "2012", CODEN = "AALEE5", DOI = "http://dx.doi.org/10.1145/2429574.2429588", ISSN = "1094-3641 (print), 1557-9476 (electronic)", ISSN-L = "1094-3641", bibdate = "Wed Jan 30 16:10:15 MST 2013", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigada.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGADA Ada Letters", } @Article{Castanos:2012:BPE, author = "Jose Castanos and David Edelsohn and Kazuaki Ishizaki and Priya Nagpurkar and Toshio Nakatani and Takeshi Ogasawara and Peng Wu", title = "On the benefits and pitfalls of extending a statically typed language {JIT} compiler for dynamic scripting languages", journal = j-SIGPLAN, volume = "47", number = "10", pages = "195--212", month = oct, year = "2012", CODEN = "SINODQ", DOI = "http://dx.doi.org/10.1145/2398857.2384631", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Nov 15 16:40:23 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib", abstract = "Whenever the need to compile a new dynamically typed language arises, an appealing option is to repurpose an existing statically typed language Just-In-Time (JIT) compiler (repurposed JIT compiler). Existing repurposed JIT compilers (RJIT compilers), however, have not yet delivered the hoped-for performance boosts. The performance of JVM languages, for instance, often lags behind standard interpreter implementations. Even more customized solutions that extend the internals of a JIT compiler for the target language compete poorly with those designed specifically for dynamically typed languages. Our own Fiorano JIT compiler is an example of this problem. As a state-of-the-art, RJIT compiler for Python, the Fiorano JIT compiler outperforms two other RJIT compilers (Unladen Swallow and Jython), but still shows a noticeable performance gap compared to PyPy, today's best performing Python JIT compiler. In this paper, we discuss techniques that have proved effective in the Fiorano JIT compiler as well as limitations of our current implementation. More importantly, this work offers the first in-depth look at benefits and limitations of the repurposed JIT compiler approach. We believe the most common pitfall of existing RJIT compilers is not focusing sufficiently on specialization, an abundant optimization opportunity unique to dynamically typed languages. Unfortunately, the lack of specialization cannot be overcome by applying traditional optimizations.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J706", remark = "OOPSLA '12 conference proceedings.", } @Article{Conti:2012:TMP, author = "Juan Jos{\'e} Conti and Alejandro Russo", title = "A {Taint} Mode for {Python} via a Library", journal = j-LECT-NOTES-COMP-SCI, volume = "7127", pages = "210--222", year = "2012", CODEN = "LNCSD9", DOI = "http://dx.doi.org/10.1007/978-3-642-27937-9_15", ISSN = "0302-9743 (print), 1611-3349 (electronic)", ISSN-L = "0302-9743", bibdate = "Wed Dec 19 15:24:40 MST 2012", bibsource = "http://www.math.utah.edu/pub/tex/bib/lncs2012b.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://link.springer.com/chapter/10.1007/978-3-642-27937-9_15/", acknowledgement = ack-nhfb, book-DOI = "http://dx.doi.org/10.1007/978-3-642-27937-9", book-URL = "http://www.springerlink.com/content/978-3-642-27937-9", fjournal = "Lecture Notes in Computer Science", } @Article{Darcy:2012:EGP, author = "Jeff Darcy", title = "Extending {GlusterFS} with {Python}", journal = j-LINUX-J, volume = "2012", number = "223", pages = "2:1--2:??", month = nov, year = "2012", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Tue Dec 11 07:44:23 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/linux-journal.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "GlusterFS is a distributed filesystem with a strong emphasis on extensibility. Now extensions can be written in Python, bringing significant performance and other improvements within reach of even more programmers.", acknowledgement = ack-nhfb, articleno = "2", fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Ettienne:2012:IMA, author = "Mikko Berggren Ettienne and Steen Vester and J{\o}rgen Villadsen", title = "Implementing a Multi-Agent System in {Python} with an Auction-Based Agreement Approach", journal = j-LECT-NOTES-COMP-SCI, volume = "7217", pages = "185--196", year = "2012", CODEN = "LNCSD9", DOI = "http://dx.doi.org/10.1007/978-3-642-31915-0_11", ISSN = "0302-9743 (print), 1611-3349 (electronic)", ISSN-L = "0302-9743", bibdate = "Wed Dec 19 15:17:50 MST 2012", bibsource = "http://www.math.utah.edu/pub/tex/bib/lncs2012c.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://link.springer.com/chapter/10.1007/978-3-642-31915-0_11/", acknowledgement = ack-nhfb, book-DOI = "http://dx.doi.org/10.1007/978-3-642-31915-0", book-URL = "http://www.springerlink.com/content/978-3-642-31915-0", fjournal = "Lecture Notes in Computer Science", } @Article{Gasiorek:2012:OPP, author = "Marcin Ga{\c{s}}iorek and Daniel Simson", title = "One-peak posets with positive quadratic {Tits} form, their mesh translation quivers of roots, and programming in {Maple} and {Python}", journal = j-LINEAR-ALGEBRA-APPL, volume = "436", number = "7", pages = "2240--2272", day = "1", month = apr, year = "2012", CODEN = "LAAPAW", DOI = "http://dx.doi.org/10.1016/j.laa.2011.10.045", ISSN = "0024-3795 (print), 1873-1856 (electronic)", ISSN-L = "0024-3795", bibdate = "Tue Feb 7 16:11:50 MST 2012", bibsource = "http://www.math.utah.edu/pub/tex/bib/linala2010.bib; http://www.math.utah.edu/pub/tex/bib/maple-extract.bib; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.sciencedirect.com/science/journal/00243795", URL = "http://www.sciencedirect.com/science/article/pii/S0024379511007555", acknowledgement = ack-nhfb, fjournal = "Linear Algebra and its Applications", journal-URL = "http://www.sciencedirect.com/science/journal/00243795", } @Book{Harwani:2012:IPP, author = "B. M. Harwani", title = "Introduction to {Python} programming and developing {GUI} applications with {PyQT}", publisher = "Cengage Learning", address = "Boston, MA, USA", pages = "xv + 393", year = "2012", ISBN = "1-4354-6097-9, 1-4354-6098-7 (e-book)", ISBN-13 = "978-1-4354-6097-3, 978-1-4354-6098-0 (e-book)", LCCN = "QA76.73.P98 H37 2012aeb", bibdate = "Fri Nov 29 07:00:01 MST 2013", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, subject = "Qt (Electronic resource); Python (Computer program language); Graphical user interfaces (Computer systems); COMPUTERS; Programming Languages; C{\"A}; Java.; Pascal.", } @Article{Hirschfeld:2012:EUC, author = "Robert Hirschfeld and Michael Perscheid and Michael Haupt", title = "Explicit use-case representation in object-oriented programming languages", journal = j-SIGPLAN, volume = "47", number = "2", pages = "51--60", month = feb, year = "2012", CODEN = "SINODQ", DOI = "http://dx.doi.org/10.1145/2168696.2047856", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Apr 20 17:34:09 MDT 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib", abstract = "Use-cases are considered an integral part of most contemporary development processes since they describe a software system's expected behavior from the perspective of its prospective users. However, the presence of and traceability to use-cases is increasingly lost in later more code-centric development activities. Use-cases, being well-encapsulated at the level of requirements descriptions, eventually lead to crosscutting concerns in system design and source code. Tracing which parts of the system contribute to which use-cases is therefore hard and so limits understandability. In this paper, we propose an approach to making use-cases first-class entities in both the programming language and the runtime environment. Having use-cases present in the code and the running system will allow developers, maintainers, and operators to easily associate their units of work with what matters to the users. We suggest the combination of use-cases, acceptance tests, and dynamic analysis to automatically associate source code with use-cases. We present UseCasePy, an implementation of our approach to use-case-centered development in Python, and its application to the Django Web framework.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J706", remark = "DSL '11 conference proceedings.", } @Article{Homescu:2012:HTJ, author = "Andrei Homescu and Alex Suhan", title = "{HappyJIT}: a tracing {JIT} compiler for {PHP}", journal = j-SIGPLAN, volume = "47", number = "2", pages = "25--36", month = feb, year = "2012", CODEN = "SINODQ", DOI = "http://dx.doi.org/10.1145/2168696.2047854", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Apr 20 17:34:09 MDT 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib", abstract = "Current websites are a combination of server-generated dynamic content with client-side interactive programs. Dynamically --- typed languages have gained a lot of ground in both of these domains. The growth of Web 2.0 has introduced a myriad of websites which contain personalized content, which is specific to the user. PHP or Python programs generate the actual HTML page after querying a database and processing the results, which are then presented by the browser. It is becoming more and more vital to accelerate the execution of these programs, as this is a significant part of the total time needed to present the page to the user. This paper presents a novel interpreter for the PHP language written in RPython, which the PyPy translator then translates into C. The translator integrates into the interpreter a tracing just-in-time compiler which optimizes the hottest loops in the interpreted programs. We also describe a data model that supports all the data types in the PHP language, such as references and iterators. We evaluate the performance of this interpreter, showing that speedups up to a factor of 8 are observed using this approach.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J706", remark = "DSL '11 conference proceedings.", } @Article{Hosmer:2012:GSS, author = "Ben Hosmer", title = "Getting started with {Salt Stack} --- the other configuration management system built with {Python}", journal = j-LINUX-J, volume = "2012", number = "223", pages = "3:1--3:??", month = nov, year = "2012", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Tue Dec 11 07:44:23 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/linux-journal.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Install and configure software on multiple servers at once.", acknowledgement = ack-nhfb, articleno = "3", fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Ishizaki:2012:ADT, author = "Kazuaki Ishizaki and Takeshi Ogasawara and Jose Castanos and Priya Nagpurkar and David Edelsohn and Toshio Nakatani", title = "Adding dynamically-typed language support to a statically-typed language compiler: performance evaluation, analysis, and tradeoffs", journal = j-SIGPLAN, volume = "47", number = "7", pages = "169--180", month = jul, year = "2012", CODEN = "SINODQ", DOI = "http://dx.doi.org/10.1145/2365864.2151047", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Sep 6 10:01:03 MDT 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib", note = "VEE '12 conference proceedings.", abstract = "Applications written in dynamically typed scripting languages are increasingly popular for Web software development. Even on the server side, programmers are using dynamically typed scripting languages such as Ruby and Python to build complex applications quickly. As the number and complexity of dynamically typed scripting language applications grows, optimizing their performance is becoming important. Some of the best performing compilers and optimizers for dynamically typed scripting languages are developed entirely from scratch and target a specific language. This approach is not scalable, given the variety of dynamically typed scripting languages, and the effort involved in developing and maintaining separate infrastructures for each. In this paper, we evaluate the feasibility of adapting and extending an existing production-quality method-based Just-In-Time (JIT) compiler for a language with dynamic types. Our goal is to identify the challenges and shortcomings with the current infrastructure, and to propose and evaluate runtime techniques and optimizations that can be incorporated into a common optimization infrastructure for static and dynamic languages. We discuss three extensions to the compiler to support dynamically typed languages: (1) simplification of control flow graphs, (2) mapping of memory locations to stack-allocated variables, and (3) reduction of runtime overhead using language semantics. We also propose four new optimizations for Python in (2) and (3). These extensions are effective in reduction of compiler working memory and improvement of runtime performance. We present a detailed performance evaluation of our approach for Python, finding an overall improvement of 1.69x on average (up to 2.74x) over our JIT compiler without any optimization for dynamically typed languages and Python.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J706", } @Article{Johansson:2012:QOS, author = "J. R. Johansson and P. D. Nation and Franco Nori", title = "{QuTiP}: an open-source {Python} framework for the dynamics of open quantum systems", journal = j-COMP-PHYS-COMM, volume = "183", number = "8", pages = "1760--1772", month = aug, year = "2012", CODEN = "CPHCBZ", DOI = "http://dx.doi.org/10.1016/j.cpc.2012.02.021", ISSN = "0010-4655 (print), 1879-2944 (electronic)", ISSN-L = "0010-4655", bibdate = "Tue Apr 24 06:33:31 MDT 2012", bibsource = "http://www.math.utah.edu/pub/tex/bib/compphyscomm2010.bib; http://www.math.utah.edu/pub/tex/bib/gnu.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.sciencedirect.com/science/article/pii/S0010465512000835", acknowledgement = ack-nhfb, fjournal = "Computer Physics Communications", journal-URL = "http://www.sciencedirect.com/science/journal/00104655", } @Book{Johnson:2012:CIP, author = "Mark J. (Mark James) Johnson", title = "A concise introduction to programming in {Python}", publisher = pub-CRC, address = pub-CRC:adr, pages = "xi + 205", year = "2012", ISBN = "1-4398-9694-1 (paperback)", ISBN-13 = "978-1-4398-9694-5 (paperback)", LCCN = "QA76.73.P98 J64 2012", bibdate = "Fri Nov 16 06:29:01 MST 2012", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", series = "Chapman and Hall/CRC textbooks in computing", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Computer programming", } @Article{Klarner:2012:TSD, author = "Hannes Klarner and Heike Siebert and Alexander Bockmayr", title = "Time Series Dependent Analysis of Unparametrized {Thomas} Networks", journal = j-TCBB, volume = "9", number = "5", pages = "1338--1351", month = sep, year = "2012", CODEN = "ITCBCY", DOI = "http://dx.doi.org/10.1109/TCBB.2012.61", ISSN = "1545-5963 (print), 1557-9964 (electronic)", ISSN-L = "1545-5963", bibdate = "Tue Aug 28 17:31:04 MDT 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/tcbb.bib", abstract = "This paper is concerned with the analysis of labeled Thomas networks using discrete time series. It focuses on refining the given edge labels and on assessing the data quality. The results are aimed at being exploitable for experimental design and include the prediction of new activatory or inhibitory effects of given interactions and yet unobserved oscillations of specific components in between specific sampling intervals. On the formal side, we generalize the concept of edge labels and introduce a discrete time series interpretation. This interpretation features two original concepts: (1) Incomplete measurements are admissible, and (2) it allows qualitative assumptions about the changes in gene expression by means of monotonicity. On the computational side, we provide a Python script, erda.py, that automates the suggested workflow by model checking and constraint satisfaction. We illustrate the workflow by investigating the yeast network IRMA.", acknowledgement = ack-nhfb, fjournal = "IEEE/ACM Transactions on Computational Biology and Bioinformatics", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J954", } @Book{Langtangen:2012:PSP, author = "Hans Petter Langtangen", title = "A primer on scientific programming with {Python}", volume = "6", publisher = pub-SV, address = pub-SV:adr, edition = "Third", year = "2012", DOI = "http://dx.doi.org/10.1007/978-3-642-30293-0", ISBN = "3-642-30292-0, 3-642-30293-9 (e-book)", ISBN-13 = "978-3-642-30292-3, 978-3-642-30293-0 (e-book)", ISSN = "1611-0994", LCCN = "QA76.73.P98 L36 2012", bibdate = "Fri Nov 29 07:00:01 MST 2013", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/numana2010.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", series = "Texts in computational science and engineering", abstract = "The book serves as a first introduction to computer programming of scientific applications, using the high-level Python language. The exposition is example- and problem-oriented, where the applications are taken from mathematics, numerical calculus, statistics, physics, biology, and finance. The book teaches ``Matlab-style'' and procedural programming as well as object-oriented programming. High school mathematics is a required background, and it is advantageous to study classical and numerical one-variable calculus in parallel with reading this book. Besides learning how to program computers.", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Computer programming; Science; Data processing", tableofcontents = "Computing with Formulas \\ Loops and Lists \\ Functions and Branching \\ Input Data and Error Handling \\ Array Computing and Curve Plotting \\ Files, Strings, and Dictionaries \\ Introduction to Classes \\ Random Numbers and Simple Games \\ Object-Oriented Programming", } @InProceedings{Logg:2012:DCP, author = "Anders Logg and Garth N. Wells and Johan Hake", title = "{DOLFIN}: a {C++\slash Python} finite element library", crossref = "Logg:2012:ASD", volume = "84", pages = "173--225", year = "2012", DOI = "http://dx.doi.org/10.1007/978-3-642-23099-8_10", bibdate = "Fri Dec 21 16:04:32 MST 2012", bibsource = "http://www.math.utah.edu/pub/tex/bib/lncse.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://link.springer.com/content/pdf/10.1007/978-3-642-23099-8_10", acknowledgement = ack-nhfb, book-DOI = "http://dx.doi.org/10.1007/978-3-642-23099-8", book-URL = "http://www.springerlink.com/content/978-3-642-23099-8", } @Book{McKinney:2012:PDA, author = "Wes McKinney", title = "{Python} for Data Analysis", publisher = pub-ORA, address = pub-ORA:adr, pages = "400", year = "2012", ISBN = "1-4493-1979-3 (paperback)", ISBN-13 = "978-1-4493-1979-3 (paperback)", LCCN = "????", bibdate = "Wed Nov 21 15:43:30 MST 2012", bibsource = "http://www.math.utah.edu/pub/tex/bib/ora.bib; http://www.math.utah.edu/pub/tex/bib/python.bib; library.ox.ac.uk:210/ADVANCE; z3950.gbv.de:20011/gvk", price = "EUR 32.00; UK \pounds 30.99", acknowledgement = ack-nhfb, subject = "Data mining; Python (Computer program language)", } @Article{Pool:2012:SNU, author = "Ren{\'e} Pool and Jaap Heringa and Martin Hoefling and Roland Schulz and Jeremy C. Smith and K. Anton Feenstra", title = "Software News and Updates: Enabling grand-canonical {Monte Carlo}: {Extending} the flexibility of {GROMACS} through the {GromPy} {Python} interface module", journal = j-J-COMPUT-CHEM, volume = "33", number = "12", pages = "1207--1214", day = "5", month = may, year = "2012", CODEN = "JCCHDD", DOI = "http://dx.doi.org/10.1002/jcc.22947", ISSN = "0192-8651 (print), 1096-987X (electronic)", ISSN-L = "0192-8651", bibdate = "Sat Dec 1 12:11:06 MST 2012", bibsource = "http://www.interscience.wiley.com/jpages/0192-8651; http://www.math.utah.edu/pub/tex/bib/python.bibhttp://www.math.utah.edu/pub/tex/bib/jcomputchem2010.bib", acknowledgement = ack-nhfb, fjournal = "Journal of Computational Chemistry", journal-URL = "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1096-987X", onlinedate = "28 Feb 2012", } @Article{Saha:2012:PPC, author = "Amit Saha", title = "Parallel programming in {C} and {Python}", journal = j-LINUX-J, volume = "2012", number = "217", pages = "4:1--4:??", month = may, year = "2012", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Mon Jun 4 16:52:28 MDT 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/linux-journal.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "How to get started with parallel programming", acknowledgement = ack-nhfb, articleno = "4", fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Serang:2012:FMS, author = "Oliver Serang and William Stratford Noble", title = "Faster Mass Spectrometry-Based Protein Inference: Junction Trees Are More Efficient than Sampling and Marginalization by Enumeration", journal = j-TCBB, volume = "9", number = "3", pages = "809--817", month = may, year = "2012", CODEN = "ITCBCY", DOI = "http://dx.doi.org/10.1109/TCBB.2012.26", ISSN = "1545-5963 (print), 1557-9964 (electronic)", ISSN-L = "1545-5963", bibdate = "Thu Apr 19 17:58:10 MDT 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/tcbb.bib", abstract = "The problem of identifying the proteins in a complex mixture using tandem mass spectrometry can be framed as an inference problem on a graph that connects peptides to proteins. Several existing protein identification methods make use of statistical inference methods for graphical models, including expectation maximization, Markov chain Monte Carlo, and full marginalization coupled with approximation heuristics. We show that, for this problem, the majority of the cost of inference usually comes from a few highly connected subgraphs. Furthermore, we evaluate three different statistical inference methods using a common graphical model, and we demonstrate that junction tree inference substantially improves rates of convergence compared to existing methods. The python code used for this paper is available at http://noble.gs.washington.edu/proj/fido.", acknowledgement = ack-nhfb, fjournal = "IEEE/ACM Transactions on Computational Biology and Bioinformatics", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J954", } @Article{Small:2012:SPB, author = "Alex Small", title = "Scientific {Python} for Both Expert and Novice Programmers", journal = j-COMPUT-SCI-ENG, volume = "14", number = "2", pages = "6--7", month = mar # "\slash " # apr, year = "2012", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2012.30", ISSN = "1521-9615 (print), 1558-366X (electronic)", ISSN-L = "1521-9615", bibdate = "Sat Mar 17 08:29:33 2012", bibsource = "http://www.math.utah.edu/pub/tex/bib/computscieng.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Article{Spotz:2012:PRA, author = "William F. Spotz", title = "{PyTrilinos}: Recent advances in the {Python} interface to {Trilinos}", journal = j-SCI-PROG, volume = "20", number = "3", pages = "311--325", month = "????", year = "2012", CODEN = "SCIPEV", DOI = "http://dx.doi.org/10.3233/SPR-2012-0346", ISSN = "1058-9244 (print), 1875-919X (electronic)", ISSN-L = "1058-9244", bibdate = "Sat Mar 8 14:10:43 MST 2014", bibsource = "http://www.iospress.nl/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sciprogram.bib", acknowledgement = ack-nhfb, fjournal = "Scientific Programming", journal-URL = "http://iospress.metapress.com/content/1058-9244", } @Article{Takikawa:2012:GTF, author = "Asumu Takikawa and T. Stephen Strickland and Christos Dimoulas and Sam Tobin-Hochstadt and Matthias Felleisen", title = "Gradual typing for first-class classes", journal = j-SIGPLAN, volume = "47", number = "10", pages = "793--810", month = oct, year = "2012", CODEN = "SINODQ", DOI = "http://dx.doi.org/10.1145/2398857.2384674", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Nov 15 16:40:23 MST 2012", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib", abstract = "Dynamic type-checking and object-oriented programming often go hand-in-hand; scripting languages such as Python, Ruby, and JavaScript all embrace object-oriented (OO) programming. When scripts written in such languages grow and evolve into large programs, the lack of a static type discipline reduces maintainability. A programmer may thus wish to migrate parts of such scripts to a sister language with a static type system. Unfortunately, existing type systems neither support the flexible OO composition mechanisms found in scripting languages nor accommodate sound interoperation with untyped code. In this paper, we present the design of a gradual typing system that supports sound interaction between statically- and dynamically-typed units of class-based code. The type system uses row polymorphism for classes and thus supports mixin-based OO composition. To protect migration of mixins from typed to untyped components, the system employs a novel form of contracts that partially seal classes. The design comes with a theorem that guarantees the soundness of the type system even in the presence of untyped components.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J706", remark = "OOPSLA '12 conference proceedings.", } @Book{Ucoluk:2012:IPC, author = "G{\"o}kt{\"u}rk {\"U}{\c{c}}oluk and Sinan Kalkan", title = "Introduction to programming concepts with case studies in {Python}", publisher = pub-SV, address = pub-SV:adr, year = "2012", DOI = "http://dx.doi.org/10.1007/978-3-7091-1343-1", ISBN = "3-7091-1342-3, 3-7091-1343-1 (e-book)", ISBN-13 = "978-3-7091-1342-4, 978-3-7091-1343-1 (e-book)", LCCN = "QA76.6 .U26 2012", bibdate = "Fri Nov 29 07:00:01 MST 2013", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "The current text provides a clear introduction to Computer Science concepts in a programming environment. It is designed as suitable use in freshman- or introductory-level coursework in CS and provides the fundamental concepts as well as abstract theorems for solving computational problems. The Python language serves as a medium for illustrating and demonstrating the concepts.", acknowledgement = ack-nhfb, subject = "Computer programming; Python (Computer program language)", tableofcontents = "The World of Programming \\ Data: The First Ingredient of a Program \\ Actions: The Second Ingredient of a Program \\ Managing the Size of a Problem \\ A Measure for 'Solution Hardness': Complexity \\ Organizing Data \\ Objects: Reunion of Data and Action", } @InProceedings{Wilbers:2012:IJT, author = "Ilmar M. Wilbers and Kent-Andre Mardal and Martin S. Aln{\ae}s", title = "Instant: just-in-time compilation of {C\slash C++} in {Python}", crossref = "Logg:2012:ASD", volume = "84", pages = "257--272", year = "2012", DOI = "http://dx.doi.org/10.1007/978-3-642-23099-8_14", bibdate = "Fri Dec 21 16:04:32 MST 2012", bibsource = "http://www.math.utah.edu/pub/tex/bib/lncse.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://link.springer.com/content/pdf/10.1007/978-3-642-23099-8_14", acknowledgement = ack-nhfb, book-DOI = "http://dx.doi.org/10.1007/978-3-642-23099-8", book-URL = "http://www.springerlink.com/content/978-3-642-23099-8", } @Article{Wimmer:2012:AEN, author = "M. Wimmer", title = "{Algorithm 923}: Efficient Numerical Computation of the {Pfaffian} for Dense and Banded Skew-Symmetric Matrices", journal = j-TOMS, volume = "38", number = "4", pages = "30:1--30:??", month = aug, year = "2012", CODEN = "ACMSCU", DOI = "http://dx.doi.org/10.1145/2331130.2331138", ISSN = "0098-3500 (print), 1557-7295 (electronic)", ISSN-L = "0098-3500", bibdate = "Thu Aug 30 18:55:10 MDT 2012", bibsource = "http://www.acm.org/pubs/contents/journals/toms/; http://www.math.utah.edu/pub/tex/bib/mathematica.bib; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/toms.bib", abstract = "Computing the Pfaffian of a skew-symmetric matrix is a problem that arises in various fields of physics. Both computing the Pfaffian and a related problem, computing the canonical form of a skew-symmetric matrix under unitary congruence, can be solved easily once the skew-symmetric matrix has been reduced to skew-symmetric tridiagonal form. We develop efficient numerical methods for computing this tridiagonal form based on Gaussian elimination, using a skew-symmetric, blocked form of the Parlett-Reid algorithm, or based on unitary transformations, using block Householder transformations and Givens rotations, that are applicable to dense and banded matrices, respectively. We also give a complete and fully optimized implementation of these algorithms in Fortran (including a C interface), and also provide Python, Matlab and Mathematica implementations for convenience. Finally, we apply these methods to compute the topological charge of a class D nanowire, and show numerically the equivalence of definitions based on the Hamiltonian and the scattering matrix.", acknowledgement = ack-nhfb, articleno = "30", fjournal = "ACM Transactions on Mathematical Software (TOMS)", journal-URL = "http://portal.acm.org/toc.cfm?idx=J782", } @Article{Ardo:2013:LAO, author = "H{\aa}kan Ard{\"o} and Carl Friedrich Bolz and Maciej Fija{\l}kowski", title = "Loop-aware optimizations in {PyPy}'s tracing {JIT}", journal = j-SIGPLAN, volume = "48", number = "2", pages = "63--72", month = feb, year = "2013", CODEN = "SINODQ", DOI = "http://dx.doi.org/10.1145/2480360.2384586", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jul 1 17:15:12 MDT 2013", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib", abstract = "One of the nice properties of a tracing just-in-time compiler (JIT) is that many of its optimizations are simple, requiring one forward pass only. This is not true for loop-invariant code motion which is a very important optimization for code with tight kernels. Especially for dynamic languages that typically perform quite a lot of loop invariant type checking, boxed value unwrapping and virtual method lookups. In this paper we explain a scheme pioneered within the context of the LuaJIT project for making basic optimizations loop-aware by using a simple pre-processing step on the trace without changing the optimizations themselves. We have implemented the scheme in RPython's tracing JIT compiler. PyPy's Python JIT executing simple numerical kernels can become up to two times faster, bringing the performance into the ballpark of static language compilers.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J706", remark = "DLS '12 conference proceedings.", } @Article{Bernard:2013:RSC, author = "Joey Bernard", title = "Running scientific code using {IPython} and {SciPy}", journal = j-LINUX-J, volume = "2013", number = "228", pages = "3:1--3:??", month = apr, year = "2013", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Mon Jun 10 06:37:59 MDT 2013", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/linux-journal.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "IPython provides a great environment for HPC programming with Python and SciPy.", acknowledgement = ack-nhfb, articleno = "3", fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Bolz:2013:SSC, author = "Carl Friedrich Bolz and Lukas Diekmann and Laurence Tratt", title = "Storage strategies for collections in dynamically typed languages", journal = j-SIGPLAN, volume = "48", number = "10", pages = "167--182", month = oct, year = "2013", CODEN = "SINODQ", DOI = "http://dx.doi.org/10.1145/2544173.2509531", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Dec 9 09:19:33 MST 2013", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib; http://www.math.utah.edu/pub/tex/bib/virtual-machines.bib", note = "OOPSLA '13 conference proceedings.", abstract = "Dynamically typed language implementations often use more memory and execute slower than their statically typed cousins, in part because operations on collections of elements are unoptimised. This paper describes storage strategies, which dynamically optimise collections whose elements are instances of the same primitive type. We implement storage strategies in the PyPy virtual machine, giving a performance increase of 18\% on wide-ranging benchmarks of real Python programs. We show that storage strategies are simple to implement, needing only 1500LoC in PyPy, and have applicability to a wide range of virtual machines.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J706", } @Article{Braun:2013:DAN, author = "Moritz Braun", title = "Different approaches to the numerical solution of the {$3$D} {Poisson} equation implemented in {Python}", journal = j-COMPUTING, volume = "95", number = "1s", pages = "49--60", month = may, year = "2013", CODEN = "CMPTA2", DOI = "http://dx.doi.org/10.1007/s00607-013-0300-x", ISSN = "0010-485X (print), 1436-5057 (electronic)", ISSN-L = "0010-485X", bibdate = "Wed Jan 29 10:09:58 MST 2014", bibsource = "http://springerlink.metapress.com/openurl.asp?genre=issue&issn=0010-485X&volume=95&issue=1; http://www.math.utah.edu/pub/tex/bib/computing.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://link.springer.com/article/10.1007/s00607-013-0300-x", acknowledgement = ack-nhfb, fjournal = "Computing", journal-URL = "http://link.springer.com/journal/607", remark = "Special Issue on ESCO2012.", } @Article{Chudoba:2013:UPS, author = "R. Chudoba and V. Sad{\'\i}lek and R. Rypl and M. Vorechovsk{\'y}", title = "Using {Python} for scientific computing: Efficient and flexible evaluation of the statistical characteristics of functions with multivariate random inputs", journal = j-COMP-PHYS-COMM, volume = "184", number = "2", pages = "414--427", month = feb, year = "2013", CODEN = "CPHCBZ", DOI = "http://dx.doi.org/10.1016/j.cpc.2012.08.021", ISSN = "0010-4655 (print), 1879-2944 (electronic)", ISSN-L = "0010-4655", bibdate = "Fri Nov 2 11:55:56 MDT 2012", bibsource = "http://www.math.utah.edu/pub/tex/bib/compphyscomm2010.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.sciencedirect.com/science/article/pii/S0010465512003086", acknowledgement = ack-nhfb, fjournal = "Computer Physics Communications", journal-URL = "http://www.sciencedirect.com/science/journal/00104655", } @Article{Chun:2013:GPP, author = "Kyungwon Chun and Huioon Kim and Hyounggyu Kim and Kil Su Jung and Youngjoo Chung", title = "{GMES}: a {Python} package for solving {Maxwell}'s equations using the {FDTD} method", journal = j-COMP-PHYS-COMM, volume = "184", number = "4", pages = "1272--1279", month = apr, year = "2013", CODEN = "CPHCBZ", DOI = "http://dx.doi.org/10.1016/j.cpc.2012.12.011", ISSN = "0010-4655 (print), 1879-2944 (electronic)", ISSN-L = "0010-4655", bibdate = "Mon Feb 4 10:51:11 MST 2013", bibsource = "http://www.math.utah.edu/pub/tex/bib/compphyscomm2010.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.sciencedirect.com/science/article/pii/S0010465512004079", acknowledgement = ack-nhfb, fjournal = "Computer Physics Communications", journal-URL = "http://www.sciencedirect.com/science/journal/00104655", } @Book{Cuesta:2013:PDA, author = "Hector Cuesta", title = "Practical data analysis", publisher = pub-PACKT, address = pub-PACKT:adr, pages = "360", year = "2013", ISBN = "1-78328-099-9 (print), 1-68015-361-7 (e-book), 1-78328-100-6", ISBN-13 = "978-1-78328-099-5 (print), 978-1-68015-361-3 (e-book), 978-1-78328-100-8", LCCN = "QA76.9.S88 D683 2013eb", bibdate = "Wed Oct 14 07:37:03 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://proquest.safaribooksonline.com/9781783280995", abstract = "Each chapter of the book quickly introduces a key 'theme' of Data Analysis, before immersing you in the practical aspects of each theme. You'll learn quickly how to perform all aspects of Data Analysis. Practical Data Analysis is a book ideal for home and small business users who want to slice and dice the data they have on hand with minimum hassle.", acknowledgement = ack-nhfb, subject = "System design; System analysis; Data structures (Computer science); Databases; Data structures (Computer science); Databases.; System analysis.; System design.", tableofcontents = "Credits \\ Foreword \\ About the Author \\ Acknowledgments \\ About the Reviewers \\ www.PacktPub.com \\ Table of Contents \\ Preface \\ 1: Getting Started \\ Computer science \\ Artificial intelligence (AI) \\ Machine Learning (ML) \\ Statistics \\ Mathematics \\ Knowledge domain \\ Data, information, and knowledge \\ The nature of data \\ The data analysis process \\ The problem \\ Data preparation \\ Data exploration \\ Predictive modeling \\ Visualization of results \\ Quantitative versus qualitative data analysis \\ Importance of data visualization \\ What about big data? \\ Sensors and cameras \\ Social networks analysis \\ Tools and toys for this book \\ Why Python? \\ Why mlpy? \\ Why D3.js? \\ Why MongoDB? \\ Summary \\ 2: Working with Data \\ Data sources \\ Open data \\ Text files \\ Excel files \\ SQL databases \\ NoSQL databases \\ Multimedia \\ Web scraping \\ Data scrubbing \\ Statistical methods \\ Text parsing \\ Data transformation \\ Data formats \\ CSV \\ Parsing a CSV file with the csv module \\ Parsing a CSV file using NumPy \\ JSON \\ Parsing a JSON file using json module \\ XML \\ Parsing an XML file in Python using xml module \\ YAML \\ Getting started with OpenRefine \\ Text facet \\ Clustering \\ Text filters \\ Numeric facets \\ Transforming data \\ Exporting data \\ Operation history \\ Summary \\ 3: Data Visualization \\ Data-Driven Documents (D3) \\ HTML \\ DOM \\ CSS \\ JavaScript \\ SVG \\ Getting started with D3.js \\ Bar chart \\ Pie chart \\ Scatter plot \\ Single line chart \\ Multi-line chart \\ Interaction and animation \\ Summary \\ 4: Text Classification \\ Learning and classification \\ Bayesian classification \\ Na{\"i}ve Bayes algorithm \\ E-mail subject line tester \\ The algorithm \\ Classifier accuracy \\ Summary \\ 5: Similarity-based Image Retrieval \\ Image similarity search \\ Dynamic time warping (DTW) \\ Processing the image dataset \\ Implementing DTW \\ Analyzing the results \\ Summary \\ 6: Simulation of Stock Prices \\ Financial time series \\ Random walk simulation \\ Monte Carlo methods \\ Generating random numbers \\ Implementation in D3.js \\ Summary \\ 7: Predicting Gold Prices \\ Working with the time series data \\ Components of a time series \\ Smoothing the time series \\ The data \\ historical gold prices \\ Nonlinear regression \\ Kernel ridge regression \\ Smoothing the gold prices time series \\ Predicting in the smoothed time series \\ Contrasting the predicted value \\ Summary \\ 8: Working with Support Vector Machines \\ Understanding the multivariate dataset \\ Dimensionality reduction \\ Linear Discriminant Analysis \\ Principal Component Analysis \\ Getting started with support vector machine \\ Kernel functions \\ Double spiral problem \\ SVM implemented on mlpy \\ Summary \\ 9: Modeling Infectious Disease with Cellular Automata \\ Introduction to epidemiology \\ The epidemiology triangle \\ The epidemic models \\ The SIR model \\ Solving ordinary differential equation for the SIR model with SciPy \\ The SIRS model \\ Modelling with cellular automata cell, state, grid, and neighborhood", } @Book{DiPierro:2013:AAP, author = "Massimo {Di Pierro}", title = "Annotated algorithms in {Python}: with applications in physics, biology, and finance", publisher = "Experts4Solutions", address = "Lexington, KY, USA", pages = "388", year = "2013", ISBN = "0-9911604-0-1 (paperback)", ISBN-13 = "978-0-9911604-0-2 (paperback)", LCCN = "QA76.73.P98 D57 2013", bibdate = "Mon Feb 16 11:12:03 MST 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Computer algorithms; Computer algorithms; Python (Computer program language)", tableofcontents = "Introduction \\ Overview of the Python language \\ Theory of algorithms \\ Numerical algorithms \\ Probability and statistics \\ Random numbers and distributions \\ Monte Carlo simulations \\ Parallel algorithms", } @Article{Hu:2013:UPH, author = "Helen H. Hu and Tricia D. Shepherd", title = "Using {POGIL} to help students learn to program", journal = j-TOCE, volume = "13", number = "3", pages = "13:1--13:??", month = aug, year = "2013", CODEN = "????", DOI = "http://dx.doi.org/10.1145/2499947.2499950", ISSN = "1946-6226", bibdate = "Fri Aug 16 07:53:11 MDT 2013", bibsource = "http://www.acm.org/pubs/toce; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/toce.bib", abstract = "POGIL has been successfully implemented in a scientific computing course to teach science students how to program in Python. Following POGIL guidelines, the authors have developed guided inquiry activities that lead student teams to discover and understand programming concepts. With each iteration of the scientific computing course, the authors have refined the activities and learned how to better adapt POGIL for the computer science classroom. This article details how POGIL activities differ from both traditional computer science labs and other active-learning pedagogies. Background is provided on POGIL's effectiveness. The article then includes a full description of how POGIL activities were used in the scientific computing course, as well as an example POGIL activity on recursion. Discussion is provided on how to facilitate and develop POGIL activities. Quotes from student evaluations and an assessment on how well students learned to program are provided.", acknowledgement = ack-nhfb, articleno = "13", fjournal = "ACM Transactions on Computing Education", } @Article{Johansson:2013:QPF, author = "J. R. Johansson and P. D. Nation and Franco Nori", title = "{QuTiP 2}: a {Python} framework for the dynamics of open quantum systems", journal = j-COMP-PHYS-COMM, volume = "184", number = "4", pages = "1234--1240", month = apr, year = "2013", CODEN = "CPHCBZ", DOI = "http://dx.doi.org/10.1016/j.cpc.2012.11.019", ISSN = "0010-4655 (print), 1879-2944 (electronic)", ISSN-L = "0010-4655", bibdate = "Mon Feb 4 10:51:11 MST 2013", bibsource = "http://www.math.utah.edu/pub/tex/bib/compphyscomm2010.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.sciencedirect.com/science/article/pii/S0010465512003955", acknowledgement = ack-nhfb, fjournal = "Computer Physics Communications", journal-URL = "http://www.sciencedirect.com/science/journal/00104655", } @Book{Kiusalaas:2013:NME, author = "Jaan Kiusalaas", title = "Numerical methods in engineering with {Python 3}", publisher = pub-CAMBRIDGE, address = pub-CAMBRIDGE:adr, pages = "xi + 423", year = "2013", ISBN = "1-107-03385-3", ISBN-13 = "978-1-107-03385-6", LCCN = "TA345 .K584 2013", MRclass = "65-01", MRnumber = "3026375", bibdate = "Tue May 27 12:31:32 MDT 2014", bibsource = "clas.caltech.edu:210/INNOPAC; http://www.math.utah.edu/pub/tex/bib/numana2010.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "This book is an introduction to numerical methods for students in engineering. It covers solution of equations, interpolation and data fitting, solution of differential equations, eigenvalue problems and optimisation. The algorithms are implemented in Python 3, a high-level programming language that rivals MATLAB in readability and ease of use. All methods include programs showing how the computer code is utilised in the solution of problems. The book is based on Numerical Methods in Engineering with Python, which used Python 2. This new edition demonstrates the use of Python 3 and includes an introduction to the Python plotting package Matplotlib. This comprehensive book is enhanced by the addition of numerous examples and problems throughout.", acknowledgement = ack-nhfb, subject = "Engineering mathematics; Data processing; Python (Computer program language)", tableofcontents = "1. Introduction to Python \\ 2. Systems of linear algebraic equations \\ 3. Interpolation and curve fitting \\ 4. Roots of equations \\ 5. Numerical differentiation \\ 6. Numerical integration \\ 7. Initial value problems \\ 8. Two-point boundary value problems \\ 9. Symmetric matrix eigenvalue problems \\ 10. Introduction to optimization", } @Book{Lanaro:2013:PHP, author = "Gabriele Lanaro", title = "{Python} high performance programming: boost the performance of your {Python} programs using advanced techniques", publisher = pub-PACKT, address = pub-PACKT:adr, pages = "95", year = "2013", ISBN = "1-78328-845-0 (paperback), 1-306-25426-4 (e-book)", ISBN-13 = "978-1-78328-845-8 (paperback), 978-1-306-25426-7 (e-book)", LCCN = "QA76.73 .P98", bibdate = "Sat Oct 24 07:05:54 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://proquest.tech.safaribooksonline.de/9781783288458", acknowledgement = ack-nhfb, tableofcontents = "Preface \\ What this book covers \\ What you need for this book \\ Who this book is for \\ Conventions \\ Reader feedback \\ Customer support \\ Downloading the example code \\ Errata \\ Piracy \\ Questions \\ 1. Benchmarking and Profiling \\ Designing your application \\ Writing tests and benchmarks \\ Timing your benchmark \\ Finding bottlenecks with cProfile \\ Profile line by line with line_profiler \\ Optimizing our code \\ The dis module \\ Profiling memory usage with memory_profiler \\ Performance tuning tips for pure Python code \\ Summary \\ 2. Fast Array Operations with NumPy \\ Getting started with NumPy \\ Creating arrays \\ Accessing arrays \\ Broadcasting \\ Mathematical operations \\ Calculating the Norm \\ Rewriting the particle simulator in NumPy \\ Reaching optimal performance with numexpr \\ Summary \\ 3. C Performance with Cython \\ Compiling Cython extensions \\ Adding static types \\ Variables \\ Functions \\ Classes \\ Sharing declarations \\ Working with arrays \\ C arrays and pointers \\ NumPy arrays \\ Typed memoryviews \\ Particle simulator in Cython \\ Profiling Cython \\ Summary \\ 4. Parallel Processing \\ Introduction to parallel programming \\ The multiprocessing module \\ The Process and Pool classes \\ Monte Carlo approximation of pi \\ Synchronization and locks \\ IPython parallel \\ Direct interface \\ Task-based interface \\ Parallel Cython with OpenMP \\ Summary \\ Index", } @Book{Lutz:2013:LP, author = "Mark Lutz", title = "Learning {Python}", publisher = pub-ORA-MEDIA, address = pub-ORA-MEDIA:adr, edition = "Fifth", pages = "l + 1540", year = "2013", ISBN = "1-4493-5573-0", ISBN-13 = "978-1-4493-5573-9", LCCN = "QA76.73.P98 L877 2013", bibdate = "Fri Nov 29 06:32:23 MST 2013", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://proquestcombo.safaribooksonline.com/9781449355722", abstract = "Describes the features of the Python programming language, covering such topics as types and operations, statements and syntax, functions, modules, classes and OOP, and exceptions and tools. - Publisher.", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Object-oriented programming (Computer science)", tableofcontents = "A Python Q and A session \\ How Python runs programs \\ How you run programs \\ Introducing Python object types \\ Numeric types \\ The dynamic typing interlude \\ String fundamentals \\ Lists and dictionaries \\ Tuples, files, and everything else \\ Introducing Python statements \\ Assignments, expressions, and prints \\ if tests and syntax rules \\ while and for loops \\ Iterations and comprehensions \\ The documentation interlude \\ Function basics \\ Scopes \\ Arguments \\ Advanced function topics \\ Comprehensions and generations \\ The benchmarking interlude \\ Modules : the big picture \\ Module coding basics \\ Module packages \\ Advanced module topics \\ OOP : the big picture \\ Class coding basics \\ A more realistic example \\ Class coding details \\ Operator overloading \\ Designing with classes \\ Advanced class topics \\ Exception basics \\ Exception coding details \\ Exception objects \\ Designing with exceptions \\ Unicode and byte strings \\ Managed attributes \\ Decorators \\ Metaclasses \\ All good things", } @Article{Mertz:2013:GIP, author = "Andrew Mertz and William Slough", title = "A gentle introduction to {Python\TeX}", journal = j-TUGboat, volume = "34", number = "3", pages = "302--312", year = "2013", ISSN = "0896-3207", ISSN-L = "0896-3207", bibdate = "Sat May 23 10:53:04 MDT 2015", bibsource = "http://tug.org/tug2013/; http://www.math.utah.edu/pub/tex/bib/index-table-t.html#tugboat; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/tugboat.bib", URL = "http://www.tug.org/TUGboat/tb34-3/tb108mertz.pdf", acknowledgement = ack-bnb # " and " # ack-nhfb, issue = "108", journal-URL = "http://www.tug.org/TUGboat/", remark = "TUG 2013 Proceedings.", } @Article{Mullner:2013:FFH, author = "Daniel M{\"u}llner", title = "{\tt fastcluster}: Fast Hierarchical, Agglomerative Clustering Routines for {R} and {Python}", journal = j-J-STAT-SOFT, volume = "53", number = "9", pages = "??--??", month = may, year = "2013", CODEN = "JSSOBK", ISSN = "1548-7660", bibdate = "Wed Mar 5 10:15:54 MST 2014", bibsource = "http://www.math.utah.edu/pub/tex/bib/jstatsoft.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.jstatsoft.org/v53/i09", acknowledgement = ack-nhfb, fjournal = "Journal of Statistical Software", journal-URL = "http://www.jstatsoft.org/", pubdates = "Submitted 2011-10-01; Accepted 2012-12-05", } @Book{OConnor:2013:VPC, author = "T. J. O'Connor", title = "Violent {Python}: a cookbook for hackers, forensic analysts, penetration testers and security engineers", publisher = pub-SYNGRESS, address = pub-SYNGRESS:adr, pages = "xxv + 262", year = "2013", ISBN = "1-59749-957-9 (paperback)", ISBN-13 = "978-1-59749-957-6 (paperback)", LCCN = "QA76.73.P98 O26 2013", bibdate = "Wed Oct 14 07:37:03 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Python is a hacker's language. With its decreased complexity, increased efficiency, limitless third-party libraries, and low bar to entry, Python provides an excellent development platform to build your own offensive tools. If you are running Mac OS X or Linux, odds are it is already installed on your system. While a wealth of offensive tools already exist, learning Python can help you with the difficult cases where those tools fail.", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Python (Computer program language)", tableofcontents = "1: Introduction \\ Introduction: A Penetration Test with Python \\ Setting Up Your Development Environment \\ Installing Third Party Libraries \\ Interpreted Python Versus Interactive Python \\ The Python Language \\ Variables \\ Strings \\ Lists \\ Dictionaries \\ Networking \\ Selection \\ Exception Handling \\ Functions \\ Iteration \\ File I/O \\ Sys Module \\ OS Module \\ Your First Python Programs \\ Setting the Stage for Your First Python Program: The Cuckoo's Egg \\ Your First Program, a UNIX Password Cracker \\ Setting the Stage for Your Second Program: Using Evil for Good \\ Your Second Program, a Zip-File Password Cracker \\ Chapter Wrap-Up \\ References \\ 2: Penetration Testing with Python \\ Introduction: The Morris Worm---Would it Work Today? \\ Building a Port Scanner \\ TCP Full Connect Scan \\ Application Banner Grabbing \\ Threading the Scan \\ Integrating the Nmap Port Scanner \\ Building an SSH BotNet with Python \\ Interacting with SSH Through Pexpect \\ Brute Forcing SSH Passwords with Pxssh \\ Exploiting SSH Through Weak Private Keys \\ Constructing the SSH Botnet \\ Mass Compromise by Bridging FTP and Web \\ Building an Anonymous FTP Scanner with Python \\ Using Ftplib to Brute Force FTP User Credentials \\ Searching for Web Pages on the FTP Server \\ Adding a Malicious Inject to Web Pages \\ Bringing the Entire Attack Together \\ Conflicker, Why Trying Hard is Always Good Enough \\ Attacking the Windows SMB Service with Metasploit \\ Writing Python to Interact with Metasploit \\ Remote Process Execution Brute Force \\ Putting it Back Together to Build Our Own Conflicker \\ Writing Your Own Zero-Day Proof of Concept Code \\ Stack-Based Buffer Overflow Attacks \\ Adding the Key Elements of the Attack \\ Sending the Exploit \\ Assembling the Entire Exploit Script \\ Chapter Wrap-Up \\ References \\ 3: Forensic Investigations with Python \\ Introduction: How Forensics Solved the BTK Murders \\ Where Have You Been? Analysis of Wireless Access Points in the Registry \\ Using WinReg to Read the Windows Registry \\ Using Mechanize to Submit the MAC Address to Wigle \\ Using Python to Recover Deleted Items in the Recycle Bin \\ Using the OS Module to Find Deleted Items \\ Python to Correlate SID to User \\ Metadata \\ Using PyPDF to Parse PDF Metadata \\ Understanding Exif Metadata \\ Downloading Images with BeautifulSoup \\ Reading Exif Metadata from Images with the Python Imaging Library \\ Investigating Application Artifacts with Python \\ Understanding the Skype Sqlite3 Database \\ Using Python and Sqlite3 to Automate Skype Database Queries \\ Parsing Firefox Sqlite3 Databases with Python \\ Investigating iTunes Mobile Backups with Python \\ Chapter Wrap-Up \\ References \\ 4: Network Traffic Analysis with Python \\ Introduction: Operation Aurora and How the Obvious was Missed \\ Where is that IP Traffic Headed?---A Python Answer \\ Using PyGeoIP to Correlate IP to Physical Locations \\ Using Dpkt to Parse Packets \\ Using Python to Build a Google Map \\ Is Anonymous Really Anonymous? Analyzing LOIC Traffic \\ Using Dpkt to Find the LOIC Download \\ Parsing IRC Commands to the Hive \\ Identifying the DDoS Attack in Progress \\ How H. D. Moore Solved the Pentagon's Dilemma \\ Understanding the TTL Field \\ Parsing TTL Fields with Scapy \\ Storm's Fast-Flux and Conficker's Domain-Flux \\ Does Your DNS Know Something You Don't? \\ Using Scapy to Parse DNS Traffic \\ Detecting Fast Flux Traffic with Scapy \\ Detecting Domain Flux Traffic with Scapy \\ Kevin Mitnick and TCP Sequence Prediction \\ Your Very Own TCP Sequence Prediction \\ Crafting a SYN Flood with Scapy \\ Calculating TCP Sequence Numbers \\ Spoofing the TCP Connection \\ Foiling Intrusion Detection Systems with Scapy \\ Chapter Wrap-Up \\ References \\ ch. 5: Wireless Mayhem with Python \\ Introduction: Wireless (IN)Security and the Iceman \\ Setting up Your Wireless Attack Environment \\ Testing Wireless Capture with Scapy \\ Installing Python Bluetooth Packages \\ The Wall of Sheep---Passively Listening to Wireless Secrets \\ Using Python Regular Expressions to Sniff Credit Cards \\ Sniffing Hotel Guests \\ Building a Wireless Google Key Logger \\ Sniffing FTP Credentials \\ Where Has Your Laptop Been? Python Answers \\ Listening for 802.11 Probe Requests \\ Finding Hidden Network 802.11 Beacons \\ De-cloaking Hidden 802.11 Networks \\ Intercepting and Spying on UAVs with Python \\ Intercepting the Traffic, Dissecting the Protocol \\ Crafting 802.11 Frames with Scapy \\ Finalizing the Attack, Emergency Landing The UAV \\ Detecting FireSheep \\ Understanding Wordpress Session Cookies \\ Herd the Sheep---Catching Wordpress Cookie Reuse \\ Stalking with Bluetooth and Python \\ Intercepting Wireless Traffic to Find Bluetooth Addresses \\ Scanning Bluetooth RFCOMM Channels \\ Using the Bluetooth Service Discovery Protocol \\ Taking Over a Printer with Python ObexFTP \\ BlueBugging a Phone with Python \\ Chapter Wrap-Up \\ References \\ 6: Web Recon with Python \\ Introduction: Social Engineering Today \\ Recon Prior to Attack \\ Using the Mechanize Library to Browse the Internet \\ Anonymity \\ Adding Proxies, User-Agents, Cookies \\ Finalizing Our AnonBrowser into a Python Class \\ Scraping Web Pages with AnonBrowser \\ Parsing HREF Links with Beautiful Soup \\ Mirroring Images with Beautiful Soup \\ Research, Investigate, Discovery \\ Interacting with the Google API in Python \\ Parsing Tweets with Python \\ Pulling Location Data Out of Tweets \\ Parsing Interests from Twitter Using Regular Expressions \\ Anonymous Email \\ Mass Social Engineering \\ Using Smtplib to Email Targets \\ Spear Phishing with Smtplib \\ Chapter Wrap-Up \\ References \\ 7: Antivirus Evasion with Python \\ Introduction: Flame On! \\ Evading Antivirus Programs \\ Verifying Evasion \\ Wrap Up \\ References", } @Article{Politz:2013:PFM, author = "Joe Gibbs Politz and Alejandro Martinez and Matthew Milano and Sumner Warren and Daniel Patterson and Junsong Li and Anand Chitipothu and Shriram Krishnamurthi", title = "{Python}: the full monty", journal = j-SIGPLAN, volume = "48", number = "10", pages = "217--232", month = oct, year = "2013", CODEN = "SINODQ", DOI = "http://dx.doi.org/10.1145/2544173.2509536", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Dec 9 09:19:33 MST 2013", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib", note = "OOPSLA '13 conference proceedings.", abstract = "We present a small-step operational semantics for the Python programming language. We present both a core language for Python, suitable for tools and proofs, and a translation process for converting Python source to this core. We have tested the composition of translation and evaluation of the core for conformance with the primary Python implementation, thereby giving confidence in the fidelity of the semantics. We briefly report on the engineering of these components. Finally, we examine subtle aspects of the language, identifying scope as a pervasive concern that even impacts features that might be considered orthogonal.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J706", } @Book{Richardson:2013:GSB, author = "Matt Richardson", title = "Getting started with {BeagleBone}", publisher = "Maker Media", address = "Sebastopol, CA", pages = "xiii + 126", year = "2013", ISBN = "1-4493-4537-9 (paperback), 1-4493-4536-0, 1-4493-4535-2 (e-book), 1-4493-4533-6 (e-book)", ISBN-13 = "978-1-4493-4537-2 (paperback), 978-1-4493-4536-5, 978-1-4493-4535-8 (e-book), 978-1-4493-4533-4 (e-book)", LCCN = "TK7895.E42 R43 2013", bibdate = "Thu Feb 26 14:08:28 MST 2015", bibsource = "http://www.math.utah.edu/pub/tex/bib/linux.bib; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/unix.bib; z3950.loc.gov:7090/Voyager", acknowledgement = ack-nhfb, remark = "At head of title on cover: Make: the magazine for makers.", subject = "BeagleBone (Computer); Embedded computer systems; Electronics; Amateurs' manuals; Linux; Python (Computer program language); JavaScript (Computer program language)", } @Book{Rossant:2013:LII, author = "Cyrille Rossant", title = "Learning {IPython} for interactive computing and data visualization: Learn {IPython} for interactive {Python} programming, high-performance numerical computing, and data visualization", publisher = pub-PACKT, address = pub-PACKT:adr, pages = "iv + 123", year = "2013", ISBN = "1-78216-993-8 (paperback), 1-78216-994-6 (e-book), 1-299-54508-4 (e-book)", ISBN-13 = "978-1-78216-993-2 (paperback), 978-1-78216-994-9 (e-book), 978-1-299-54508-3 (e-book)", LCCN = "QA76.73.P98 .R677 2013", bibdate = "Sat Mar 21 07:03:35 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/numana2010.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", series = "Open source: community experience distilled", acknowledgement = ack-nhfb, author-dates = "1985--", subject = "Python (langage de programmation).; Python (Computer program language); Python (Computer program language)", } @Book{Sander:2013:ESP, author = "Leonard M. (Leonard Michael) Sander", title = "Equilibrium statistical physics: with computer simulations in {Python}", publisher = "CreateSpace Independent Publishing", address = "North Charleston, SC, USA", pages = "xii + 321", year = "2013", ISBN = "1-4910-6651-2", ISBN-13 = "978-1-4910-6651-5", LCCN = "QC174.8 .S36 2013", bibdate = "Sat Aug 30 09:09:15 MDT 2014", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/jstatphys2010.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, subject = "Statistical physics; Statistical physics.", } @Book{Severance:2013:PIE, author = "Charles Severance", title = "{Python} for informatics: exploring information", publisher = "CreateSpace Independent Publishing", address = "North Charleston, SC, USA", pages = "xii + 224 + 12", year = "2013", ISBN = "1-4923-3924-5", ISBN-13 = "978-1-4923-3924-3", LCCN = "QA76.73.P98 S48 2013b", bibdate = "Wed Oct 14 08:00:43 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Python (Computer program language)", tableofcontents = "Why should you learn to write programs \\ Variables, expressions and statements \\ Conditional execution \\ Functions \\ Iteration \\ Strings \\ Files \\ Lists \\ Dictionaries \\ Tuples \\ Regular expressions \\ Networked programs \\ Using Web Services \\ Using databases and Structured Query Language (SQL) \\ Visualizing data \\ Automating common tasks on your computer \\ Python programming on Windows \\ Python programming on Macintosh", } @Article{Stefik:2013:EIP, author = "Andreas Stefik and Susanna Siebert", title = "An Empirical Investigation into Programming Language Syntax", journal = j-TOCE, volume = "13", number = "4", pages = "19:1--19:??", month = nov, year = "2013", CODEN = "????", DOI = "http://dx.doi.org/10.1145/2534973", ISSN = "1946-6226", bibdate = "Wed Nov 13 17:27:51 MST 2013", bibsource = "http://www.acm.org/pubs/toce; http://www.math.utah.edu/pub/tex/bib/java2010.bib; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/toce.bib", abstract = "Recent studies in the literature have shown that syntax remains a significant barrier to novice computer science students in the field. While this syntax barrier is known to exist, whether and how it varies across programming languages has not been carefully investigated. For this article, we conducted four empirical studies on programming language syntax as part of a larger analysis into the, so called, programming language wars. We first present two surveys conducted with students on the intuitiveness of syntax, which we used to garner formative clues on what words and symbols might be easy for novices to understand. We followed up with two studies on the accuracy rates of novices using a total of six programming languages: Ruby, Java, Perl, Python, Randomo, and Quorum. Randomo was designed by randomly choosing some keywords from the ASCII table (a metaphorical placebo). To our surprise, we found that languages using a more traditional C-style syntax (both Perl and Java) did not afford accuracy rates significantly higher than a language with randomly generated keywords, but that languages which deviate (Quorum, Python, and Ruby) did. These results, including the specifics of syntax that are particularly problematic for novices, may help teachers of introductory programming courses in choosing appropriate first languages and in helping students to overcome the challenges they face with syntax.", acknowledgement = ack-nhfb, articleno = "19", fjournal = "ACM Transactions on Computing Education", } @Book{Stone:2013:BRT, author = "James V. Stone", title = "{Bayes}' rule: a tutorial introduction to {Bayesian} analysis", publisher = "Sebtel Press", address = "Lexington, KY, USA", pages = "170", year = "2013", ISBN = "0-9563728-4-8 (paperback)", ISBN-13 = "978-0-9563728-4-0 (paperback)", LCCN = "QA279.5 .S766 2013", bibdate = "Mon Sep 28 09:15:25 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/jrss-a-2010.bib; http://www.math.utah.edu/pub/tex/bib/matlab.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Discovered by an 18th century mathematician and preacher, Bayes' rule is a cornerstone of modern probability theory. In this richly illustrated book, a range of accessible examples is used to show how Bayes' rule is actually a natural consequence of commonsense reasoning. Bayes' rule is derived using intuitive graphical representations of probability, and Bayesian analysis is applied to parameter estimation using the Matlab and online Python programs provided. The tutorial style of writing, combined with a comprehensive glossary, makes this an ideal primer for the novice who wishes to become familiar with the basic principles of Bayesian analysis.", acknowledgement = ack-nhfb, subject = "Bayesian statistical decision theory; Bayesian statistical decision theory.", tableofcontents = "An introduction to Bayes' rule \\ Bayes' rule in pictures \\ Discrete parameter values \\ Continuous parameter values \\ Gaussian parameter estimation \\ A bird's eye view of Bayes' rule \\ Bayesian wars \\ Appendices. A. Glossary \\ B. Mathematical symbols \\ C. The rules of probability \\ D. Probability density functions \\ E. The binomial distribution \\ F. The Gaussian distribution \\ G. Least-squares estimation \\ H. Reference priors \\ I. Matlab code", } @Article{Suchojad:2013:ZAE, author = "Dariusz Suchojad", title = "{Zato} --- Agile {ESB}, {SOA}, {REST} and Cloud integrations in {Python}", journal = j-LINUX-J, volume = "2013", number = "235", pages = "2:1--2:??", month = nov, year = "2013", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Mon Dec 9 07:55:16 MST 2013", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/linux-journal.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "Integrate applications in an elegant and agile manner.", acknowledgement = ack-nhfb, articleno = "2", fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Book{Sweigart:2013:HSC, author = "Al Sweigart", title = "Hacking Secret Ciphers with {Python}: [a beginner's guide to cryptography and computer programming with {Python}]", publisher = "CreateSpace Independent Publishing", address = "North Charleston, SC, USA", pages = "436", year = "2013", ISBN = "1-4826-1437-5", ISBN-13 = "978-1-4826-1437-4", LCCN = "????", bibdate = "Wed Oct 14 08:40:05 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://swbplus.bsz-bw.de/bsz40205301Xinh.htm", acknowledgement = ack-nhfb, tableofcontents = "Making paper cryptography tools \\ Installing Python \\ The interactive shell \\ Strings and writing programs \\ The reverse cipher \\ The Caesar cipher \\ Hacking the Caesar cipher with the brute-force technique \\ Encrypting with the transposition cipher \\ Decrypting with the transposition cipher \\ Programming a program to test our program \\ Encrypting and decrypting files \\ Detecting English programmatically \\ Hacking the transposition cipher \\ Modular arithmetic with the multiplicative and affine ciphers \\ The affine cipher \\ Hacking the affine cipher \\ The simple substitution cipher \\ Hacking the simple substitution cipher \\ The vigenere cipher \\ Frequency analysis \\ Hacking the vigenere cipher \\ The one-time pad cipher \\ Finding prime numbers \\ Public key cryptography adn the RSA cipher", } @Article{Wu:2013:HSC, author = "Youfeng Wu", title = "{HW\slash SW} co-designed acceleration of dynamic languages", journal = j-SIGPLAN, volume = "48", number = "5", pages = "1--2", month = may, year = "2013", CODEN = "SINODQ", DOI = "http://dx.doi.org/10.1145/2499369.2465555", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jul 1 17:15:32 MDT 2013", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigplan2010.bib", abstract = "Dynamic Programming Languages, such as Java, JavaScript, PHP, Perl, Python, Ruby, etc., are dominating languages for programming the web. HW/SW co-designed virtual machine can significantly accelerate their executions by transparently leveraging internal HW features via an internal compiler. We also argue for a common API to interface dynamic languages with the HW/SW co-designed virtual machine, so that a single internal compiler can accelerate all major dynamic languages.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J706", remark = "GPCE '12 conference proceedings.", } @Book{Adams:2014:LPD, author = "Chad Adams", title = "Learning {Python} data visualization: master how to build dynamic {HTML5}-ready {SVG} charts using {Python} and the {\tt pygal} library", publisher = pub-PACKT, address = pub-PACKT:adr, pages = "iii + 195", year = "2014", ISBN = "1-78355-333-2, 1-78355-334-0 (e-book)", ISBN-13 = "978-1-78355-333-4, 978-1-78355-334-1 (e-book)", LCCN = "QA76.73.P98", bibdate = "Sat Oct 24 06:24:24 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", series = "Community Experience Distilled", URL = "http://proquest.tech.safaribooksonline.de/9781783553334", acknowledgement = ack-nhfb, remark = "- Description based on online resource; title from PDF title page (ebrary, viewed September 5, 2014).", subject = "Python (Computer program language); Command languages (Computer science); Web sites; Authoring programs", tableofcontents = "Preface \\ What this book covers \\ What you need for this book \\ Who this book is for \\ Conventions \\ Reader feedback \\ Customer support \\ Downloading the example code \\ Errata \\ Piracy \\ Questions \\ 1. Setting Up Your Development Environment \\ Introduction \\ Setting up Python on Windows \\ Installation \\ Exploring the Python installation in Windows \\ Python editors \\ Setting up Python on Mac OS X \\ Setting up Python on Ubuntu \\ Summary \\ 2. Python Refresher \\ Python basics \\ Importing modules and libraries \\ Input and output \\ Generating an image \\ Creating SVG graphics using svgwrite \\ For Windows users using VSPT \\ For Eclipse or other editors on Windows \\ For Eclipse on Mac and Linux \\ Summary \\ 3. Getting Started with pygal \\ Why use pygal? \\ Installing pygal using pip \\ Installing pygal using Python Tools for Visual Studio \\ Building a line chart \\ Stacked line charts \\ Simple bar charts \\ Stacked bar charts \\ Horizontal bar charts \\ XY charts \\ Scatter plots \\ DateY charts \\ Summary \\ 4. Advanced Charts \\ Pie charts \\ Stacked pie charts \\ Radar charts \\ Box plots \\ Dot charts \\ Funnel charts \\ Gauge charts \\ Pyramid charts \\ Worldmap charts \\ Summary \\ 5. Tweaking pygal \\ Country charts \\ Parameters \\ Legend at the bottom \\ Legend settings \\ Label settings \\ Chart title settings \\ Displaying no data \\ pygal themes \\ Summary \\ 6. Importing Dynamic Data \\ Pulling data from the Web \\ The XML refresher \\ RSS and the ATOM \\ Understanding HTTP \\ Using HTTP in Python \\ Parsing XML in Python with HTTP \\ About JSON \\ Parsing JSON in Python with HTTP \\ About JSONP \\ JSONP with Python \\ Summary \\ 7. Putting It All Together \\ Chart usage for a blog \\ Getting our data in order \\ Converting date strings to dates \\ Using strptime \\ Saving the output as a counted array \\ Counting the array \\ Python modules \\ Building the main method \\ Modifying our RSS to return values \\ Building our chart module \\ Building a portable configuration for our chart \\ Setting up our chart for data \\ Configuring our main function to pass data \\ Project improvements \\ Summary \\ 8. Further Resources \\ The matplotlib library \\ Installing the matplotlib library \\ matplotlib's library download page \\ Creating simple matplotlib charts \\ Plotly \\ Pyvot \\ Summary \\ A. References and Resources \\ Links for help and support \\ Charting libraries \\ Editors and IDEs for Python \\ Other libraries and Python alternative shells \\ Index", } @Book{Arbuckle:2014:LPT, author = "Daniel Arbuckle", title = "Learning {Python} testing: a straightforward and easy approach to testing your {Python} projects", publisher = pub-PACKT, address = pub-PACKT:adr, edition = "Second", pages = "v + 180", year = "2014", ISBN = "1-78355-321-9, 1-78355-322-7", ISBN-13 = "978-1-78355-321-1, 978-1-78355-322-8", LCCN = "QA76.73.P98 A728 2014", bibdate = "Sat Oct 24 06:12:58 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", series = "Community experience distilled", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Object-oriented programming (Computer science); Object-oriented programming (Computer science); Python (Computer program language)", tableofcontents = "Preface \\ What this book covers \\ What you need for this book \\ Who this book is for \\ Conventions \\ Reader feedback \\ Customer support \\ Downloading the example code \\ Errata \\ Piracy \\ Questions \\ 1. Python and Testing \\ Testing for fun and profit \\ Levels of testing \\ Unit testing \\ Integration testing \\ System testing \\ Acceptance testing \\ Regression testing \\ Test-driven development \\ You'll need Python \\ Summary \\ 2. Working with doctest \\ Where doctest performs best \\ The doctest language \\ Example --- creating and running a simple doctest \\ Result --- three times three does not equal ten \\ The syntax of doctests \\ Example --- a more complex test \\ Result --- five tests run \\ Expecting exceptions \\ Example --- checking for an exception \\ Result --- success at failing \\ Expecting blank lines \\ Controlling doctest behavior with directives \\ Ignoring part of the result \\ Example --- ellipsis test drive \\ Result --- ellipsis elides \\ Ignoring white space \\ Example --- invoking normality \\ Result --- white space matches any other white space \\ Skipping an example \\ Example --- humans only \\ Result --- it looks like a test, but it's not \\ The other directives \\ The execution scope of doctest tests \\ Check your understanding \\ Exercise --- English to doctest \\ Embedding doctests into docstrings \\ Example --- a doctest in a docstring \\ Result --- the code is now self-documenting and self-testable \\ Putting it into practice --- an AVL tree \\ English specification \\ Node data \\ Testing the constructor \\ Recalculating height \\ Making a node deletable \\ Rotation \\ Locating a node \\ The rest of the specification \\ Summary \\ 3. Unit Testing with doctest \\ What is unit testing? \\ The limitations of unit testing \\ Example --- identifying units \\ Choosing units \\ Check your understanding \\ Unit testing during the development process \\ Design \\ Development \\ Feedback \\ Development, again \\ Later stages of the process \\ Summary \\ 4. Decoupling Units with unittest.mock \\ Mock objects in general \\ Mock objects according to unittest.mock \\ Standard mock objects \\ Non-mock attributes \\ Non-mock return values and raising exceptions \\ Mocking class or function details \\ Mocking function or method side effects \\ Mocking containers and objects with a special behavior \\ Mock objects for properties and descriptors \\ Mocking file objects \\ Replacing real code with mock objects \\ Mock objects in action \\ Better PID tests \\ Patching time.time \\ Decoupling from the constructor \\ Summary \\ 5. Structured Testing with unittest \\ The basics \\ Assertions \\ The assertTrue method \\ The assertFalse method \\ The assertEqual method \\ The assertNotEqual method \\ The assertAlmostEqual method \\ The assertNotAlmostEqual method \\ The assertIs and assertIsNot methods \\ The assertIsNone and assertIsNotNone methods \\ The assertIn and assertNotIn methods \\ The assertIsInstance and assertNotIsInstance methods \\ The assertRaises method \\ The fail method \\ Make sure you get it \\ Test fixtures \\ Example --- testing database-backed units \\ Summary \\ 6. Running Your Tests with Nose \\ Installing Nose \\ Organizing tests \\ An example of organizing tests \\ Simplifying the Nose command line \\ Customizing Nose's test search \\ Check your understanding \\ Practicing Nose \\ Nose and doctest tests \\ Nose and unittest tests \\ Module fixture practice \\ Package fixture practice \\ Nose and ad hoc tests \\ Summary \\ 7. Test-driven Development Walk-through \\ Writing the specification \\ Try it for yourself --- what are you going to do? \\ Wrapping up the specification \\ Writing initial unit tests \\ Try it for yourself --- write your early unit tests \\ Wrapping up the initial unit tests \\ Coding planner.data \\ Using tests to get the code right \\ Try it for yourself --- writing and debugging code \\ Writing the persistence tests \\ Finishing up the personal planner \\ Summary \\ 8. Integration and System Testing \\ Introduction to integration testing and system testing \\ Deciding on an integration order \\ Automating integration tests and system tests \\ Writing integration tests for the time planner \\ Check yourself --- writing integration tests \\ Summary \\ 9. Other Tools and Techniques \\ Code coverage \\ Installing coverage.py \\ Using coverage.py with Nose \\ Version control integration \\ Git \\ Example test-runner hook \\ Subversion \\ Mercurial \\ Bazaar \\ Automated continuous integration \\ Buildbot \\ Setup \\ Using Buildbot \\ Summary \\ Index", } @Book{Aumasson:2014:HFB, author = "Jean-Philippe Aumasson and Willi Meier and Raphael C.-W. Phan and Luca Henzen", title = "The Hash Function {BLAKE}", publisher = pub-SV, address = pub-SV:adr, pages = "xviii + 228 + 18", year = "2014", DOI = "http://dx.doi.org/10.1007/978-3-662-44757-4", ISBN = "3-662-44756-8 (print), 3-662-44757-6 (e-book)", ISBN-13 = "978-3-662-44756-7 (print), 978-3-662-44757-4 (e-book)", ISSN = "1619-7100 (print), 2197-845X (electronic)", ISSN-L = "1619-7100", LCCN = "QA76.9.H36 A96 2014", bibdate = "Sat Jun 10 08:35:22 MDT 2017", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/cryptography2010.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", series = "Information Security and Cryptography", abstract = "This is a comprehensive description of the cryptographic hash function BLAKE, one of the five final contenders in the NIST SHA3 competition, and of BLAKE2, an improved version popular among developers. It describes how BLAKE was designed and why BLAKE2 was developed, and it offers guidelines on implementing and using BLAKE, with a focus on software implementation. In the first two chapters, the authors offer a short introduction to cryptographic hashing, the SHA3 competition, and BLAKE. They review applications of cryptographic hashing, they describe some basic notions such as security definitions and state-of-the-art collision search methods, and they present SHA1, SHA2, and the SHA3 finalists. In the chapters that follow, the authors give a complete description of the four instances BLAKE-256, BLAKE-512, BLAKE-224, and BLAKE-384; they describe applications of BLAKE, including simple hashing with or without a salt, and HMAC and PBKDF2 constructions; they review implementation techniques, from portable C and Python to AVR assembly and vectorized code using SIMD CPU instructions; they describe BLAKE's properties with respect to hardware design for implementation in ASICs or FPGAs; they explain BLAKE's design rationale in detail, from NIST's requirements to the choice of internal parameters; they summarize the known security properties of BLAKE and describe the best attacks on reduced or modified variants; and they present BLAKE2, the successor of BLAKE, starting with motivations and also covering its performance and security aspects. The book concludes with detailed test vectors, a reference portable C implementation of BLAKE, and a list of third-party software implementations of BLAKE and BLAKE2. The book is oriented towards practice - engineering and craftsmanship - rather than theory. It is suitable for developers, engineers, and security professionals engaged with BLAKE and cryptographic hashing in general, and for applied cryptography researchers and students who need a consolidated reference and a detailed description of the design process, or guidelines on how to design a cryptographic algorithm.", acknowledgement = ack-nhfb, shorttableofcontents = "Introduction \\ Preliminaries \\ Specification of BLAKE \\ Using BLAKE \\ BLAKE in Software \\ BLAKE in Hardware \\ Design Rationale \\ Security of BLAKE \\ BLAKE2 \\ Conclusion \\ References \\ App. A, Test Vectors \\ App. B, Reference C Code \\ App. C, Third-Party Software \\ Index", subject = "BLAKE", tableofcontents = "Introduction / 1 \\ 1.1 Cryptographic Hashing / 1 \\ 1.2 The SHA3 Competition / 2 \\ 1.3 BLAKE, in a Nutshell / 5 \\ 1.4 Conventions / 6 \\ 2 Preliminaries / 9 \\ 2.1 Applications / 9 \\ 2.1.1 Modification Detection / 9 \\ 2.1.2 Message Authentication / 10 \\ 2.1.3 Digital Signatures / 11 \\ 2.1.4 Pseudorandom Functions / 12 \\ 2.1.5 Entropy Extraction and Key Derivation / 13 \\ 2.1.6 Password Hashing / 13 \\ 2.1.7 Data Identification / 14 \\ 2.1.8 Key Update / 14 \\ 2.1.9 Proof-of-Work Systems / 14 \\ 2.1.10 Timestamping / 15 \\ 2.2 Security Notions / 15 \\ 2.2.1 Security Models / 15 \\ 2.2.2 Classical Security Definitions / 17 \\ 2.2.3 General Security Definition / 19 \\ 2.3 Black-Box Collision Search / 20 \\ 2.3.1 Cycles and Tails / 20 \\ 2.3.2 Cycle Detection / 21 \\ 2.3.3 Parallel Collision Search / 22 \\ 2.3.4 Application to Meet-in-the-Middle / 22 \\ 2.3.5 Quantum Collision Search / 23 \\ 2.4 Constructing Hash Functions / 24 \\ 2.4.1 Merkle-Damgard / 24 \\ 2.4.2 HAIFA / 27 \\ 2.4.3 Wide-Pipe / 27 \\ 2.4.4 Sponge Functions / 27 \\ 2.4.5 Compression Functions / 28 \\ 2.5 The SHA Family / 31 \\ 2.5.1 SHA1 / 31 \\ 2.5.2 SHA2 / 32 \\ 2.5.3 SHA3 Finalists / 34 \\ 3 Specification of BLAKE / 37 \\ 3.1 BLAKE-256 / 37 \\ 3.1.1 Constant Parameters / 37 \\ 3.1.2 Compression Function / 38 \\ 3.1.3 Iteration Mode / 40 \\ 3.2 BLAKE-512 / 41 \\ 3.2.1 Constant Parameters / 41 \\ 3.2.2 Compression Function / 42 \\ 3.2.3 Iteration Mode / 42 \\ 3.3 BLAKE-224 / 43 \\ 3.4 BLAKE-384 / 43 \\ 3.5 Toy Versions / 44 \\ 4 Using BLAKE / 45 \\ 4.1 Simple Hashing / 45 \\ 4.1.1 Description / 45 \\ 4.1.2 Hashing a Large File with BLAKE-256 / 46 \\ 4.1.3 Hashing a Bit with BLAKE-512 / 48 \\ 4.1.4 Hashing the Empty String with BLAKE-512 / 49 \\ 4.2 Hashing with a Salt / 49 \\ 4.2.1 Description / 49 \\ 4.2.2 Hashing a Bit with BLAKE-512 and a Salt / 49 \\ 4.3 Message Authentication with HMAC / 50 \\ 4.3.1 Description / 50 \\ 4.3.2 Authenticating a File with HMAC-BLAKE-512 / 50 \\ 4.4 Password-Based Key Derivation with PBKDF2 / 53 \\ 4.4.1 Basic Description / 53 \\ 4.4.2 Generating a Key with PBKDF2-HMAC-BLAKE-224 / 53 \\ 5 BLAKE in Software / 55 \\ 5.1 Straightforward Implementation / 55 \\ 5.1.1 Portable C / 55 \\ 5.1.2 Other Languages / 58 \\ 5.2 Embedded Systems / 60 \\ 5.2.1 8-Bit AVR / 60 \\ 5.2.2 32-Bit ARM / 62 \\ 5.3 Vectorized Implementation Principle / 64 \\ 5.4 Vectorized Implementation with SSE Extensions / 64 \\ 5.4.1 Streaming SIMD Extensions 2 (SSE2) / 64 \\ 5.4.2 Implementing BLAKE-256 with SSE2 / 65 \\ 5.4.3 Implementing BLAKE-512 with SSE2 / 66 \\ 5.4.4 Implementations with SSSE3 and SSE4.1 / 70 \\ 5.5 Vectorized Implementation with AVX2 Extensions / 70 \\ 5.5.1 Relevant AVX2 Instructions / 71 \\ 5.5.2 Implementing BLAKE-512 with AVX2 / 73 \\ 5.5.3 Implementing BLAKE-256 with AVX2 / 77 \\ 5.6 Vectorized Implementation with XOP Extensions / 79 \\ 5.6.1 Relevant XOP Instructions / 80 \\ 5.6.2 Implementing BLAKE with XOP / 80 \\ 5.7 Vectorized Implementation with NEON Extensions / 83 \\ 5.7.1 Relevant NEON Instructions / 83 \\ 5.7.2 Implementing BLAKE-256 with NEON / 84 \\ 5.7.3 Implementing BLAKE-512 with NEON / 86 \\ 5.8 Performance / 88 \\ 5.8.1 Speed Summary / 89 \\ 5.8.2 8-Bit AVR / 90 \\ 5.8.3 ARM Platforms / 91 \\ 5.8.4 x86 Platforms (32-bit) / 91 \\ 5.8.5 amd64 Platforms (64-bit) / 92 \\ 5.8.6 Other Platforms / 93 \\ 6 BLAKE in Hardware / 97 \\ 6.1 RTL Design / 97 \\ 6.2 ASIC Implementation / 98 \\ 6.2.1 High-Speed Design / 98 \\ 6.2.2 Compact Design / 100 \\ 6.3 FPGA Design / 100 \\ 6.4 Performance / 101 \\ 6.4.1 ASIC / 102 \\ 6.4.2 FPGA / 102 \\ 6.4.3 Discussion / 105 \\ 7 Design Rationale / 107 \\ 7.1 NIST Call for Submissions / 107 \\ 7.1.1 General Requirements / 107 \\ 7.1.2 Technical and Security Requirements / 109 \\ 7.1.3 Could SHA2 Be SHA3? / 110 \\ 7.2 Needs Analysis Ill 7.2.1 Ease of Implementation / 112 \\ 7.2.2 Performance / 113 \\ 7.2.3 Security / 113 \\ 7.2.4 Extra Features / 114 \\ 7.3 Design Philosophy / 114 \\ 7.3.1 Minimalism / 115 \\ 7.3.2 Robustness / 119 \\ 7.3.3 Versatility / 120 \\ 7.4 Design Choices / 120 \\ 7.4.1 General Choices / 121 \\ 7.4.2 Iteration Mode / 122 \\ 7.4.3 Core Algorithm / 122 \\ 7.4.4 Rotation Counts / 125 \\ 7.4.5 Permutations / 126 \\ 7.4.6 Number of Rounds / 128 \\ 7.4.7 Constants / 128 \\ 8 Security of BLAKE / 131 \\ 8.1 Differential Cryptanalysis / 131 \\ 8.1.1 Differences and Differentials / 132 \\ 8.1.2 Finding Good Differentials / 133 \\ 8.2 Properties of BLAKE's G Function / 133 \\ 8.2.1 Basic Properties / 134 \\ 8.2.2 Differential Properties of G / 136 \\ 8.3 Properties of the Round Function / 141 \\ 8.3.1 Bijectivity / 141 \\ 8.3.2 Diffusion and Low-Weight Differences / 142 \\ 8.3.3 Invertibility / 145 \\ 8.3.4 Impossible Differentials / 147 \\ 8.4 Properties of the Compression Function / 151 \\ 8.4.1 Finalization / 151 \\ 8.4.2 Local Collisions / 152 \\ 8.4.3 Fixed Points / 152 \\ 8.4.4 Fixed Point Collisions / 153 \\ 8.4.5 Pseudorandomness / 153 \\ 8.5 Security Against Generic Attacks / 154 \\ 8.5.1 Indifferentiability / 154 \\ 8.5.2 Length Extension / 155 \\ 8.5.3 Collision Multiplication / 155 \\ 8.5.4 Multicollisions / 156 \\ 8.5.5 Second Preimages / 157 \\ 8.6 Attacks on Reduced BLAKE / 158 \\ 8.6.1 Preimage Attacks / 158 \\ 8.6.2 Near-Collision Attack / 159 \\ 8.6.3 Boomerang Distinguisher / 160 \\ 8.6.4 Iterative Characteristics / 161 \\ 8.6.5 Breaking BLOKE / 163 \\ 8.6.6 Attack on a Variant with Identical Constants / 163 \\ 9 BLAKE2 / 165 \\ 9.1 Motivations / 165 \\ 9.2 Differences with BLAKE / 166 \\ 9.2.1 Fewer Rounds / 167 \\ 9.2.2 Rotations Optimized for Speed / 167 \\ 9.2.3 Minimal Padding / 168 \\ 9.2.4 Finalization Flags / 168 \\ 9.2.5 Fewer Constants '68 9.2.6 Little-Endianness / 169 \\ 9.2.7 Counter in Bytes / 170 \\ 9.2.8 Salt Processing / 170 \\ 9.2.9 Parameter Block / 170 \\ 9.3 Keyed Hashing (MAC and PRF) / 172 \\ 9.4 Tree Hashing / 172 \\ 9.4.1 Basic Mechanism / 173 \\ 9.4.2 Message Parsing / 174 \\ 9.4.3 Special Cases / 174 \\ 9.4.4 Generic Tree Parameters / 175 \\ 9.4.5 Updatable Hashing Example / 175 \\ 9.5 Parallel Hashing: BLAKE2sp and BLAKE2bp / 176 \\ 9.6 Performance / 177 \\ 9.6.1 Why BLAKE2 Is Fast in Software / 177 \\ 9.6.2 64-bit Platforms / 178 \\ 9.6.3 Low-End Platforms / 179 \\ 9.6.4 Hardware / 180 \\ 9.7 Security / 180 \\ 9.7.1 BLAKE Legacy / 180 \\ 9.7.2 Implications of BLAKE2 Tweaks / 181 \\ 9.7.3 Third-Party Cryptanalysis / 181 \\ 10 Conclusion / 185 \\ References / 187 \\ A Test Vectors / 195 \\ A.1 BLAKE-256 / 195 \\ A.1.1 One-Block Message / 195 \\ A.1.2 Two-Block Message / 196 \\ A.2 BLAKE-224 / 198 \\ A.2.1 One-Block Message / 198 \\ A.2.2 Two-Block Message / 199 \\ A.3 BLAKE-512 / 201 \\ A.3.1 One-Block Message / 201 \\ A.3.2 Two-Block Message / 202 \\ A.4 BLAKE-384 / 205 \\ A.4.1 One-Block Message / 205 \\ A.4.2 Two-Block Message / 206 \\ B Reference C Code / 209 \\ B.1 blake.h / 209 \\ B.2 blake224.c / 211 \\ B.3 blake256.c / 214 \\ B.4 blake384.c / 217 \\ B.5 blake512.c / 220 \\ C Third-Party Software / 225 \\ C.1 BLAKE / 225 \\ C.2 BLAKE2 / 226 \\ Index / 227", } @Article{Ayars:2014:FPB, author = "Eric Ayars", title = "Finally, a {Python}-Based Computational Physics Text", journal = j-COMPUT-SCI-ENG, volume = "16", number = "1", pages = "6--7", month = jan # "\slash " # feb, year = "2014", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2014.17", ISSN = "1521-9615", ISSN-L = "1521-9615", bibdate = "Sat Apr 19 10:17:39 2014", bibsource = "http://www.math.utah.edu/pub/tex/bib/computscieng.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Book{Beazley:2014:PCR, author = "David M. Beazley and Brian K. (Brian Kenneth) Jones", title = "{Python} cookbook: Recipes for mastering {Python 3}", publisher = pub-ORA-MEDIA, address = pub-ORA-MEDIA:adr, edition = "Third", pages = "xvi + 687", year = "2014", ISBN = "1-4493-4037-7 (paperback), 1-4493-5736-9 (e-book)", ISBN-13 = "978-1-4493-4037-7 (paperback), 978-1-4493-5736-8 (e-book)", LCCN = "QA76.73.P98 B43 2013eb", bibdate = "Fri Oct 23 15:05:28 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "If you need help writing programs in Python 3, or want to update older Python 2 code, this book is just the ticket. Packed with practical recipes written and tested with Python 3.3, this unique cookbook is for experienced Python programmers who want to focus on modern tools and idioms.", acknowledgement = ack-nhfb, subject = "Scripting languages (Computer science); Python (Computer program language)", tableofcontents = "Data structures and algorithms \\ Strings and text \\ Numbers, dates, and times \\ Iterators and generators \\ Files and I/O \\ Data encoding and processing \\ Functions \\ Classes and objects \\ Metaprogramming \\ Modules and packages \\ Network and web programming \\ Concurrency \\ Utility scripting and system administration \\ Testing, debugging, and exceptions \\ C extensions", } @Book{Beazley:2014:PR, author = "David M. Beazley and Brian K. (Brian Kenneth) Jones", title = "{Python}. {Receptury}", publisher = "Wydawnictwo Helion", address = "Gliwice, Poland", edition = "Third", year = "2014", ISBN = "1-4920-1351-X (e-book), 1-4920-1350-1, 83-246-8180-9 (print)", ISBN-13 = "978-1-4920-1351-8 (e-book), 978-1-4920-1350-1, 978-83-246-8180-8 (print)", LCCN = "QA76.73.P98 B386 2014", bibdate = "Sat Oct 24 07:08:24 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", note = "Translation of \cite{Beazley:2014:PCR} to Polish by Tomasz Walczak.", URL = "http://proquest.safaribooksonline.com/?fpi=9781492013501", acknowledgement = ack-nhfb, subject = "Python (Computer program language); COMPUTERS; Programming Languages; Python.; Python (Computer program language)", } @Article{Belson:2014:AMP, author = "Brandt A. Belson and Jonathan H. Tu and Clarence W. Rowley", title = "Algorithm 945: {{\tt modred}} --- A Parallelized Model Reduction Library", journal = j-TOMS, volume = "40", number = "4", pages = "30:1--30:??", month = jun, year = "2014", CODEN = "ACMSCU", DOI = "http://dx.doi.org/10.1145/2616912", ISSN = "0098-3500 (print), 1557-7295 (electronic)", ISSN-L = "0098-3500", bibdate = "Wed Jul 2 18:28:58 MDT 2014", bibsource = "http://www.acm.org/pubs/contents/journals/toms/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/toms.bib", abstract = "We describe a new parallelized Python library for model reduction, modal analysis, and system identification of large systems and datasets. Our library, called modred, handles a wide range of problems and any data format. The modred library contains implementations of the Proper Orthogonal Decomposition (POD), balanced POD (BPOD) Petrov--Galerkin projection, and a more efficient variant of the Dynamic Mode Decomposition (DMD). The library contains two implementations of these algorithms, each with its own advantages. One is for smaller and simpler datasets, requires minimal knowledge to use, and follows a common matrix-based formulation. The second, for larger and more complicated datasets, preserves the abstraction of vectors as elements of a vector space and, as a result, allows the library to work with arbitrary data formats and eases distributed memory parallelization. We also include implementations of the Eigensystem Realization Algorithm (ERA), and Observer/Kalman Filter Identification (OKID). These methods are typically not computationally demanding and are not parallelized. The library is designed to be easy to use, with an object-oriented design, and includes comprehensive automated tests. In almost all cases, parallelization is done internally so that scripts that use the parallelized classes can be run in serial or in parallel without any modifications.", acknowledgement = ack-nhfb, articleno = "30", fjournal = "ACM Transactions on Mathematical Software (TOMS)", journal-URL = "http://dl.acm.org/pub.cfm?id=J782", } @Article{Bertalan:2014:ONM, author = "Tom S. Bertalan and Akand W. Islam and Roger B. Sidje and Eric S. Carlson", title = "{OpenMG}: a new multigrid implementation in {Python}", journal = j-NUM-LIN-ALG-APPL, volume = "21", number = "5", pages = "685--700", month = oct, year = "2014", CODEN = "NLAAEM", DOI = "http://dx.doi.org/10.1002/nla.1920", ISSN = "1070-5325 (print), 1099-1506 (electronic)", ISSN-L = "1070-5325", bibdate = "Wed Feb 11 22:13:04 MST 2015", bibsource = "http://www.interscience.wiley.com/jpages/1070-5325; http://www.math.utah.edu/pub/tex/bib/numlinaa.bib; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www3.interscience.wiley.com/journalfinder.html", acknowledgement = ack-nhfb, fjournal = "Numerical Linear Algebra with Applications", journal-URL = "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1099-1506", onlinedate = "9 Jan 2014", } @Book{Bradbury:2014:LPR, author = "Alex Bradbury and R. (Russel) Winder", title = "Learning {Python} with {Raspberry Pi}", publisher = pub-WILEY, address = pub-WILEY:adr, pages = "xvi + 270", year = "2014", ISBN = "1-118-71705-8 (paperback), 1-118-71702-3 (e-book), 1-118-71703-1 (e-book), 1-306-47299-7 (e-book)", ISBN-13 = "978-1-118-71705-9 (paperback), 978-1-118-71702-8 (e-book), 978-1-118-71703-5 (e-book), 978-1-306-47299-9 (e-book)", LCCN = "QA76.76.D47 .B73 2014", bibdate = "Sat Oct 24 07:13:59 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, subject = "Application software; Development; Microcomputers; Python (Computer program language); Development.; Microcomputers.; Python (Computer program language)", tableofcontents = "Introduction \\ What Is Programming? \\ Why the Raspberry Pi? \\ How Does this Book Work? \\ Chapter 1: Getting Up and Running \\ Setting Up Your Raspberry Pi \\ Solving Problems \\ A Quick Tour of Raspbian \\ Using LXDE (Lightweight X11 Desktop Environment) \\ Using the Terminal \\ Changing Configurations with Raspi-Config \\ Installing Software \\ Python 3 \\ The Python Interpreter \\ Running Python Programs \\ Summary \\ Chapter 2: A Really Quick Introduction to Python \\ Drawing Picture with Turtles \\ Using Loops \\ Conditionals: if, elif, and else \\ Using Functions and Methods to Structure Code \\ A Python Game of Cat and Mouse \\ Understanding Variables \\ Defining Functions \\ Looping Through the Game \\ Summary \\ Chapter 3: Python Basics \\ Variables, Values, and Types \\ Values Have Types \\ Storing Numbers \\ Keeping Text in Strings \\ Boolean: True or False \\ Converting Between Data Types \\ Test Your Knowledge \\ Storing Values in Structures \\ Non-Sequential Values in Dictionaries and Sets \\ Test Your Knowledge \\ Controlling the Way the Program Flows \\ Moving Through Data with for Loops \\ Going Deeper with Nested Loops \\ Branching Execution with if Statements \\ Catching Exceptions \\ Making Code Reusable with Functions \\ Optional Parameters \\ Bringing Everything Together \\ Building Objects with Classes \\ Getting Extra Features from Modules \\ Summary \\ Solutions to Exercises \\ Exercise 1 \\ Exercise 2 \\ Chapter 4: Graphical Programming \\ Graphical User Interface (GUI) Programming \\ Adding Controls \\ Test Your Knowledge \\ Creating a Web Browser \\ Adding Window Menus \\ Test Your Knowledge \\ Summary \\ Solutions to Exercises \\ Chapter 5: Creating Games \\ Building a Game \\ Initialising PyGame \\ Creating a World \\ Detecting Collisions \\ Moving Left and Right \\ Reaching the Goal \\ Making a Challenge \\ Making It Your Own \\ Adding Sound \\ Adding Scenery \\ Adding the Finishing Touches \\ Taking the Game to the Next Level \\ Realistic Game Physics \\ Summary \\ Chapter 6: Creating Graphics with OpenGL \\ Getting Modules \\ Creating a Spinning Cube \\ Vectors and Matrices \\ Bringing It All Together \\ Let There Be Light \\ Making the Screen Dance \\ Building the 3D Model \\ Calculating the Sound Level \\ Taking Things Further \\ Adding Some Texture \\ Summary \\ Chapter 7: Networked Python \\ Understanding Hosts, Ports, and Sockets \\ Locating Computers with IP Addresses \\ Building a Chat Server \\ Tweeting to the World \\ Weather Forecasts with JSON \\ Testing Your Knowledge \\ Exercise 1 \\ Getting On the Web \\ Making Your Website Dynamic \\ Using Templates \\ Sending Data Back with Forms \\ Exercise 2 \\ Keeping Things Secure \\ Summary \\ Solutions to Exercises \\ Exercise 1 \\ Chapter 8: Minecraft \\ Exploring Minecraft \\ Controlling Your Minecraft World \\ Creating Minecraft Worlds in Python \\ Taking Things Further \\ Making the Game Snake \\ Moving the Snake \\ Growing the Snake \\ Adding the Apples \\ Taking Things Further \\ Summary \\ Chapter 9: Multimedia \\ Using PyAudio to Get Sound into Your Computer \\ Recording the Sound \\ Speaking to Your Pi \\ Asking the Program Questions \\ Putting It All Together \\ Taking Things Further \\ Making Movies \\ Using USB Webcams \\ Adding Computer Vision Features with OpenCV \\ Taking Things Further \\ Using the Raspberry Pi Camera Module \\ Creating Live Streams \\ Taking Things Further \\ Summary \\ Chapter 10: Scripting \\ Getting Started with the Linux Command Line \\ Using the Subprocess Module \\ Command-Line Flags \\ Regular Expressions \\ Testing Your Knowledge \\ Scripting with Networking \\ Bringing It All Together \\ Working with Files in Python \\ Summary \\ Chapter 11: Interfacing with Hardware \\ Setting Up Your Hardware Options \\ Female to Male Jumper Wires \\ Pi Cobbler \\ Solderless Breadboard \\ Stripboards and Prototyping Boards \\ PCB Manufacturing \\ Getting the Best Tools \\ Wire Cutters/Strippers \\ Multimeters \\ Soldering Irons \\ Hardware Needed for this Chapter \\ The First Circuit \\ Power Limits \\ Getting Input \\ Expanding the GPIO Options with I2C, SPI, and Serial \\ The SPI Communications Protocol \\ The I2C Communications Protocol \\ The Serial Communications Protocol \\ Taking the Example Further \\ Arduino \\ PiFace \\ Gertboard \\ Wireless Inventor's Kit \\ Trying Some Popular Projects \\ Robots \\ Home Automation \\ Burglar Alarms \\ Digital Art \\ Summary \\ Chapter 12: Testing and Debugging \\ Investigating Bugs by Printing Out the Values \\ Finding Bugs by Testing \\ Checking Bits of Code with Unit Tests \\ Getting More Assertive \\ Using Test Suites for Regression Testing \\ Testing the Whole Package \\ Making Sure Your Software's Usable \\ How Much Should You Test? \\ Summary", } @Book{Browning:2014:PP, author = "J. Burton Browning and Marty Alchin", title = "Pro {Python}", publisher = pub-APRESS, address = pub-APRESS:adr, edition = "Second", year = "2014", DOI = "http://dx.doi.org/10.1007/978-1-4842-0334-7", ISBN = "1-4842-0335-6, 1-4842-0334-8 (e-book)", ISBN-13 = "978-1-4842-0335-4, 978-1-4842-0334-7 (e-book)", LCCN = "QA76.73.P98", bibdate = "Sat Oct 24 06:02:24 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", series = "The expert's voice in Python", abstract = "You've learned the basics of Python, but how do you take your skills to the next stage? Even if you know enough to be productive, there are a number of features that can take you to the next level in Python. Pro Python, Second Edition explores concepts and features normally left to experimentation, allowing you to be even more productive and creative. In addition to pure code concerns, Pro Python develops your programming techniques and approaches, which will help make you a better Python programmer. This book will improve not only your code but also your understanding and interaction with the many established Python communities. This book takes your Python knowledge and coding skills to the next level. It shows you how to write clean, innovative code that will be respected by your peers. With this book, make your code do more with introspection and meta-programming. And learn and later use the nuts and bolts of an application, tier-by-tier as a complex case study along the way. For more information, including a link to the source code referenced in the book, please visit http://propython.com/.", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Handbooks, manuals, etc; Computer programming; COMPUTERS; Programming Languages; C{\"A}; Java.; Pascal.; Computer programming.; Python (Computer program language)", tableofcontents = "About the Authors \\ About the Technical Reviewer \\ Acknowledgments \\ Introduction \\ Chapter 1: Principles and Philosophy \\ The Zen of Python \\ Beautiful Is Better Than Ugly \\ Explicit Is Better Than Implicit \\ Simple Is Better Than Complex \\ Complex Is Better Than Complicated \\ Flat Is Better Than Nested \\ Sparse Is Better Than Dense \\ Readability Counts \\ Special Cases Aren't Special Enough to Break the Rules \\ Although Practicality Beats Purity \\ Errors Should Never Pass Silently \\ Unless Explicitly Silenced \\ In the Face of Ambiguity, Refuse the Temptation to Guess \\ There Should Be One --- and Preferably Only One --- Obvious Way to Do It \\ Although That Way May Not Be Obvious at First Unless You're Dutch \\ Now Is Better Than Never \\ Although Never Is Often Better Than Right Now \\ If the Implementation Is Hard to Explain, It's a Bad Idea \\ If the Implementation Is Easy to Explain, It May Be a Good Idea \\ Namespaces Are One Honking Great Idea --- Let's Do More of Those! \\ Don't Repeat Yourself \\ Loose Coupling \\ The Samurai Principle \\ The Pareto Principle \\ The Robustness Principle \\ Backward Compatibility \\ The Road to Python 3.0 \\ Taking It With You \\ Chapter 2: Advanced Basics \\ General Concepts \\ Iteration \\ Caching \\ Transparency \\ Control Flow \\ Catching Exceptions \\ Exception Chains \\ When Everything Goes Right \\ Proceeding Regardless of Exceptions \\ Optimizing Loops \\ The with Statement \\ Conditional Expressions \\ Iteration \\ Sequence Unpacking \\ List Comprehensions \\ Generator Expressions \\ Set Comprehensions \\ Dictionary Comprehensions \\ Chaining Iterables Together \\ Zipping Iterables Together \\ Collections \\ Sets \\ Named Tuples \\ Ordered Dictionaries \\ Dictionaries with Defaults \\ Importing Code \\ Fallback Imports \\ Importing from the Future \\ Using __all__ to Customize Imports \\ Relative Imports \\ The __import__( ) function \\ The importlib module \\ Taking It With You \\ Chapter 3: Functions \\ Arguments \\ Planning for Flexibility \\ Variable Positional Arguments \\ Variable Keyword Arguments \\ Combining Different Kinds of Arguments \\ Invoking Functions with Variable Arguments \\ Preloading Arguments \\ Introspection \\ Example: Identifying Argument Values \\ Example: A More Concise Version \\ Example: Validating Arguments \\ Decorators \\ Closures \\ Wrappers \\ Decorators with Arguments \\ Decorators with --- or without --- Arguments \\ Example: Memoization \\ Example: A Decorator to Create Decorators \\ Function Annotations \\ Example: Type Safety \\ Factoring Out the Boilerplate \\ Example: Type Coercion \\ Annotating with Decorators \\ Example: Type Safety as a Decorator \\ Generators \\ Lambdas \\ Introspection \\ Identifying Object Types \\ Modules and Packages \\ Docstrings \\ Taking It with You \\ Chapter 4: Classes \\ Inheritance \\ Multiple Inheritance \\ Method Resolution Order \\ Example: C3 Algorithm \\ Using super() to Pass Control to Other Classes \\ Introspection \\ How Classes Are Created \\ Creating Classes at Runtime \\ Metaclasses \\ Example: Plugin Framework \\ Controlling the Namespace \\ Attributes \\ Properties \\ Descriptors \\ Methods \\ Unbound Methods \\ Bound Methods \\ Class Methods \\ Static Methods \\ Assigning Functions to Classes and Instances \\ Magic Methods \\ Creating Instances \\ Example: Automatic Subclasses \\ Dealing with Attributes \\ String Representations \\ Taking It With You \\ Chapter 5: Common Protocols \\ Basic Operations \\ Mathematical Operations \\ Bitwise Operations \\ Variations \\ Numbers \\ Sign Operations \\ Comparison Operations \\ Iterables \\ Example: Repeatable Generators \\ Sequences \\ Mappings \\ Callables \\ Context Managers \\ Taking It With You \\ Chapter 6: Object Management \\ Namespace Dictionary \\ Example: Borg Pattern \\ Example: Self-Caching Properties \\ Garbage Collection \\ Reference Counting \\ Cyclical References \\ Weak References \\ Pickling \\ Copying \\ Shallow Copies \\ Deep Copies \\ Taking It With You \\ Chapter 7: Strings \\ Bytes \\ Simple Conversion: chr( ) and ord( ) \\ Complex Conversion: The Struct Module \\ Text \\ Unicode \\ Encodings \\ Simple Substitution \\ Formatting \\ Looking Up Values Within Objects \\ Distinguishing Types of Strings \\ Standard Format Specification \\ Example: Plain Text Table of Contents \\ Custom Format Specification \\ Taking It With You \\ Chapter 8: Documentation \\ Proper Naming \\ Comments \\ Docstrings \\ Describe What the Function Does \\ Explain the Arguments \\ Don't Forget the Return Value \\ Include Any Expected Exceptions \\ Documentation Outside the Code \\ Installation and Configuration \\ Tutorials \\ Reference Documents \\ Documentation Utilities \\ Formatting \\ Links \\ Sphinx \\ Taking It With You \\ Chapter 9: Testing \\ Test-Driven Development \\ Doctests \\ Formatting Code \\ Representing Output \\ Integrating With Documentation \\ Running Tests \\ The unittest Module \\ Setting Up \\ Writing Tests \\ Other Comparisons \\ Testing Strings and Other Sequence Content \\ Testing Exceptions \\ Testing Identity \\ Tearing Down \\ Providing a Custom Test Class \\ Changing Test Behavior \\ Taking It With You \\ Chapter 10: Distribution \\ Licensing \\ GNU General Public License \\ Affero General Public License \\ GNU Lesser General Public License \\ Berkeley Software Distribution License \\ Other Licenses \\ Packaging \\ setup.py \\ MANIFEST.in \\ The sdist Command \\ Distribution \\ Taking It With You \\ Chapter 11: Sheets: A CSV Framework \\ Building a Declarative Framework \\ Introducing Declarative Programming \\ To Build or Not to Build? \\ Building the Framework \\ Managing Options \\ Defining Fields \\ Attaching a Field to a Class \\ Adding a Metaclass \\ Bringing It Together \\ Ordering Fields \\ DeclarativeMeta.__prepare__() \\ Column.__init__() \\ Column.__new__() \\ CounterMeta.__call__() \\ Choosing an Option \\ Building a Field Library \\ StringField \\ IntegerColumn \\ FloatColumn \\ DecimalColumn \\ DateColumn \\ Getting Back to CSV \\ Checking Arguments \\ Populating Values \\ The Reader \\ The Writer \\ Taking It With You \\ Appendix A: Style Guide for Python \\ Introduction \\ A Foolish Consistency Is the Hobgoblin of Little Minds \\ Code Layout \\ Indentation \\ Tabs or Spaces? \\ Maximum Line Length \\ Blank Lines \\ Encodings (PEP 263) \\ Imports \\ Whitespace in Expressions and Statements \\ Pet Peeves \\ Other Recommendations \\ Comments \\ Block Comments \\ Inline Comments \\ Documentation Strings \\ Version Bookkeeping \\ Naming Conventions \\ Descriptive: Naming Styles \\ Prescriptive: Naming Conventions \\ Programming Recommendations \\ Copyright \\ Appendix B: Voting Guidelines \\ Abstract \\ Rationale \\ Voting Scores \\ Copyright \\ Appendix C: The Zen of Python \\ Abstract \\ The Zen of Python \\ Easter Egg \\ Copyright \\ Appendix D: Docstring Conventions \\ Abstract \\ Rationale \\ Specification \\ What Is a Docstring? \\ One-Line Docstrings \\ Multiline Docstrings \\ Handling Docstring Indentation \\ Copyright \\ Acknowledgments \\ Appendix E: Backward Compatibility Policy \\ Abstract \\ Rationale \\ Backward Compatibility Rules \\ Making Incompatible Changes \\ Copyright \\ Appendix F: Python 3000 \\ Abstract \\ Naming \\ PEP Numbering \\ Timeline \\ Compatibility and Transition \\ Implementation Language \\ Meta-Contributions \\ Copyright \\ Appendix G: Python Language Moratorium \\ Abstract \\ Rationale \\ Details \\ Cannot Change \\ Case-by-Case Exemptions \\ Allowed to Change \\ Retroactive \\ Extensions \\ Copyright \\ Index", } @Article{Bucquet:2014:AIP, author = "Samuel Bucquet", title = "Accessing the {IO} ports of the {Beaglebone Black} with {Python}", journal = j-LINUX-J, volume = "2014", number = "246", pages = "3:1--3:??", month = oct, year = "2014", CODEN = "LIJOFX", ISSN = "1075-3583 (print), 1938-3827 (electronic)", ISSN-L = "1075-3583", bibdate = "Sat Nov 1 17:00:17 MDT 2014", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/linux-journal.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "With the BeagleBone Black, you can command all your electronic gear with a few lines of Python.", acknowledgement = ack-nhfb, articleno = "3", fjournal = "Linux Journal", journal-URL = "http://portal.acm.org/citation.cfm?id=J508", } @Article{Bucur:2014:PSE, author = "Stefan Bucur and Johannes Kinder and George Candea", title = "Prototyping symbolic execution engines for interpreted languages", journal = j-COMP-ARCH-NEWS, volume = "42", number = "1", pages = "239--254", month = mar, year = "2014", CODEN = "CANED2", DOI = "http://dx.doi.org/10.1145/2654822.2541977", ISSN = "0163-5964 (print), 1943-5851 (electronic)", ISSN-L = "0163-5964", bibdate = "Mon Aug 18 17:12:47 MDT 2014", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sigarch.bib", abstract = "Symbolic execution is being successfully used to automatically test statically compiled code. However, increasingly more systems and applications are written in dynamic interpreted languages like Python. Building a new symbolic execution engine is a monumental effort, and so is keeping it up-to-date as the target language evolves. Furthermore, ambiguous language specifications lead to their implementation in a symbolic execution engine potentially differing from the production interpreter in subtle ways. We address these challenges by flipping the problem and using the interpreter itself as a specification of the language semantics. We present a recipe and tool (called Chef) for turning a vanilla interpreter into a sound and complete symbolic execution engine. Chef symbolically executes the target program by symbolically executing the interpreter's binary while exploiting inferred knowledge about the program's high-level structure. Using Chef, we developed a symbolic execution engine for Python in 5 person-days and one for Lua in 3 person-days. They offer complete and faithful coverage of language features in a way that keeps up with future language versions at near-zero cost. Chef-produced engines are up to 1000 times more performant than if directly executing the interpreter symbolically without Chef.", acknowledgement = ack-nhfb, fjournal = "ACM SIGARCH Computer Architecture News", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J89", remark = "ASPLOS '14 conference proceedings.", } @Book{Cannon:2014:PPB, author = "Jason Cannon", title = "{Python} programming for beginners: an introduction to the {Python} computer language and computer programming", publisher = "????", address = "????", pages = "152", year = "2014", ISBN = "1-5010-0086-1", ISBN-13 = "978-1-5010-0086-7", LCCN = "QA76.73.P98 C366 2014", bibdate = "Wed Oct 14 08:37:57 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "\booktitle{Python Programming for Beginners} doesn't make any assumptions about your background or knowledge of Python or computer programming. You need no prior knowledge to benefit from this book. You will be guided step by step using a logical and systematic approach. As new concepts, commands, or jargon are encountered they are explained in plain language, making it easy for anyone to understand.", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Python (Computer program language)", tableofcontents = "Variables and strings \\ Numbers, math, and comments \\ Booleans and conditionals \\ Functions \\ Lists \\ Dictionaries \\ Tuples \\ Reading from and writing to files \\ Modules and the Python Standard Library", } @Article{Ceriotti:2014:PPI, author = "Michele Ceriotti and Joshua More and David E. Manolopoulos", title = "{i-PI}: a {Python} interface for ab initio path integral molecular dynamics simulations", journal = j-COMP-PHYS-COMM, volume = "185", number = "3", pages = "1019--1026", month = mar, year = "2014", CODEN = "CPHCBZ", ISSN = "0010-4655 (print), 1879-2944 (electronic)", ISSN-L = "0010-4655", bibdate = "Tue Feb 4 19:25:59 MST 2014", bibsource = "http://www.math.utah.edu/pub/tex/bib/compphyscomm2010.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.sciencedirect.com/science/article/pii/S001046551300372X", acknowledgement = ack-nhfb, fjournal = "Computer Physics Communications", journal-URL = "http://www.sciencedirect.com/science/journal/00104655/", } @Article{Chang:2014:CPP, author = "Yuan-Pin Chang and Frank Filsinger and Boris G. Sartakov and Jochen K{\"u}pper", title = "{CMIstark}: {Python} package for the Stark-effect calculation and symmetry classification of linear, symmetric and asymmetric top wavefunctions in dc electric fields", journal = j-COMP-PHYS-COMM, volume = "185", number = "1", pages = "339--349", month = jan, year = "2014", CODEN = "CPHCBZ", ISSN = "0010-4655 (print), 1879-2944 (electronic)", ISSN-L = "0010-4655", bibdate = "Mon Dec 2 12:04:56 MST 2013", bibsource = "http://www.math.utah.edu/pub/tex/bib/compphyscomm2010.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.sciencedirect.com/science/article/pii/S0010465513003019", acknowledgement = ack-nhfb, fjournal = "Computer Physics Communications", journal-URL = "http://www.sciencedirect.com/science/journal/00104655", } @Article{Cooper:2014:BES, author = "Christopher D. Cooper and Jaydeep P. Bardhan and L. A. Barba", title = "A biomolecular electrostatics solver using {Python}, {GPUs} and boundary elements that can handle solvent-filled cavities and {Stern} layers", journal = j-COMP-PHYS-COMM, volume = "185", number = "3", pages = "720--729", month = mar, year = "2014", CODEN = "CPHCBZ", ISSN = "0010-4655 (print), 1879-2944 (electronic)", ISSN-L = "0010-4655", bibdate = "Tue Feb 4 19:25:59 MST 2014", bibsource = "http://www.math.utah.edu/pub/tex/bib/compphyscomm2010.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.sciencedirect.com/science/article/pii/S0010465513003731", acknowledgement = ack-nhfb, fjournal = "Computer Physics Communications", journal-URL = "http://www.sciencedirect.com/science/journal/00104655/", } @Book{Cox:2014:RPC, author = "Tim Cox", title = "{Raspberry Pi} cookbook for {Python} programmers: over 50 easy-to-comprehend tailor-made recipes to get the most out of the {Raspberry Pi} and unleash its huge potential using {Python}", publisher = pub-PACKT, address = pub-PACKT:adr, pages = "iii + 388", year = "2014", ISBN = "1-84969-662-4", ISBN-13 = "978-1-84969-662-3", LCCN = "QA76.8.R19 .C6", bibdate = "Sat Oct 24 07:17:23 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, subject = "Raspberry Pi (ordinateur).; Microordinateurs; Programmation.; Ordinateurs de poche.; Python (langage de programmation).", tableofcontents = "Preface \\ What this book covers \\ What you need for this book \\ Who this book is for \\ Safety and using electronics \\ Conventions \\ Reader feedback \\ Customer support \\ Downloading the example code \\ Downloading the color images of this book \\ Errata \\ Piracy \\ Questions \\ 1. Getting Started with a Raspberry Pi Computer \\ Introduction \\ Introducing the Raspberry Pi \\ What is with the name? \\ Why Python? \\ Python 2 and Python 3 \\ Which version of Python should you use? \\ Connecting the Raspberry Pi \\ Getting ready \\ How to do it \ldots{} \\ There's more \ldots{} \\ Secondary hardware connections \\ Using NOOBS to set up your Raspberry Pi SD card \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ There's more \ldots{} \\ Changing the default user password \\ Ensuring that you shut down safely \\ Preparing an SD card manually \\ Expanding the system to fit in your SD card \\ Accessing the Data/RECOVERY/BOOT partition \\ Using the tools to backup your SD card in case of failure \\ Networking and connecting your Raspberry Pi to the Internet via the LAN connector \\ Getting ready \\ How to do it \ldots{} \\ There's more \ldots{} \\ Configuring your network manually \\ Getting ready \\ How to do it \ldots{} \\ There's more \ldots{} \\ Networking directly to a laptop or computer \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ There's more \ldots{} \\ Direct network link \\ See also \\ Networking and connecting your Raspberry Pi to the Internet via a USB Wi-Fi dongle \\ Getting ready \\ How to do it \ldots{} \\ There's more \ldots{} \\ Using USB wired network adapters \\ Connecting to the Internet through a proxy server \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ There's more \ldots{} \\ Connecting remotely to the Raspberry Pi over the network using VNC \\ Getting ready \\ How to do it \ldots{} \\ There's more \ldots{} \\ Connecting remotely to the Raspberry Pi over the network using SSH (and X11 Forwarding) \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ There's more \ldots{} \\ Running multiple programs with X11 Forwarding \\ Running as a desktop with X11 Forwarding \\ Running PyGame and Tkinter with X11 Forwarding \\ Sharing the home folder of the Raspberry Pi with SMB \\ Getting ready \\ How to do it \ldots{} \\ Keeping the Raspberry Pi up to date \\ Getting ready \\ How to do it \ldots{} \\ 2. Starting with Python Strings, Files, and Menus \\ Introduction \\ Working with text and strings \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ There's more \ldots{} \\ Using files and handling errors \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ Creating a boot-up menu \\ How to do it \ldots{} \\ How it works \ldots{} \\ There's more \ldots{} \\ Creating a self-defining menu \\ How to do it \ldots{} \\ How it works \ldots{} \\ There's more \ldots{} \\ Alternative script locations \\ Adding scripts to PATH \\ 3. Using Python for Automation and Productivity \\ Introduction \\ Using Tkinter to create graphical user interfaces \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ Creating a graphical application Start menu \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ There's more \ldots{} \\ Displaying photo information in an application \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ There's more \ldots{} \\ Organizing your photos automatically \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ 4. Creating Games and Graphics \\ Introduction \\ Using IDLE3 to debug your programs \\ How to do it \ldots{} \\ How it works \ldots{} \\ Drawing lines using a mouse on Tkinter Canvas \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ Creating a bat and ball game \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ Creating an overhead scrolling game \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ 5. Creating 3D Graphics \\ Introduction \\ Starting with 3D coordinates and vertices \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ There's more \ldots{} \\ Camera \\ Shaders \\ Lights \\ Textures \\ Creating and importing 3D models \\ Getting ready \\ How to do it \ldots{} \\ How it works... \\ There's more \ldots{} \\ Creating or loading your own objects \\ Changing the object's textures and .mtl files \\ Taking screenshots \\ Creating a 3D world to roam in \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ Building 3D maps and mazes \\ Getting ready \\ How to do it \ldots{} \\ How it works... \\ There's more... \\ The Building module \\ Using SolidObjects to detect collisions \\ 6. Using Python to Drive Hardware \\ Introduction \\ Controlling an LED \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ There's more \ldots{} \\ Controlling the GPIO current \\ Responding to a button \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ There's more \ldots{} \\ Safe voltages \\ Pull-up and pull-down resistor circuits \\ Protection resistors \\ A controlled shutdown button \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ There's more \ldots{} \\ Resetting and rebooting Raspberry Pi \\ Adding extra functions \\ Relocating to the P5 header \\ The GPIO keypad input \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ There's more \ldots{} \\ Generating other key combinations \\ Emulating mouse events \\ Multiplexed color LEDs \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ There's more \ldots{} \\ Hardware multiplexing \\ Displaying random patterns \\ Mixing multiple colors \\ 7. Sense and Display Real-world Data \\ Introduction \\ Using devices with the I2C bus \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Using multiple I2C devices \\ I2C bus and level shifting \\ Using just the PCF8591 chip or adding alternative sensors \\ Reading analog data using an analog-to-digital converter \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Gathering analog data without hardware \\ Logging and plotting data \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Plotting live data \\ Scaling and calibrating data \\ Extending the Raspberry Pi GPIO with an I/O expander \\ Getting ready \\ How to do it... \\ How it works... \\ There's more \ldots{} \\ I/O expander voltages and limits \\ Using your own I/O expander module \\ Directly controlling an LCD alphanumeric display \\ Sensing and sending data to online services \\ Getting ready \\ How to do it... \\ How it works... \\ See also \\ 8. Creating Projects with the Raspberry Pi Camera Module \\ Introduction \\ Getting started with the Raspberry Pi camera module \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ Using the camera with Python \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ There's more \ldots{} \\ Class member and static functions \\ Using a USB webcam instead \\ Additional drivers for the Raspberry Pi camera \\ See also \\ Generating a time-lapse video \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ There's more \ldots{} \\ Class inheritance and function overriding \\ Disabling the camera LED \\ Pi NoIR --- taking night shots \\ Creating a stop frame animation \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ There's more \ldots{} \\ Improving the focus \\ Creating a hardware shutter \\ Making a QR code reader \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ There's more \ldots{} \\ Generating QR codes \\ See also \\ 9. Building Robots \\ Introduction \\ Building a Rover-Pi robot with forward driving motors \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ There's more \ldots{} \\ Darlington array circuits \\ Transistor and relay circuits \\ Tethered or untethered robots \\ Rover kits \\ Using advanced motor control \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ There's more \ldots{} \\ Motor speed control using PWM control \\ Using I/O expanders \\ Building a six-legged Pi-Bug robot \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ Controlling the servos \\ The servo class \\ Learning to walk \\ The Pi-Bug code for walking \\ Avoiding objects and obstacles \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ There's more \ldots{} \\ Ultrasonic reversing sensors \\ Getting a sense of direction \\ Getting ready \\ How to do it \ldots{} \\ How it works \ldots{} \\ There's more \ldots{} \\ Calibrating the compass \\ Calculating the compass bearing \\ Saving the calibration \\ Driving the robot using the compass \\ 10. Interfacing with Technology \\ Introduction \\ Automating your home with remote sockets \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Sending RF control signals directly \\ Using SPI to control an LED matrix \\ Getting ready \\ How to do it \ldots{} \\ How it works... \\ There's more... \\ Daisy-chain SPI configuration \\ Communicating using a serial interface \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Configuring a USB to RS232 device for the Raspberry Pi \\ RS232 signals and connections \\ Using the GPIO built-in serial pins \\ The RS232 loopback \\ Controlling the Raspberry Pi over Bluetooth \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Configuring Bluetooth module settings \\ Controlling USB devices \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Controlling similar missile-type devices \\ Robot arm \\ Taking USB control further \\ A. Hardware and Software List \\ Introduction \\ General component sources \\ Hardware list \\ Software list \\ PC software utilities \\ Raspberry Pi packages \\ There's more... \\ APT commands \\ Pip Python package manager commands \\ Index", } @Article{Day:2014:PP, author = "Charles Day", title = "{Python} Power", journal = j-COMPUT-SCI-ENG, volume = "16", number = "1", pages = "88", month = jan # "\slash " # feb, year = "2014", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2014.26", ISSN = "1521-9615", ISSN-L = "1521-9615", bibdate = "Sat Apr 19 10:17:39 2014", bibsource = "http://www.math.utah.edu/pub/tex/bib/computscieng.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Article{DiPierro:2014:PPP, author = "Massimo {Di Pierro}", title = "Portable Parallel Programs with {Python} and {OpenCL}", journal = j-COMPUT-SCI-ENG, volume = "16", number = "1", pages = "34--40", month = jan # "\slash " # feb, year = "2014", CODEN = "CSENFA", DOI = "http://dx.doi.org/10.1109/MCSE.2013.99", ISSN = "1521-9615", ISSN-L = "1521-9615", bibdate = "Sat Apr 19 10:17:39 2014", bibsource = "http://www.math.utah.edu/pub/tex/bib/computscieng.bib; http://www.math.utah.edu/pub/tex/bib/pvm.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Computing in Science and Engineering", journal-URL = "http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5992", } @Article{Dolgopolovas:2014:PSC, author = "Vladimiras Dolgopolovas and Valentina Dagiene and Saulius Minkevicius and Leonidas Sakalauskas", title = "{Python} for scientific computing education: Modeling of queueing systems", journal = j-SCI-PROG, volume = "22", number = "1", pages = "37--51", month = "????", year = "2014", CODEN = "SCIPEV", DOI = "http://dx.doi.org/10.3233/SPR-140377", ISSN = "1058-9244 (print), 1875-919X (electronic)", ISSN-L = "1058-9244", bibdate = "Sat Mar 8 14:11:13 MST 2014", bibsource = "http://www.iospress.nl/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/sciprogram.bib", acknowledgement = ack-nhfb, fjournal = "Scientific Programming", journal-URL = "http://iospress.metapress.com/content/1058-9244", } @Book{Donat:2014:LRP, author = "Wolfram Donat", title = "Learn {Raspberry Pi} programming with {Python}", publisher = pub-APRESS, address = pub-APRESS:adr, pages = "xxi + 231", year = "2014", ISBN = "1-4302-6424-1 (paperback0)", ISBN-13 = "978-1-4302-6424-8 (paperback0)", LCCN = "QA76.73.P98 .D663 2014", bibdate = "Sat Oct 24 06:44:02 MDT 2015", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", series = "TECHNOLOGY IN ACTION series", abstract = "\booktitle{Learn Raspberry Pi programming with Python} show you how to program your nifty new \$35 computer using Python to make fun, hands-on projects, such as a web spider, a weather station, a media server and more.", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Raspberry Pi (Computer); Handbooks, manuals, etc; Python (Computer program language)", tableofcontents = "1 Introducing the Raspberry Pi \\ The History of Raspberry Pi \\ Exploring the Pi Board \\ The SD Card \\ The Power Port \\ The HDMI Port \\ The Ethernet and USB Ports \\ The Audio and RCA Video Jacks \\ The GPIO Pins \\ The System on a Chip \\ Comparing Raspberry Pi to Similar Devices \\ Hardware Requirements of the Pi \\ Connecting to Power \\ Adding a Monitor \\ Adding a USB Hub \\ Using a Wireless USB Dongle \\ The Pi Operating System \\ Formatting the Card \\ Using NOOBS \\ Connecting the Peripherals \\ Configuring the Pi \\ Shutting Down the Pi \\ Summary \\ 2 Linux by the Seat of Your Pants \\ Getting Started with Linux on the Pi \\ Linux Files and the File System \\ Root User vs. sudo \\ Commands \\ Exercise: Navigating in the Linux File System \\ Shells in Linux \\ Package Managers \\ Text Editors \\ Vim vs. emacs vs. nano \\ Summary \\ 3 Introducing Python \\ Scripting vs. a Programming Language \\ The Python Philosophy \\ Getting Started with Python \\ Running Python Using IDLE \\ Running Python Using the Terminal \\ Running Python Using Scripts \\ Exploring Python's Data Types \\ Programming with Python \\ IF tests \\ Loops \\ Functions \\ Objects and Object-Oriented Programming \\ Summary \\ 4 Electronics at 100 MPH \\ Basic Electricity Concepts \\ Required Tools for Robotics \\ Screwdrivers \\ Pliers and Wire Strippers \\ Wire Cutters \\ Files \\ Magnifying Light \\ Hot Glue Gun \\ Assorted Glues \\ Multimeter \\ Power Supplies \\ Breadboard \\ Power Strip \\ Soldering Iron \\ General Safety Rules \\ Working with Heat \\ Working With Sharp Objects \\ Wear Safety Glasses \\ Fire Extinguishers at the Ready \\ Keep a First-Aid Kit Handy \\ Work in a Ventilated Area \\ Organizing Your Workplace \\ Bonus: Soldering Techniques \\ Summary \\ 5 The Web Bot \\ Bot Etiquette \\ The Connections of the Web \\ Web Communication Protocols \\ Web Page Formats: A Request Example \\ Our Web Bot Concept \\ Parsing Web Pages \\ Coding with Python Modules \\ Using the Mechanize Module \\ Parsing with Beautiful Soup \\ Downloading with the urllib Library \\ Deciding What to Download \\ Choosing a Starting Point \\ Storing Your Files \\ Writing the Python Bot \\ Reading a String and Extracting All the Links \\ Looking For and Downloading Files \\ Testing the Bot \\ Creating Directories and Instantiating a List \\ The Final Code \\ Summary \\ 6 The Weather Station \\ A Shopping List of Parts \\ Using the l2C Protocol \\ Using an Anemometer \\ Building the Anemometer \\ Connecting the Anemometer to the Pi \\ Correlating Revolutions per Second with Wind Speed \\ Connecting the Digital Compass \\ Connecting the Temperature/Humidity Sensor \\ Connecting the Barometer \\ Connecting the Bits \\ The Final Code \\ Summary \\ 7 The Media Server \\ A Shopping List of Parts \\ Using an NTFS Drive \\ Installing Samba \\ Configuring Samba \\ Setting Linux Permissions \\ Fixing the Apostrophe Bug \\ Restarting the Samba Service \\ Connecting with Linux/OS X \\ Where's Python? \\ Summary \\ 8 The Home Security System \\ Dogs as Security \\ Raspberry Pi as Security \\ Using a Sensor Network \\ Understanding a Pulldown Resistor \\ A Shopping List of Parts \\ Connecting to Your Network Wirelessly \\ Accessing the GPIO Pins \\ Setting Up the Motion Sensor \\ Setting Up the Reed Switch \\ Setting Up the Pressure Switch \\ Connecting the Magnetic Sensor \\ Setting Up Pi's Camera \\ Sending a Text Message from the Pi \\ Implementing the Callback \\ Connecting All of the Bits \\ The Final Code \\ Summary \\ 9 The Cat Toy \\ A Shopping List of Parts \\ The Concept Behind the Toy \\ Creating and Using Random Numbers \\ Using the GPIO Library \\ Controlling the Servo \\ Constructing the Servo Mechanism \\ Constructing the Laser Mechanism \\ Connecting the Laser to the Servo \\ Connecting the Motion Sensor \\ Connecting All the Bits \\ The Final Code \\ Summary \\ 10 The Radio-Controlled Airplane \\ A Shopping List of Parts \\ Connecting the GPS Receiver to the Pi \\ Setting Up a Log File \\ Formatting a KML File \\ Using Threading and Objects \\ Setting Up Automatic Startup \\ Connecting the Bits \\ The Final Code \\ The Plane Program \\ KML Conversion Program \\ Summary \\ 11 The Weather Balloon \\ A Shopping List of Parts \\ Setting Up the GPS Receiver \\ Storing the GPS Data \\ Installing PiFM \\ Installing festival \\ Installing FFMPEG \\ Preparing the Pi \\ Using Threading and Objects \\ Connecting the Bits \\ Reviewing the Photo Results \\ The Final Code \\ Summary \\ 12 The Submersible \\ A Shopping List of Parts \\ Accessing the Raspberry Pi's GPIO pins \\ Installing the Raspberry Pi Camera Board \\ Controlling the Sub \\ Attaching the Wiichuck Adapter \\ Activating the Pi's I2C \\ Testing the Nunchuk \\ Reading from the Nunchuk \\ Controlling the Sub Motors and Camera with the Nunchuk \\ Starting the Program Remotely \\ The Final Control Program \\ The Final Code \\ Constructing the Sub \\ Building the Frame \\ Creating the Pi's Enclosure \\ Waterproofing the Motor Enclosures \\ Connecting the Nunchuck \\ Assembling the Final Product \\ Summary \\ 13 The Gertboard \\ Examining the Board \\ The GPIO Pins \\ Atmega Chip \\ A-to-D and D-to-A Converters \\ I/O Section \\ The Motor Controller \\ Open Collector Driver \\ Jumpers \\ Some Example Projects \\ Configuring the Preliminary Jumper Setup \\ Making Some LEDs Blink \\ Experimenting with Motor Controllers \\ Using the Open Collector Drivers \\ Using the Digital/Analogue Converters \\ Summary \\ 14 The Raspberry Pi and the Arduino \\ Exploring the Arduino \\ Installing the Arduino IDE on the Pi \\ Running a Servo \\ The Arduino and the Gertboard \\ Summary", } @Book{Galanakis:2014:PMP, author = "Robert Galanakis", title = "Practical {Maya} programming with {Python}: unleash the power of {Python} in {Maya} and unlock your creativity", publisher = pub-PACKT, address = pub-PACKT:adr, pages = "viii + 334", year = "2014", ISBN = "1-84969-472-9 (paperback), 1-84969-473-7 (e-book), 1-322-00849-3 (e-book)", ISBN-13 = "978-1-84969-472-8 (paperback), 978-1-84969-473-5 (e-book), 978-1-322-00849-3 (e-book)", LCCN = "T385 .G34 2014", bibdate = "Sat Oct 24 06:54:45 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", series = "Community experience distilled", URL = "http://proquest.safaribooksonline.com/?fpi=9781849694728", acknowledgement = ack-nhfb, subject = "Three-dimensional modeling; Computer programs; Computer graphics; Python (Computer program language); Three-dimensional modeling / Computer programs.; Computer graphics.; Python (Computer program language)", tableofcontents = "Preface \\ What this book covers \\ What you need for this book \\ Who this book is for \\ Conventions \\ Reader feedback \\ Customer support \\ Downloading the example code \\ Errata \\ Piracy \\ Questions \\ 1. Introspecting Maya, Python, and PyMEL \\ Creating your library \\ Using the interpreter \\ Finding a place for our library \\ Choosing a development root \\ Creating a function in your IDE \\ Reloading code changes \\ Exploring Maya and PyMEL \\ Creating an introspection function \\ Understanding Python and MEL types \\ Using the method resolution order \\ PyNodes all the way down \\ Understanding PyMEL data and math types \\ Leveraging the REPL \\ Building the pmhelp function \\ Creating a query string for a PyMEL object \\ Creating more tests \\ Adding support for modules \\ Adding support for types \\ Adding support for methods \\ Adding support for functions \\ Adding support for non-PyMEL objects \\ Designing with EAFP versus LBYL \\ Code is never complete \\ Opening help in a web browser \\ Summary \\ 2. Writing Composable Code \\ Defining composability \\ Identifying anti-patterns of composability \\ Avoiding the use of Boolean flags \\ Evolving legacy code into composable code \\ Rewriting code for composability \\ Getting the first item in a sequence \\ Writing head and tail functions \\ Learning to use list comprehensions \\ Implementing is_exact_type \\ Saying goodbye to map and filter \\ Writing a skeleton converter library \\ Writing the docstring and pseudocode \\ Understanding docstrings and reStructured Text \\ Writing the first implementation \\ Breaking the first implementation \\ Understanding interface contracts \\ Extracting the safe_setparent utility function \\ Learning how to refactor \\ Simplifying the node to joint conversion \\ Learning how to use closures \\ Dealing with node connections \\ Dealing with namespaces \\ Wrapping up the skeleton converter \\ Writing a character creator \\ Stubbing out the character creator \\ Implementing convert_hierarchies_main \\ Implementing convert_hierarchies \\ Decomposing into composable functions \\ Implementing convert_hierarchy \\ Supporting inevitable modifications \\ Improving the performance of PyMEL \\ Defining performance \\ Refactoring for performance \\ Rewriting inner loops to use maya.cmds \\ Summary \\ 3. Dealing with Errors \\ Understanding exceptions \\ Introducing exception types \\ Explaining try/catch/finally flow control \\ Explaining traceback objects \\ Explaining the exc_info tuple \\ Living with unhandled exceptions \\ Handling exceptions at the application level \\ Golden rules of error handling \\ Focus on the critical path \\ Keep the end user in mind \\ Only catch errors you can handle \\ Avoid partial mutations \\ Practical error handling in Maya \\ Dealing with expensive and mutable state \\ Leveraging undo blocks \\ Dealing with Maya's poor exception design \\ Leveraging the Maya application \\ Dealing with the Maya application \\ Leveraging Python, which is better than MEL \\ Building a high-level error handler \\ Understanding sys.excepthook \\ Using sys.excepthook in Maya \\ Creating an error handler \\ Improving the error handler \\ Inspecting Python code objects \\ Adding filtering based on filename \\ Assembling the contents of an error e-mail \\ Sending the error e-mail \\ Installing the error handler \\ Obeying the What If Two Programs Did This rule \\ Improving the error handler \\ Adding a user interface \\ Using a background thread to send the e-mail \\ Moving beyond e-mail \\ Capturing locals \\ Attaching log files \\ Summary \\ 4. Leveraging Context Managers and Decorators in Maya \\ Inverting the subroutine \\ Introducing decorators \\ Explaining decorators \\ Wrapping an exporter with a decorator \\ Introducing context managers \\ Writing the undo_chunk context manager \\ Writing the undo_on_error context manager \\ Contrasting decorators and context managers \\ Context managers for changing scene state \\ Building the set_file_prompt context manager \\ Building the at_time context manager \\ Building the with_unit context manager \\ Building the set_renderlayer_active context manager \\ Building the set_namespace_active context manager \\ Improving on future versions of Maya \\ Creating the denormalized_skin context manager \\ Safely swapping vertex influences \\ Addressing performance concerns \\ Creating a decorator to record metrics \\ Getting a unique key \\ Recording duration \\ Reporting duration \\ Handling errors \\ Advanced decorator topics \\ Defining decorators with arguments \\ Decorating PyMEL attributes and methods \\ Stacking decorators \\ Using Python's decorator library \\ Doing decorators the right way \\ Summary \\ 5. Building Graphical User Interfaces for Maya \\ Introducing Qt, PyQt, and PySide \\ Introducing Qt widgets \\ Introducing Qt layouts \\ Understanding Qt main windows and sorting \\ Introducing Qt signals \\ Establishing rules for crafting a GUI \\ Prefer pure PySide GUIs where possible \\ Use command-style UI building where necessary \\ Avoid the use of .ui files \\ Installing PySide \\ Supporting PySide and PyQt \\ Creating the hierarchy converter GUI \\ Creating the window \\ Running a Python file as a script \\ Introducing the QApplication class \\ Understanding the event loop \\ Running your GUI \\ Designing and building your GUI \\ Defining control, container, and window widgets \\ Adding the rest of the widgets \\ Hooking up the application to be effected by the GUI \\ Hooking up the GUI to be effected by the application \\ Simulating application events \\ Considering alternative implementations \\ Integrating the tool GUI with Maya \\ Opening the tool GUI from Maya \\ Getting the main Maya window as a QMainWindow \\ Making a Qt window the child of Maya's window \\ Using Python's reload function with GUIs \\ Emitting a signal from Maya \\ Connecting Maya to a signal \\ Verifying the hierarchy converter works \\ Working with menus \\ Creating a top-level menu \\ Getting the Qt object from a Maya path \\ Changing the font of a widget \\ Marking menus as new \\ Creating a test case \\ Adding a persistence registry \\ Verifying the new menu marker works \\ Using alternative methods to style widgets \\ Working with Maya shelves \\ Summary \\ 6. Automating Maya from the Outside \\ Controlling Maya through request-reply \\ Using a Python client and Maya server \\ Controlling Python through exec and eval \\ Handling problems with IPC \\ Installing ZeroMQ \\ Demonstrating request-reply with ZeroMQ \\ Explaining connection strings, ports, bind, and connect \\ Designing the automation system \\ Pairing one client and one server \\ Bootstrapping the server from the client \\ The client-server handshake \\ Defining the server loop \\ Serializing requests and responses \\ Choosing what the server does \\ Handling exceptions between client and server \\ Understanding the Maya startup routine \\ Using batch mode versus GUI mode \\ Choosing a startup configuration mechanism \\ Using command line options \\ Using environment variables \\ Building the request-reply automation system \\ Creating a Python package \\ Launching Maya from Python \\ Automatically killing the server \\ Creating a basic Maya server \\ Running code at Maya startup \\ Understanding eval and exec \\ Adding support for eval and exec \\ Adding support for exception handling \\ Adding support for timeouts \\ Adding support for the client-server handshake \\ Practical uses and improvements \\ Batch processing using Maya \\ Running a server in a Maya GUI session \\ Running automated tests in Maya \\ Adding support for logging \\ Supporting multiple languages and applications \\ Supporting control from a remote computer \\ Designing an object-oriented system \\ Evaluating other RPC frameworks \\ Summary \\ 7. Taming the Maya API \\ Explaining types \\ Dicts all the way down \\ Using custom types to simplify code \\ Introducing inheritance by drawing shapes \\ Introducing Maya's API and architecture \\ Understanding the OpenMaya bindings \\ Navigating the Maya API Reference \\ Understanding MObjects and function sets \\ Learning the Maya Python API by example \\ Converting a name to an MObject node \\ Getting the name of an MObject \\ Getting the hash of a node \\ Building a mesh \\ Setting mesh normals \\ Using MScriptUtil to call a method \\ Using OpenMaya for callbacks \\ Comparing Maya Python API and PyMEL \\ Creating a Maya Python plugin \\ The life of a Python plugin \\ Creating the sound player library \\ Creating the plugin file \\ Reloading plugins \\ Adding a command flag \\ Comparing the OpenMaya and scripting solutions \\ Using PyMEL in a plugin that loads during startup \\ Summary \\ 8. Unleashing the Maya API through Python \\ Understanding Dependency Graph plugins \\ Building a simple node plugin \\ Understanding plugin type IDs \\ Defining inputs, outputs, and the initializer \\ Creating the compute method \\ Taming the non-Pythonic Maya API \\ Demystifying Python metaprogramming \\ Rethinking type creation \\ Exploring the type function \\ The importance of being declarative \\ Designing the node factory \\ Designing plugin nodes \\ Designing the attribute specification \\ Designing the node type specification \\ Building the node factory \\ Specifying attributes \\ Creating attributes \\ Specifying a node \\ Using partial application to create attributes \\ Creating a node \\ Slaying the compute method \\ Extending the node factory \\ Supporting string and color attributes \\ Supporting enum attributes \\ Supporting transform nodes \\ Overriding MPxNode methods \\ Summary \\ 9. Becoming a Part of the Python Community \\ Understanding Open Source Software \\ Differentiating OSS from script download sites \\ Defining what a third-party module is \\ Creating a site directory for third-party modules \\ Explaining the site directory \\ Creating a new site directory for Maya \\ Establishing the site directory at startup \\ Working with Python distributions in Maya \\ Using the Python Package Index \\ Adding a source distribution to Maya \\ Adding an egg or wheel to Maya \\ Using binary distributions on Windows \\ Using pip to install third-party modules \\ Contributing to the open source community \\ Designing Maya Python code for open source \\ Starting an open source project \\ Distributing your project \\ Engaging with the wider community \\ Summary \\ A. Python Best Practices \\ The args and kwargs parameters \\ String formatting \\ String concatenation \\ Raw strings and string literals \\ Path building and manipulation \\ Unicode strings \\ Using the doctest module \\ Adopting Test-Driven Development \\ Using the GitHub repository for this book \\ Index", } @Article{Gonina:2014:SMC, author = "Ekaterina Gonina and Gerald Friedland and Eric Battenberg and Penporn Koanantakool and Michael Driscoll and Evangelos Georganas and Kurt Keutzer", title = "Scalable multimedia content analysis on parallel platforms using {Python}", journal = j-TOMCCAP, volume = "10", number = "2", pages = "18:1--18:??", month = feb, year = "2014", CODEN = "????", DOI = "http://dx.doi.org/10.1145/2517151", ISSN = "1551-6857 (print), 1551-6865 (electronic)", ISSN-L = "1551-6857", bibdate = "Thu Mar 13 07:37:57 MDT 2014", bibsource = "http://www.acm.org/pubs/contents/journals/tomccap/; http://www.math.utah.edu/pub/tex/bib/pvm.bib; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/tomccap.bib", abstract = "In this new era dominated by consumer-produced media there is a high demand for web-scalable solutions to multimedia content analysis. A compelling approach to making applications scalable is to explicitly map their computation onto parallel platforms. However, developing efficient parallel implementations and fully utilizing the available resources remains a challenge due to the increased code complexity, limited portability and required low-level knowledge of the underlying hardware. In this article, we present PyCASP, a Python-based framework that automatically maps computation onto parallel platforms from Python application code to a variety of parallel platforms. PyCASP is designed using a systematic, pattern-oriented approach to offer a single software development environment for multimedia content analysis applications. Using PyCASP, applications can be prototyped in a couple hundred lines of Python code and automatically scale to modern parallel processors. Applications written with PyCASP are portable to a variety of parallel platforms and efficiently scale from a single desktop Graphics Processing Unit (GPU) to an entire cluster with a small change to application code. To illustrate our approach, we present three multimedia content analysis applications that use our framework: a state-of-the-art speaker diarization application, a content-based music recommendation system based on the Million Song Dataset, and a video event detection system for consumer-produced videos. We show that across this wide range of applications, our approach achieves the goal of automatic portability and scalability while at the same time allowing easy prototyping in a high-level language and efficient performance of low-level optimized code.", acknowledgement = ack-nhfb, articleno = "18", fjournal = "ACM Transactions on Multimedia Computing, Communications, and Applications", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J961", } @Book{Gorelick:2014:HPP, author = "Micha Gorelick and Ian Ozsvald", title = "High performance {Python}", publisher = pub-ORA, address = pub-ORA:adr, pages = "xv + 351", year = "2014", ISBN = "1-4493-6159-5 (paperback)", ISBN-13 = "978-1-4493-6159-4 (paperback)", LCCN = "QA76.73.P98 G67 2014", bibdate = "Sat Oct 24 06:32:59 MDT 2015", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", abstract = "If you're an experienced Python programmer, \booktitle{High Performance Python} will guide you through the various routes of code optimization. You'll learn how to use smarter algorithms and leverage peripheral technologies, such as numpy, cython, cpython, and various multi-threaded and multi-node strategies. There's a lack of good learning and reference material available if you want to learn Python for highly computational tasks. Because of it, fields from physics to biology and systems infrastructure to data science are hitting barriers. They need the fast prototyping nature of Python, but too few people know how to wield it.", acknowledgement = ack-nhfb, subject = "Python (Computer program language)", tableofcontents = "Preface \\ Who This Book is For \\ Who This Book is Not For \\ What You'll Learn \\ We focus on Python 2.7 on 64-bit *nix Systems \\ Moving to Python 3 \\ License \\ How to Make an Attribution \\ Errata and Feedback \\ Resources \\ Conventions Used in This Book \\ Using Code Examples \\ Safari Books Online \\ How to Contact Us \\ Acknowledgements \\ 1. Understanding Performant Python \\ Fundamental Computer System \\ Computing Units \\ Memory Units \\ Communications Layers \\ Putting the Fundamental Elements Together \\ Idealized computing vs Python VM \\ Idealized Computing \\ Python's Virtualized Machine \\ So Why Use Python? \\ 2. Profiling to find bottlenecks \\ Profiling efficiently \\ Introducing the Julia Set \\ Calculating the full Julia Set \\ Simple approaches to timing - print and a decorator \\ Simple timing using the Unix time command \\ Using the cProfile module \\ runsnakerun to visualise cProfile output \\ line_profiler for line-by-line measurements \\ memory_profiler for diagnosing memory usage \\ Inspecting objects on the heap with heapy \\ Dowser for live graphing of instantiated variables \\ The dis module to examine CPython bytecode \\ Different approaches, different complexity \\ Unit testing during optimization to maintain correctness \\ No-op @profile decorator \\ Strategies to profile your code successfully \\ 3. Lists and Tuples \\ A more efficient search \\ Lists vs Tuples \\ Lists as dynamic arrays \\ Tuples as static arrays \\ Wrap Up \\ 4. Dictionaries and Sets \\ How do dictionaries and sets work? \\ Inserting and Retrieving \\ Deletion \\ Resizing \\ Hash functions and Entropy \\ Dictionaries and Namespaces \\ Wrap Up \\ 5. Iterators and Generators \\ Iterators for Infinite Series \\ Lazy Generator Evaluation \\ Wrap Up \\ 6. Matrix and Vector Computation \\ Introduction to the Problem \\ Aren't python lists good enough? \\ Problems with allocating too much \\ Memory Fragmentation \\ Understanding \\ Making decisions with \\ Enter numpy \\ Memory Allocations and In-place Operations \\ Selective optimizations: finding what needs to be fixed \\ numexpr: making inplace operations faster and easier \\ A Cautionary Tale: Verify ``optimizations'' (scipy) \\ Wrap Up \\ 7. Compiling to C \\ What sort of speed gains are possible? \\ JITs vs Compilers \\ Why does type information help the code run faster? \\ Using a C compiler \\ Reviewing the Julia Set example \\ Cython \\ Compiling a pure-Python version using Cython \\ Cython annotations to analyse a block of code \\ Adding some type annotations \\ Shed Skin \\ Building an extension module \\ The cost of the memory copies \\ Cython and numpy \\ Parallelizing the solution with OpenMP on One Machine \\ Numba \\ Pythran \\ PyPy \\ Garbage Collection differences \\ Running PyPy and installing modules \\ When to use each technology \\ Other upcoming projects \\ A note on Graphics Processing Units (GPUs) \\ A wish for a future compiler project \\ Foreign function interfaces \\ ctypes \\ CFFI \\ f2py \\ cpython module \\ Wrap Up \\ 8. Concurrency \\ Introduction to Async \\ Serial Crawler \\ Gevent \\ Tornado \\ AsyncIO \\ Database Example \\ Wrap Up \\ 9. The multiprocessing module \\ An overview of the multiprocessing module \\ Estimating Pi using the Monte Carlo method \\ Estimating Pi using Processes and Threads \\ Using Python objects \\ Random Numbers in Parallel Systems \\ Using numpy \\ Finding Prime Numbers \\ Queues of work \\ Asynchronously adding jobs to the Queue \\ Verifying Primes using Inter Process Communication \\ Serial verification is inefficient \\ Naive Pool solution \\ A Less Naive Pool solution \\ Using Manager.Value as a flag \\ Using Redis as a flag \\ Using RawValue as a flag \\ Using mmap as a flag \\ Using mmap as a flag redux \\ Sharing numpy data with multiprocessing \\ Synchronizing File and Variable Access \\ File locking \\ Locking a Value \\ Summary \\ 10. Clusters and Job Queues \\ Benefits of clustering \\ Clusters can introduce more pain than you might expect \\ \$462 Million Wall Street loss through poor cluster upgrade strategy \\ Skype's 24 hour global outage \\ Common cluster designs \\ How to start a clustered solution \\ Ways to avoid pain when using clusters \\ Three clustering solutions \\ Using the ParallelPython module for simple local clusters \\ Using IPython Parallel to support research \\ NSQ for robust production clustering \\ Queues \\ Pub/Sub \\ Distributed Prime Calculation \\ Other clustering tools to look at \\ 11. Using Less RAM \\ Objects for primitives are \\ The \\ Understanding the RAM used in a collection \\ Bytes vs Unicode \\ Efficiently storing lots of text in RAM \\ Trying these approaches on 8 million tokens \\ list \\ set \\ More Efficient Tree Structures \\ Directed Acyclic Word Graph (DAWG) \\ Marisa trie \\ datrie \\ HAT Trie \\ Using Tries in production systems \\ Tips for using less RAM \\ Probabilistic data structures \\ Very approximate counting with a 1 byte Morris Counter \\ K-Min Values \\ Bloom Filter \\ LogLog Counter \\ Real World Example \\ 12. Lessons from the Field \\ AdaptiveLab for Social Media Analytics (SoMA) \\ Python at Adaptive Lab \\ SoMA's Design \\ Our Development Methodology \\ Maintaining SoMA \\ Advice for Fellow Engineers \\ Making deep learning fly with RadimRehurek.com \\ The Sweet Spot \\ Lessons in Optimizing \\ Wrap up \\ Large scale productionized machine learning at Lyst.com \\ Python's place at Lyst \\ Cluster design \\ Code evolution in a fast moving start-up \\ Building the recommendation engine \\ Reporting and Monitoring \\ Some advice \\ Large Scale Social Media Analysis at Sme.sh \\ Python's role at Smesh \\ The Platform \\ High performance real-time string matching \\ Reporting, monitoring, debugging and deployment \\ PyPy for successful web and data processing systems \\ Introduction \\ Prerequisites \\ Database \\ Web Application \\ OCR and Translation \\ Task Distribution and Workers \\ Conclusion \\ Task queues at Lanyrd.com \\ Python's role at Lanyrd \\ Making the task queue performant \\ Reporting, monitoring, debugging and deployment \\ Advice to a fellow developer \\ About the Authors", } @Book{Gundecha:2014:LST, author = "Unmesh Gundecha", title = "Learning {Selenium} testing tools with {Python}", publisher = pub-PACKT, address = pub-PACKT:adr, pages = "216 (est.)", year = "2014", ISBN = "1-78398-350-7, 1-78398-351-5 (e-book), 1-322-56850-2 (e-book)", ISBN-13 = "978-1-78398-350-6, 978-1-78398-351-3 (e-book), 978-1-322-56850-8 (e-book)", LCCN = "QA76.73.P98", bibdate = "Sat Oct 24 05:59:28 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "If you are a quality testing professional, or a software or web application developer looking to create automation test scripts for your web applications, with an interest in Python, then this is the perfect guide for you. Python developers who need to do Selenium testing need not learn Java, as they can directly use Selenium for testing with this book.", acknowledgement = ack-nhfb, tableofcontents = "Preface \\ What this book covers \\ What you need for this book \\ Who this book is for \\ Conventions \\ Reader feedback \\ Customer support \\ Downloading the example code \\ Errata \\ Piracy \\ Questions \\ 1. Getting Started with Selenium WebDriver and Python \\ Preparing your machine \\ Installing Python \\ Installing the Selenium package \\ Browsing the Selenium WebDriver Python documentation \\ Selecting an IDE \\ PyCharm \\ The PyDev Eclipse plugin \\ PyScripter \\ Setting up PyCharm \\ Taking your first steps with Selenium and Python \\ Cross-browser support \\ Setting up Internet Explorer \\ Setting up Google Chrome \\ Summary \\ 2. Writing Tests Using unittest \\ The unittest library \\ The TestCase class \\ The setUp() method \\ Writing tests \\ Cleaning up the code \\ Running the test \\ Adding another test \\ Class-level setUp() and tearDown() methods \\ Assertions \\ Test suites \\ Generating the HTML test report \\ Summary \\ 3. Finding Elements \\ Using developer tools to find locators \\ Inspecting pages and elements with Firefox using the Firebug add-in \\ Inspecting pages and elements with Google Chrome \\ Inspecting pages and elements with Internet Explorer \\ Finding elements with Selenium WebDriver \\ Using the find methods \\ Finding elements using the ID attribute \\ Finding elements using the name attribute \\ Finding elements using the class name \\ Finding elements using the tag name \\ Finding elements using XPath \\ Finding elements using CSS selectors \\ Finding links \\ Finding links with partial text \\ Putting all the tests together using find methods \\ Summary \\ 4. Using the Selenium Python API for Element Interaction \\ Elements of HTML forms \\ Understanding the WebDriver class \\ Properties of the WebDriver class \\ Methods of the WebDriver class \\ Understanding the WebElement class \\ Properties of the WebElement class \\ Methods of the WebElement class \\ Working with forms, textboxes, checkboxes, and radio buttons \\ Checking whether the element is displayed and enabled \\ Finding the element attribute value \\ Using the is_selected() method \\ Using the clear() and send_keys() methods \\ Working with dropdowns and lists \\ Understanding the Select class \\ Properties of the Select class \\ Methods of the Select class \\ Working with alerts and pop-up windows \\ Understanding the Alert class \\ Properties of the Alert class \\ Methods of the Alert class \\ Automating browser navigation \\ Summary \\ 5. Synchronizing Tests \\ Using implicit wait \\ Using explicit wait \\ The expected condition class \\ Waiting for an element to be enabled \\ Waiting for alerts \\ Implementing custom wait conditions \\ Summary \\ 6. Cross-browser Testing \\ The Selenium standalone server \\ Downloading the Selenium standalone server \\ Launching the Selenium standalone server \\ Running a test on the Selenium standalone server \\ Adding support for Internet Explorer \\ Adding support for Chrome \\ Selenium Grid \\ Launching Selenium server as a hub \\ Adding nodes \\ Adding an IE node \\ Adding a Firefox node \\ Adding a Chrome node \\ Mac OS X with Safari \\ Running tests in Grid \\ Running tests in a cloud \\ Using Sauce Labs \\ Summary \\ 7. Testing on Mobile \\ Introducing Appium \\ Prerequisites for Appium \\ Setting up Xcode for iOS \\ Setting up Android SDK \\ Setting up the Appium Python client package \\ Installing Appium \\ Appium Inspector \\ Testing on iOS \\ Writing a test for iOS \\ Testing on Android \\ Writing a test for Android \\ Using Sauce Labs \\ Summary \\ 8. Page Objects and Data-driven Testing \\ Data-driven testing \\ Using ddt for data-driven tests \\ Installing ddt \\ Creating a simple data-driven test with ddt in unittest \\ Using external data sources for data-driven tests \\ Reading values from CSV \\ Reading values from Excel \\ The page objects pattern \\ Organizing tests \\ The BasePage object \\ Implementing page objects \\ Creating a test with page objects \\ Summary \\ 9. Advanced Techniques of Selenium WebDriver \\ Methods for performing keyboard and mouse actions \\ Keyboard actions \\ The mouse movement \\ The double_click method \\ The drag_and_drop method \\ Executing JavaScript \\ Capturing screenshots of failures \\ Recording a video of the test run \\ Handling pop-up windows \\ Managing cookies \\ Summary \\ 10. Integration with Other Tools and Frameworks \\ Behavior-Driven Development \\ Installing Behave \\ Writing the first feature in Behave \\ Implementing a step definition file for the feature \\ Creating environment configurations \\ Running features \\ Using a scenario outline \\ CI with Jenkins \\ Preparing for Jenkins \\ Setting up Jenkins \\ Summary \\ Index", } @Book{Hetland:2014:PAM, author = "Magnus Lie Hetland", title = "{Python} Algorithms: Mastering Basic Algorithms in the {Python} Language", publisher = pub-APRESS, address = pub-APRESS:adr, edition = "Second", pages = "303 (est.)", year = "2014", DOI = "http://dx.doi.org/10.1007/978-1-4842-0055-1", ISBN = "1-4842-0055-1", ISBN-13 = "978-1-4842-0055-1", LCCN = "QA75.5-76.95", bibdate = "Fri Oct 23 15:18:36 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", series = "EBL-Schweitzer", abstract = "\booktitle{Python Algorithms}, Second Edition, explains the Python approach to algorithm analysis and design. Written by Magnus Lie Hetland, author of Beginning Python, this book is sharply focused on classical algorithms, but it also gives a solid understanding of fundamental algorithmic problem-solving techniques. The book deals with some of the most important and challenging areas of programming and computer science in a highly readable manner. It covers both algorithmic theory and programming practice, demonstrating how theory is reflected in real Python programs. Well-known algorithms and data structures \ldots{}", acknowledgement = ack-nhfb, subject = "Computer science; Computer software", tableofcontents = "If You're Curious \ldots{}Exercises \\ References \\ Chapter 3: Counting 101 \\ The Skinny on Sums \\ More Greek \\ Working with Sums \\ A Tale of Two Tournaments \\ Shaking Hands \\ The Hare and the Tortoise \\ Subsets, Permutations, and Combinations \\ Recursion and Recurrences \\ Doing It by Hand \\ A Few Important Examples \\ Guessing and Checking \\ The Master Theorem: A Cookie-Cutter Solution \\ So What Was All That About? \\ Summary \\ If You're Curious \ldots{} \\ Exercises \\ References \\ Chapter 4: Induction and Recursion and Reduction \\ Oh, That's Easy! \\ One, Two, Many \\ Mirror, Mirror \\ Designing with Induction (and Recursion) \\ Finding a Maximum Permutation \\ The Celebrity Problem \\ Topological Sorting \\ Stronger Assumptions \\ Invariants and Correctness \\ Relaxation and Gradual Improvement \\ Reduction + Contraposition = Hardness Proof \\ Problem Solving Advice \\ Summary \\ If You're Curious \ldots{} \\ Exercises \\ References \\ Chapter 5: Traversal: The Skeleton Key of Algorithmics \\ A Walk in the Park \\ No Cycles Allowed \\ How to Stop Walking in Circles \\ Go Deep! \\ Depth-First Timestamps and Topological Sorting (Again) \\ Infinite Mazes and Shortest (Unweighted) Paths \\ Strongly Connected Components \\ Summary \\ If You're Curious \ldots{} \\ Exercises. Going the Rest of the WayOptimal Merging \\ Minimum Spanning Trees \\ The Shortest Edge \\ What About the Rest? \\ Kruskal's Algorithm \\ Prim's Algorithm \\ Greed Works. But When? \\ Keeping Up with the Best \\ No Worse Than Perfect \\ Staying Safe \\ Summary \\ If You're Curious \ldots{} \\ Exercises \\ References \\ Chapter 8: Tangled Dependencies and Memoization \\ Don't Repeat Yourself \\ Shortest Paths in Directed Acyclic Graphs \\ Longest Increasing Subsequence \\ Sequence Comparison \\ The Knapsack Strikes Back \\ Binary Sequence Partitioning \\ Summary \\ If You're Curious \ldots{} \\ Exercises \\ References. Chapter 9: From A to B with Edsger and Friends.", } @Book{Hosmer:2014:PFW, author = "Chet Hosmer", title = "{Python} Forensics: A workbench for inventing and sharing digital forensic technology", publisher = pub-SYNGRESS, address = pub-SYNGRESS:adr, year = "2014", ISBN = "0-12-418683-1, 0-12-418676-9", ISBN-13 = "978-0-12-418683-5", LCCN = "????", bibdate = "Sat Oct 24 07:03:03 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, tableofcontents = "Dedication \\ Acknowledgments \\ Endorsements \\ List of figures \\ About the Author \\ About the Technical Editor \\ Foreword \\ Preface \\ Intended audience \\ Prerequisites \\ Reading this book \\ Supported platforms \\ Download software \\ Comments, questions, and contributions \\ 1: Why Python Forensics? \\ Abstract \\ Introduction \\ Cybercrime investigation challenges \\ How can the Python programming environment help meet these challenges? \\ Python and the Daubert evidence standard \\ Organization of the book \\ review \\ Summary questions \\ 2: Setting up a Python Forensics Environment \\ Abstract \\ Introduction \\ Setting up a python forensics environment \\ The right environment \\ Choosing a python version \\ Installing python on windows \\ Python packages and modules \\ What is included in the standard library? \\ Third-party packages and modules \\ Integrated development environments \\ Python on mobile devices \\ A virtual machine \\ review \\ Summary questions \\ Looking ahead \\ 3: Our First Python Forensics App \\ Abstract \\ Introduction \\ Naming conventions and other considerations \\ Our first application ``one-way file system hashing'' \\ Code walk-through \\ Results presentation \\ review \\ Summary questions \\ Looking ahead \\ 4: Forensic Searching and Indexing Using Python \\ Abstract \\ Introduction \\ Keyword context search \\ Code walk-through \\ Results presentation \\ Indexing \\ Coding isWordProbable \\ p-search complete code listings \\ review \\ Summary questions \\ 5: Forensic Evidence Extraction (JPEG and TIFF) \\ Abstract \\ Introduction \\ Code Walk-Through \\ review \\ Summary questions \\ 6: Forensic Time \\ Abstract \\ Introduction \\ Adding time to the equation \\ The \\ The Network Time Protocol \\ Obtaining and installing the NTP Library \\ World NTP Servers \\ NTP Client Setup Script \\ review \\ Summary questions \\ 7: Using Natural Language Tools in Forensics \\ Abstract \\ What is Natural Language Processing? \\ Installing the Natural Language Toolkit and associated libraries \\ Working with a corpus \\ Experimenting with NLTK \\ Creating a corpus from the Internet \\ NLTKQuery application \\ review \\ Summary questions \\ 8: Network Forensics: Part I \\ Abstract \\ Network investigation basics \\ Captain Ramius: re-verify our range to target \ldots{} one ping only \\ Port scanning \\ review \\ Summary questions \\ 9: Network Forensics: Part II \\ Abstract \\ Introduction \\ Packet sniffing \\ Raw sockets in Python \\ Python Silent Network Mapping Tool (PSNMT) \\ PSNMT source code \\ Program execution and output \\ review \\ Summary question/challenge \\ 10: Multiprocessing for Forensics \\ Abstract \\ Introduction \\ What is multiprocessing? \\ Python multiprocessing support \\ Simplest multiprocessing example \\ Multiprocessing File Hash \\ Multiprocessing Hash Table generation \\ review \\ Summary question/challenge \\ 11: Rainbow in the Cloud \\ Abstract \\ Introduction \\ Putting the cloud to work \\ Cloud options \\ Creating rainbows in the cloud \\ Password Generation Calculations \\ review \\ Summary question/challenge \\ 12: Looking Ahead \\ Abstract \\ Introduction \\ Where do we go from here? \\ Conclusion \\ Index", } @Book{Idris:2014:PDA, author = "Ivan Idris", title = "{Python} data analysis: learn how to apply powerful data analysis techniques with popular open source {Python} modules", publisher = pub-PACKT, address = pub-PACKT:adr, pages = "v + 329", year = "2014", ISBN = "1-78355-335-9, 1-78355-336-7 (e-book)", ISBN-13 = "978-1-78355-335-8, 978-1-78355-336-5 (e-book)", LCCN = "QA76.73.P98 I37 2014", bibdate = "Sat Oct 24 06:19:19 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", series = "Community experience distilled", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Programming languages (Electronic computers); Programming languages (Electronic computers); Python (Computer program language)", tableofcontents = "Preface \\ What this book covers \\ What you need for this book \\ Who this book is for \\ Conventions \\ Reader feedback \\ Customer support \\ Downloading the example code \\ Errata \\ Piracy \\ Questions \\ 1. Getting Started with Python Libraries \\ Software used in this book \\ Installing software and setup \\ On Windows \\ On Linux \\ On Mac OS X \\ Building NumPy, SciPy, matplotlib, and IPython from source \\ Installing with setuptools \\ NumPy arrays \\ A simple application \\ Using IPython as a shell \\ Reading manual pages \\ IPython notebooks \\ Where to find help and references \\ Summary \\ 2. NumPy Arrays \\ The NumPy array object \\ The advantages of NumPy arrays \\ Creating a multidimensional array \\ Selecting NumPy array elements \\ NumPy numerical types \\ Data type objects \\ Character codes \\ The dtype constructors \\ The dtype attributes \\ One-dimensional slicing and indexing \\ Manipulating array shapes \\ Stacking arrays \\ Splitting NumPy arrays \\ NumPy array attributes \\ Converting arrays \\ Creating array views and copies \\ Fancy indexing \\ Indexing with a list of locations \\ Indexing NumPy arrays with Booleans \\ Broadcasting NumPy arrays \\ Summary \\ 3. Statistics and Linear Algebra \\ NumPy and SciPy modules \\ Basic descriptive statistics with NumPy \\ Linear algebra with NumPy \\ Inverting matrices with NumPy \\ Solving linear systems with NumPy \\ Finding eigenvalues and eigenvectors with NumPy \\ NumPy random numbers \\ Gambling with the binomial distribution \\ Sampling the normal distribution \\ Performing a normality test with SciPy \\ Creating a NumPy-masked array \\ Disregarding negative and extreme values \\ Summary \\ 4. pandas Primer \\ Installing and exploring pandas \\ pandas DataFrames \\ pandas Series \\ Querying data in pandas \\ Statistics with pandas DataFrames \\ Data aggregation with pandas DataFrames \\ Concatenating and appending DataFrames \\ Joining DataFrames \\ Handling missing values \\ Dealing with dates \\ Pivot tables \\ Remote data access \\ Summary \\ 5. Retrieving, Processing, and Storing Data \\ Writing CSV files with NumPy and pandas \\ Comparing the NumPy .npy binary format and pickling pandas DataFrames \\ Storing data with PyTables \\ Reading and writing pandas DataFrames to HDF5 stores \\ Reading and writing to Excel with pandas \\ Using REST web services and JSON \\ Reading and writing JSON with pandas \\ Parsing RSS and Atom feeds \\ Parsing HTML with Beautiful Soup \\ Summary \\ 6. Data Visualization \\ matplotlib subpackages \\ Basic matplotlib plots \\ Logarithmic plots \\ Scatter plots \\ Legends and annotations \\ Three-dimensional plots \\ Plotting in pandas \\ Lag plots \\ Autocorrelation plots \\ Plot.ly \\ Summary \\ 7. Signal Processing and Time Series \\ statsmodels subpackages \\ Moving averages \\ Window functions \\ Defining cointegration \\ Autocorrelation \\ Autoregressive models \\ ARMA models \\ Generating periodic signals \\ Fourier analysis \\ Spectral analysis \\ Filtering \\ Summary \\ 8. Working with Databases \\ Lightweight access with sqlite3 \\ Accessing databases from pandas \\ SQLAlchemy \\ Installing and setting up SQLAlchemy \\ Populating a database with SQLAlchemy \\ Querying the database with SQLAlchemy \\ Pony ORM \\ Dataset --- databases for lazy people \\ PyMongo and MongoDB \\ Storing data in Redis \\ Apache Cassandra \\ Summary \\ 9. Analyzing Textual Data and Social Media \\ Installing NLTK \\ Filtering out stopwords, names, and numbers \\ The bag-of-words model \\ Analyzing word frequencies \\ Naive Bayes classification \\ Sentiment analysis \\ Creating word clouds \\ Social network analysis \\ Summary \\ 10. Predictive Analytics and Machine Learning \\ A tour of scikit-learn \\ Preprocessing \\ Classification with logistic regression \\ Classification with support vector machines \\ Regression with ElasticNetCV \\ Support vector regression \\ Clustering with affinity propagation \\ Mean Shift \\ Genetic algorithms \\ Neural networks \\ Decision trees \\ Summary \\ 11. Environments Outside the Python Ecosystem and Cloud Computing \\ Exchanging information with MATLAB/Octave \\ Installing rpy2 \\ Interfacing with R \\ Sending NumPy arrays to Java \\ Integrating SWIG and NumPy \\ Integrating Boost and Python \\ Using Fortran code through f2py \\ Setting up Google App Engine \\ Running programs on PythonAnywhere \\ Working with Wakari \\ Summary \\ 12. Performance Tuning, Profiling, and Concurrency \\ Profiling the code \\ Installing Cython \\ Calling C code \\ Creating a process pool with multiprocessing \\ Speeding up embarrassingly parallel for loops with Joblib \\ Comparing Bottleneck to NumPy functions \\ Performing MapReduce with Jug \\ Installing MPI for Python \\ IPython Parallel \\ Summary \\ A. Key Concepts \\ B. Useful Functions \\ matplotlib \\ NumPy \\ pandas \\ Scikit-learn \\ SciPy \\ scipy.fftpack \\ scipy.signal \\ scipy.stats \\ C. Online Resources \\ Index", } @Book{Ivezic:2014:SDM, author = "{\v{Z}}eljko Ivezi{\'c} and Andrew (Andrew J.) Connolly and Jacob T. VanderPlas and Alexander (Alexander G.) Gray", title = "Statistics, data mining, and machine learning in astronomy: a practical {Python} guide for the analysis of survey data", publisher = pub-PRINCETON, address = pub-PRINCETON:adr, pages = "x + 540", year = "2014", ISBN = "0-691-15168-7", ISBN-13 = "978-0-691-15168-7", LCCN = "QB51.3.E43 S72 2014", bibdate = "Tue Feb 21 10:43:03 MST 2017", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", series = "Princeton series in modern observational astronomy", URL = "http://www.loc.gov/catdir/enhancements/fy1410/2013951369-b.html; http://www.loc.gov/catdir/enhancements/fy1410/2013951369-d.html", acknowledgement = ack-nhfb, subject = "Astronomy; Data processing; Statistical astronomy", subject = "Statistical astronomy; Astronomy; Data processing; Python (Computer program language); Data analysis; Data mining; COMPUTERS; General; SCIENCE; Physics; Mathematical and Computational; Python (Computer program language); Data processing; Statistical astronomy", tableofcontents = "I. Introduction \\ 1. About the Book and Supporting Material \\ 1.1. What do Data Mining, Machine Learning, and Knowledge Discovery mean? \\ 1.2. What is this book about? \\ 1.3. An incomplete survey of the relevant literature \\ 1.4. Introduction to the Python Language and the Git Code Management Tool \\ 1.5. Description of surveys and data sets used in examples \\ 1.6. Plotting and visualizing the data in this book \\ 1.7. How to efficiently use this book \\ References \\ 2. Fast Computation on Massive Data Sets \\ 2.1. Data types and Data Management systems \\ 2.2. Analysis of algorithmic efficiency \\ 2.3. Seven types of computational Problem[s] \\ 2.4. Seven strategies for speeding things up \\ 2.5. Case studies: Speedup strategies in practice \\ References \\ II. Statistical Frameworks and Exploratory Data Analysis \\ 3. Probability and Statistical Distributions \\ 3.1. Brief overview of probability and random variables \\ 3.2. Descriptive statistics \\ 3.3. Common Univariate Distribution Functions \\ 3.4. The Central Limit Theorem \\ 3.5. Bivariate and Multivariate Distribution Functions \\ 3.6. Correlation coefficients \\ 3.7. Random number generation for arbitrary distributions \\ References \\ 4. Classical Statistical Inference \\ 4.1. Classical vs. Bayesian Statistical Inference \\ 4.2. Maximum Likelihood Estimation (MLE) \\ 4.3. The goodness of Fit and Model Selection \\ 4.4. ML Applied to Gaussian Mixtures: The Expectation Maximization Algorithm \\ 4.5. Confidence estimates: the bootstrap and the jackknife \\ 4.6. Hypothesis testing \\ 4.7. Comparison of distributions \\ 4.8. Nonparametric modeling and histograms \\ 4.9. Selection effects and Luminosity Function Estimation \\ 4.10. Summary \\ References \\ 5 Bayesian Statistical Inference \\ 5.1. Introduction to the Bayesian method \\ 5.2. Bayesian priors \\ 5.3. Bayesian parameter uncertainty quantification \\ 5.4. Bayesian model selection \\ 5.5. Nonuniform priors: Eddington, Malmquist, and Lutz-Kelker biases \\ 5.6. Simple examples of Bayesian analysis: Parameter estimation \\ 5.7. Simple examples of Bayesian analysis: Model selection \\ 5.8. Numerical methods for complex problems (MCMC) \\ 5.9. Summary of pros and cons for classical and Bayesian methods \\ References \\ III. Data Mining and Machine Learning \\ 6 Searching for Structure in Point Data \\ 6.1. Nonparametric density estimation \\ 6.2. Nearest-neighbor density estimation \\ 6.3. Parametric density estimation \\ 6.4. Finding clusters in data \\ 6.5. Correlation functions \\ 6.6. Which density estimation and clustering algorithms should I use? \\ References \\ 7 Dimensionality and its reduction \\ 7.1. The curse of dimensionality \\ 7.2. The data sets used in this chapter \\ 7.3. Principal component analysis \\ 7.4. Nonnegative matrix factorization \\ 7.5. Manifold learning \\ 7.6. Independent component analysis and projection pursuit \\ 7.7. Which dimensionality reduction technique should I use? \\ References \\ 8 Regression and model fitting \\ 8.1. Formulation of the regression problem \\ 8.2. Regression for linear models \\ 8.3. Regularization and penalizing the likelihood \\ 8.4. Principal component regression \\ 8.5. Kernel regression \\ 8.6. Locally linear regression \\ 8.7. Nonlinear regression \\ 8.8. Uncertainties in the data \\ 8.9. Regression that is robust to outliers \\ 8.10. Gaussian process regression \\ 8.11. Overfitting, underfitting, and cross-validation \\ 8.12. Which regression method should I use? \\ References \\ III. Data Mining and Machine Learning (continued) \\ 9 Classification \\ 9.1. Data sets used in this chapter \\ 9.2. Assigning categories: Classification \\ 9.3. Generative classification \\ 9.4. K-nearest-neighbor classifier \\ 9.5. Discriminative classification \\ 9.6. Support vector machines \\ 9.7. Decision trees \\ 9.8. Evaluating classifiers: ROC Curves \\ 9.9. Which classifier should I use? \\ References \\ 10 Time Series Analysis \\ 10.1. Main concepts for Time Series Analysis \\ 10.2. Modeling toolkit for Time Series Analysis \\ 10.3. Analysis of Periodic Time Series \\ 10.4. Temporally localized signals \\ 10.5. Analysis of Stochastic Processes \\ 10.6. Which method should I use for Time Series Analysis? \\ References \\ IV. Appendices \\ A An Introduction to Scientific Computing with Python \\ A.1. A brief history of Python \\ A.2. The ScyPy universe \\ A.3. Getting started with Python \\ A.4. IPython: The basics of interactive computing \\ A.5. Introduction to NumPy \\ A.6. Visualization with Matplotlib \\ A.7. Overview of useful NumPy/SciPy modules \\ A.8. Efficient coding with Python and NumPy \\ A.9. Wrapping existing code in Python \\ A.10. Other resources \\ B AstroML: Machine Learning for Astronomy \\ B.1. Introduction \\ B.2. Dependencies \\ B.3. Tools included in AstroML v0.1 \\ C Astronomical Flux Measurements and Magnitudes \\ C.1. The definition of the specific flux \\ C.2. Wavelength window function for astronomical measurements \\ C.3. The astronomical magnitude systems \\ D SQL Query for Downloading SDSS Data \\ E Approximating the Fourier Transform with the FFT \\ References", } @Book{Karkera:2014:BPG, author = "Kiran R. Karkera", title = "Building probabalistic graphical models with {Python} solve machine learning problems using probabalistic graphical models implemented in {Python} with real-world applications", publisher = pub-PACKT, address = pub-PACKT:adr, year = "2014", ISBN = "1-78328-900-7, 1-78328-901-5 (e-book), 1-306-90287-8 (e-book)", ISBN-13 = "978-1-78328-900-4, 978-1-78328-901-1 (e-book), 978-1-306-90287-8 (e-book)", LCCN = "QA279 K37 2014", bibdate = "Sat Oct 24 06:46:21 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", series = "Community experience distilled", URL = "http://proquest.tech.safaribooksonline.de/9781783289004", acknowledgement = ack-nhfb, tableofcontents = "Preface \\ What this book covers \\ What you need for this book \\ Who this book is for \\ Conventions \\ Reader feedback \\ Customer support \\ Downloading the example code \\ Errata \\ Piracy \\ Questions \\ 1. Probability \\ The theory of probability \\ Goals of probabilistic inference \\ Conditional probability \\ The chain rule \\ The Bayes rule \\ Interpretations of probability \\ Random variables \\ Marginal distribution \\ Joint distribution \\ Independence \\ Conditional independence \\ Types of queries \\ Probability queries \\ MAP queries \\ Summary \\ 2. Directed Graphical Models \\ Graph terminology \\ Python digression \\ Independence and independent parameters \\ The Bayes network \\ The chain rule \\ Reasoning patterns \\ Causal reasoning \\ Evidential reasoning \\ Inter-causal reasoning \\ D-separation \\ The D-separation example \\ Blocking and unblocking a V-structure \\ Factorization and I-maps \\ The Naive Bayes model \\ The Naive Bayes example \\ Summary \\ 3. Undirected Graphical Models \\ Pairwise Markov networks \\ The Gibbs distribution \\ An induced Markov network \\ Factorization \\ Flow of influence \\ Active trail and separation \\ Structured prediction \\ Problem of correlated features \\ The CRF representation \\ The CRF example \\ The factorization-independence tango \\ Summary \\ 4. Structure Learning \\ The structure learning landscape \\ Constraint-based structure learning \\ Part I \\ Part II \\ Part III \\ Summary of constraint-based approaches \\ Score-based learning \\ The likelihood score \\ The Bayesian information criterion score \\ The Bayesian score \\ Summary of score-based learning \\ Summary \\ 5. Parameter Learning \\ The likelihood function \\ Parameter learning example using MLE \\ MLE for Bayesian networks \\ Bayesian parameter learning example using MLE \\ Data fragmentation \\ Effects of data fragmentation on parameter estimation \\ Bayesian parameter estimation \\ An example of Bayesian methods for parameter learning \\ Bayesian estimation for the Bayesian network \\ Example of Bayesian estimation \\ Summary \\ 6. Exact Inference Using Graphical Models \\ Complexity of inference \\ Real-world issues \\ Using the Variable Elimination algorithm \\ Marginalizing factors that are not relevant \\ Factor reduction to filter evidence \\ Shortcomings of the brute-force approach \\ Using the Variable Elimination approach \\ Complexity of Variable Elimination \\ Why does elimination ordering matter? \\ Graph perspective \\ Learning the induced width from the graph structure \\ Why does induced width matter? \\ Finding VE orderings \\ The tree algorithm \\ The four stages of the junction tree algorithm \\ Using the junction tree algorithm for inference \\ Stage 1.1 --- moralization \\ Stage 1.2 --- triangulation \\ Stage 1.3 --- building the join tree \\ Stage 2 --- initializing potentials \\ Stage 3 --- message passing \\ Summary \\ 7. Approximate Inference Methods \\ The optimization perspective \\ Belief propagation in general graphs \\ Creating a cluster graph to run LBP \\ Message passing in LBP \\ Steps in the LBP algorithm \\ Improving the convergence of LBP \\ Applying LBP to segment an image \\ Understanding energy-based models \\ Visualizing unary and pairwise factors on a 3 x 3 grid \\ Creating a model for image segmentation \\ Applications of LBP \\ Sampling-based methods \\ Forward sampling \\ The accept-reject sampling method \\ The Markov Chain Monte Carlo sampling process \\ The Markov property \\ The Markov chain \\ Reaching a steady state \\ Sampling using a Markov chain \\ Gibbs sampling \\ Steps in the Gibbs sampling procedure \\ An example of Gibbs sampling \\ Summary \\ A. References \\ Chapter 1 \\ Chapter 2 \\ Chapter 3 \\ Chapter 4 \\ Chapter 5 \\ Chapter 6 \\ Chapter 7 \\ Other references \\ Index", } @Article{Koenka:2014:IOS, author = "Israel Joel Koenka and Jorge S{\'a}iz and Peter C. Hauser", title = "{Instrumentino}: an open-source modular {Python} framework for controlling {Arduino} based experimental instruments", journal = j-COMP-PHYS-COMM, volume = "185", number = "10", pages = "2724--2729", month = oct, year = "2014", CODEN = "CPHCBZ", ISSN = "0010-4655 (print), 1879-2944 (electronic)", ISSN-L = "0010-4655", bibdate = "Sat Aug 16 08:37:41 MDT 2014", bibsource = "http://www.math.utah.edu/pub/tex/bib/compphyscomm2010.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.sciencedirect.com/science/article/pii/S0010465514002112", acknowledgement = ack-nhfb, fjournal = "Computer Physics Communications", journal-URL = "http://www.sciencedirect.com/science/journal/00104655/", } @Article{Korzen:2014:PPP, author = "Marcin Korze{\'n} and Szymon Jaroszewicz", title = "{PaCAL}: A {Python} Package for Arithmetic Computations with Random Variables", journal = j-J-STAT-SOFT, volume = "57", number = "10", pages = "??--??", month = may, year = "2014", CODEN = "JSSOBK", ISSN = "1548-7660", ISSN-L = "1548-7660", bibdate = "Mon Jun 16 11:01:52 MDT 2014", bibsource = "http://www.math.utah.edu/pub/tex/bib/jstatsoft.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.jstatsoft.org/v57/i10", acknowledgement = ack-nhfb, fjournal = "Journal of Statistical Software", journal-URL = "http://www.jstatsoft.org/", pubdates = "Submitted 2012-02-14; Accepted 2013-07-21", } @Article{Koulouri:2014:TIP, author = "Theodora Koulouri and Stanislao Lauria and Robert D. Macredie", title = "Teaching Introductory Programming: a Quantitative Evaluation of Different Approaches", journal = j-TOCE, volume = "14", number = "4", pages = "26:1--26:??", month = dec, year = "2014", CODEN = "????", DOI = "http://dx.doi.org/10.1145/2662412", ISSN = "1946-6226", bibdate = "Wed Feb 11 21:50:28 MST 2015", bibsource = "http://www.acm.org/pubs/toce; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/toce.bib", abstract = "Teaching programming to beginners is a complex task. In this article, the effects of three factors-choice of programming language, problem-solving training, and the use of formative assessment-on learning to program were investigated. The study adopted an iterative methodological approach carried out across 4 consecutive years. To evaluate the effects of each factor (implemented as a single change in each iteration) on students' learning performance, the study used quantitative, objective metrics. The findings revealed that using a syntactically simple language (Python) instead of a more complex one (Java) facilitated students' learning of programming concepts. Moreover, teaching problem solving before programming yielded significant improvements in student performance. These two factors were found to have variable effects on the acquisition of basic programming concepts. Finally, it was observed that effective formative feedback in the context of introductory programming depends on multiple parameters. The article discusses the implications of these findings, identifies avenues for further research, and argues for the importance of studies in computer science education anchored on sound research methodologies to produce generalizable results.", acknowledgement = ack-nhfb, articleno = "26", fjournal = "ACM Transactions on Computing Education", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J1193", } @Book{Libeskind-Hadas:2014:CBP, author = "Ran Libeskind-Hadas and Eliot Christen Bush", title = "Computing for biologists: {Python} programming and principles", publisher = pub-CAMBRIDGE, address = pub-CAMBRIDGE:adr, pages = "x + 207", year = "2014", ISBN = "1-107-04282-8 (hardcover), 1-107-64218-3 (paperback)", ISBN-13 = "978-1-107-04282-7 (hardcover), 978-1-107-64218-8 (paperback)", LCCN = "QH324.2 .L53 2014", bibdate = "Wed Sep 30 07:48:31 MDT 2015", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", URL = "http://www.cambridge.org/us/academic/subjects/life-sciences/genomics-bioinformatics-and-systems-biology/computing-biologists-python-programming-and-principles", acknowledgement = ack-nhfb, subject = "Biology; Data processing; Python (Computer program language); Computer programming", } @Article{Logaras:2014:PAE, author = "Evangelos Logaras and Orsalia G. Hazapis and Elias S. Manolakos", title = "{Python} to accelerate embedded {SoC} design: a case study for systems biology", journal = j-TECS, volume = "13", number = "4", pages = "84:1--84:??", month = feb, year = "2014", CODEN = "????", DOI = "http://dx.doi.org/10.1145/2560032", ISSN = "1539-9087 (print), 1558-3465 (electronic)", ISSN-L = "1539-9087", bibdate = "Tue Mar 11 18:33:06 MDT 2014", bibsource = "http://portal.acm.org/; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/tecs.bib", abstract = "We present SysPy (System Python) a tool which exploits the strengths of the popular Python scripting language to boost design productivity of embedded System on Chips for FPGAs. SysPy acts as a ``glue'' software between mature HDLs, ready-to-use VHDL components and programmable processor soft IP cores. SysPy can be used to: (i) automatically translate hardware components described in Python into synthesizable VHDL, (ii) capture top-level structural descriptions of processor-centric SoCs in Python, (iii) implement all the steps necessary to compile the user's C code for an instruction set processor core and generate processor specific Tcl scripts that import to the design project all the necessary HDL files of the processor's description and instantiate/connect the core to other blocks in a synthesizable top-level Python description. Moreover, we have developed a Hardware Abstraction Layer (HAL) in Python which allows user applications running in a host PC to utilize effortlessly the SoC's resources in the FPGA. SysPy's design capabilities, when complemented with the developed HAL software API, provide all the necessary tools for hw/sw partitioning and iterative design for efficient SoC's performance tuning. We demonstrate how SysPy's design flow and functionalities can be used by building a processor-centric embedded SoC for computational systems biology. The designed SoC, implemented using a Xilinx Virtex-5 FPGA, combines the flexibility of a programmable soft processor core (Leon3) with the high performance of an application specific core to simulate flexibly and efficiently the stochastic behavior of large size biomolecular reaction networks. Such networks are essential for studying the dynamics of complex biological systems consisting of multiple interacting pathways.", acknowledgement = ack-nhfb, articleno = "84", fjournal = "ACM Transactions on Embedded Computing Systems", journal-URL = "http://portal.acm.org/browse_dl.cfm?&idx=J840", } @Book{Lopez:2014:MPR, author = "F{\'e}lix L{\'o}pez and V{\'i}ctor Romero", title = "Mastering {Python} regular expressions: leverage regular expressions in {Python} even for the most complex features", publisher = pub-PACKT, address = pub-PACKT:adr, pages = "iii + 93", year = "2014", ISBN = "1-78328-315-7 (paperback), 1-78328-316-5 (e-book)", ISBN-13 = "978-1-78328-315-6 (paperback), 978-1-78328-316-3 (e-book)", LCCN = "QA76.73.P98 L67 2014", bibdate = "Sat Oct 24 07:11:51 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", series = "Community experience distilled", URL = "http://proquest.safaribooksonline.com/?fpi=9781783283156", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Text processing (Computer science); COMPUTERS / Programming Languages / Python", tableofcontents = "Preface \\ What this book covers \\ What you need for this book \\ Who this book is for \\ Conventions \\ Reader feedback \\ Customer support \\ Downloading the example code \\ Errata \\ Piracy \\ Questions \\ 1. Introducing Regular Expressions \\ History, relevance, and purpose \\ The regular expression syntax \\ Literals \\ Character classes \\ Predefined character classes \\ Alternation \\ Quantifiers \\ Greedy and reluctant quantifiers \\ Boundary Matchers \\ Summary \\ 2. Regular Expressions with Python \\ A brief introduction \\ Backslash in string literals \\ String Python 2.x \\ Building blocks for Python regex \\ RegexObject \\ Searching \\ match(string[, pos[, endpos]]) \\ search(string[, pos[, endpos]]) \\ findall(string[, pos[, endpos]]) \\ finditer(string[, pos[, endpos]]) \\ Modifying a string \\ split(string, maxsplit=0) \\ sub(repl, string, count=0) \\ subn(repl, string, count=0) \\ MatchObject \\ group([group1, \ldots{} ]) \\ groups([default]) \\ groupdict([default]) \\ start([group]) \\ end([group]) \\ span([group]) \\ expand(template) \\ Module operations \\ escape() \\ purge() \\ Compilation flags \\ re.IGNORECASE or re.I \\ re.MULTILINE or re.M \\ re.DOTALL or re.S \\ re.LOCALE or re.L \\ re.UNICODE or re.U \\ re.VERBOSE or re.X \\ re.DEBUG \\ Python and regex special considerations \\ Differences between Python and other flavors \\ Unicode \\ What's new in Python 3 \\ Summary \\ 3. Grouping \\ Introduction \\ Backreferences \\ Named groups \\ Non-capturing groups \\ Atomic groups \\ Special cases with groups \\ Flags per group \\ yes-pattern|no-pattern \\ Overlapping groups \\ Summary \\ 4. Look Around \\ Look ahead \\ Negative look ahead \\ Look around and substitutions \\ Look behind \\ Negative look behind \\ Look around and groups \\ Summary \\ 5. Performance of Regular Expressions \\ Benchmarking regular expressions with Python \\ The RegexBuddy tool \\ Understanding the Python regex engine \\ Backtracking \\ Optimization recommendations \\ Reuse compiled patterns \\ Extract common parts in alternation \\ Shortcut to alternation \\ Use non-capturing groups when appropriate \\ Be specific \\ Don't be greedy \\ Summary \\ Index", } @Book{Lott:2014:MOO, author = "Steven F. Lott", title = "Mastering object-oriented {Python}: grasp the intricacies of object-oriented programming in {Python} in order to efficiently build powerful real-world applications", publisher = pub-PACKT, address = pub-PACKT:adr, pages = "xii + 609", year = "2014", ISBN = "1-78328-097-2, 1-78328-098-0 (e-book)", ISBN-13 = "978-1-78328-097-1, 978-1-78328-098-8 (e-book)", LCCN = "QA76.73.P98 L688 2014", bibdate = "Sat Oct 24 07:21:25 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", series = "Community expertise distilled", URL = "http://proquest.safaribooksonline.com/?fpi=9781783280971", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Object-oriented programming (Computer science)", tableofcontents = "Preface \\ What this book covers \\ What you need for this book \\ Who this book is for \\ Conventions \\ Reader feedback \\ Customer support \\ Downloading the example code for this book \\ Errata \\ Piracy \\ Questions \\ Some Preliminaries \\ About casino Blackjack \\ Playing the game \\ Blackjack player strategies \\ Object design for simulating Blackjack \\ Performance --- the timeit module \\ Testing --- unittest and doctest \\ Unit testing and technology spikes \\ Docstrings --- RST markup and documentation tools \\ The IDE question \\ About special method names \\ Summary \\ I. Pythonic Classes via Special Methods \\ Pythonic Classes via Special Methods \\ 1. The __init__() Method \\ The implicit superclass --- object \\ The base class object __init__() method \\ Implementing __init__() in a superclass \\ Using __init__() to create manifest constants \\ Leveraging __init__() via a factory function \\ Faulty factory design and the vague else clause \\ Simplicity and consistency using elif sequences \\ Simplicity using mapping and class objects \\ Two parallel mappings \\ Mapping to a tuple of values \\ The partial function solution \\ Fluent APIs for factories \\ Implementing __init__() in each subclass \\ Simple composite objects \\ Wrapping a collection class \\ Extending a collection class \\ More requirements and another design \\ Complex composite objects \\ Complete composite object initialization \\ Stateless objects without __init__() \\ Some additional class definitions \\ Multi-strategy __init__() \\ More complex initialization alternatives \\ Initializing static methods \\ Yet more __init__() techniques \\ Initialization with type validation \\ Initialization, encapsulation, and privacy \\ Summary \\ 2. Integrating Seamlessly with Python --- Basic Special Methods \\ The __repr__() and __str__() methods \\ Non collection __str__() and __repr__() \\ Collection __str__() and __repr__() \\ The __format__() method \\ Nested formatting specifications \\ Collections and delegating format specifications \\ The __hash__() method \\ Deciding what to hash \\ Inheriting definitions for immutable objects \\ Overriding definitions for immutable objects \\ Overriding definitions for mutable objects \\ Making a frozen hand from a mutable hand \\ The __bool__() method \\ The __bytes__() method \\ The comparison operator methods \\ Designing comparisons \\ Implementation of comparison for objects of the same class \\ Implementation of comparison for objects of mixed classes \\ Hard totals, soft totals, and polymorphism \\ A mixed class comparison example \\ The __del__() method \\ The reference count and destruction \\ Circular references and garbage collection \\ Circular references and the weakref module \\ The __del__() and close() methods \\ The __new__() method and immutable objects \\ The __new__() method and metaclasses \\ Metaclass example 1 --- ordered attributes \\ Metaclass example 2 --- self-reference \\ Summary \\ 3. Attribute Access, Properties, and Descriptors \\ Basic attribute processing \\ Attributes and the __init__() method \\ Creating properties \\ Eagerly computed properties \\ Setter and deleter properties \\ Using special methods for attribute access \\ Creating immutable objects with __slots__ \\ Creating immutable objects as a tuple subclass \\ Eagerly computed attributes \\ The __getattribute__() method \\ Creating descriptors \\ Using a nondata descriptor \\ Using a data descriptor \\ Summary, design considerations, and trade-offs \\ Properties versus attributes \\ Designing with descriptors \\ Looking forward \\ 4. The ABCs of Consistent Design \\ Abstract base classes \\ Base classes and polymorphism \\ Callables \\ Containers and collections \\ Numbers \\ Some additional abstractions \\ The iterator abstraction \\ Contexts and context managers \\ The abc module \\ Summary, design considerations, and trade-offs \\ Looking forward \\ 5. Using Callables and Contexts \\ Designing with ABC callables \\ Improving performance \\ Using memoization or caching \\ Using functools for memoization \\ Aiming for simplicity using the callable API \\ Complexities and the callable API \\ Managing contexts and the with statement \\ Using the decimal context \\ Other contexts \\ Defining the __enter__() and __exit__() methods \\ Handling exceptions \\ Context manager as a factory \\ Cleaning up in a context manager \\ Summary \\ Callable design considerations and trade-offs \\ Context manager design considerations and trade-offs \\ Looking forward \\ 6. Creating Containers and Collections \\ ABCs of collections \\ Examples of special methods \\ Using the standard library extensions \\ The namedtuple() function \\ The deque class \\ The ChainMap use case \\ The OrderedDict collection \\ The defaultdict subclass \\ The counter collection \\ Creating new kinds of collections \\ Defining a new kind of sequence \\ A statistical list \\ Choosing eager versus lazy calculation \\ Working with __getitem__(), __setitem__(), __delitem__(), and slices \\ Implementing __getitem__(), __setitem__(), and __delitem__() \\ Wrapping a list and delegating \\ Creating iterators with __iter__() \\ Creating a new kind of mapping \\ Creating a new kind of set \\ Some design rationale \\ Defining the Tree class \\ Defining the TreeNode class \\ Demonstrating the binary tree set \\ Summary \\ Design considerations and Trade-offs \\ Looking forward \\ 7. Creating Numbers \\ ABCs of numbers \\ Deciding which types to use \\ The method resolution and the reflected operator concept \\ The arithmetic operator's special methods \\ Creating a numeric class \\ Defining FixedPoint initialization \\ Defining FixedPoint binary arithmetic operators \\ Defining FixedPoint unary arithmetic operators \\ Implementing FixedPoint reflected operators \\ Implementing FixedPoint comparison operators \\ Computing a numeric hash \\ Designing more useful rounding \\ Implementing other special methods \\ Optimization with the in-place operators \\ Summary \\ Design considerations and trade-offs \\ Looking forward \\ 8. Decorators and Mixins --- Cross-cutting Aspects \\ Class and meaning \\ Constructing the functions \\ Constructing the class \\ Some class design principles \\ Aspect-oriented programming \\ Using built-in decorators \\ Using standard library decorators \\ Using standard library mixin classes \\ Using the context manager mixin class \\ Turning off a class feature \\ Writing a simple function decorator \\ Creating separate loggers \\ Parameterizing a decorator \\ Creating a method function decorator \\ Creating a class decorator \\ Adding method functions to a class \\ Using decorators for security \\ Summary \\ Design considerations and trade-offs \\ Looking forward \\ II. Persistence and Serialization \\ Persistence and Serialization \\ 9. Serializing and Saving --- JSON, YAML, Pickle, CSV, and XML \\ Understanding persistence, class, state, and representation \\ Common Python terminologies \\ Filesystem and network considerations \\ Defining classes to support persistence \\ Rendering a blog and posts \\ Dumping and loading with JSON \\ Supporting JSON in our classes \\ Customizing JSON encoding \\ Customizing JSON decoding \\ The security and the eval() issue \\ Refactoring the encode function \\ Standardizing the date string \\ Writing JSON to a file \\ Dumping and loading with YAML \\ Formatting YAML data on a file \\ Extending the YAML representation \\ Security and safe loading \\ Dumping and loading with pickle \\ Designing a class for reliable pickle processing \\ Security and the global issue \\ Dumping and loading with CSV \\ Dumping simple sequences to CSV \\ Loading simple sequences from CSV \\ Handling containers and complex classes \\ Dumping and loading multiple row types in a CSV file \\ Filtering CSV rows with an iterator \\ Dumping and loading joined rows in a CSV file \\ Dumping and loading with XML \\ Dumping objects using string templates \\ Dumping objects with xml.etree.ElementTree \\ Loading XML documents \\ Summary \\ Design considerations and trade-offs \\ Schema evolution \\ Looking forward \\ 10. Storing and Retrieving Objects via Shelve \\ Analyzing persistent object use cases \\ The ACID properties \\ Creating a shelf \\ Designing shelvable objects \\ Designing keys for our objects \\ Generating surrogate keys for objects \\ Designing a class with a simple key \\ Designing classes for containers or collections \\ Referring to objects via foreign keys \\ Designing CRUD operations for complex objects \\ Searching, scanning, and querying \\ Designing an access layer for shelve \\ Writing a demonstration script \\ Creating indexes to improve efficiency \\ Creating top-level indices \\ Adding yet more index maintenance \\ The writeback alternative to index updates \\ Schema evolution \\ Summary \\ Design considerations and trade-offs \\ Application software layers \\ Looking forward \\ 11. Storing and Retrieving Objects via SQLite \\ SQL databases, persistence, and objects \\ The SQL data model --- rows and tables \\ CRUD processing via SQL DML statements \\ Querying rows with the SQL SELECT statement \\ SQL transactions and the ACID properties \\ Designing primary and foreign database keys \\ Processing application data with SQL \\ Implementing class-like processing in pure SQL \\ Mapping Python objects to SQLite BLOB columns \\ Mapping Python objects to database rows manually \\ Designing an access layer for SQLite \\ Implementing container relationships \\ Improving performance with indices \\ Adding an ORM layer \\ Designing ORM-friendly classes \\ Building the schema with the ORM layer \\ Manipulating objects with the ORM layer \\ Querying post objects given a tag string \\ Improving performance with indices \\ Schema evolution \\ Summary \\ Design considerations and trade-offs \\ Mapping alternatives \\ Keys and key designs \\ Application software layers \\ Looking forward \\ 12. Transmitting and Sharing Objects \\ Class, state, and representation \\ Using HTTP and REST to transmit objects \\ Implementing CRUD operations via REST \\ Implementing non-CRUD operations \\ The REST protocol and ACID \\ Choosing a representation --- JSON, XML, or YAML \\ Implementing a REST server --- WSGI and mod_wsgi \\ Creating a simple REST application and server \\ Implementing a REST client \\ Demonstrating and unit testing the RESTful services \\ Using Callable classes for WSGI applications \\ Designing RESTful object identifiers \\ Multiple layers of REST services \\ Creating the roulette server \\ Creating the roulette client \\ Creating a secure REST service \\ The WSGI Authentication application \\ Implementing REST with a web application framework \\ Using a message queue to transmit objects \\ Defining processes \\ Building queues and supplying data \\ Summary \\ Design considerations and trade-offs \\ Schema evolution \\ Application software layers \\ Looking forward \\ 13. Configuration Files and Persistence \\ Configuration file use cases \\ Representation, persistence, state, and usability \\ Application configuration design patterns \\ Configuring via object construction \\ Implementing a configuration hierarchy \\ Storing the configuration in the INI files \\ Handling more literals via the eval() variants \\ Storing the configuration in PY files \\ Configuration via class definitions \\ Configuration via SimpleNamespace \\ Using Python with exec() for the configuration \\ Why is exec() a nonproblem? \\ Using ChainMap for defaults and overrides \\ Storing the configuration in JSON or YAML files \\ Using flattened JSON configurations \\ Loading a YAML configuration \\ Storing the configuration in property files \\ Parsing a properties file \\ Using a properties file \\ Storing the configuration in XML files --- PLIST and others \\ Customized XML configuration files \\ Summary \\ Design considerations and trade-offs \\ Creating a shared configuration \\ Schema evolution \\ Looking Forward \\ III. Testing, Debugging, Deploying, and Maintaining \\ Testing, Debugging, Deploying, and Maintaining \\ 14. The Logging and Warning Modules \\ Creating a basic log \\ Creating a shared class-level logger \\ Configuring the loggers \\ Starting up and shutting down the logging system \\ Naming the loggers \\ Extending the logger levels \\ Defining handlers for multiple destinations \\ Managing the propagation rules \\ Configuration gotcha \\ Specializing logging for control, debug, audit, and security \\ Creating a debugging log \\ Creating audit and security logs \\ Using the warnings module \\ Showing API changes with a warning \\ Showing configuration problems with a warning \\ Showing possible software problems with a warning \\ Advanced logging --- the last few messages and network destinations \\ Building an automatic tail buffer \\ Sending logging messages to a remote process \\ Preventing queue overrun \\ Summary \\ Design considerations and trade-offs \\ Looking forward \\ 15. Designing for Testability \\ Defining and isolating units for testing \\ Minimizing the dependencies \\ Creating simple unit tests \\ Creating a test suite \\ Including edge and corner cases \\ Mocking dependencies for testing \\ Using more mocks to test more behaviors \\ Using doctest to define test cases \\ Combining doctest and unittest \\ Creating a more complete test package \\ Using setup and teardown \\ Using setup and teardown with OS resources \\ Using setup and teardown with databases \\ The TestCase class hierarchy \\ Using externally defined expected results \\ Automated integration or performance testing \\ Summary \\ Design considerations and trade-offs \\ Looking forward \\ 16. Coping With the Command Line \\ The OS interface and the command line \\ Arguments and options \\ Parsing the command line with argparse \\ A simple on/off option \\ An option with an argument \\ Positional arguments \\ All other arguments \\ --version display and exit \\ --help display and exit \\ Integrating command-line options and environment variables \\ Providing more configurable defaults \\ Overriding configuration file settings with environment variables \\ Overriding environment variables with the configuration files \\ Making the configuration aware of the None values \\ Customizing the help output \\ Creating a top-level main() function \\ Ensuring DRY for the configuration \\ Managing nested configuration contexts \\ Programming In The Large \\ Designing command classes \\ Adding the analysis command subclass \\ Adding and packaging more features into an application \\ Designing a higher-level composite command \\ Additional composite command design patterns \\ Integrating with other applications \\ Summary \\ Design considerations and trade-offs \\ Looking forward \\ 17. The Module and Package Design \\ Designing a module \\ Some module design patterns \\ Module versus class \\ The expected content of a module \\ Whole module versus module items \\ Designing a package \\ Designing a module-package hybrid \\ Designing a package with alternate implementations \\ Designing a main script and the __main__ module \\ Creating an executable script file \\ Creating a __main__ module \\ Programming in the large \\ Designing long-running applications \\ Organizing code into src, bin, and test \\ Installing Python modules \\ Summary \\ Design considerations and trade-offs \\ Looking forward \\ 18. Quality and Documentation \\ Writing docstrings for the help() function \\ Using pydoc for documentation \\ Better output via the RST markup \\ Blocks of text \\ The RST inline markup \\ RST directives \\ Learning RST \\ Writing effective docstrings \\ Writing file-level docstrings, including modules and packages \\ Writing API details in RST markup \\ Writing class and method function docstrings \\ Writing function docstrings \\ More sophisticated markup techniques \\ Using Sphinx to produce the documentation \\ Using the Sphinx quickstart \\ Writing the Sphinx documentation \\ Filling in the 4+1 views for documentation \\ Writing the implementation document \\ Creating the Sphinx cross-references \\ Refactoring Sphinx files into directories \\ Writing the documentation \\ Literate programming \\ Use cases for literate programming \\ Working with a literate programming tool \\ Summary \\ Design considerations and trade-offs \\ Index", } @Book{Lott:2014:PSA, author = "Steven F. Lott", title = "{Python} for secret agents: analyze, encrypt, and uncover intelligence data using {Python}, the essential tool for all aspiring secret agents", publisher = pub-PACKT, address = pub-PACKT:adr, pages = "v + 197", year = "2014", ISBN = "1-78398-042-7 (paperback), 1-78398-043-5 (e-book)", ISBN-13 = "978-1-78398-042-0 (paperback), 978-1-78398-043-7 (e-book)", LCCN = "TK5105.8883", bibdate = "Sat Oct 24 06:28:49 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", series = "Community experience distilled", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Data mining; Data mining.; Python (Computer program language)", tableofcontents = "Preface \\ What this book covers \\ What you need for this book \\ Who this book is for \\ Conventions \\ Reader feedback \\ Customer support \\ Downloading the example code \\ Errata \\ Piracy \\ Questions \\ 1. Our Espionage Toolkit \\ Getting the tools of the trade --- Python 3.3 \\ Windows secrets \\ Mac OS X secrets \\ Getting more tools --- a text editor \\ Getting other developer tools \\ Getting a tool to get more Python components \\ Confirming our tools \\ How do we stop? \\ Using the help() system \\ Mac OS and GNU/Linux secrets \\ Windows secrets \\ Using the help mode \\ Background briefing --- math and numbers \\ The usual culprits \\ The ivory tower of numbers \\ Integer numbers \\ Rational numbers \\ Floating-point numbers \\ Decimal numbers \\ Complex numbers \\ Outside the numbers \\ Assigning values to variables \\ Writing scripts and seeing output \\ Gathering user input \\ Handling exceptions \\ Looping and trying again \\ Handling text and strings \\ Converting between numbers and strings \\ Parsing strings \\ Organizing our software \\ Working with files and folders \\ Creating a file \\ Reading a file \\ Defining more complex logical conditions \\ Solving problems --- recovering a lost password \\ Reading a word corpus \\ Reading a ZIP archive \\ Using brute-force search \\ Summary \\ 2. Acquiring Intelligence Data \\ Accessing data from the Internet \\ Background briefing --- the TCP/IP protocols \\ Using http.client for HTTP GET \\ Changing our client information \\ Using FTP in Python \\ Downloading a file via FTP \\ Using our FTP get() function \\ Using urllib for HTTP, FTP, or file access \\ Using urllib for FTP access \\ Using a REST API in Python \\ Getting simple REST data \\ Using more complex RESTful queries \\ Saving our data via JSON \\ Organizing collections of data \\ Using a Python list \\ Using list index operations \\ Using a Python tuple \\ Using generator expressions with list of tuples \\ Using a Python dictionary mapping \\ Using the dictionary access methods \\ Transforming sequences with generator functions \\ Using the defaultdict and counter mappings \\ Using a Python set \\ Using the for statement with a collection \\ Using Python operators on collections \\ Solving problems --- currency conversion rates \\ Summary \\ 3. Encoding Secret Messages with Steganography \\ Background briefing --- handling file formats \\ Working with the OS filesystem \\ glob \\ os \\ Processing simple text files \\ Working with ZIP files \\ Working with JSON files \\ Working with CSV files \\ JPEG and PNG graphics --- pixels and metadata \\ Using the Pillow library \\ Adding the required supporting libraries \\ GNU/Linux secrets \\ Mac OS X secrets \\ Windows secrets \\ Installing and confirming Pillow \\ Decoding and encoding image data \\ Manipulating images --- resizing and thumbnails \\ Manipulating images --- cropping \\ Manipulating images --- enhancing \\ Manipulating images --- filtering \\ Manipulating images --- ImageOps \\ Some approaches to steganography \\ Getting the red-channel data \\ Extracting bytes from Unicode characters \\ Manipulating bits and bytes \\ Assembling the bits \\ Encoding the message \\ Decoding a message \\ Detecting and preventing tampering \\ Using hash totals to validate a file \\ Using a key with a digest \\ Solving problems --- encrypting a message \\ Unpacking a message \\ Summary \\ 4. Drops, Hideouts, Meetups, and Lairs \\ Background briefing --- latitude, longitude, and GPS \\ Coping with GPS device limitations \\ Handling politics --- borders, precincts, jurisdictions, and neighborhoods \\ Finding out where we are with geocoding services \\ Geocoding an address \\ Reverse geocoding a latitude-longitude point \\ How close? What direction? \\ Combining geocoding and haversine \\ Compressing data to make grid codes \\ Creating GeoRef codes \\ Decoding a GeoRef code \\ Creating Maidenhead grid codes \\ Decoding the Maidenhead grid codes \\ Creating natural area codes \\ Decoding natural area codes \\ Solving problems --- closest good restaurant \\ Creating simple Python objects \\ Working with HTML web services --- tools \\ Working with HTML web services --- getting the page \\ Working with HTML web services --- parsing a table \\ Making a simple Python object from columns of data \\ Enriching Python objects with geocodes \\ Enriching Python objects with health scores \\ Combining the pieces and parts \\ Working with clean data portals \\ Making a simple Python object from a JSON document \\ Combining different pieces and parts \\ Final steps \\ Understanding the data --- schema and metadata \\ Summary \\ 5. A Spymaster's More Sensitive Analyses \\ Creating statistical summaries \\ Parsing the raw data file \\ Finding an average value \\ Understanding generator expressions \\ Finding the value in the middle \\ Finding the most popular value \\ Creating Python modules and applications \\ Creating and using a module \\ Creating an application module \\ Creating a hybrid module \\ Creating our own classes of objects \\ Using a class definition \\ Comparisons and correlations \\ Computing the standard deviation \\ Computing a standardized score \\ Comparing a sequence and an iterable \\ Computing a coefficient of correlation \\ Writing high-quality software \\ Building a self-testing module and a test module \\ Creating more sophisticated tests \\ Adding doctest cases to a class definition \\ Solving problems --- analyzing some interesting datasets \\ Getting some more data \\ Further research \\ Summary \\ Index", } @Book{Lubanovic:2014:IPM, author = "Bill Lubanovic", title = "Introducing {Python}: modern computing in simple packages", publisher = pub-ORA-MEDIA, address = pub-ORA-MEDIA:adr, pages = "xx + 454", year = "2014", ISBN = "1-4493-5936-1 (paperback), 1-4493-6119-6 (e-book), 1-4493-6118-8 (e-book)", ISBN-13 = "978-1-4493-5936-2 (paperback), 978-1-4493-6119-8 (e-book), 978-1-4493-6118-1 (e-book)", LCCN = "QA76.73.P98 L83 2015", bibdate = "Sat Oct 24 06:14:54 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", tableofcontents = "Dedication \\ Preface \\ Audience \\ Outline \\ Python Versions \\ Conventions Used in This Book \\ Using Code Examples \\ Safari Books Online \\ How to Contact Us \\ Acknowledgments \\ 1. A Taste of Py \\ Python in the Real World \\ Python versus Language X \\ So, Why Python? \\ When Not to Use Python \\ Python 2 versus Python 3 \\ Installing Python \\ Running Python \\ Using the Interactive Interpreter \\ Use Python Files \\ What's Next? \\ Your Moment of Zen \\ Things to Do \\ 2. Py Ingredients: Numbers, Strings, and Variables \\ Variables, Names, and Objects \\ Numbers \\ Integers \\ Precedence \\ Bases \\ Type Conversions \\ How Big Is an int? \\ Floats \\ Math Functions \\ Strings \\ Create with Quotes \\ Convert Data Types by Using str() \\ Escape with \ \\ Combine with + \\ Duplicate with * \\ Extract a Character with [] \\ Slice with [] \\ Get Length with len() \\ Split with split() \\ Combine with join() \\ Playing with Strings \\ Case and Alignment \\ Substitute with replace() \\ More String Things \\ Things to Do \\ 3. Py Filling: Lists, Tuples, Dictionaries, and Sets \\ Lists and Tuples \\ Lists \\ Create with [] or list() \\ Convert Other Data Types to Lists with list() \\ Get an Item by Using [] \\ Lists of Lists \\ Change an Item by [] \\ Get a Slice to Extract Items by Offset Range \\ Add an Item to the End with append() \\ Combine Lists by Using extend() or += \\ Add an Item by Offset with insert() \\ Delete an Item by Offset with del \\ Delete an Item by Value with remove() \\ Get an Item by Offset and Delete It by Using pop() \\ Find an Item's Offset by Value with index() \\ Test for a Value with in \\ Count Occurrences of a Value by Using count() \\ Convert to a String with join() \\ Reorder Items with sort() \\ Get Length by Using len() \\ Assign with =, Copy with copy() \\ Tuples \\ Create a Tuple by Using () \\ Tuples versus Lists \\ Dictionaries \\ Create with \{\} \\ Convert by Using dict() \\ Add or Change an Item by [] \\ Combine Dictionaries with update() \\ Delete an Item by Key with del \\ Delete All Items by Using clear() \\ Test for a Key by Using in \\ Get an Item by [] \\ Get All Keys by Using keys() \\ Get All Values by Using values() \\ Get All Key-Value Pairs by Using items() \\ Assign with =, Copy with copy() \\ Sets \\ Create with set() \\ Convert from Other Data Types with set() \\ Test for Value by Using in \\ Combinations and Operators \\ Compare Data Structures \\ Make Bigger Data Structures \\ Things to Do \\ 4. Py Crust: Code Structures \\ Comment with # \\ Continue Lines with \ \\ Compare with if, elif, and else \\ What Is True? \\ Repeat with while \\ Cancel with break \\ Skip Ahead with continue \\ Check break Use with else \\ Iterate with for \\ Cancel with break \\ Skip with continue \\ Check break Use with else \\ Iterate Multiple Sequences with zip() \\ Generate Number Sequences with range() \\ Other Iterators \\ Comprehensions \\ List Comprehensions \\ Dictionary Comprehensions \\ Set Comprehensions \\ Generator Comprehensions \\ Functions \\ Positional Arguments \\ Keyword Arguments \\ Specify Default Parameter Values \\ Gather Positional Arguments with * \\ Gather Keyword Arguments with ** \\ Docstrings \\ Functions Are First-Class Citizens \\ Inner Functions \\ Closures \\ Anonymous Functions: the lambda() Function \\ Generators \\ Decorators \\ Namespaces and Scope \\ Uses of _ and __ in Names \\ Handle Errors with try and except \\ Make Your Own Exceptions \\ Things to Do \\ 5. Py Boxes: Modules, Packages, and Programs \\ Standalone Programs \\ Command-Line Arguments \\ Modules and the import Statement \\ Import a Module \\ Import a Module with Another Name \\ Import Only What You Want from a Module \\ Module Search Path \\ Packages \\ The Python Standard Library \\ Handle Missing Keys with setdefault() and defaultdict() \\ Count Items with Counter() \\ Order by Key with OrderedDict() \\ Stack + Queue == deque \\ Iterate over Code Structures with itertools \\ Print Nicely with pprint() \\ More Batteries: Get Other Python Code \\ Things to Do \\ 6. Oh Oh: Objects and Classes \\ What Are Objects? \\ Define a Class with class \\ Inheritance \\ Override a Method \\ Add a Method \\ Get Help from Your Parent with super \\ In self Defense \\ Get and Set Attribute Values with Properties \\ Name Mangling for Privacy \\ Method Types \\ Duck Typing \\ Special Methods \\ Composition \\ When to Use Classes and Objects versus Modules \\ Named Tuples \\ Things to Do \\ 7. Mangle Data Like a Pro \\ Text Strings \\ Unicode \\ Python 3 Unicode strings \\ Encode and decode with UTF-8 \\ Encoding \\ Decoding \\ For more information \\ Format \\ Old style with \% \\ New style formatting with {} and format \\ Match with Regular Expressions \\ Exact match with match() \\ First match with search() \\ All matches with findall() \\ Split at matches with split() \\ Replace at matches with sub() \\ Patterns: special characters \\ Patterns: using specifiers \\ Patterns: specifying match output \\ Binary Data \\ bytes and bytearray \\ Convert Binary Data with struct \\ Other Binary Data Tools \\ Convert Bytes/Strings with binascii() \\ Bit Operators \\ Things to Do \\ 8. Data Has to Go Somewhere \\ File Input/Output \\ Write a Text File with write() \\ Read a Text File with read(), readline(), or readlines() \\ Write a Binary File with write() \\ Read a Binary File with read() \\ Close Files Automatically by Using with \\ Change Position with seek() \\ Structured Text Files \\ CSV \\ XML \\ HTML \\ JSON \\ YAML \\ A Security Note \\ Configuration Files \\ Other Interchange Formats \\ Serialize by Using pickle \\ Structured Binary Files \\ Spreadsheets \\ HDF5 \\ Relational Databases \\ SQL \\ DB-API \\ SQLite \\ MySQL \\ PostgreSQL \\ SQLAlchemy \\ The engine layer \\ The SQL Expression Language \\ The Object-Relational Mapper \\ NoSQL Data Stores \\ The dbm Family \\ Memcached \\ Redis \\ Strings \\ Lists \\ Hashes \\ Sets \\ Sorted sets \\ Bits \\ Caches and expiration \\ Other NoSQL \\ Full-Text Databases \\ Things to Do \\ 9. The Web, Untangled \\ Web Clients \\ Test with telnet \\ Python's Standard Web Libraries \\ Beyond the Standard Library: Requests \\ Web Servers \\ The Simplest Python Web Server \\ Web Server Gateway Interface \\ Frameworks \\ Bottle \\ Flask \\ Pass an argument as part of the URL path \\ Non-Python Web Servers \\ Apache \\ The nginx Web Server \\ Other Frameworks \\ Other Python Web Servers \\ Web Services and Automation \\ The webbrowser Module \\ Web APIs and Representational State Transfer \\ JSON \\ Crawl and Scrape \\ Scrape HTML with BeautifulSoup \\ Things to Do \\ 10. Systems \\ Files \\ Create with open() \\ Check Existence with exists() \\ Check Type with isfile() \\ Copy with copy() \\ Change Name with rename() \\ Link with link() or symlink() \\ Change Permissions with chmod() \\ Change Ownership with chown() \\ Get a Pathname with abspath() \\ Get a symlink Pathname with realpath() \\ Delete a File with remove() \\ Directories \\ Create with mkdir() \\ Delete with rmdir() \\ List Contents with listdir() \\ Change Current Directory with chdir() \\ List Matching Files with glob() \\ Programs and Processes \\ Create a Process with subprocess \\ Create a Process with multiprocessing \\ Kill a Process with terminate() \\ Calendars and Clocks \\ The datetime Module \\ Using the time Module \\ Read and Write Dates and Times \\ Alternative Modules \\ Things to Do \\ 11. Concurrency and Networks \\ Concurrency \\ Queues \\ Processes \\ Threads \\ Green Threads and gevent \\ twisted \\ asyncio \\ Redis \\ Beyond Queues \\ Networks \\ Patterns \\ The Publish-Subscribe Model \\ Redis \\ ZeroMQ \\ Other Pub-sub Tools \\ TCP/IP \\ Sockets \\ ZeroMQ \\ Scapy \\ Internet Services \\ Domain Name System \\ Python Email Modules \\ Other protocols \\ Web Services and APIs \\ Remote Processing \\ Remote Procedure Calls \\ fabric \\ Salt \\ Big Fat Data and MapReduce \\ Working in the Clouds \\ Google \\ Amazon \\ OpenStack \\ Things to Do \\ 12. Be a Pythonista \\ About Programming \\ Find Python Code \\ Install Packages \\ Use pip \\ Use a Package Manager \\ Install from Source \\ Integrated Development Environments \\ IDLE \\ PyCharm \\ IPython \\ Name and Document \\ Testing Your Code \\ Check with pylint, pyflakes, and pep8 \\ Test with unittest \\ Test with doctest \\ Test with nose \\ Other Test Frameworks \\ Continuous Integration \\ Debugging Python Code \\ Debug with pdb \\ Logging Error Messages \\ Optimize Your Code \\ Measure Timing \\ Algorithms and Data Structures \\ Cython, NumPy, and C Extensions \\ PyPy \\ Source Control \\ Mercurial \\ Git \\ Clone This Book \\ How You Can Learn More \\ Books \\ Websites \\ Groups \\ Conferences \\ Coming Attractions \\ A. Py Art \\ 2-D Graphics \\ Standard Library \\ PIL and Pillow \\ ImageMagick \\ Graphical User Interfaces (GUIs) \\ 3-D Graphics and Animation \\ Plots, Graphs, and Visualization \\ matplotlib \\ bokeh \\ Games \\ Audio and Music \\ B. Py at Work \\ The Microsoft Office Suite \\ Carrying Out Business Tasks \\ Processing Business Data \\ Extracting, Transforming, and Loading \\ Additional Sources of Information \\ Python in Finance \\ Business Data Security \\ Maps \\ Formats \\ Draw a Map \\ Applications and Data \\ C. Py Sci \\ Math and Statistics in the Standard Library \\ Math Functions \\ Working with Complex Numbers \\ Calculate Accurate Floating Point with decimal \\ Perform Rational Arithmetic with fractions \\ Use Packed Sequences with array \\ Handling Simple Stats by Using statistics \\ Matrix Multiplication \\ Scientific Python \\ NumPy \\ Make an Array with array() \\ Make an Array with arange() \\ Make an Array with zeros(), ones(), or random() \\ Change an Array's Shape with reshape() \\ Get an Element with [] \\ Array Math \\ Linear Algebra \\ The SciPy Library \\ The SciKit Library \\ The IPython Library \\ A Better Interpreter \\ IPython Notebook \\ Pandas \\ Python and Scientific Areas \\ D. Install Python 3 \\ Install Standard Python \\ Mac OS X \\ Windows \\ Linux or Unix \\ Install Anaconda \\ Install and Use pip and virtualenv \\ Install and Use conda \\ E. Answers to Exercises \\ Chapter 1, \\ Chapter 2, \\ Chapter 3, \\ Chapter 4, \\ Chapter 5, \\ Chapter 6, \\ Chapter 7, \\ Chapter 8, \\ Chapter 9, \\ Chapter 10, \\ Chapter 11, \\ F. Cheat Sheets \\ Operator Precedence \\ String Methods \\ Change Case \\ Search \\ Modify \\ Format \\ String Type \\ String Module Attributes \\ Fin \\ Index \\ Colophon", } @Book{Lutz:2014:PPR, author = "Mark Lutz", title = "{Python} pocket reference", publisher = pub-ORA, address = pub-ORA:adr, edition = "Fifth", pages = "vii + 254", year = "2014", ISBN = "1-4493-5701-6 (paperback)", ISBN-13 = "978-1-4493-5701-6 (paperback)", LCCN = "QA76.73.P98 L89 2014", bibdate = "Sat Oct 24 07:10:28 MDT 2015", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", abstract = "Updated for both Python 3.4 and 2.7, this guide provides concise information on Python types and statements, special method names, built-in functions and exceptions, commonly used standard library modules, and other prominent Python tools.", acknowledgement = ack-nhfb, remark = "Previous edition: 2010.", subject = "Python (Computer program language)", tableofcontents = "1. Python Pocket Reference \\ Introduction \\ Book Conventions \\ Python Command-Line Usage \\ Python Command Options \\ Command-Line Program Specification \\ Python 2.X Command Options \\ Python Environment Variables \\ Operational Variables \\ Python Command Option Variables \\ Python Windows Launcher Usage \\ Launcher File Directives \\ Launcher Command Lines \\ Launcher Environment Variables \\ Built-in Types and Operators \\ Operators and Precedence \\ Atomic terms and dynamic typing \\ Operator Usage Notes \\ Operations by Category \\ Sequence Operation Notes \\ Specific Built-in Types \\ Numbers \\ Literals and creation \\ Operations \\ Decimal and fraction \\ Other numeric types \\ Strings \\ Literals and creation \\ Operations \\ String formatting \\ String formatting expression \\ Formatting expression syntax \\ String formatting method \\ Formatting method syntax \\ Template string substitution \\ String methods \\ byte and bytearray methods \\ Searching methods \\ Splitting and joining methods \\ Formatting methods \\ Content test methods \\ The original string module \\ Unicode Strings \\ Unicode support in Python 3.X \\ byte and bytearray strings \\ Unicode support in Python 2.X \\ Lists \\ Literals and creation \\ Operations \\ List comprehension expressions \\ The iteration protocol \\ Generator expressions \\ Other comprehension expressions \\ Dictionaries \\ Literals and creation \\ Operations \\ Tuples \\ Literals and creation \\ Operations \\ Files \\ Input files \\ Output files \\ Any files \\ Other file attributes (some read-only) \\ File context managers \\ File usage notes \\ Sets \\ Literals and creation \\ Operations \\ Other Types and Conversions \\ Boolean \\ Type Conversions \\ Statements and Syntax \\ Syntax Rules \\ Name Rules \\ Name format \\ Name conventions \\ Specific Statements \\ The Assignment Statement \\ Augmented assignment \\ Normal sequence assignment \\ Extended sequence assignment (3.X) \\ The Expression Statement \\ Call syntax \\ Arbitrary arguments call syntax \\ The print Statement \\ Python 2.X print statements \\ The if Statement \\ The while Statement \\ The for Statement \\ The pass Statement \\ The break Statement \\ The continue Statement \\ The del Statement \\ The def Statement \\ Python 3.X keyword-only arguments \\ Python 3.X function annotations \\ lambda expressions \\ Function defaults and attributes \\ Function and method decorators \\ The return Statement \\ The yield Statement \\ Generator function changes in Python 3.3 \\ The global Statement \\ The nonlocal Statement \\ The import Statement \\ Package imports \\ Python 3.3 namespace packages \\ Import algorithm \\ The from Statement \\ Package relative import syntax \\ The class Statement \\ Class decorators in Python 3.X, 2.6, and 2.7 \\ Metaclasses \\ The try Statement \\ Python 2.X try statement forms \\ The raise Statement \\ Python 3.X chained exceptions \\ Class exceptions \\ Python 2.X raise statement forms \\ The assert Statement \\ The with Statement \\ Multiple context managers in Python 3.1 and 2.7 \\ Context manager protocol \\ Python 2.X Statements \\ Namespace and Scope Rules \\ Qualified Names: Object Namespaces \\ Unqualified Names: Lexical Scopes \\ Nested Scopes and Closures \\ Enclosing scopes and defaults \\ Object-Oriented Programming \\ Classes and Instances \\ Class objects provide default behavior \\ Instance objects are generated from classes \\ Inheritance rules \\ Pseudoprivate Attributes \\ Module privates \\ Class privates \\ New-Style Classes \\ Formal Inheritance Rules \\ Classic classes: DFLR \\ New-style classes: MRO \\ Example: nondiamonds \\ Example: diamonds \\ New-style inheritance algorithm \\ New-style precedence and context \\ Operator Overloading Methods \\ Methods for All Types \\ Methods for Collections (Sequences, Mappings) \\ Methods for Numbers (Binary Operators) \\ Basic binary methods \\ Right-side binary methods \\ Augmented binary methods \\ Methods for Numbers (Other Operations) \\ Methods for Descriptors \\ Methods for Context Managers \\ Python 2.X Operator Overloading Methods \\ Methods in Python 3.X only \\ Methods in Python 2.X only \\ Built-in Functions \\ Python 2.X Built-in Functions \\ Python 3.X built-ins not supported by Python 2.X \\ Python 2.X built-ins not supported by Python 3.X \\ Built-in Exceptions \\ Superclasses: Categories \\ Specific Exceptions \\ Specific OSError Exceptions \\ Warning Category Exceptions \\ Warnings Framework \\ Python 3.2 Built-in Exceptions \\ Python 2.X Built-in Exceptions \\ Built-in Attributes \\ Standard Library Modules \\ The sys Module \\ The string Module \\ Functions and Classes \\ Constants \\ The os System Module \\ Administrative Tools \\ Portability Constants \\ Shell Commands \\ Environment Tools \\ File Descriptor Tools \\ File Pathname Tools \\ Process Control \\ The os.path Module \\ The re Pattern-Matching Module \\ Module Functions \\ Regular Expression Objects \\ Match Objects \\ Pattern Syntax \\ Object Persistence Modules \\ The shelve and dbm Modules \\ File opens \\ File operations \\ The pickle Module \\ Pickling interfaces \\ Unpickling interfaces \\ pickle usage notes \\ The tkinter GUI Module and Tools \\ tkinter Example \\ tkinter Core Widgets \\ Common Dialog Calls \\ Module tkinter.messagebox (tkMessageBox in Python 2.X) \\ Module tkinter.simpledialog (tkSimpleDialog in Python 2.X) \\ Module tkinter.colorchooser (tkColorChooser in Python 2.X) \\ Module tkinter.filedialog (tkFileDialog in Python 2.X) \\ Additional tkinter Classes and Tools \\ Tcl/Tk-to-Python/tkinter Mappings \\ Internet Modules and Tools \\ Other Standard Library Modules \\ The math Module \\ The time Module \\ The timeit Module \\ The datetime Module \\ The random Module \\ The json Module \\ The subprocess Module \\ The enum Module \\ The struct Module \\ Threading Modules \\ Python SQL Database API \\ API Usage Example \\ Module Interface \\ Connection Objects \\ Cursor Objects \\ Type Objects and Constructors \\ More Hints and Idioms \\ Core Language Hints \\ Environment Hints \\ Usage Hints \\ Assorted Hints \\ Index \\ Copyright", } @Book{Miller:2014:MTP, author = "Thomas Miller", title = "Modeling techniques in predictive analytics with {Python} and {R}: a guide to data science", publisher = "Pearson Education", address = "Upper Saddle River, NJ", pages = "xviii + 418", year = "2014", ISBN = "0-13-389206-9 (hardcover), 0-13-389212-3", ISBN-13 = "978-0-13-389206-2 (hardcover), 978-0-13-389212-3", LCCN = "QA76.73.P98", bibdate = "Sat Oct 24 06:37:49 MDT 2015", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", acknowledgement = ack-nhfb, tableofcontents = "Preface \\ Figures \\ Tables \\ Exhibits \\ 1. Analytics and Data Science \\ 2. Advertising and Promotion \\ 3. Preference and Choice \\ 4. Market Basket Analysis \\ 5. Economic Data Analysis \\ 6. Operations Management \\ 7. Text Analytics \\ 8. Sentiment Analysis \\ 9. Sports Analytics \\ 10. Spatial Data Analysis \\ 11. Brand and Price \\ 12. The Big Little Data Game \\ A. Data Science Methods \\ A.1 Databases and Data Preparation \\ A.2 Classical and Bayesian Statistics \\ A.3 Regression and Classification \\ A.4 Machine Learning \\ A.5 Web and Social Network Analysis \\ A.6 Recommender Systems \\ A.7 Product Positioning \\ A.8 Market Segmentation \\ A.9 Site Selection \\ A.10 Financial Data Science \\ B. Measurement \\ C. Case Studies \\ C.1 Return of the Bobbleheads \\ C.2 DriveTime Sedans \\ C.3 Two Month s Salary \\ C.4 Wisconsin Dells \\ C.5 Computer Choice Study \\ D. Code and Utilities \\ Bibliography \\ Index", } @Book{Mueller:2014:BPP, author = "John Mueller", title = "Beginning programming with Python for dummies", publisher = pub-WILEY, address = pub-WILEY:adr, pages = "xiv + 382", year = "2014", ISBN = "1-118-89145-7 (paperback), 1-118-89147-3 (e-book), 1-118-89149-X (ePDF)", ISBN-13 = "978-1-118-89145-2 (paperback), 978-1-118-89147-6 (e-book), 978-1-118-89149-0 (ePDF)", LCCN = "QA76.73.P98 M839 2014", bibdate = "Sat Oct 24 06:34:31 MDT 2015", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", URL = "http://www.dummies.com/how-to/content/beginning-python-for-dummies-cheat-sheet.html; http://www.loc.gov/catdir/enhancements/fy1513/2014935516-b.html; http://www.loc.gov/catdir/enhancements/fy1513/2014935516-t.html", abstract = "Make sense of Python --- and get in the programming game. This guide takes you step-by-step through the syntax and logic of Python, and provides you with plenty of real-world examples along the way.", acknowledgement = ack-nhfb, author-dates = "1958--", subject = "Python (Computer program language); Computer programming; Computer programming", tableofcontents = "Introduction \\ About This Book \\ Foolish Assumptions \\ Icons Used in This Book \\ Beyond the Book \\ Where to Go from Here \\ Part I: Getting Started with Python \\ Chapter 1: Talking to Your Computer \\ Understanding Why You Want to Talk to Your Computer \\ Knowing that an Application is a Form of Communication \\ Thinking about procedures you use daily \\ Writing procedures down \\ Seeing applications as being like any other procedure \\ Understanding that computers take things literally \\ Defining What an Application Is \\ Understanding that computers use a special language \\ Helping humans speak to the computer \\ Understanding Why Python is So Cool \\ Unearthing the reasons for using Python \\ Deciding how you can personally benefit from Python \\ Discovering which organizations use Python \\ Finding useful Python applications \\ Comparing Python to other languages \\ Chapter 2: Getting Your Own Copy of Python \\ Downloading the Version You Need \\ Installing Python \\ Working with Windows \\ Working with the Mac \\ Working with Linux \\ Accessing Python on Your Machine \\ Using Windows \\ Using the Mac \\ Using Linux \\ Testing Your Installation \\ Chapter 3: Interacting with Python \\ Opening the Command Line \\ Starting Python \\ Using the command line to your advantage \\ Using Python environment variables to your advantage \\ Typing a Command \\ Telling the computer what to do \\ Telling the computer you're done \\ Seeing the result \\ Using Help \\ Getting into help mode \\ Asking for help \\ Leaving help mode \\ Obtaining help directly \\ Closing the Command Line \\ Chapter 4: Writing Your First Application \\ Understanding the Integrated DeveLopment Environment (IDLE) \\ Starting IDLE \\ Using standard commands \\ Understanding color coding \\ Getting GUI help \\ Configuring IDLE \\ Creating the Application \\ Opening a new window \\ Typing the command \\ Saving the file \\ Running the Application \\ Understanding the Use of Indentation \\ Adding Comments \\ Understanding comments \\ Using comments to leave yourself reminders \\ Using comments to keep code from executing \\ Loading and Running Existing Applications \\ Using the command line or terminal window \\ Using the Edit window \\ Using the Python Shell window or Python command line \\ Closing IDLE \\ Part II: Talking the Talk \\ Chapter 5: Storing and Modifying Information \\ Storing Information \\ Seeing variables as storage boxes \\ Using the right box to store the data \\ Defining the Essential Python Data Types \\ Putting information into variables \\ Understanding the numeric types \\ Understanding Boolean values \\ Understanding strings \\ Working with Dates and Times \\ Chapter 6: Managing Information \\ Controlling How Python Views Data \\ Making comparisons \\ Understanding how computers make comparisons \\ Working with Operators \\ Defining the operators \\ Understanding operator precedence \\ Creating and Using Functions \\ Viewing functions as code packages \\ Understanding code reusability \\ Defining a function \\ Accessing functions \\ Sending information to functions \\ Returning information from functions \\ Comparing function output \\ Getting User Input \\ Chapter 7: Making Decisions \\ Making Simple Decisions Using the if Statement \\ Understanding the if statement \\ Using the if statement in an application \\ Choosing Alternatives Using the if...else Statement \\ Understanding the if...else statement \\ Using the if...else statement in an application \\ Using the if...elif statement in an application \\ Using Nested Decision Statements \\ Using multiple if or if...else statements \\ Combining other types of decisions \\ Chapter 8: Performing Repetitive Tasks \\ Processing Data Using the for Statement \\ Understanding the for statement \\ Creating a basic for loop \\ Controlling execution with the break statement \\ Controlling execution with the continue statement \\ Controlling execution with the pass clause \\ Controlling execution with the else statement \\ Processing Data Using the while Statement \\ Understanding the while statement \\ Using the while statement in an application \\ Nesting Loop Statements \\ Chapter 9: Dealing with Errors \\ Knowing Why Python Doesn't Understand You \\ Considering the Sources of Errors \\ Classifying when errors occur \\ Distinguishing error types \\ Catching Exceptions \\ Basic exception handling \\ Handling more specific to less specific exceptions \\ Nested exception handling \\ Raising Exceptions \\ Raising exceptions during exceptional conditions \\ Passing error information to the caller \\ Creating and Using Custom Exceptions \\ Using the finally Clause \\ Part III: Performing Common Tasks \\ Chapter 10: Interacting with Modules \\ Creating Code Groupings \\ Importing Modules \\ Using the import statement \\ Using the from...import statement \\ Finding Modules on Disk \\ Viewing the Module Content \\ Using the Python Module Documentation \\ Opening the pydoc application \\ Using the quick-access links \\ Typing a search term \\ Viewing the results \\ Chapter 11: Working with Strings \\ Understanding That Strings Are Different \\ Defining a character using numbers \\ Using characters to create strings \\ Creating Stings with Special Characters \\ Selecting Individual Characters \\ Slicing and Dicing Strings \\ Locating a Value in a String \\ Formatting Strings \\ Chapter 12: Managing Lists \\ Organizing Information in an Application \\ Defining organization using lists \\ Understanding how computers view lists \\ Creating Lists \\ Accessing Lists \\ Looping through Lists \\ Modifying Lists \\ Searching Lists \\ Sorting Lists \\ Working with the Counter Object \\ Chapter 13: Collecting All Sorts of Data \\ Understanding Collections \\ Working with Tuples \\ Working with Dictionaries \\ Creating and using a dictionary \\ Replacing the switch statement with a dictionary \\ Creating Stacks Using Lists \\ Working with queues \\ Working with deques \\ Chapter 14: Creating and Using Classes \\ Understanding the Class as a Packaging Method \\ Considering the Parts of a Class \\ Creating the class definition \\ Considering the built-in class attributes \\ Working with methods \\ Working with constructors \\ Working with variables \\ Using methods with variable argument lists \\ Overloading operators \\ Creating a Class \\ Using the Class in an Application \\ Extending Classes to Make New Classes \\ Building the child class \\ Testing the class in an application \\ Part IV: Performing Advanced Tasks \\ Chapter 15: Storing Data in Files \\ Understanding How Permanent Storage Works \\ Creating Content for Permanent Storage \\ Creating a File \\ Reading File Content \\ Updating File Content \\ Deleting a File \\ Chapter 16: Sending an E-Mail \\ Understanding What Happens When You Send E-mail \\ Viewing e-mail as you do a letter \\ Defining the parts of the envelope \\ Defining the parts of the letter \\ Creating the E-mail Message \\ Working with a text message \\ Working with an HTML message \\ Seeing the E-mail Output \\ Part V: The Part of Tens \\ Chapter 17: Ten Amazing Programming Resources \\ Working with the Python Documentation Online \\ Using the LearnPython.org Tutorial \\ Performing Web Programming Using Python \\ Getting Additional Libraries \\ Creating Applications Faster Using an IDE \\ Checking Your Syntax with Greater Ease \\ Using XML to Your Advantage \\ Getting Past the Common Python Newbie Errors \\ Understanding Unicode \\ Making Your Python Application Fast \\ Chapter 18: Ten Ways to Make a Living with Python \\ Working in QA \\ Becoming the IT Staff for a Smaller Organization \\ Performing Specialty Scripting for Applications \\ Administering a Network \\ Teaching Programming Skills \\ Helping People Decide on Location \\ Performing Data Mining \\ Interacting with Embedded Systems \\ Carrying Out Scientific Tasks \\ Performing Real-Time Analysis of Data \\ Chapter 19: Ten Interesting Tools \\ Tracking Bugs with Roundup Issue Tracker \\ Creating a Virtual Environment Using VirtualEnv \\ Installing Your Application Using PyInstaller \\ Building Developer Documentation Using pdoc \\ Developing Application Code Using Komodo Edit \\ Debugging Your Application Using pydbgr \\ Entering an Interactive Environment Using IPython \\ Testing Python Applications Using PyUnit \\ Tidying Your Code Using Isort \\ Providing Version Control Using Mercurial \\ Chapter 20: Ten Libraries You Need to Know About \\ Developing a Secure Environment Using PyCrypto \\ Interacting with Databases Using SQLAlchemy \\ Seeing the World Using Google Maps \\ Adding a Graphical User Interface Using TkInter \\ Providing a Nice Tabular Data Presentation Using PrettyTable \\ Enhancing Your Application with Sound Using PyAudio \\ Manipulating Images Using PyQtGraph \\ Locating Your Information Using IRLib \\ Creating an Interoperable Java Environment Using JPype \\ Accessing Local Network Resources Using Twisted Matrix \\ Accessing Internet Resources Using Libraries \\ About the Author \\ Cheat Sheet", } @Article{Muller:2014:SAP, author = "Stefan C. Muller and Gustavo Alonso and Andre Csillaghy", title = "Scaling Astroinformatics: {Python} + Automatic Parallelization", journal = j-COMPUTER, volume = "47", number = "9", pages = "41--47", month = sep, year = "2014", CODEN = "CPTRB4", DOI = "http://dx.doi.org/10.1109/MC.2014.262", ISSN = "0018-9162 (print), 1558-0814 (electronic)", ISSN-L = "0018-9162", bibdate = "Fri Feb 13 11:56:29 MST 2015", bibsource = "http://computer.org/computer/co1998/; http://www.math.utah.edu/pub/tex/bib/computer2010.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://csdl.computer.org/csdl/mags/co/2014/09/mco2014090041-abs.html", abstract-URL = "http://csdl.computer.org/csdl/mags/co/2014/09/mco2014090041-abs.html", acknowledgement = ack-nhfb, journal-URL = "http://www.computer.org/portal/web/csdl/magazines/computer", } @Article{Mushtaq:2014:ACG, author = "Asif Mushtaq and K{\aa}re Olaussen", title = "Automatic code generator for higher order integrators", journal = j-COMP-PHYS-COMM, volume = "185", number = "5", pages = "1461--1472", month = may, year = "2014", CODEN = "CPHCBZ", ISSN = "0010-4655 (print), 1879-2944 (electronic)", ISSN-L = "0010-4655", bibdate = "Fri Mar 14 17:14:22 MDT 2014", bibsource = "http://www.math.utah.edu/pub/tex/bib/compphyscomm2010.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.sciencedirect.com/science/article/pii/S0010465514000253", acknowledgement = ack-nhfb, fjournal = "Computer Physics Communications", journal-URL = "http://www.sciencedirect.com/science/journal/00104655/", keywords = "Hamilton's equation; Python; symplectic integration", } @Book{Nair:2014:GSB, author = "Vineeth G. Nair", title = "Getting Started with Beautiful Soup: build your own web scraper and learn all about web scraping with Beautiful Soup", publisher = pub-PACKT, address = pub-PACKT:adr, year = "2014", ISBN = "1-78328-956-2, 1-78328-955-4, 1-4619-5720-6 (e-book), 1-306-40146-1 (e-book)", ISBN-13 = "978-1-78328-956-1, 978-1-78328-955-4, 978-1-4619-5720-1 (e-book), 978-1-306-40146-3 (e-book)", LCCN = "QA76.9.D343", bibdate = "Wed Oct 14 07:37:03 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://proquest.tech.safaribooksonline.de/9781783289554", abstract = "This book is a practical, hands-on guide that takes you through the techniques of web scraping using Beautiful Soup. Getting Started with Beautiful Soup is great for anybody who is interested in website scraping and extracting information. However, a basic knowledge of Python, HTML tags, and CSS is required for better understanding.", acknowledgement = ack-nhfb, subject = "Data mining; COMPUTERS; Programming Languages.; General.; Data mining.", } @Article{Ortin:2014:SDL, author = "Francisco Ortin and Sheila Mendez and Vicente Garc{\'\i}a-D{\'\i}az and Miguel Garcia", title = "On the suitability of dynamic languages for hot-reprogramming a robotics framework: a {Python} case study", journal = j-SPE, volume = "44", number = "1", pages = "77--104", month = jan, year = "2014", CODEN = "SPEXBL", DOI = "http://dx.doi.org/10.1002/spe.2162", ISSN = "0038-0644 (print), 1097-024X (electronic)", ISSN-L = "0038-0644", bibdate = "Thu Jan 23 06:00:37 MST 2014", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/spe.bib; http://www3.interscience.wiley.com/journalfinder.html", acknowledgement = ack-nhfb, fjournal = "Software --- Practice and Experience", journal-URL = "http://onlinelibrary.wiley.com/journal/10.1002/(ISSN)1097-024X", onlinedate = "15 Oct 2012", } @Book{Palach:2014:PPP, author = "Jan Palach", title = "Parallel programming with {Python} develop efficient parallel systems using the robust {Python} environment", publisher = pub-PACKT, address = pub-PACKT:adr, year = "2014", ISBN = "1-78328-839-6, 1-78328-840-X (e-book)", ISBN-13 = "978-1-78328-839-7, 978-1-78328-840-3 (e-book)", LCCN = "QA76.642", bibdate = "Sat Oct 24 06:48:20 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", series = "Community experience distilled", URL = "http://proquest.tech.safaribooksonline.de/9781783288397", acknowledgement = ack-nhfb, tableofcontents = "Preface \\ What this book covers \\ What you need for this book \\ Who this book is for \\ Conventions \\ Reader feedback \\ Customer support \\ Downloading the example code \\ Errata \\ Piracy \\ Questions \\ 1. Contextualizing Parallel, Concurrent, and Distributed Programming \\ Why use parallel programming? \\ Exploring common forms of parallelization \\ Communicating in parallel programming \\ Understanding shared state \\ Understanding message passing \\ Identifying parallel programming problems \\ Deadlock \\ Starvation \\ Race conditions \\ Discovering Python's parallel programming tools \\ The Python threading module \\ The Python multiprocessing module \\ The parallel Python module \\ Celery --- a distributed task queue \\ Taking care of Python GIL \\ Summary \\ 2. Designing Parallel Algorithms \\ The divide and conquer technique \\ Using data decomposition \\ Decomposing tasks with pipeline \\ Processing and mapping \\ Identifying independent tasks \\ Identifying the tasks that require data exchange \\ Load balance \\ Summary \\ 3. Identifying a Parallelizable Problem \\ Obtaining the highest Fibonacci value for multiple inputs \\ Crawling the Web \\ Summary \\ 4. Using the threading and concurrent.futures Modules \\ Defining threads \\ Advantages and disadvantages of using threads \\ Understanding different kinds of threads \\ Defining the states of a thread \\ Choosing between threading and _thread \\ Using threading to obtain the Fibonacci series term with multiple inputs \\ Crawling the Web using the concurrent.futures module \\ Summary \\ 5. Using Multiprocessing and ProcessPoolExecutor \\ Understanding the concept of a process \\ Understanding the process model \\ Defining the states of a process \\ Implementing multiprocessing communication \\ Using multiprocessing.Pipe \\ Understanding multiprocessing.Queue \\ Using multiprocessing to compute Fibonacci series terms with multiple inputs \\ Crawling the Web using ProcessPoolExecutor \\ Summary \\ 6. Utilizing Parallel Python \\ Understanding interprocess communication \\ Exploring named pipes \\ Using named pipes with Python \\ Writing in a named pipe \\ Reading named pipes \\ Discovering PP \\ Using PP to calculate the Fibonacci series term on SMP architecture \\ Using PP to make a distributed Web crawler \\ Summary \\ 7. Distributing Tasks with Celery \\ Understanding Celery \\ Why use Celery? \\ Understanding Celery's architecture \\ Working with tasks \\ Discovering message transport (broker) \\ Understanding workers \\ Understanding result backends \\ Setting up the environment \\ Setting up the client machine \\ Setting up the server machine \\ Dispatching a simple task \\ Using Celery to obtain a Fibonacci series term \\ Defining queues by task types \\ Using Celery to make a distributed Web crawler \\ Summary \\ 8. Doing Things Asynchronously \\ Understanding blocking, nonblocking, and asynchronous operations \\ Understanding blocking operations \\ Understanding nonblocking operations \\ Understanding asynchronous operations \\ Understanding event loop \\ Polling functions \\ Using event loops \\ Using asyncio \\ Understanding coroutines and futures \\ Using coroutine and asyncio.Future \\ Using asyncio.Task \\ Using an incompatible library with asyncio \\ Summary \\ Index", } @Book{Percival:2014:TDD, author = "Harry Percival", title = "Test-driven development with {Python}", publisher = pub-ORA-MEDIA, address = pub-ORA-MEDIA:adr, pages = "xxviii + 449", year = "2014", ISBN = "1-4493-6482-9 (paperback)", ISBN-13 = "978-1-4493-6482-3 (paperback)", LCCN = "QA76.73.P98 P46 2014", bibdate = "Sat Oct 24 06:45:21 MDT 2015", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Application software; Development; Web site development; Object-oriented programming (Computer science); Development.", tableofcontents = "Getting Django set up using a functional test \\ Extending our functional test using the unittest module \\ Testing a simple home page with unit tests \\ What are we doing with all these tests? \\ Saving user input \\ Getting to the minimum viable site \\ Prettification : layout and styling, and what to test about it \\ Testing deployment using a staging site \\ Automating deployment with fabric \\ Input validation and test organisation \\ A simple form \\ More advanced forms \\ Dipping our toes, very tentatively, into JavaScript \\ Deploying our new code \\ User authentication, integrating third-party plugins, and mocking with JavaScript \\ Server-side authentication and mocking in Python \\ Test fixtures, logging, and server-side debugging \\ Finishing ``my lists'' : outside-in TDD \\ Test isolation, and ``listening to your tests'' \\ Continuous integration (CI) \\ The token social bit, the page pattern, and an exercise for the reader \\ Fast tests, slow tests, and hot lava \\ Obey the testing goat! \\ Appendix A: PythonAnywhere \\ Appendix B: Django class-based views \\ Appendix C: Provisioning with ansible \\ Appendix D: Testing database migrations \\ Appendix E: What to do next \\ Appendix F: Cheat sheet", } @Book{Perkins:2014:PTP, author = "Jacob Perkins", title = "{Python 3} text processing with {NLTK 3} cookbook: over 80 practical recipes on natural language processing techniques using {Python}'s {NLKT 3.0}", publisher = pub-PACKT, address = pub-PACKT:adr, edition = "Second", pages = "iii + 288", year = "2014", ISBN = "1-78216-785-4, 1-78216-786-2 (e-book)", ISBN-13 = "978-1-78216-785-3, 978-1-78216-786-0 (e-book)", LCCN = "QA76.73.P98 P43 2014", bibdate = "Sat Oct 24 06:30:51 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, author-dates = "1982--", subject = "Python (Computer program language); Text processing (Computer science); Natural language processing (Computer science)", tableofcontents = "Preface \\ What this book covers \\ What you need for this book \\ Who this book is for \\ Conventions \\ Reader feedback \\ Customer support \\ Downloading the example code \\ Errata \\ Piracy \\ Questions \\ 1. Tokenizing Text and WordNet Basics \\ Introduction \\ Tokenizing text into sentences \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Tokenizing sentences in other languages \\ See also \\ Tokenizing sentences into words \\ How to do it... \\ How it works... \\ There's more... \\ Separating contractions \\ PunktWordTokenizer \\ WordPunctTokenizer \\ See also \\ Tokenizing sentences using regular expressions \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Simple whitespace tokenizer \\ See also \\ Training a sentence tokenizer \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ See also \\ Filtering stopwords in a tokenized sentence \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ See also \\ Looking up Synsets for a word in WordNet \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Working with hypernyms \\ Part of speech (POS) \\ See also \\ Looking up lemmas and synonyms in WordNet \\ How to do it... \\ How it works... \\ There's more... \\ All possible synonyms \\ Antonyms \\ See also \\ Calculating WordNet Synset similarity \\ How to do it... \\ How it works... \\ There's more... \\ Comparing verbs \\ Path and Leacock Chordorow (LCH) similarity \\ See also \\ Discovering word collocations \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Scoring functions \\ Scoring ngrams \\ See also \\ 2. Replacing and Correcting Words \\ Introduction \\ Stemming words \\ How to do it... \\ How it works... \\ There's more... \\ The LancasterStemmer class \\ The RegexpStemmer class \\ The SnowballStemmer class \\ See also \\ Lemmatizing words with WordNet \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Combining stemming with lemmatization \\ See also \\ Replacing words matching regular expressions \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Replacement before tokenization \\ See also \\ Removing repeating characters \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ See also \\ Spelling correction with Enchant \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ The en_GB dictionary \\ Personal word lists \\ See also \\ Replacing synonyms \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ CSV synonym replacement \\ YAML synonym replacement \\ See also \\ Replacing negations with antonyms \\ How to do it... \\ How it works... \\ There's more... \\ See also \\ 3. Creating Custom Corpora \\ Introduction \\ Setting up a custom corpus \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Loading a YAML file \\ See also \\ Creating a wordlist corpus \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Names wordlist corpus \\ English words corpus \\ See also \\ Creating a part-of-speech tagged word corpus \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Customizing the word tokenizer \\ Customizing the sentence tokenizer \\ Customizing the paragraph block reader \\ Customizing the tag separator \\ Converting tags to a universal tagset \\ See also \\ Creating a chunked phrase corpus \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Tree leaves \\ Treebank chunk corpus \\ CoNLL2000 corpus \\ See also \\ Creating a categorized text corpus \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Category file \\ Categorized tagged corpus reader \\ Categorized corpora \\ See also \\ Creating a categorized chunk corpus reader \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Categorized CoNLL chunk corpus reader \\ See also \\ Lazy corpus loading \\ How to do it... \\ How it works... \\ There's more... \\ Creating a custom corpus view \\ How to do it... \\ How it works... \\ There's more... \\ Block reader functions \\ Pickle corpus view \\ Concatenated corpus view \\ See also \\ Creating a MongoDB-backed corpus reader \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ See also \\ Corpus editing with file locking \\ Getting ready \\ How to do it... \\ How it works... \\ 4. Part-of-speech Tagging \\ Introduction \\ Default tagging \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Evaluating accuracy \\ Tagging sentences \\ Untagging a tagged sentence \\ See also \\ Training a unigram part-of-speech tagger \\ How to do it... \\ How it works... \\ There's more... \\ Overriding the context model \\ Minimum frequency cutoff \\ See also \\ Combining taggers with backoff tagging \\ How to do it... \\ How it works... \\ There's more... \\ Saving and loading a trained tagger with pickle \\ See also \\ Training and combining ngram taggers \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Quadgram tagger \\ See also \\ Creating a model of likely word tags \\ How to do it... \\ How it works... \\ There's more... \\ See also \\ Tagging with regular expressions \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ See also \\ Affix tagging \\ How to do it... \\ How it works... \\ There's more... \\ Working with min_stem_length \\ See also \\ Training a Brill tagger \\ How to do it... \\ How it works... \\ There's more... \\ Tracing \\ See also \\ Training the TnT tagger \\ How to do it... \\ How it works... \\ There's more... \\ Controlling the beam search \\ Significance of capitalization \\ See also \\ Using WordNet for tagging \\ Getting ready \\ How to do it... \\ How it works... \\ See also \\ Tagging proper names \\ How to do it... \\ How it works... \\ See also \\ Classifier-based tagging \\ How to do it... \\ How it works... \\ There's more... \\ Detecting features with a custom feature detector \\ Setting a cutoff probability \\ Using a pre-trained classifier \\ See also \\ Training a tagger with NLTK-Trainer \\ How to do it... \\ How it works... \\ There's more... \\ Saving a pickled tagger \\ Training on a custom corpus \\ Training with universal tags \\ Analyzing a tagger against a tagged corpus \\ Analyzing a tagged corpus \\ See also \\ 5. Extracting Chunks \\ Introduction \\ Chunking and chinking with regular expressions \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Parsing different chunk types \\ Parsing alternative patterns \\ Chunk rule with context \\ See also \\ Merging and splitting chunks with regular expressions \\ How to do it... \\ How it works... \\ There's more... \\ Specifying rule descriptions \\ See also \\ Expanding and removing chunks with regular expressions \\ How to do it... \\ How it works... \\ There's more... \\ See also \\ Partial parsing with regular expressions \\ How to do it... \\ How it works... \\ There's more... \\ The ChunkScore metrics \\ Looping and tracing chunk rules \\ See also \\ Training a tagger-based chunker \\ How to do it... \\ How it works... \\ There's more... \\ Using different taggers \\ See also \\ Classification-based chunking \\ How to do it... \\ How it works... \\ There's more... \\ Using a different classifier builder \\ See also \\ Extracting named entities \\ How to do it... \\ How it works... \\ There's more... \\ Binary named entity extraction \\ See also \\ Extracting proper noun chunks \\ How to do it... \\ How it works... \\ There's more... \\ See also \\ Extracting location chunks \\ How to do it... \\ How it works... \\ There's more... \\ See also \\ Training a named entity chunker \\ How to do it... \\ How it works... \\ There's more... \\ See also \\ Training a chunker with NLTK-Trainer \\ How to do it... \\ How it works... \\ There's more... \\ Saving a pickled chunker \\ Training a named entity chunker \\ Training on a custom corpus \\ Training on parse trees \\ Analyzing a chunker against a chunked corpus \\ Analyzing a chunked corpus \\ See also \\ 6. Transforming Chunks and Trees \\ Introduction \\ Filtering insignificant words from a sentence \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ See also \\ Correcting verb forms \\ Getting ready \\ How to do it... \\ How it works... \\ See also \\ Swapping verb phrases \\ How to do it... \\ How it works... \\ There's more... \\ See also \\ Swapping noun cardinals \\ How to do it... \\ How it works... \\ See also \\ Swapping infinitive phrases \\ How to do it... \\ How it works... \\ There's more... \\ See also \\ Singularizing plural nouns \\ How to do it... \\ How it works... \\ See also \\ Chaining chunk transformations \\ How to do it... \\ How it works... \\ There's more... \\ See also \\ Converting a chunk tree to text \\ How to do it... \\ How it works... \\ There's more... \\ See also \\ Flattening a deep tree \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ The cess_esp and cess_cat treebank \\ See also \\ Creating a shallow tree \\ How to do it... \\ How it works... \\ See also \\ Converting tree labels \\ Getting ready \\ How to do it... \\ How it works... \\ See also \\ 7. Text Classification \\ Introduction \\ Bag of words feature extraction \\ How to do it... \\ How it works... \\ There's more... \\ Filtering stopwords \\ Including significant bigrams \\ See also \\ Training a Naive Bayes classifier \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Classification probability \\ Most informative features \\ Training estimator \\ Manual training \\ See also \\ Training a decision tree classifier \\ How to do it... \\ How it works... \\ There's more... \\ Controlling uncertainty with entropy_cutoff \\ Controlling tree depth with depth_cutoff \\ Controlling decisions with support_cutoff \\ See also \\ Training a maximum entropy classifier \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Megam algorithm \\ See also \\ Training scikit-learn classifiers \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Comparing Naive Bayes algorithms \\ Training with logistic regression \\ Training with LinearSVC \\ See also \\ Measuring precision and recall of a classifier \\ How to do it... \\ How it works... \\ There's more... \\ F-measure \\ See also \\ Calculating high information words \\ How to do it... \\ How it works... \\ There's more... \\ The MaxentClassifier class with high information words \\ The DecisionTreeClassifier class with high information words \\ The SklearnClassifier class with high information words \\ See also \\ Combining classifiers with voting \\ Getting ready \\ How to do it... \\ How it works... \\ See also \\ Classifying with multiple binary classifiers \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ See also \\ Training a classifier with NLTK-Trainer \\ How to do it... \\ How it works... \\ There's more... \\ Saving a pickled classifier \\ Using different training instances \\ The most informative features \\ The Maxent and LogisticRegression classifiers \\ SVMs \\ Combining classifiers \\ High information words and bigrams \\ Cross-fold validation \\ Analyzing a classifier \\ See also \\ 8. Distributed Processing and Handling Large Datasets \\ Introduction \\ Distributed tagging with execnet \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Creating multiple channels \\ Local versus remote gateways \\ See also \\ Distributed chunking with execnet \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Python subprocesses \\ See also \\ Parallel list processing with execnet \\ How to do it... \\ How it works... \\ There's more... \\ See also \\ Storing a frequency distribution in Redis \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ See also \\ Storing a conditional frequency distribution in Redis \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ See also \\ Storing an ordered dictionary in Redis \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ See also \\ Distributed word scoring with Redis and execnet \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ See also \\ 9. Parsing Specific Data Types \\ Introduction \\ Parsing dates and times with dateutil \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ See also \\ Timezone lookup and conversion \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Local timezone \\ Custom offsets \\ See also \\ Extracting URLs from HTML with lxml \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Extracting links directly \\ Parsing HTML from URLs or files \\ Extracting links with XPaths \\ See also \\ Cleaning and stripping HTML \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ See also \\ Converting HTML entities with BeautifulSoup \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Extracting URLs with BeautifulSoup \\ See also \\ Detecting and converting character encodings \\ Getting ready \\ How to do it... \\ How it works... \\ There's more... \\ Converting to ASCII \\ UnicodeDammit conversion \\ See also \\ A. Penn Treebank Part-of-speech Tags \\ Index", } @Article{Ragan-Kelley:2014:OPP, author = "Benjamin Ragan-Kelley and John P. Verboncoeur and Ming-Chieh Lin", title = "Optimizing physical parameters in {$1$-D} particle-in-cell simulations with {Python}", journal = j-COMP-PHYS-COMM, volume = "185", number = "10", pages = "2487--2494", month = oct, year = "2014", CODEN = "CPHCBZ", ISSN = "0010-4655 (print), 1879-2944 (electronic)", ISSN-L = "0010-4655", bibdate = "Sat Aug 16 08:37:41 MDT 2014", bibsource = "http://www.math.utah.edu/pub/tex/bib/compphyscomm2010.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.sciencedirect.com/science/article/pii/S0010465514001994", acknowledgement = ack-nhfb, fjournal = "Computer Physics Communications", journal-URL = "http://www.sciencedirect.com/science/journal/00104655/", } @Book{Rhodes:2014:FPN, author = "Brandon Rhodes and John Goerzen", title = "Foundations of {Python} network programming", publisher = pub-APRESS, address = pub-APRESS:adr, edition = "Third", pages = "xxi + 388", year = "2014", ISBN = "1-4302-5854-3 (paperback), 1-4302-5855-1 (e-book)", ISBN-13 = "978-1-4302-5854-4 (paperback), 978-1-4302-5855-1 (e-book)", LCCN = "QA76.73.P98 R48 2014", bibdate = "Sat Oct 24 06:26:55 MDT 2015", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", URL = "http://www.loc.gov/catdir/enhancements/fy1603/2015458068-b.html; http://www.loc.gov/catdir/enhancements/fy1603/2015458068-d.html; http://www.loc.gov/catdir/enhancements/fy1603/2015458068-t.html", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Python (Computer program language)", tableofcontents = "About the Authors \\ About the Technical Reviewers \\ Acknowledgments \\ Introduction \\ Chapter 1: Introduction to Client-Server Networking \\ The Building Blocks: Stacks and Libraries \\ Application Layers \\ Speaking a Protocol \\ A Raw Network Conversation \\ Turtles All the Way Down \\ Encoding and Decoding \\ The Internet Protocol \\ IP Addresses \\ Routing \\ Packet Fragmentation \\ Learning More About IP \\ Summary \\ Chapter 2: UDP \\ Port Numbers \\ Sockets \\ Promiscuous Clients and Unwelcome Replies \\ Unreliability, Backoff, Blocking, and Timeouts \\ Connecting UDP Sockets \\ Request IDs: A Good Idea \\ Binding to Interfaces \\ UDP Fragmentation \\ Socket Options \\ Broadcast \\ When to Use UDP \\ Summary \\ Chapter 3: TCP \\ How TCP Works \\ When to Use TCP \\ What TCP Sockets Mean \\ A Simple TCP Client and Server \\ One Socket per Conversation \\ Address Already in Use \\ Binding to Interfaces \\ Deadlock \\ Closed Connections, Half-Open Connections \\ Using TCP Streams Like Files \\ Summary \\ Chapter 4: Socket Names and DNS \\ Hostnames and Sockets \\ Five Socket Coordinates \\ IPv6 \\ Modern Address Resolution \\ Using getaddrinfo() to Bind Your Server to a Port \\ Using getaddrinfo() to Connect to a Service \\ Asking getaddrinfo() for a Canonical Hostname \\ Other getaddrinfo() Flags \\ Primitive Name Service Routines \\ Using getsockaddr() in Your Own Code \\ The DNS Protocol \\ Why Not to Use Raw DNS \\ Making a DNS Query from Python \\ Resolving Mail Domains \\ Summary \\ Chapter 5: Network Data and Network Errors \\ Bytes and Strings \\ Character Strings \\ Binary Numbers and Network Byte Order \\ Framing and Quoting \\ Pickles and Self-delimiting Formats \\ XML and JSON \\ Compression \\ Network Exceptions \\ Raising More Specific Exceptions \\ Catching and Reporting Network Exceptions \\ Summary \\ Chapter 6: TLS/SSL \\ What TLS Fails to Protect \\ What Could Possibly Go Wrong? \\ Generating Certificates \\ Offloading TLS \\ Python 3.4 Default Contexts \\ Variations on Socket Wrapping \\ Hand-Picked Ciphers and Perfect Forward Security \\ Protocol Support for TLS \\ Learning Details \\ Summary \\ Chapter 7: Server Architecture \\ A Few Words About Deployment \\ A Simple Protocol \\ A Single-Threaded Server \\ Threaded and Multiprocess Servers \\ The Legacy SocketServer Framework \\ Async Servers \\ Callback-Style asyncio \\ Coroutine-Style asyncio \\ The Legacy Module asyncore \\ The Best of Both Worlds \\ Running Under inetd \\ Summary \\ Chapter 8: Caches and Message Queues \\ Using Memcached \\ Hashing and Sharding \\ Message Queues \\ Using Message Queues from Python \\ Summary \\ Chapter 9: HTTP Clients \\ Python Client Libraries \\ Ports, Encryption, and Framing \\ Methods \\ Paths and Hosts \\ Status Codes \\ Caching and Validation \\ Content Encoding \\ Content Negotiation \\ Content Type \\ HTTP Authentication \\ Cookies \\ Connections, Keep-Alive, and httplib \\ Summary \\ Chapter 10: HTTP Servers \\ WSGI \\ Asynchronous Server-Frameworks \\ Forward and Reverse Proxies \\ Four Architectures \\ Running Python Under Apache \\ The Rise of Pure-Python HTTP Servers \\ The Benefits of Reverse Proxies \\ Platforms as a Service \\ GET and POST Patterns and the Question of REST \\ WSGI Without a Framework \\ Summary \\ Chapter 11: The World Wide Web \\ Hypermedia and URLs \\ Parsing and Building URLs \\ Relative URLs \\ The Hypertext Markup Language \\ Reading and Writing to a Database \\ A Terrible Web Application (in Flask) \\ The Dance of Forms and HTTP Methods \\ When Forms Use Wrong Methods \\ Safe and Unsafe Cookies \\ Nonpersistent Cross-Site Scripting \\ Persistent Cross-Site Scripting \\ Cross-Site Request Forgery \\ The Improved Application \\ The Payments Application in Django \\ Choosing a Web Framework \\ WebSockets \\ Web Scraping \\ Fetching Pages \\ Scraping Pages \\ Recursive Scraping \\ Summary \\ Chapter 12: Building and Parsing E-Mail \\ E-Mail Message Format \\ Building an E-Mail Message \\ Adding HTML and Multimedia \\ Adding Content \\ Parsing E-Mail Messages \\ Walking MIME Parts \\ Header Encodings \\ Parsing Dates \\ Summary \\ Chapter 13: SMTP \\ E-mail Clients vs. Webmail Services \\ In the Beginning Was the Command Line \\ The Rise of Clients \\ The Move to Webmail \\ How SMTP Is Used \\ Sending E-Mail \\ Headers and the Envelope Recipient \\ Multiple Hops \\ Introducing the SMTP Library \\ Error Handling and Conversation Debugging \\ Getting Information fromEHLO \\ Using Secure Sockets Layer and Transport Layer Security \\ Authenticated SMTP \\ SMTP Tips \\ Summary \\ Chapter 14: POP \\ POP Server Compatibility \\ Connecting and Authenticating \\ Obtaining Mailbox Information \\ Downloading and Deleting Messages \\ Summary \\ Chapter 15: IMAP \\ Understanding IMAP in Python \\ IMAPClient \\ Examining Folders \\ Message Numbers vs. UIDs \\ Message Ranges \\ Summary Information \\ Downloading an Entire Mailbox \\ Downloading Messages Individually \\ Flagging and Deleting Messages \\ Deleting Messages \\ Searching \\ Manipulating Folders and Messages \\ Asynchrony \\ Summary \\ Chapter 16: Telnet and SSH \\ Command-Line Automation \\ Command-Line Expansion and Quoting \\ Unix Command Arguments Can Include (Almost) Any Character \\ Quoting Characters for Protection \\ The Terrible Windows Command Line \\ Things Are Different in a Terminal \\ Terminals Do Buffering \\ Telnet \\ SSH: The Secure Shell \\ An Overview of SSH \\ SSH Host Keys \\ SSH Authentication \\ Shell Sessions and Individual Commands \\ SFTP: File Transfer Over SSH \\ Other Features \\ Summary \\ Chapter 17: FTP \\ What to Use Instead of FTP \\ Communication Channels \\ Using FTP in Python \\ ASCII and Binary Files \\ Advanced Binary Downloading \\ Uploading Data \\ Advanced Binary Uploading \\ Handling Errors \\ Scanning Directories \\ Detecting Directories and Recursive Download \\ Creating Directories, Deleting Things \\ Doing FTP Securely \\ Summary \\ Chapter 18: RPC \\ Features of RPC \\ XML-RPC \\ JSON-RPC \\ Self-Documenting Data \\ Talking About Objects: Pyro and RPyC \\ An RPyC Example \\ RPC, Web Frameworks, and Message Queues \\ Recovering from Network Errors \\ Summary \\ Index", } @Book{Richardson:2014:BEL, author = "Matt Richardson", title = "{BeagleBone f{\"u}r Einsteiger: [Linux-basierte Elektronik-Projekte mit Python und JavaScript]}", publisher = pub-ORA, address = pub-ORA:adr, pages = "xii + 134", year = "2014", ISBN = "3-95561-409-3", ISBN-13 = "978-3-95561-409-6", LCCN = "????", bibdate = "Thu Feb 26 14:22:56 MST 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/linux.bib; http://www.math.utah.edu/pub/tex/bib/python.bib; http://www.math.utah.edu/pub/tex/bib/unix.bib", acknowledgement = ack-nhfb, language = "German", subject = "BeagleBone Black; BeagleBone; Digitalelektronik; Hobbyelektronik; JavaScript; LINUX; Programmierung; Python (Programmiersprache); Systemplattform", } @Book{Romero:2014:MPR, author = "Victor Romero", title = "Mastering {Python} regular expressions", publisher = "Shroff Publishers", address = "????", year = "2014", ISBN = "93-5110-550-4", ISBN-13 = "978-93-5110-550-3", LCCN = "????", bibdate = "Wed Oct 14 08:00:43 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, } @Book{Rossant:2014:IIC, author = "Cyrille Rossant", title = "{IPython} interactive computing and visualization cookbook: over 100 hands-on recipes to sharpen your skills in high-performance numerical computing and data science with {Python}", publisher = pub-PACKT, address = pub-PACKT:adr, pages = "v + 494", year = "2014", ISBN = "1-78328-481-1, 1-78328-482-X (e-book), 1-322-16622-6 (e-book)", ISBN-13 = "978-1-78328-481-8, 978-1-78328-482-5 (e-book), 978-1-322-16622-3 (e-book)", LCCN = "QA76.73.P98 R677 2014", bibdate = "Sat Mar 21 07:16:36 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/numana2010.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "IPython Interactive Computing and Visualization Cookbook contains many ready-to-use focused recipes for high-performance scientific computing and data analysis. The first part covers programming techniques, including code quality and reproducibility, code optimization, high-performance computing through dynamic compilation, parallel computing, and graphics card programming. The second part tackles data science, statistics, machine learning, signal and image processing, dynamical systems, and pure and applied mathematics.", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Command languages (Computer science); Information visualization; Interactive computer systems; Command languages (Computer science); Information visualization; Interactive computer systems; Python (Computer program language)", } @Book{Russell:2014:MSW, author = "Matthew A. Russell", title = "Mining the social web", publisher = pub-ORA, address = pub-ORA:adr, edition = "Second", pages = "xxiv + 421", year = "2014", ISBN = "1-4493-6761-5 (paperback), 1-4493-7045-4 (e-book), 1-4493-6821-2 (e-book), 1-4493-6822-0 (e-book)", ISBN-13 = "978-1-4493-6761-9 (paperback), 978-1-4493-7045-9 (e-book), 978-1-4493-6821-0 (e-book), 978-1-4493-6822-7 (e-book)", LCCN = "QA76.9.D343 R87 2013", bibdate = "Sat Mar 21 07:07:01 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/ora.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "How can you tap into the wealth of social web data to discover who's making connections with whom, what they're talking about, and where they're located? With this expanded and thoroughly revised edition, you'll learn how to acquire, analyze, and summarize data from all corners of the social web, including Facebook, Twitter, LinkedIn, Google+, GitHub, email, websites, and blogs. Employ the Natural Language Toolkit, NetworkX, and other scientific computing tools to mine popular social web sites. Apply advanced text-mining techniques, such as clustering and TF-IDF, to extract meaning from human language data. Bootstrap interest graphs from GitHub by discovering affinities among people, programming languages, and coding projects. Build interactive visualizations with D3.js, an extraordinarily flexible HTML5 and JavaScript toolkit. Take advantage of more than two-dozen Twitter recipes, presented in O'Reilly's popular ``problem / solution / discussion'' cookbook format. The example code for this unique data science book is maintained in a public GitHub repository. It's designed to be easily accessible through a turnkey virtual machine that facilitates interactive learning with an easy-to-use collection of IPython Notebooks.", acknowledgement = ack-nhfb, remark = "Previous edition: 2011.", subject = "Data mining; Online social networks; Data mining; Online social networks", } @Book{Sabia:2014:PTV, author = "Martino Sabia and Cathy Wang", title = "{Python} tools for {Visual Studio} leverage the power of the {Visual Studio IDE} to develop better and more efficient {Python} projects", publisher = pub-PACKT, address = pub-PACKT:adr, year = "2014", ISBN = "1-78328-868-X, 1-78328-869-8", ISBN-13 = "978-1-78328-868-7, 978-1-78328-869-4", LCCN = "QA76.73.P98", bibdate = "Sat Oct 24 07:19:26 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", series = "Community experience distilled", URL = "http://proquest.tech.safaribooksonline.de/9781783288687", acknowledgement = ack-nhfb, subject = "Python (Computer program language)", tableofcontents = "Preface \\ What this book covers \\ What you need for this book \\ Who this book is for \\ Conventions \\ Reader feedback \\ Customer support \\ Downloading the color images of this book \\ Errata \\ Piracy \\ Questions \\ Special thanks from the authors \\ 1. Introduction to PTVS \\ Step-by-step installation and configuration \\ PTVS tools overview \\ The Python Environments window \\ Python Interactive \\ Visual Studio panels with PTVS \\ Summary \\ 2. Python Tools in Visual Studio \\ Mastering IntelliSense with Python \\ Using REPL in Visual Studio \\ Navigating code with ease \\ Object Browser \\ Summary \\ 3. Day-to-day Coding Tools \\ Project handling \\ Solution \\ Project \\ Specifying Python environments \\ Defining Search Paths \\ Refactoring \\ Debugging \\ Using breakpoints \\ Utilizing watch entries \\ Summary \\ 4. Django in PTVS \\ Django project template and tools \\ Installing a Python package \\ Running the application \\ IntelliSense in Django templates \\ Setting up and managing a database for a Django project \\ Setting up the admin interface \\ Creating a new Django application \\ Deploying a Django project on Microsoft Azure \\ Summary \\ 5. Advanced Django in PTVS \\ Library management \\ The Fabric library --- the deployment and development task manager \\ South --- the database deployment library \\ Why use South with Django \\ Installing South \\ Schema migration with South \\ Summary \\ 6. IPython and IronPython in PTVS \\ IPython in PTVS \\ IronPython \\ Using .NET classes in Python code with IronPython \\ Using the Python code in .NET with IronPython \\ Summary \\ Index", } @Book{Sale:2014:TPA, author = "David Sale", title = "Testing {Python}: applying unit testing, {TDD}, {BDD}, and acceptance testing", publisher = pub-WILEY, address = pub-WILEY:adr, pages = "xv + 222", year = "2014", ISBN = "1-118-90122-3 (paperback), 1-118-90125-8 (e-book), 1-118-90124-X (ePDF)", ISBN-13 = "978-1-118-90122-9 (paperback), 978-1-118-90125-0 (e-book), 978-1-118-90124-3 (ePDF)", LCCN = "QA76.73.P98 .S254 2014eb", bibdate = "Sat Oct 24 06:56:36 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "This is the most comprehensive book available on testing for Python, a programming language that is a natural choice for new and experienced developers. It will show you why Unit Testing and TDD can lead to cleaner, more flexible programs. In enterprise settings, it is critical for developers to ensure they always have working code, and that's what makes testing methodologies so attractive. This book will teach you the most widely used testing strategies and will introduce to you to still others, covering performance testing, continuous testing, and more. You will learn Unit Testing and TDD-important development methodologies that lie at the heart of Agile development and enhance your ability to work with Python to develop powerful, flexible applications with clean code.", acknowledgement = ack-nhfb, remark = "Titre de l'{\'e}cran-titre (visionn{\'e} le 21 juillet 2015). TRAITEMENT SOMMAIRE.", subject = "Python (Computer program language); Python (Computer program language)", tableofcontents = "Introduction \\ Chapter 1: A History of Testing \\ You Do Test, Don't You? \\ Fundamentals and Best Practices \\ Python Installation \\ Pip \\ Virtualenv \\ Source Control (SVN, Git) \\ Interactive Development Environment (IDE) \\ Summary \\ Chapter 2: Writing Unit Tests \\ What Is Unit Testing? \\ What Should You Test? \\ Writing Your First Unit Test \\ Checking Values with the assertEquals Method \\ Checking Exception Handling with assertRaises \\ Following the PEP-8 Standard \\ Unit Test Structure \\ Additional Unit Test Examples \\ Getting Clever with assertRaises \\ Making Your Life Easier with setUp \\ Useful Methods in Unit Testing \\ Summary \\ Chapter 3: Utilizing Unit Test Tools \\ Using Python's Nose \\ Installing Nose \\ Using Nose's Best Features \\ PyTest: An Alternative Test Runner \\ Installing PyTest \\ PyTest's Best Features \\ Choosing Between Nose and PyTest \\ Mock and Patch Tricky Situations \\ Installing the Mock Library \\ Mocking a Class and Method Response \\ When Mock Won't Do, Patch! \\ Summary \\ Chapter 4: Writing Testable Documentation \\ Writing Your First Doctest \\ The Python Shell \\ Adding Doctests to a Method \\ Running Your Doctests \\ Handling Error Cases \\ Advanced Doctest Usage \\ Improving Doctests with Nose Integration \\ Summary \\ Resources \\ Chapter 5: Driving Your Development with Tests \\ Agile Development \\ Adopting the Agile Process Now \\ Ethos of Test Driven Development \\ Advantages of Test Driven Development \\ Ping-Pong Programming \\ Test Driving Your Problem \\ Writing Your Failing Test \\ Making Your Test Pass \\ Driving More Features with Tests \\ Wrapping Up the Task \\ Summary \\ Resources \\ Chapter 6: Writing Acceptance Tests \\ What Is Acceptance Testing? \\ Anatomy of an Acceptance Test \\ Using Gherkin Syntax \\ The Magic Is in the Step File \\ Goals of Acceptance Testing \\ Implementing Developer and QA Collaboration \\ Letting Behavior Drive Your Problem \\ Writing Your Failing Acceptance Test \\ Defining Your Steps \\ Implementing Your Code \\ Developing More of the Feature \\ Delivering the Finished Article \\ Advanced Acceptance Test Techniques \\ Scenario Outline \\ Tables of Data in Scenarios \\ Summary \\ Resources \\ Chapter 7: Utilizing Acceptance Test Tools \\ Cucumber: The Acceptance Test Standard \\ Lettuce in Detail \\ Tagging \\ Fail Fast \\ Nosetest Integration \\ Robot: An Alternative Test Framework \\ Installing Robot \\ Writing a Test Case \\ Implementing Keywords \\ Running Robot Tests \\ Summary \\ Resources \\ Chapter 8: Maximizing Your Code's Performance \\ Understanding the Importance of Performance Testing \\ JMeter and Python \\ Installation \\ Configuring Your Test Plans \\ Utilizing Your Test Plans Effectively \\ Code Profiling with cProfile \\ Run a cProfile Session \\ Analyzing the cProfile Output \\ Summary \\ Resources \\ Chapter 9: Looking After Your Lint \\ Coming to Grips with Pylint \\ Installing Pylint \\ Using Pylint \\ Understanding the Pylint Report \\ Customizing Pylint's Output \\ Covering All Your Code with Unit Tests \\ Installing Coverage \\ Using Coverage \\ Advanced Coverage Options \\ Summary \\ Resources \\ Chapter 10: Automating Your Processes \\ Build Paver Tasks \\ Installing Paver \\ Creating a Paver Task \\ Executing Paver Tasks \\ Defining a Default Build \\ Setting Up Automated Builds \\ Installing Jenkins \\ Adding Coverage and PyLint Reports \\ Making Your Build Status Highly Visible \\ Summary \\ Resources \\ Chapter 11: Deploying Your Application \\ Deploying Your Application to Production \\ Creating a Deployable Artifact \\ QA Environment \\ Implementing Stage and Production Environments \\ Implementing a Cloud Deployment \\ Smoke Testing a Deployed Application \\ Example Application Stack \\ Smoke Test Scenarios \\ Implementing Smoke Tests \\ Summary \\ Resources \\ Chapter 12: The Future of Testing Python \\ Stub the Solution \\ Making Deployment Natural \\ Automating (Nearly) Everything \\ Working in Public \\ Collaborating on Step Definitions \\ Final Thoughts \\ Resources", } @Article{Sandner:2014:CMC, author = "Raimar Sandner and Andr{\'a}s Vukics", title = "{C++QEDv2 Milestone 10}: a {C++\slash Python} application-programming framework for simulating open quantum dynamics", journal = j-COMP-PHYS-COMM, volume = "185", number = "9", pages = "2380--2382", month = sep, year = "2014", CODEN = "CPHCBZ", ISSN = "0010-4655 (print), 1879-2944 (electronic)", ISSN-L = "0010-4655", bibdate = "Sat Aug 16 08:37:39 MDT 2014", bibsource = "http://www.math.utah.edu/pub/tex/bib/compphyscomm2010.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.sciencedirect.com/science/article/pii/S0010465514001349", acknowledgement = ack-nhfb, fjournal = "Computer Physics Communications", journal-URL = "http://www.sciencedirect.com/science/journal/00104655/", } @Book{Sarker:2014:PNP, author = "M. O. Faruque Sarker", title = "Python network programming cookbook over 70 detailed recipes to develop pratical solutions for a wide range of real-world network programming tasks", publisher = pub-PACKT, address = pub-PACKT:adr, year = "2014", ISBN = "1-84951-346-5", ISBN-13 = "978-1-84951-346-3", LCCN = "????", bibdate = "Sat Oct 24 07:15:53 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", series = "Quick answers to common problems", URL = "http://proquest.tech.safaribooksonline.de/9781849513463", acknowledgement = ack-nhfb, tableofcontents = "Preface \\ What this book covers \\ What you need for this book \\ Who this book is for \\ Conventions \\ Reader feedback \\ Customer support \\ Downloading the example code \\ Errata \\ Piracy \\ Questions \\ 1. Sockets, IPv4, and Simple Client/Server Programming \\ Introduction \\ Printing your machine's name and IPv4 address \\ Getting ready \\ How to do it... \\ How it works... \\ Retrieving a remote machine's IP address \\ How to do it... \\ How it works... \\ Converting an IPv4 address to different formats \\ How to do it... \\ How it works... \\ Finding a service name, given the port and protocol \\ Getting ready \\ How to do it... \\ How it works... \\ Converting integers to and from host to network byte order \\ How to do it... \\ How it works... \\ Setting and getting the default socket timeout \\ How to do it... \\ How it works... \\ Handling socket errors gracefully \\ How to do it... \\ How it works... \\ Modifying socket's send/receive buffer sizes \\ How to do it... \\ How it works... \\ Changing a socket to the blocking/non-blocking mode \\ How to do it... \\ How it works... \\ Reusing socket addresses \\ How to do it... \\ How it works... \\ Printing the current time from the Internet time server \\ Getting ready \\ How to do it... \\ How it works... \\ Writing a SNTP client \\ How to do it... \\ How it works... \\ Writing a simple echo client/server application \\ How to do it... \\ How it works... \\ 2. Multiplexing Socket I/O for Better Performance \\ Introduction \\ Using ForkingMixIn in your socket server applications \\ How to do it... \\ How it works... \\ Using ThreadingMixIn in your socket server applications \\ Getting ready \\ How to do it... \\ How it works... \\ Writing a chat server using select.select \\ How to do it... \\ How it works... \\ Multiplexing a web server using select.epoll \\ How to do it... \\ How it works... \\ Multiplexing an echo server using Diesel concurrent library \\ Getting ready \\ How to do it... \\ How it works... \\ 3. IPv6, Unix Domain Sockets, and Network Interfaces \\ Introduction \\ Forwarding a local port to a remote host \\ How to do it... \\ How it works... \\ Pinging hosts on the network with ICMP \\ Getting ready \\ How to do it... \\ How it works... \\ Waiting for a remote network service \\ How to do it... \\ How it works... \\ Enumerating interfaces on your machine \\ Getting ready \\ How to do it... \\ How it works... \\ Finding the IP address for a specific interface on your machine \\ Getting ready \\ How to do it... \\ How it works... \\ Finding whether an interface is up on your machine \\ Getting ready \\ How to do it... \\ How it works... \\ Detecting inactive machines on your network \\ Getting ready \\ How to do it... \\ How it works... \\ Performing a basic IPC using connected sockets (socketpair) \\ Getting ready \\ How to do it... \\ How it works... \\ Performing IPC using Unix domain sockets \\ How to do it... \\ How it works... \\ Finding out if your Python supports IPv6 sockets \\ Getting ready \\ How to do it... \\ How it works... \\ Extracting an IPv6 prefix from an IPv6 address \\ How to do it... \\ How it works... \\ Writing an IPv6 echo client/server \\ How to do it... \\ How it works... \\ 4. Programming with HTTP for the Internet \\ Introduction \\ Downloading data from an HTTP server \\ How to do it... \\ How it works... \\ Serving HTTP requests from your machine \\ How to do it... \\ How it works... \\ Extracting cookie information after visiting a website \\ How to do it... \\ How it works... \\ Submitting web forms \\ Getting ready \\ How to do it... \\ How it works... \\ Sending web requests through a proxy server \\ Getting ready \\ How to do it... \\ How it works... \\ Checking whether a web page exists with the HEAD request \\ How to do it... \\ How it works... \\ Spoofing Mozilla Firefox in your client code \\ How to do it... \\ How it works... \\ Saving bandwidth in web requests with the HTTP compression \\ How to do it... \\ How it works... \\ Writing an HTTP fail-over client with resume and partial downloading \\ How to do it... \\ How it works... \\ Writing a simple HTTPS server code with Python and OpenSSL \\ Getting ready \\ How to do it... \\ How it works... \\ 5. E-mail Protocols, FTP, and CGI Programming \\ Introduction \\ Listing the files in a remote FTP server \\ Getting ready \\ How to do it... \\ How it works... \\ Uploading a local file to a remote FTP server \\ Getting ready \\ How to do it... \\ How it works... \\ E-mailing your current working directory as a compressed ZIP file \\ Getting ready \\ How to do it... \\ How it works... \\ See also \\ Downloading your Google e-mail with POP3 \\ Getting ready \\ How to do it... \\ How it works... \\ Checking your remote e-mail with IMAP \\ Getting ready \\ How to do it... \\ How it works... \\ Sending an e-mail with an attachment via Gmail SMTP server \\ Getting ready \\ How to do it... \\ How it works... \\ Writing a guestbook for your (Python-based) web server with CGI \\ How to do it... \\ How it works... \\ 6. Screen-scraping and Other Practical Applications \\ Introduction \\ Searching for business addresses using the Google Maps API \\ Getting ready \\ How to do it... \\ How it works... \\ See also \\ Searching for geographic coordinates using the Google Maps URL \\ How to do it... \\ How it works... \\ Searching for an article in Wikipedia \\ Getting ready \\ How to do it... \\ How it works... \\ Searching for Google stock quote \\ Getting ready \\ How to do it... \\ How it works... \\ Searching for a source code repository at GitHub \\ Getting ready \\ How to do it... \\ How it works... \\ Reading news feed from BBC \\ Getting ready \\ How to do it... \\ How it works... \\ Crawling links present in a web page \\ How to do it... \\ How it works... \\ 7. Programming Across Machine Boundaries \\ Introduction \\ Executing a remote shell command using telnet \\ Getting ready \\ How to do it... \\ How it works... \\ Copying a file to a remote machine by SFTP \\ Getting ready \\ How to do it... \\ How it works... \\ Printing a remote machine's CPU information \\ Getting ready \\ How to do it... \\ How it works... \\ Installing a Python package remotely \\ Getting ready \\ How to do it... \\ How it works... \\ Running a MySQL command remotely \\ Getting ready \\ How to do it... \\ How it works... \\ Transferring files to a remote machine over SSH \\ Getting ready \\ How to do it... \\ How it works... \\ Configuring Apache remotely to host a website \\ Getting ready \\ How to do it... \\ How it works... \\ 8. Working with Web Services --- XML-RPC, SOAP, and REST \\ Introduction \\ Querying a local XML-RPC server \\ Getting ready \\ How to do it... \\ How it works... \\ Writing a multithreaded multicall XML-RPC server \\ How to do it... \\ How it works... \\ Running an XML-RPC server with a basic HTTP authentication \\ How to do it... \\ How it works... \\ Collecting some photo information from Flickr using REST \\ How to do it... \\ How it works... \\ Searching for SOAP methods from an Amazon S3 web service \\ Getting ready \\ How to do it... \\ How it works... \\ Searching Google for custom information \\ Getting ready \\ How to do it... \\ How it works... \\ Searching Amazon for books through product search API \\ Getting ready \\ How to do it... \\ How it works... \\ 9. Network Monitoring and Security \\ Introduction \\ Sniffing packets on your network \\ Getting ready \\ How to do it... \\ How it works... \\ Saving packets in the pcap format using the pcap dumper \\ How to do it... \\ How it works... \\ Adding an extra header in HTTP packets \\ How to do it... \\ How it works... \\ Scanning the ports of a remote host \\ How to do it... \\ How it works... \\ Customizing the IP address of a packet \\ How to do it... \\ How it works... \\ Replaying traffic by reading from a saved pcap file \\ How to do it... \\ How it works... \\ Scanning the broadcast of packets \\ How to do it... \\ How it works... \\ Index", } @Book{Seitz:2014:BPP, author = "Justin Seitz", title = "Black hat {Python}: {Python} programming for hackers and pentesters", publisher = pub-NO-STARCH, address = pub-NO-STARCH:adr, pages = "xviii + 170", year = "2014", ISBN = "1-59327-590-0", ISBN-13 = "978-1-59327-590-7", LCCN = "QA76.73.P98 S45 2015", bibdate = "Sat Oct 24 05:55:13 MDT 2015", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", acknowledgement = ack-nhfb, tableofcontents = "Black Hat Python: Python Programming for Hackers and Pentesters \\ Dedication \\ About the Author \\ About the Technical Reviewers \\ Foreword \\ Preface \\ Acknowledgments \\ 1. Setting Up Your Python Environment \\ Installing Kali Linux \\ WingIDE \\ 2. The Network: Basics \\ Python Networking in a Paragraph \\ TCP Client \\ UDP Client \\ TCP Server \\ Replacing Netcat \\ Kicking the Tires \\ Building a TCP Proxy \\ Kicking the Tires \\ SSH with Paramiko \\ Kicking the Tires \\ SSH Tunneling \\ Kicking the Tires \\ 3. The Network: Raw Sockets and Sniffing \\ Building a UDP Host Discovery Tool \\ Packet Sniffing on Windows and Linux \\ Kicking the Tires \\ Decoding the IP Layer \\ Kicking the Tires \\ Decoding ICMP \\ Kicking the Tires \\ 4. Owning the Network with Scapy \\ Stealing Email Credentials \\ Kicking the Tires \\ ARP Cache Poisoning with Scapy \\ Kicking the Tires \\ PCAP Processing \\ Kicking the Tires \\ 5. Web Hackery \\ The Socket Library of the Web: urllib2 \\ Mapping Open Source Web App Installations \\ Kicking the Tires \\ Brute-Forcing Directories and File Locations \\ Kicking the Tires \\ Brute-Forcing HTML Form Authentication \\ Kicking the Tires \\ 6. Extending Burp Proxy \\ Setting Up \\ Burp Fuzzing \\ Kicking the Tires \\ Bing for Burp \\ Kicking the Tires \\ Turning Website Content into Password Gold \\ Kicking the Tires \\ 7. Github Command and Control \\ Setting Up a GitHub Account \\ Creating Modules \\ Trojan Configuration \\ Building a Github-Aware Trojan \\ Hacking Python s import Functionality \\ Kicking the Tires \\ 8. Common Trojaning Tasks on Windows \\ Keylogging for Fun and Keystrokes \\ Kicking the Tires \\ Taking Screenshots \\ Pythonic Shellcode Execution \\ Kicking the Tires \\ Sandbox Detection \\ 9. Fun with Internet Explorer \\ Man-in-the-Browser (Kind Of) \\ Creating the Server \\ Kicking the Tires \\ IE COM Automation for Exfiltration \\ Kicking the Tires \\ 10. Windows Privilege Escalation \\ Installing the Prerequisites \\ Creating a Process Monitor \\ Process Monitoring with WMI \\ Kicking the Tires \\ Windows Token Privileges \\ Winning the Race \\ Kicking the Tires \\ Code Injection \\ Kicking the Tires \\ 11. Automating Offensive Forensics \\ Installation \\ Profiles \\ Grabbing Password Hashes \\ Direct Code Injection \\ Kicking the Tires \\ Updates \\ Index", } @Book{Sileika:2014:PPS, author = "Rytis Sileika", title = "{Pro Python} system administration", publisher = pub-APRESS, address = pub-APRESS:adr, edition = "Second", pages = "xxvi + 399", year = "2014", ISBN = "1-4842-0218-X (paperback), 1-4842-0217-1 (e-book)", ISBN-13 = "978-1-4842-0218-0 (paperback), 978-1-4842-0217-3 (e-book)", LCCN = "QA76.73.P98 S55 2014", bibdate = "Sat Oct 24 06:17:20 MDT 2015", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", series = "The expert's voice in Python", acknowledgement = ack-nhfb, subject = "Python (Computer program language); Computer systems; Management; Computer programs; Systems software", tableofcontents = "About the Author \\ About the Technical Reviewers \\ Acknowledgments \\ Introduction \\ Chapter 1: Reading and Collecting Performance Data Using SNMP \\ Application Requirements and Design \\ Specifying the Requirements \\ High-Level Design Specification \\ Introduction to SNMP \\ The System SNMP Variables Node \\ The Interfaces SNMP Variables Node \\ Authentication in SNMP \\ Querying SNMP from the Command Line \\ Querying SNMP Devices from Python \\ Configuring the Application \\ Using the PySNMP Library \\ Implementing the SNMP Read Functionality \\ Storing Data with RRDTool \\ Introduction to RRDTool \\ Using RRDTool from a Python Program \\ Creating a Round Robin Database \\ Writing and Reading Data from the Round Robin Database \\ Plotting Graphs with RRDTool \\ Integrating RRDTool with the Monitoring Solution \\ Creating Web Pages with the Jinja2 Templating System \\ Loading Template Files with Jinja2 \\ The Jinja2 Template Language \\ Generating Website Pages \\ Summary \\ Chapter 2: Managing Devices Using the SOAP API \\ What Is the SOAP API? \\ The Structure of a SOAP Message \\ Requesting Services with SOAP \\ Finding Information About Available Services with WSDL \\ SOAP Support in Python \\ Converting WSDL Schema to Python Helper Module \\ Defining Requirements for Our Load Balancer Tool \\ Basic Requirements \\ Code Structure \\ Configuration \\ Accessing Citrix Netscaler Load Balancer with the SOAP API \\ Fixing Issues with Citrix Netscaler WSDL \\ Creating a Connection Object \\ Logging In: Our First SOAP Call \\ Gathering Performance Statistics Data \\ SOAP Methods for Reading Statistical Data and its Return Values \\ Reading System Health Data \\ Reading Service Status Data \\ Automating Some Administration Tasks \\ Device Configuration SOAP Methods \\ Setting a Service State \\ A Word About Logging and Error Handling \\ Using the Python Logging Module \\ Handling Exceptions \\ NetScaler NITRO API \\ Download \\ Using the Nitro-Python Module \\ Summary \\ Chapter 3: Creating a Web Application for IP Address Accountancy \\ Designing the Application \\ Setting out the Requirements \\ Making Design Decisions \\ Defining the Database Schema \\ Creating the Application Workflow \\ The Basic Concepts of the Django Framework \\ What Is Django? \\ The Model/View/Controller Pattern \\ Installing the Django Framework \\ The Structure of a Django Application \\ Using Django with Apache Web Server \\ Implementing Basic Functionality \\ Defining the Database Model \\ URL Configuration \\ Using the Management Interface \\ Viewing Records \\ Using Templates \\ Deleting Records \\ Adding New Records \\ Modifying Existing Records \\ Summary \\ Chapter 4: Integrating the IP Address Application with DHCP \\ Extending the Design and Requirements \\ Extending the Database Schema \\ Making Additions to the Workflow \\ Adding DHCP Network Data \\ The Data Models \\ Additional Workflows \\ The Add Function \\ The Modify Function \\ The Delete Function \\ Extending the DHCP Configuration with Address Pools \\ The Address Pool Data Model \\ The DHCP Network Details \\ The Add and Delete Functions \\ Reworking the URL Structure \\ Generation of URLs in the Model Class \\ Reverse Resolution of URLs \\ Assignment of Names to URL Patterns \\ Use of URL References in the Templates \\ Adding Client Classification \\ Additions to the Data Model \\ Template Inheritance \\ Class Rules Management \\ Generating the DHCP Configuration File \\ Other Modifications \\ Resolving IPs to Hostnames \\ Checking Whether the Address Is in Use \\ Dynamic DHCP Lease Management \\ Employ Python Interface to OMAPI \\ Set up the ISC DHCP Server \\ Add a New Host Lease Record \\ Delete a Host Lease Record \\ Summary \\ Chapter 5: Maintaining a List of Virtual Hosts in an Apache Configuration File \\ Specifying the Design and Requirements for the Application \\ Functional Requirements \\ High-Level Design \\ Setting Up the Environment \\ Apache Configuration \\ Creating a Django Project and Application \\ Configuring the Application \\ Defining the URL Structure \\ The Data Model \\ The Basic Model Structure \\ Modifying the Administration Interface \\ Improving the Class and Object Lists \\ Adding Custom Object Actions \\ Generating the Configuration File \\ Summary \\ Chapter 6: Gathering and Presenting Statistical Data from Apache Log Files \\ Application Structure and Functionality \\ Application Requirements \\ Application Design \\ Plug-in Framework Implementation in Python \\ The Mechanics of a Plug-in Framework \\ Creating the Plug-in Framework \\ Log-Parsing Application \\ Format of Apache Log Files \\ Log File Reader \\ Calling the Plug-in Methods \\ Plug-in Modules \\ Installing the Required Libraries \\ Writing the Plug-in Code \\ Visualizing the Data \\ Summary \\ Chapter 7: Performing Complex Searches and Reporting on Application Log Files \\ Defining the Problem \\ Why We Use Exceptions \\ Are Exceptions Always a Bad Sign? \\ Why We Should Analyze Exceptions \\ Parsing Complex Log Files \\ What Can We Find in a Typical Log File? \\ The Structure of an Exception Stack Trace Log \\ Handling Multiple Files \\ Using the Built-in Bzip2 Library \\ Traversing Large Data Files \\ What Are Generators, and How Are They Used? \\ Detecting the Exceptions \\ Detecting the Potential Candidates \\ Filtering the Legitimate Exception Traces \\ Storing Data in Data Structures \\ The Structure of Exception Stack Trace Data \\ Generating an Exception Fingerprint for Unknown Exceptions \\ Detecting Known Exceptions \\ Producing Reports \\ Grouping the Exceptions \\ Producing Differently Formatted Outputs for the Same Dataset \\ Calculating Group Statistics \\ Summary \\ Chapter 8: A Website Availability Check Script for Nagios \\ Requirements for the Check System \\ The Nagios Monitoring System \\ Nagios Plug-In Architecture \\ The Site Navigation Check \\ Installing the Beautiful Soup HTML Parsing Library \\ Retrieving a Web Page \\ Parsing the HTML Pages with Beautiful Soup \\ Adding the New Check to the Nagios System \\ Emulating the User Login Process \\ Simplifying HTTP Client with Requests Module \\ Summary \\ Chapter 9: Management and Monitoring Subsystem \\ Design \\ The Components \\ The Data Objects \\ The Data Structures \\ Introduction to Data Normalization \\ Configuration Data \\ Performance Data \\ Scheduling \\ Site Configuration \\ Communication Flows \\ XML-RPC for Information Exchange \\ CherryPy \\ The Server Process \\ Storing Data in a SQLite3 Database \\ Actions \\ The Scheduler \\ Actions \\ Running Multiple Processes \\ Running Methods at Equal Intervals \\ A Cron-Like Scheduler \\ Ticket Dispatcher \\ Summary \\ Chapter 10: Remote Monitoring Agents \\ Design \\ The Passive Component \\ Architecture \\ Actions \\ The Security Model \\ Configuration \\ The ConfigParser Library \\ The Configuration Class Wrapper \\ The Sensor Design \\ Running External Processes \\ Using the Subprocess Library \\ Controlling the Running Processes \\ Communicating with External Processes \\ Automatically Updating Sensor Code \\ Sending and Receiving Binary Data with XML-RPC \\ Working with Files and Archives (TAR and BZip2) \\ Summary \\ Chapter 11: Statistics Gathering and Reporting \\ Application Requirements and Design \\ Using the NumPy Library \\ Installing NumPy \\ NumPy Examples \\ Representing Data with matplotlib \\ Installing matplotlib \\ Understanding the Library Structure \\ Plotting Graphs \\ Saving Plots to a File \\ Graphing Statistical Data \\ Collating Data from the Database \\ Drawing Timescale Graphs \\ Host Details Page \\ Summary \\ Chapter 12: Distributed Message Processing System \\ Quick Introduction to Message and Task Queues \\ Task Queuing Systems \\ Message Queuing Systems \\ Setting up the Celery Server and Client \\ Installing and Setting up RabbitMQ \\ Installing and Setting up Celery \\ Celery Basics \\ Layout of a Typical Celery Application \\ Creating aTasks Module \\ Routing Tasks \\ Summary \\ Chapter 13: Automatic MySQL Database Performance Tuning \\ Requirements Specification and Design \\ Basic Application Requirements \\ System Design \\ Modifying the Plug-in Framework \\ Changes to the Host Application \\ Modifying the Plug-in Manager \\ Writing the Producer Plug-ins \\ Accessing the MySQL Database from Python Applications \\ Querying the Configuration Variables \\ Querying the Server Status Variables \\ Collecting the Host Configuration Data \\ Writing the Consumer Plug-ins \\ Checking the MySQL Version \\ Checking the Key Buffer Size Setting \\ Checking the Slow Queries Counter \\ Summary \\ Chapter 14: Using Amazon EC2/S3 as a Data Warehouse Solution \\ Specifying the Problem and the Solution \\ The Problem \\ Our Solution \\ Design Specifications \\ The Amazon EC2 and S3 Crash Course \\ Authentication and Security \\ The Simple Storage System Concepts \\ The Elastic Computing Cloud Concepts \\ User Interfaces \\ Creating a Custom EC2 Image \\ Reusing Existing Images \\ Making Modifications \\ Bundling the New AMI \\ Controlling the EC2 Using the Boto Python Module \\ Setting Up the Configuration Variables \\ Initializing the EC2 Instance Programmatically \\ Transferring the Data \\ Destroying the EC2 Instance Programmatically \\ Summary \\ Index", } @Article{Sinz:2014:PNP, author = "Fabian H. Sinz and J{\"o}rn-Philipp Lies and Sebastian Gerwinn and Matthias Bethge", title = "\pkg{Natter}: A {Python} Natural Image Statistics Toolbox", journal = j-J-STAT-SOFT, volume = "61", number = "5", pages = "??--??", month = nov, year = "2014", CODEN = "JSSOBK", ISSN = "1548-7660", ISSN-L = "1548-7660", bibdate = "Wed Feb 11 10:31:33 MST 2015", bibsource = "http://www.math.utah.edu/pub/tex/bib/jstatsoft.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.jstatsoft.org/v61/i05", acknowledgement = ack-nhfb, journal-URL = "http://www.jstatsoft.org/", pubdates = "Submitted 2013-04-21; Accepted 2014-05-23", } @Book{Stewart:2014:PS, author = "John Stewart", title = "Python for Scientists", publisher = pub-CAMBRIDGE, address = pub-CAMBRIDGE:adr, pages = "xii + 220", year = "2014", ISBN = "1-107-06139-3 (hardcover), 1-107-68642-3", ISBN-13 = "978-1-107-06139-2 (hardcover), 978-1-107-68642-7", LCCN = "Q183.9 .S865 2014", bibdate = "Thu Jun 26 09:42:41 MDT 2014", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://assets.cambridge.org/97811070/61392/cover/9781107061392.jpg", abstract = "Python is a free, open source, easy-to-use software tool that offers a significant alternative to proprietary packages such as MATLAB and Mathematica. This book covers everything the working scientist needs to know to start using Python effectively. The author explains scientific Python from scratch, showing how easy it is to implement and test non-trivial mathematical algorithms and guiding the reader through the many freely available add-on modules. A range of examples, relevant to many different fields, illustrate the program's capabilities. In particular, readers are shown how to use pre-existing legacy code (usually in Fortran77) within the Python environment, thus avoiding the need to master the original code. Instead of exercises the book contains useful snippets of tested code which the reader can adapt to handle problems in their own field, allowing students and researchers with little computer expertise to get up and running as soon as possible.", acknowledgement = ack-nhfb, author-dates = "1943 July 1", subject = "Science; Data processing; Python (Computer program language); COMPUTERS / General.", tableofcontents = "Preface \\ 1. Introduction \\ 2. Getting started with IPython \\ 3. A short Python tutorial \\ 4. Numpy \\ 5. Two-dimensional graphics \\ 6. Three-dimensional graphics \\ 7. Ordinary differential equations \\ 8. Partial differential equations: a pseudospectral approach \\ 9. Case study: multigrid \\ Appendix A. Installing a Python environment \\ Appendix B. Fortran77 subroutines for pseudospectral methods \\ References \\ Index", } @Article{Strickland:2014:PPM, author = "Christopher Strickland and Robert Burdett and Kerrie Mengersen and Robert Denham", title = "{PySSM}: A {Python} Module for {Bayesian} Inference of Linear {Gaussian} State Space Models", journal = j-J-STAT-SOFT, volume = "57", number = "6", pages = "??--??", month = apr, year = "2014", CODEN = "JSSOBK", ISSN = "1548-7660", ISSN-L = "1548-7660", bibdate = "Mon Jun 16 11:01:52 MDT 2014", bibsource = "http://www.math.utah.edu/pub/tex/bib/jstatsoft.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", URL = "http://www.jstatsoft.org/v57/i06", acknowledgement = ack-nhfb, fjournal = "Journal of Statistical Software", journal-URL = "http://www.jstatsoft.org/", pubdates = "Submitted 2012-03-23; Accepted 2013-09-21", } @Book{Sweigart:2014:ABS, author = "Al Sweigart", title = "Automate the boring stuff with python: practical programming for total beginners", publisher = pub-NO-STARCH, address = pub-NO-STARCH:adr, pages = "xxi + 479", year = "2014", ISBN = "1-59327-599-4", ISBN-13 = "978-1-59327-599-0", LCCN = "QA76.73.P98", bibdate = "Wed Oct 14 07:33:44 MDT 2015", bibsource = "http://www.math.utah.edu/pub/tex/bib/python.bib; z3950.loc.gov:7090/Voyager", URL = "http://proquestcombo.safaribooksonline.com/9781457189906", abstract = "In \booktitle{Automate the Boring Stuff with Python}, you'll learn how to use Python to write programs that do in minutes what would take you hours to do by hand no prior programming experience required. Once you've mastered the basics of programming, you'll create Python programs that effortlessly perform useful and impressive feats of automation to: Search for text in a file or across multiple files; Create, update, move, and rename files and folders; Search the Web and download online content; Update and format data in Excel spreadsheets of any size; Split, merge, watermark, and encrypt PDFs; Send reminder emails and text notifications; Fill out online forms. Step-by-step instructions walk you through each program, and practice projects at the end of each chapter challenge you to improve those programs and use your newfound skills to automate similar tasks.", acknowledgement = ack-nhfb, tableofcontents = "Dedication \\ About the Author \\ About the Tech Reviewer \\ Acknowledgments \\ Introduction \\ Whom Is This Book For? \\ Conventions \\ What Is Programming? \\ What Is Python? \\ Programmers Don t Need to Know Much Math \\ Programming Is a Creative Activity \\ About This Book \\ Downloading and Installing Python \\ Starting IDLE \\ The Interactive Shell \\ How to Find Help \\ Asking Smart Programming Questions \\ Summary \\ I. Python Programming Basics \\ 1. Python Basics \\ Entering Expressions into the Interactive Shell \\ The Integer, Floating-Point, and String Data Types \\ String Concatenation and Replication \\ Storing Values in Variables \\ Assignment Statements \\ Variable Names \\ Your First Program \\ Dissecting Your Program \\ Comments \\ The print() Function \\ The input() Function \\ Printing the User s Name \\ The len() Function \\ The str(), int(), and float() Functions \\ Summary \\ Practice Questions \\ 2. Flow Control \\ Boolean Values \\ Comparison Operators \\ Boolean Operators \\ Binary Boolean Operators \\ The not Operator \\ Mixing Boolean and Comparison Operators \\ Elements of Flow Control \\ Conditions \\ Blocks of Code \\ Program Execution \\ Flow Control Statements \\ if Statements \\ else Statements \\ elif Statements \\ while Loop Statements \\ An Annoying while Loop \\ break Statements \\ continue Statements \\ for Loops and the range() Function \\ An Equivalent while Loop \\ The Starting, Stopping, and Stepping Arguments to range() \\ Importing Modules \\ from import Statements \\ Ending a Program Early with sys.exit() \\ Summary \\ Practice Questions \\ 3. Functions \\ def Statements with Parameters \\ Return Values and return Statements \\ The None Value \\ Keyword Arguments and print() \\ Local and Global Scope \\ Local Variables Cannot Be Used in the Global Scope \\ Local Scopes Cannot Use Variables in Other Local Scopes \\ Global Variables Can Be Read from a Local Scope \\ Local and Global Variables with the Same Name \\ The global Statement \\ Exception Handling \\ A Short Program: Guess the Number \\ Summary \\ Practice Questions \\ Practice Projects \\ The Collatz Sequence \\ Input Validation \\ 4. Lists \\ The List Data Type \\ Getting Individual Values in a List with Indexes \\ Negative Indexes \\ Getting Sublists with Slices \\ Getting a List s Length with len() \\ Changing Values in a List with Indexes \\ List Concatenation and List Replication \\ Removing Values from Lists with del Statements \\ Working with Lists \\ Using for Loops with Lists \\ The in and not in Operators \\ The Multiple Assignment Trick \\ Augmented Assignment Operators \\ Methods \\ Finding a Value in a List with the index() Method \\ Adding Values to Lists with the append() and insert() Methods \\ Removing Values from Lists with remove() \\ Sorting the Values in a List with the sort() Method \\ Example Program: Magic 8 Ball with a List \\ List-like Types: Strings and Tuples \\ Mutable and Immutable Data Types \\ The Tuple Data Type \\ Converting Types with the list() and tuple() Functions \\ References \\ Passing References \\ The copy Module s copy() and deepcopy() Functions \\ Summary \\ Practice Questions \\ Practice Projects \\ Comma Code \\ Character Picture Grid \\ 5. Dictionaries and Structuring Data \\ The Dictionary Data Type \\ Dictionaries vs. Lists \\ The keys(), values(), and items() Methods \\ Checking Whether a Key or Value Exists in a Dictionary \\ The get() Method \\ The setdefault() Method \\ Pretty Printing \\ Using Data Structures to Model Real-World Things \\ A Tic-Tac-Toe Board \\ Nested Dictionaries and Lists \\ Summary \\ Practice Questions \\ Practice Projects \\ Fantasy Game Inventory \\ List to Dictionary Function for Fantasy Game Inventory \\ 6. Manipulating Strings \\ Working with Strings \\ String Literals \\ Double Quotes \\ Escape Characters \\ Raw Strings \\ Multiline Strings with Triple Quotes \\ Multiline Comments \\ Indexing and Slicing Strings \\ The in and not in Operators with Strings \\ Useful String Methods \\ The upper(), lower(), isupper(), and islower() String Methods \\ The isX String Methods \\ The startswith() and endswith() String Methods \\ The join() and split() String Methods \\ Justifying Text with rjust(), ljust(), and center() \\ Removing Whitespace with strip(), rstrip(), and lstrip() \\ Copying and Pasting Strings with the pyperclip Module \\ Project: Password Locker \\ Step 1: Program Design and Data Structures \\ Step 2: Handle Command Line Arguments \\ Step 3: Copy the Right Password \\ Project: Adding Bullets to Wiki Markup \\ Step 1: Copy and Paste from the Clipboard \\ Step 2: Separate the Lines of Text and Add the Star \\ Step 3: Join the Modified Lines \\ Summary \\ Practice Questions \\ Practice Project \\ Table Printer \\ II. Automating Tasks \\ 7. Pattern Matching with Regular Expressions \\ Finding Patterns of Text Without Regular Expressions \\ Finding Patterns of Text with Regular Expressions \\ Creating Regex Objects \\ Matching Regex Objects \\ Review of Regular Expression Matching \\ More Pattern Matching with Regular Expressions \\ Grouping with Parentheses \\ Matching Multiple Groups with the Pipe \\ Optional Matching with the Question Mark \\ Matching Zero or More with the Star \\ Matching One or More with the Plus \\ Matching Specific Repetitions with Curly Brackets \\ Greedy and Nongreedy Matching \\ The findall() Method \\ Character Classes \\ Making Your Own Character Classes \\ The Caret and Dollar Sign Characters \\ The Wildcard Character \\ Matching Everything with Dot-Star \\ Matching Newlines with the Dot Character \\ Review of Regex Symbols \\ Case-Insensitive Matching \\ Substituting Strings with the sub() Method \\ Managing Complex Regexes \\ Combining re.IGNORECASE, re.DOTALL, and re.VERBOSE \\ Project: Phone Number and Email Address Extractor \\ Step 1: Create a Regex for Phone Numbers \\ Step 2: Create a Regex for Email Addresses \\ Step 3: Find All Matches in the Clipboard Text \\ Step 4: Join the Matches into a String for the Clipboard \\ Running the Program \\ Ideas for Similar Programs \\ Summary \\ Practice Questions \\ Practice Projects \\ Strong Password Detection \\ Regex Version of strip() \\ 8. Reading and Writing Files \\ Files and File Paths \\ Backslash on Windows and Forward Slash on OS X and Linux \\ The Current Working Directory \\ Absolute vs. Relative Paths \\ Creating New Folders with os.makedirs() \\ The os.path Module \\ Handling Absolute and Relative Paths \\ Finding File Sizes and Folder Contents \\ Checking Path Validity \\ The File Reading/Writing Process \\ Opening Files with the open() Function \\ Reading the Contents of Files \\ Writing to Files \\ Saving Variables with the shelve Module \\ Saving Variables with the pprint.pformat() Function \\ Project: Generating Random Quiz Files \\ Step 1: Store the Quiz Data in a Dictionary \\ Step 2: Create the Quiz File and Shuffle the Question Order \\ Step 3: Create the Answer Options \\ Step 4: Write Content to the Quiz and Answer Key Files \\ Project: Multiclipboard \\ Step 1: Comments and Shelf Setup \\ Step 2: Save Clipboard Content with a Keyword \\ Step 3: List Keywords and Load a Keyword s Content \\ Summary \\ Practice Questions \\ Practice Projects \\ Extending the Multiclipboard \\ Mad Libs \\ Regex Search \\ 9. Organizing Files \\ The shutil Module \\ Copying Files and Folders \\ Moving and Renaming Files and Folders \\ Permanently Deleting Files and Folders \\ Safe Deletes with the send2trash Module \\ Walking a Directory Tree \\ Compressing Files with the zipfile Module \\ Reading ZIP Files \\ Extracting from ZIP Files \\ Creating and Adding to ZIP Files \\ Project: Renaming Files with American-Style Dates to European-Style Dates \\ Step 1: Create a Regex for American-Style Dates \\ Step 2: Identify the Date Parts from the Filenames \\ Step 3: Form the New Filename and Rename the Files \\ Ideas for Similar Programs \\ Project: Backing Up a Folder into a ZIP File \\ Step 1: Figure Out the ZIP File s Name \\ Step 2: Create the New ZIP File \\ Step 3: Walk the Directory Tree and Add to the ZIP File \\ Ideas for Similar Programs \\ Summary \\ Practice Questions \\ Practice Projects \\ Selective Copy \\ Deleting Unneeded Files \\ Filling in the Gaps \\ 10. Debugging \\ Raising Exceptions \\ Getting the Traceback as a String \\ Assertions \\ Using an Assertion in a Traffic Light Simulation \\ Disabling Assertions \\ Logging \\ Using the logging Module \\ Don t Debug with print() \\ Logging Levels \\ Disabling Logging \\ Logging to a File \\ IDLE s Debugger \\ Go \\ Step \\ Over \\ Out \\ Quit \\ Debugging a Number Adding Program \\ Breakpoints \\ Summary \\ Practice Questions \\ Practice Project \\ Debugging Coin Toss \\ 11. Web Scraping \\ Project: mapit.py with the webbrowser Module \\ Step 1: Figure Out the URL \\ Step 2: Handle the Command Line Arguments \\ Step 3: Handle the Clipboard Content and Launch the Browser \\ Ideas for Similar Programs \\ Downloading Files from the Web with the requests Module \\ Downloading a Web Page with the requests.get() Function \\ Checking for Errors \\ Saving Downloaded Files to the Hard Drive \\ HTML \\ Resources for Learning HTML \\ A Quick Refresher \\ Viewing the Source HTML of a Web Page \\ Opening Your Browser s Developer Tools \\ Using the Developer Tools to Find HTML Elements \\ Parsing HTML with the BeautifulSoup Module \\ Creating a BeautifulSoup Object from HTML \\ Finding an Element with the select() Method \\ Getting Data from an Element s Attributes \\ Project: I m Feeling Lucky Google Search \\ Step 1: Get the Command Line Arguments and Request the Search Page \\ Step 2: Find All the Results \\ Step 3: Open Web Browsers for Each Result \\ Ideas for Similar Programs \\ Project: Downloading All XKCD Comics \\ Step 1: Design the Program \\ Step 2: Download the Web Page \\ Step 3: Find and Download the Comic Image \\ Step 4: Save the Image and Find the Previous Comic \\ Ideas for Similar Programs \\ Controlling the Browser with the selenium Module \\ Starting a Selenium-Controlled Browser \\ Finding Elements on the Page \\ Clicking the Page \\ Filling Out and Submitting Forms \\ Sending Special Keys \\ Clicking Browser Buttons \\ More Information on Selenium \\ Summary \\ Practice Questions \\ Practice Projects \\ Command Line Emailer \\ Image Site Downloader \\ 2048 \\ Link Verification \\ 12. Working with Excel Spreadsheets \\ Excel Documents \\ Installing the openpyxl Module \\ Reading Excel Documents \\ Opening Excel Documents with OpenPyXL \\ Getting Sheets from the Workbook \\ Getting Cells from the Sheets \\ Converting Between Column Letters and Numbers \\ Getting Rows and Columns from the Sheets \\ Workbooks, Sheets, Cells \\ Project: Reading Data from a Spreadsheet \\ Step 1: Read the Spreadsheet Data \\ Step 2: Populate the Data Structure \\ Step 3: Write the Results to a File \\ Ideas for Similar Programs \\ Writing Excel Documents \\ Creating and Saving Excel Documents \\ Creating and Removing Sheets \\ Writing Values to Cells \\ Project: Updating a Spreadsheet \\ Step 1: Set Up a Data Structure with the Update Information \\ Step 2: Check All Rows and Update Incorrect Prices \\ Ideas for Similar Programs \\ Setting the Font Style of Cells \\ Font Objects \\ Formulas \\ Adjusting Rows and Columns \\ Setting Row Height and Column Width \\ Merging and Unmerging Cells \\ Freeze Panes \\ Charts \\ Summary \\ Practice Questions \\ Practice Projects \\ Multiplication Table Maker \\ Blank Row Inserter \\ Spreadsheet Cell Inverter \\ Text Files to Spreadsheet \\ Spreadsheet to Text Files \\ 13. Working with PDF and word Documents \\ PDF Documents \\ Extracting Text from PDFs \\ Decrypting PDFs \\ Creating PDFs \\ Copying Pages \\ Rotating Pages \\ Overlaying Pages \\ Encrypting PDFs \\ Project: Combining Select Pages from Many PDFs \\ Step 1: Find All PDF Files \\ Step 2: Open Each PDF \\ Step 3: Add Each Page \\ Step 4: Save the Results \\ Ideas for Similar Programs \\ Word Documents \\ Reading Word Documents \\ Getting the Full Text from a .docx File \\ Styling Paragraph and Run Objects \\ Creating Word Documents with Nondefault Styles \\ Run Attributes \\ Writing Word Documents \\ Adding Headings \\ Adding Line and Page Breaks \\ Adding Pictures \\ Summary \\ Practice Questions \\ Practice Projects \\ PDF Paranoia \\ Custom Invitations as Word Documents \\ Brute-Force PDF Password Breaker \\ 14. Working with CSV Files and JSON Data \\ The CSV Module \\ Reader Objects \\ Reading Data from Reader Objects in a for Loop \\ Writer Objects \\ The delimiter and lineterminator Keyword Arguments \\ Project: Removing the Header from CSV Files \\ Step 1: Loop Through Each CSV File \\ Step 2: Read in the CSV File \\ Step 3: Write Out the CSV File Without the First Row \\ Ideas for Similar Programs \\ JSON and APIs \\ The JSON Module \\ Reading JSON with the loads() Function \\ Writing JSON with the dumps() Function \\ Project: Fetching Current Weather Data \\ Step 1: Get Location from the Command Line Argument \\ Step 2: Download the JSON Data \\ Step 3: Load JSON Data and Print Weather \\ Ideas for Similar Programs \\ Summary \\ Practice Questions \\ Practice Project \\ Excel-to-CSV Converter \\ 15. Keeping Time, Scheduling Tasks, and Launching Programs \\ The time Module \\ The time.time() Function \\ The time.sleep() Function \\ Rounding Numbers \\ Project: Super Stopwatch \\ Step 1: Set Up the Program to Track Times \\ Step 2: Track and Print Lap Times \\ Ideas for Similar Programs \\ The datetime Module \\ The timedelta Data Type \\ Pausing Until a Specific Date \\ Converting datetime Objects into Strings \\ Converting Strings into datetime Objects \\ Review of Python s Time Functions \\ Multithreading \\ Passing Arguments to the Thread s Target Function \\ Concurrency Issues \\ Project: Multithreaded XKCD Downloader \\ Step 1: Modify the Program to Use a Function \\ Step 2: Create and Start Threads \\ Step 3: Wait for All Threads to End \\ Launching Other Programs from Python \\ Passing Command Line Arguments to Popen() \\ Task Scheduler, launchd, and cron \\ Opening Websites with Python \\ Running Other Python Scripts \\ Opening Files with Default Applications \\ Project: Simple Countdown Program \\ Step 1: Count Down \\ Step 2: Play the Sound File \\ Ideas for Similar Programs \\ Summary \\ Practice Questions \\ Practice Projects \\ Prettified Stopwatch \\ Scheduled Web Comic Downloader \\ 16. Sending Email and Text Messages \\ SMTP \\ Sending Email \\ Connecting to an SMTP Server \\ Sending the SMTP Hello Message \\ Starting TLS Encryption \\ Logging in to the SMTP Server \\ Sending an Email \\ Disconnecting from the SMTP Server \\ IMAP \\ Retrieving and Deleting Emails with IMAP \\ Connecting to an IMAP Server \\ Logging in to the IMAP Server \\ Searching for Email \\ Selecting a Folder \\ Performing the Search \\ Size Limits \\ Fetching an Email and Marking It As Read \\ Getting Email Addresses from a Raw Message \\ Getting the Body from a Raw Message \\ Deleting Emails \\ Disconnecting from the IMAP Server \\ Project: Sending Member Dues Reminder Emails \\ Step 1: Open the Excel File \\ Step 2: Find All Unpaid Members \\ Step 3: Send Customized Email Reminders \\ Sending Text Messages with Twilio \\ Signing Up for a Twilio Account \\ Sending Text Messages \\ Project: Just Text Me Module \\ Summary \\ Practice Questions \\ Practice Projects \\ Random Chore Assignment Emailer \\ Umbrella Reminder \\ Auto Unsubscriber \\ Controlling Your Computer Through Email \\ 17. Manipulating Images \\ Computer Image Fundamentals \\ Colors and RGBA Values \\ Coordinates and Box Tuples \\ Manipulating Images with Pillow \\ Working with the Image Data Type \\ Cropping Images \\ Copying and Pasting Images onto Other Images \\ Resizing an Image \\ Rotating and Flipping Images \\ Changing Individual Pixels \\ Project: Adding a Logo \\ Step 1: Open the Logo Image \\ Step 2: Loop Over All Files and Open Images \\ Step 3: Resize the Images \\ Step 4: Add the Logo and Save the Changes \\ Ideas for Similar Programs \\ Drawing on Images \\ Drawing Shapes \\ Points \\ Lines \\ Rectangles \\ Ellipses \\ Polygons \\ Drawing Example \\ Drawing Text \\ Summary \\ Practice Questions \\ Practice Projects \\ Extending and Fixing the Chapter Project Programs \\ Identifying Photo Folders on the Hard Drive \\ Custom Seating Cards \\ 18. Controlling the Keyboard and Mouse with GUI Automation \\ Installing the pyautogui Module \\ Staying on Track \\ Shutting Down Everything by Logging Out \\ Pauses and Fail-Safes \\ Controlling Mouse Movement \\ Moving the Mouse \\ Getting the Mouse Position \\ Project: Where Is the Mouse Right Now? \\ Step 1: Import the Module \\ Step 2: Set Up the Quit Code and Infinite Loop \\ Step 3: Get and Print the Mouse Coordinates \\ Controlling Mouse Interaction \\ Clicking the Mouse \\ Dragging the Mouse \\ Scrolling the Mouse \\ Working with the Screen \\ Getting a Screenshot \\ Analyzing the Screenshot \\ Project: Extending the mouseNow Program \\ Image Recognition \\ Controlling the Keyboard \\ Sending a String from the Keyboard \\ Key Names \\ Pressing and Releasing the Keyboard \\ Hotkey Combinations \\ Review of the PyAutoGUI Functions \\ Project: Automatic Form Filler \\ Step 1: Figure Out the Steps \\ Step 2: Set Up Coordinates \\ Step 3: Start Typing Data \\ Step 4: Handle Select Lists and Radio Buttons \\ Step 5: Submit the Form and Wait \\ Summary \\ Practice Questions \\ Practice Projects \\ Looking Busy \\ Instant Messenger Bot \\ Game-Playing Bot Tutorial \\ A. Installing Third-Party Modules \\ The pip Tool \\ Installing Third-Party Modules \\ B. Running Programs \\ Shebang Line \\ Running Python Programs on Windows \\ Running Python Programs on OS X and Linux \\ C. Answers to the Practice Questions \\ Chapter 1 \\ Chapter 2 \\ Chapter 3 \\ Chapter 4 \\ Chapter 5 \\ Chapter 6 \\ Chapter 7 \\ Chapter 8 \\ Chapter 9 \\ Chapter 10 \\ Chapter 11 \\ Chapter 12 \\ Chapter 13 \\ Chapter 14 \\ Chapter 15 \\ Chapter 16 \\ Chapter 17 \\ Chapter 18 \\ D. Resources \\ Index", } @Article{Trevino:2014:ANP, author = "Jeffrey Trevi{\~n}o and Craig Sapp", title = "Automated Notation of Piano Recordings for Historic Performance Practice Study", journal = j-JOCCH, volume = "7", number = "3", pages = "17:1--17:??", month = aug, year = "2014", CODEN = "????", DOI = "http://dx.doi.org/10.1145/2597179", ISSN = "1556-4673 (print), 1556-4711 (electronic)", ISSN-L = "1556-4673", bibdate = "Fri Aug 8 11:12:50 MDT 2014", bibsource = "http://www.acm.org/pubs/contents/journals/jocch/; http://www.math.utah.edu/pub/tex/bib/jocch.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", abstract = "We describe a system that automatically notates a comparative visualization of multiple recorded performances of the same musical work. Written musical scores have transmitted basic performance information to musicians over the ages; however, these scores only provide skeletal instructions that must be fleshed out in performance, as musical notation describes phrasing, articulation, dynamics, accentuation, and other ornamentations in generalized and ambiguous forms. Consequently, musical performances derived from the same notation can vary widely from each other in the same manner that a written text may be spoken with intense emotion or in flat monotone. Prior to the advent of recording technology, musical performances were ephemeral, only occurring once, never to be heard again in exactly the same rendition. As a result, musical interpretations were informed only by live listening. Now, with more than a century of recorded performance practice, musicians can delve deeper into the history of their aural art to gain inspiration and insight from sources that would otherwise have been inaccessible. Performers have become interested in giving performances inspired by recordings of the past, which often obey a musical common sense alien to the standards of modern practice, and it is useful for historically informed performers to describe, analyze, emulate, and internalize the performance styles of the past through the detailed study of recordings. Although much can be learned by listening, a visual interface may reveal potentially inaudible details of a recording. Because performers interact daily with traditional musical notation-a sophisticated, if ambiguous, multidimensional visualization of musical information-one approach to the design of such an interface leverages performers' existing knowledge by reducing the gap between data visualization and traditional musical notation as much as possible. Using Abjad, a Python-based tool for musical composition, the symbols of conventional staff notation are augmented to illustrate the intensity and temporal proximity of performed musical events graphically, thus facilitating the comparison of individual performances and the study of changes in performance aesthetics over time.", acknowledgement = ack-nhfb, articleno = "17", fjournal = "Journal on Computing and Cultural Heritage (JOCCH)", journal-URL = "http://portal.acm.org/browse_dl.cfm?idx=J1157", } @Book{Vaingast:2014:BPV, author = "Shai Vaingast", title = "Beginning {Python} visualization crafting visual transformation scripts", publisher = pub-APRESS, address = pub-APRESS:adr, edition = "Second", year = "2014", ISBN = "1-4842-0053-5", ISBN-13 = "978-1-4842-0053-7", LCCN = "????", bibdate = "Sat Oct 24 06:21:41 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", series = "Expert's voice in Python", URL = "http://proquest.tech.safaribooksonline.de/9781484200520", acknowledgement = ack-nhfb, tableofcontents = "About the Author \\ About the Technical Reviewer \\ Acknowledgments \\ Introduction \\ Chapter 1: Navigating the World of Data Visualization \\ Gathering Data \\ Case Study: GPS Data \\ Scanning Serial Ports \\ Recording GPS Data \\ Data Organization \\ File Format \\ File Naming Conventions \\ Data Location \\ Data Analysis \\ Walking Directories \\ Reading CSV Files \\ Analyzing GPS Data \\ Extracting GPS Data \\ Data Visualization \\ GPS Location Plot \\ Annotating the Graph \\ Velocity Plot \\ Subplots \\ Text \\ Tying It All Together \\ Final Notes and References \\ Chapter 2: The Environment \\ Tools of the Trade \\ Operating Systems \\ GNU/Linux \\ Windows \\ Choosing an Operating System \\ Then Again, Why Choose? Using Several Operating Systems \\ The Python Environment \\ Versions \\ Python \\ Python Integrated Development Environments \\ Scientific Computing \\ Manually Installing a Python Package \\ Installation Summary \\ Additional Applications \\ Editors \\ A Short List of Text Editors \\ Spreadsheets \\ Word Processors \\ Image Viewers \\ Version-Control Systems \\ Licensing \\ Final Notes and References \\ Chapter 3: Python for Programmers \\ The Building Blocks \\ What Is Python? \\ Interactive Python \\ Invoking Python \\ Entering Commands \\ The Interactive Help System \\ Moving Around \\ Running Scripts \\ Data Types \\ Numbers \\ Strings \\ Booleans \\ Data Structures \\ Lists \\ Tuples \\ Dictionaries \\ Sets \\ Variables \\ Statements \\ Printing \\ User Input \\ Comments \\ Flow Control \\ Some Built-in Functions \\ Defining Functions \\ Generators \\ Generator Expressions \\ Object-Oriented Programming \\ Modules and Packages \\ The import Statement \\ Modules Installed in a System \\ The dir Statement \\ Final Notes and References \\ Chapter 4: Data Organization \\ Organizing Chaos \\ File Name Conventions \\ Date and Time in a File Name \\ Useful File Name Titles \\ File Name Extensions \\ File Name Convention Recap \\ Other Schemes \\ File Formats \\ CSV File Format \\ Binary Files \\ Readme Files \\ INI Files \\ XML and Other Formats \\ Locating Data Files \\ Organization into Directories \\ Searching for Files \\ Indexing \\ Catalogs \\ Files vs. a Database \\ Final Notes and References \\ Chapter 5: Processing Text Files \\ Text Is Everywhere \\ Text and Strings \\ Splitting Text \\ Joining Strings \\ Converting Strings to Numbers \\ Find and Replace \\ Stripping Strings \\ String Formatting \\ String Conditionals \\ More on Strings \\ Files \\ Opening a File \\ Closing a File \\ Writing Text \\ Reading Text \\ Working with Text Files \\ Example: Character, Word, and Line Count \\ Example: head and tail \\ Example: Splitting and Combining Files \\ Example: Searching Inside a Text File \\ Example: Working with Comments \\ Example: Extracting Numbers from a Text File \\ CSV Files \\ The csv Module \\ The csv.reader Object \\ The csv.writer Object \\ More CSV Functionality \\ DictReader and DictWriter Objects \\ Date and Time \\ Time Module \\ The struct_time Tuple \\ Parsing and Formatting Date and Time \\ The Epoch: ``Linearizing'' the Time Base \\ Additional Time and Date Functions \\ Regular Expressions \\ Regular Expression Patterns \\ Special Sequences \\ Alternatives \\ Ranges \\ When to Use Regular Expressions \\ Internationalization and Localization \\ Locale \\ Unicode Strings \\ Final Notes and References \\ Chapter 6: Graphs and Plots \\ Visualizing Data \\ The matplotlib Package \\ Interactive Graphs vs. Image Files \\ Interactive Graphs \\ Savings Graphs to Files \\ Plotting Graphs \\ Lines and Markers \\ Plotting Several Graphs on One Figure \\ Line Widths and Marker Sizes \\ Colors \\ Controlling the Graph \\ Axis \\ Grid and Ticks \\ Subplots \\ Erasing the Graph \\ Adding Text \\ Title \\ Axis Labels and Legend \\ Text Rendering \\ Mathematical Symbols and Expressions \\ More Graph Types \\ Bar Charts \\ Histograms \\ Pie Charts \\ Logarithmic Plots \\ Polar Plots \\ Stem Plots \\ Additional Graphs \\ Getting and Setting Values \\ Setting Figure and Axis Parameters \\ Patches \\ Example: Adding Arrows to a Graph \\ Example: Some Other Patches \\ 3D Plots \\ The Basemap Toolkit \\ Example: French Airports \\ Final Notes and References \\ Chapter 7: Math Games \\ Preprocessing Data Prior to Visualization \\ Modules math and cmath \\ Example: Mandelbrot Set \\ Example: A Newton Fractal \\ Module decimal \\ Module fractions \\ Module random \\ Using Module random to Solve Probability Questions \\ Random Sequences \\ Module NumPy \\ Array Creation \\ Slicing, Indexing, and Reshaping \\ N-Dimensional Arrays \\ Math Functions \\ Array Methods and Properties \\ Other Useful Array Functions \\ Final Notes and References \\ Chapter 8: Science and Visualization \\ Numerical Analysis and Signal Processing \\ Finding Your Way: Variables and Functions \\ SciPy \\ Linear Algebra \\ Solving a System of Linear Equations \\ Vector and Matrix Operations \\ Matrix Decomposition \\ Additional Linear Algebra Functionality \\ Numerical Integration \\ More Integration Methods \\ Interpolation and Curve Fitting \\ Piecewise Linear Interpolation \\ Polynomials \\ Uses of Polynomials \\ Spline Interpolation \\ Solving Nonlinear Equations \\ Special Functions \\ Signal Processing \\ Functions find, nonzero, where and select \\ Functions diff and split \\ Waveforms \\ Fourier Transform \\ Example: FFT of a Sampled Cosine Wave \\ Window Functions \\ Filtering \\ Filter Design \\ Example: A Heart-Rate Monitor \\ Example: Moving Average \\ Final Notes and References \\ Chapter 9: Image Processing \\ Two-Dimensional Data \\ Reading, Writing, and Displaying Images \\ Reading Images from File \\ Image Attributes \\ Displaying Images \\ Converting File Formats \\ Image Manipulation \\ Creating New Images \\ Copy and Paste \\ Crop and Resize \\ Rotate \\ Image Annotation \\ Annotating with Geometrical Shapes \\ Text Annotations \\ Image Processing \\ Matrix Representation and Colors \\ Reading an Image to a NumPy Array \\ Example: Counting Objects (Five Parts) \\ Image Arithmetic \\ Image Filtering \\ Making Movies \\ Splitting Movies \\ Creating Movies from Images \\ Example: A Fractal Movie \\ Final Notes and References \\ Chapter 10: Advanced File Processing \\ More on Files \\ Binary Files and Random Access \\ Example: Reading the Nth Field \\ Example: Efficient Tail Implementation \\ Example: Creating a Fixed Size File \\ Example: Recording Time-Based Binary Data \\ Reading MATLAB Files as NumPy Arrays \\ Reading Text Files Directly to NumPy Arrays \\ Example: Reading and Writing Text Files to NumPy Arrays \\ Object Serialization \\ The Pickle Module \\ Command-Line Parameters \\ argv \\ Example: Creating a Fixed Size File (a Stand-Alone Script) \\ The optparse Module \\ The FileInput Module \\ File and Directory Manipulation \\ Module glob \\ Additional os Module Functionality \\ Additional os.path Module Functionality \\ Module shutil \\ File Compression \\ Example: A Compressed tar File \\ Comparing Files \\ Module filecmp \\ Module difflib \\ Final Notes and References \\ Appendix: Additional Source Listing \\ Nudge Subplots \\ Magic Square Arrows \\ Numerical Integration Visualization Source Code \\ Fractal Function Source Code \\ Index", } @Article{Williamson:2014:PPP, author = "Todd Williamson and Ronald A. Olsson", title = "{PySy}: a {Python} package for enhanced concurrent programming", journal = j-CCPE, volume = "26", number = "2", pages = "309--335", month = feb, year = "2014", CODEN = "CCPEBO", DOI = "http://dx.doi.org/10.1002/cpe.2981", ISSN = "1532-0626 (print), 1532-0634 (electronic)", ISSN-L = "1532-0626", bibdate = "Sat Feb 8 15:45:14 MST 2014", bibsource = "http://www.math.utah.edu/pub/tex/bib/ccpe.bib; http://www.math.utah.edu/pub/tex/bib/python.bib", acknowledgement = ack-nhfb, fjournal = "Concurrency and Computation: Practice and Experience", journal-URL = "http://www.interscience.wiley.com/jpages/1532-0626", onlinedate = "18 Dec 2012", } @Book{Yan:2014:PFB, author = "Yuxing Yan", title = "{Python} for finance: build real-life {Python} applications for quantitative finance and financial engineering", publisher = pub-PACKT, address = pub-PACKT:adr, pages = "ix + 386", year = "2014", ISBN = "1-78328-438-2, 1-78328-437-4", ISBN-13 = "978-1-78328-438-2, 978-1-78328-437-5", LCCN = "QA76.73.P98 Y36 2014", bibdate = "Sat Oct 24 06:41:03 MDT 2015", bibsource = "fsz3950.oclc.org:210/WorldCat; http://www.math.utah.edu/pub/tex/bib/python.bib", series = "Community experience distilled", acknowledgement = ack-nhfb, subject = "Finance; Statistical methods; Data processing; Financial engineering; Python (Computer program language); Finances; M{\'e}thodes statistiques; Informatique; Ing{\'e}nierie financi{\`e}re; Python (Langage de programmation)", tableofcontents = "Preface \\ Why Python? \\ A programming book written by a finance professor \\ Small programs oriented \\ Using real-world data \\ What this book covers \\ What could you achieve after reading this book? \\ Who this book is for \\ Conve
http://www.netlib.org/tex/bib/python.bib
www.netlib.org
crawl=CC-MAIN-2017-30
1048120
application/http; msgtype=response
sha1:UNBMXWRDKNXKTR7I5GRZAEMFCZ2WCDWD
<urn:uuid:3808b81b-3b5e-4f36-8f38-9db5f99254f1>
2017-07-23T04:46:30Z
160.36.131.221
text/x-matlab
sha1:KE2EGEYLJYO7X6USOA7A6N4A5RHERSKO
<urn:uuid:8b1a65e8-d6b5-40b7-8cdf-3cb1593c5995>
http://www.netlib.org/tex/bib/python.bib
length
response
<urn:uuid:6fba1787-3830-4f1c-8893-cfeb5b257db4>
robots: classic
hostname: ip-10-145-147-67.ec2.internal
software: Nutch 1.6 (CC)
isPartOf: CC-MAIN-2017-30
operator: Common Crawl Admin
description: Wide crawl of the web for July 2017
publisher: Common Crawl
format: WARC File Format 1.0
conformsTo: http://bibnum.bnf.fr/WARC/WARC_ISO_28500_version1_latestdraft.pdf