pat & acm programming