LabVIEW uses a data flow programming model where information flows from data sources to data sinks connected by wires. It supports two types of virtual instruments (VIs) - internal VIs packaged with LabVIEW and user created VIs which have a front panel graphical interface and a block diagram code pipeline. The block diagram contains sources, sinks, VIs and structures wired together to define program logic, with every front panel object having a corresponding block diagram object. Common block diagram elements include controls as data sources, indicators as data sinks, and structures like while loops and case structures that modify data flow.