Defensive Programming and Debugging
Offered By: Partnership for Advanced Computing in Europe via FutureLearn
Course Description
Overview
Learn how to identify and solve software bugs in your code
Want to improve your ability to identify and fix bugs in code?
On this course, you’ll discover how to reduce bugs during software development. You’ll learn with examples in both C and Fortran programming languages and understand how to catch bugs early using compiler features and writing tests for your code.
You’ll learn to find the bugs in your code using the best tools available including debuggers and code analysers. You’ll also look at parallel programs and explore tools for debugging parallel code at scale.
By the end of the course, you’ll feel confident writing high-quality and clean code.
This is an intermediate level course aimed at people with some programming experience. Although examples will be given in C and Fortran, the principles (and most of the tools) are transferable to other programming languages.
Syllabus
- Defensive programming
- Welcome to the course
- Best practices in coding
- Documentation
- Discussions
- Week 1 recap and Additional material
- Preventing bugs
- Introduction
- Testing code
- Code Coverage
- Compiler flags to prevent bugs
- Static code checkers
- Discussions
- Week 2 recap and additional material
- Finding bugs
- Introduction
- Debugging concepts and techniques
- Debugging serial programs
- Verification of serial programs
- Discussions
- Week 3 recap and additional material
- Debugging parallel code
- Introduction
- Debugging MPI parallel code
- Debugging OpenMP and hybrid (MPI+ OpenMP) parallel codes
- Verification of parallel programs
- Discussions
- Week 4 recap and additional material
- Debugging examples
- Introduction
- Taxonomy of bugs
- Student exercises
- Discussions
- Closing and goodbye
Taught by
Geert Jan Bex
Related Courses
Software as a ServiceUniversity of California, Berkeley via Coursera Software Testing
University of Utah via Udacity The Hardware/Software Interface
University of Washington via Coursera Software Debugging
Saarland University via Udacity Introduction to Systematic Program Design - Part 1
The University of British Columbia via Coursera