2.2.1 Programming concepts