Program Design: How to Help Programs Debug Themselves Prerequisites
This course is part of the Scientific Computing series.
This course is intended for serious programmers who need to develop large or complex codes, or to write applications that will be used and worked on by other people or over a long time (years). It will describe some of the design and coding techniques that can make debugging easier (sometimes even semi-automatic), and reduce the overall development and maintenance effort by spending a bit more time during design and coding.
It is applicable to any conventional language, from Python to Fortran to Java to C++ and even assembler, and will describe the techniques in generic terms. It should be regarded as part of the practical end of software engineering - everything covered will be something that the speaker has found to be useful in practice.
Significant experience with a conventional language; it is assumed that the audience has written at least a 1,000 line program or done comparable modifications to an existing program, and is working or planning to work on a bigger one. Users with less experience may benefit from the course, or they may get confused.
- The development cycle, as practiced in academia and research.
- Some relevant experience from the IT industry.
- Documentation as a debugging technique.
- Designing interfaces for debuggability.
- Writing checks to help code detect its own errors.
- How and when to write and use validation primitives.
- Efficient and comprehensible tracing of control and data flow.
- Using the above together with debugging tools.
- Use with test suites and regression testing.
A presentation, with questions at any point.
One half day session
Events available