intermediate programming