Composite Programming