programming case study