Programming Approaches to School Choice Problems