Software visualization using the city metaphor: students' perceptions and experiences