Mobile Phone Programming for Teaching and Research