8. Breaking into modules

One of the most important skills for a programmer is to be able to break down a complex program into modules. So what exactly are they?