Introduction

A visual representation of flow of control within a program may help the
developer to perform static analysis of his code. One could break down his
program into multiple basic blocks, and connect them with directed edges
to draw a Control Flow Graph (CFG). A CFG of a program helps in identifying how
complex a program is. It also helps to estimate the maximum number of test cases
one might require to test the code.

In this experiment, we will learn about basic blocks and how to draw a CFG using
them. We would look into paths and linearly independent paths in context of a
CFG. Finally, we would learn about McCabe's cyclomatic complexity, and classify
a given program based on that.