WebFund 2015W Lecture 17: Difference between revisions
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..." |
(No difference)
|
Revision as of 17:42, 11 March 2015
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