Systematic Debugging Techniques¶
This class is part of the PhD curriculum Advanced Development Techniques.
Syllabus¶
This class is aimed at researchers developing their own scientific software and intends to illustrate an approach to debugging in such a context that, on one hand, is guided by rational principles and systematic techniques rooted in theory, but, on the other hand, does not neglect concrete aspects and the use of practical tools of the trade.
Textbooks¶
The material is covered by these books (in decreasing order of relevance):
Why Programs Fail: A Guide to Systematic Debugging, by Anderas Zeller
The Developer’s Guide to Debugging, by Thorsten Grötker, Ulrich Holtmann, Holger Keding, and Markus Wloka,
Test Driven Development: A Practical Guide, by Dave Astels,
The Practice of Programming, by Brian W. Kernighan, and Rob Pike,
Code Complete: A Practical Handbook of Software Construction, by Steve McConnell.
Outline of the lectures¶
The class is divided in four modules:
- Experimenting
The object and its double: dummy, fake, stub, and mock [LUDIBRIO] (dependency injection, monkey patching)
Mutation testing (fuzzing) [JAVALANCHE]
Test driven developement
Code repository¶
You can find the code (and not only) that is used during the class at GitHub.
Software tools¶
Exam¶
Getting the credits for this class depends on having a bux-fix accepted in an open-source project of your choice.
Come talk to the teacher to define the detail.