Problem solving and creativity for undergraduate computing and engineering students: the use of robots as a developmental tool