CompSciWeek9

= Class 1, an in-depth look at class structure =


 * magic methods, __init__, etc.
 * class inheritance - extending something that does almost what you want
 * ex. inheriting from dict
 * isinstance function
 * methods and calling convention - the first argument to a class method is always the class (i.e. self)
 * Binary operations __add__, __mul__, etc. - these have type class -> class -> class
 * static (immutable) vs. dynamic (mutable)
 * classes are static
 * instances are dynamic
 * unless you only initialize and don't ever change them
 * if you know it's static and __hash__ is implemented, you can use it as a key

Example - wrapping a numpy array in a static class to build a cache:

= Class 2, python's ctypes = Reference: Python Docs Numpy + Ctypes Cookbook
 * Compiling a c code as a shared object
 * the trouble with integers - always pick a fixed size!
 * loading with ctypes
 * Declaring function types.
 * Performance test

vis.py - visualize the DWT by running on image data
Here's a test image to use: Image from Brooke Borel.