YoVDO

Defensive Programming and Debugging

Offered By: Partnership for Advanced Computing in Europe via FutureLearn

Tags

Software Development Courses

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 Service
University 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