WebFund 2015W Lecture 17

From Soma-notes
Revision as of 17:42, 11 March 2015 by Soma (talk | contribs) (Created page with "==Video== The video for the lecture given on March 11, 2015 [http://homeostasis.scs.carleton.ca/~soma/webfund-2015w/lectures/comp2406-2015w-lec17-11Mar2015.mp4 is now availab...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Video

The video for the lecture given on March 11, 2015 is now available.

Notes

In Lecture

Debugging
---------

* making a program work
 - "It *should* work, I did everything right"
 - if you say this, slap yourself
 - because you are wrong
 - do *not* throw up your hands

* really debugging is about fixing mental models

* mental models are how we imagine things in the world are
* they are always wrong, but good ones are useful

* when your mental model diverges from your experience...
 - "it's broken" (no it isn't)
 - your mental model is broken
 - first, fix mental model, *then* fix the problem
 - alternative to flailing (trying random stuff until you get the result you want)
 - don't flail
 - *do* experiment
 - difference between flailing and experimenting is hypotheses
 - tricky to generate the right hypotheses
 - you *shouldn't* generate hypotheses purely by searching


Steps for debugging
* observe problems (beware confirmation bias)
  - pay attention to observations that contradict your mental model
    (don't just pay attention to the confirming ones)
    *look for outliers*
* generate hypotheses
  - initially, "brainstorm" (i.e., be open to crazy ideas)
  - don't just go with the first one that occurs to you
* explore hypotheses broadly
  - do breadth-first search more than depth-first
  - be aware that you can't trust any of your hypotheses
* don't trust the first hypothesis that seems to match
  - treat it as tentative until you have significant additional evidence
  - generate new hypotheses to try and break your candidate solution
  - (fail fast)
* but move on once it is solved "well enough"
  - know when to stop