Syllabus
prev
Draft Version 327 (Thu Dec 1 09:18:47 2005)
Software Carpentry
course outline
acknowledgments
Introduction
motivation for course
need to improve quality as well as efficiency
key idea
target audience
self-test
course philosophy
topics
what you will need
recommended reading
typographic conventions
Version Control
motivation for this lecture
version control systems
CVS and Subversion
basic operations
command line and GUI clients
merging conflicts
versioning
binary files
rollback
getting started
Subversion command reference
reading Subversion output
branching and merging
Shell Basics
motivation for this lecture
difference between shell and operating system
the file system
basic commands
creating files and directories
wildcards
More Shell
input, output, and redirection
pipes
environment variables
the PATH variable
basic tools
Unix ownership and permission
Windows ownership and permission
some more advanced tools
Basic Scripting
introducing Python
interactive use
batch use
variables
printing and quoting
numbers
Booleans
comparisons
conditionals
while, break, and continue
Strings, Lists, and Files
strings
indexing
string methods
lists
list methods
for and range
testing for membership
aliasing
tuples
file I/O
Functions, Libraries, and the File System
defining functions
variable scope
aliasing
default parameter values
variable-length argument lists
functions as objects
creating modules
math library
system library
representing and manipulating times
file system programming
The os.path Module
The __main__ Keyword
Python sources
Testing Basics
motivation
terminology
rules for tests
testing frameworks
choosing tests
Dictionaries and Error Handling
motivation
string formatting
dictionaries
working with dictionaries
dictionary methods
counting and inverting
dictionary string formatting
try, except, and else
exceptions
exception handler stack
raising exceptions
assertions and defensive programming
executing subprocesses
Debugging
what's wrong with print statements
symbolic debuggers
running in a debugger
breakpoints, inspection, and single-stepping
how debuggers work
advanced operations
rule 0
Object-Oriented Programming
motivation
defining classes
defining methods
defining classes
special methods
inheritance
polymorphism
Liskov substitution principle
class members
operator overloading
Structured Unit Testing
mechanics
example
setup and teardown
testing assertions
testing I/O
testing classes
test-driven development
Automated Builds
motivation for this lecture
overview of Make
basic features
handling multiple targets
defining phony targets
automatic variables
pattern rules
specifying dependencies
defining variables
Coding Style and Reading Code
why read code
cognition
determining functionality
naming
idioms
style-checking tools
role of documentation
traceability
defensive programming and other pseudo-documentation
active reading
Watching Programs Run
Python's object model
dynamic programming
coverage
profiling
Regular Expressions
basic patterns
anchors
escape sequences
extracting matches
compiled REs
other languages
other patterns
Basic XML and XHTML
formatting rules
XHTML
attributes
images and links
accessibility
DOM
basic features of DOM
creating a DOM tree
walking a DOM tree
modifying a DOM tree
A Mini-Project
checking for tabs
automation
checking for printable characters
checking glossary entries
checking cross-references
Client-Side Web Programming
underlying protocols
HTTP
HTTP request
HTTP response
urllib
parameterizing requests
encoding and decoding
web services
CGI
overview
MIME types
example
creating forms
handling form data
server-side state
concurrency
cookies
Binary Data
motivation
representing numbers
bitwise operators
shifting
floating point numbers
binary I/O
packing data structures
variable-length data
metadata
Relational Databases
create, insert, and drop
simple queries
joins
negation and nested queries
aggregation
application programming
handling NULL
concurrency
Security
goals
limitations of technical solution
terminology
input is untrustworthy
the evils of exec
basic cryptography
basic cryptography
HTTPS
ssh
guidelines
Teamware
overview of Trac
repository browser and timeline
issue tracker
writing useful tickets
mailing lists
wiki
roadmap and milestones
dashboard
weblogs
administration
Extreme Programming
Extreme Programming
XP core practices
planning game
pair programming
project velocity
counter-arguments
The ICONIX Process
use cases
domain model
robustness diagrams
class diagrams
sequence diagrams
order of operations
UML tools
The Nevex Process
vision statement
analysis & estimation
A&E format
design, implementation, and maintenance
QA and documentation
post mortem
Backward, Forward, and Sideways
intro
the Numeric module
Python Imaging Library
SCons
integrating C into Python
SWIG, Fortran, and embedding Python in C
design patterns
refactoring
non-technical reading
rules of programming
prev
Copyright © 2005, Python Software Foundation. See
License
for details.