Series hw upload.

Good work.  My only quibble is with where you put the initializing of `self.start`.  Because it's in the `__init__` method, it is set when the `with` statement is evaluated.  This means it happens not only before the code inside the with block is run, but also before it is evaluated.  I think you'll end up including some actions in the span of time you measure beyond just the running of the code inside the with block.  This is not a fatal flaw, but it's worth considering when you write such a function.  What exactly do you want to time, and how can you write code that most effectively isolates the stuff you want from the stuff you don't.?