Look at printouts of student's assignment 1 code. Discuss the differences in how each student broke down the tasks. Especially pick two or three that did it in very different ways. Make overheads of those so all can see the different approaches.
For some particular task, have each student present describe how they accomplished that task (give them the printout of their code). Have them do this in one sentence. If they can't describe what that sub- task does and how in one sentence, have the students discuss how they might modify it to make it simpler to describe (and thus implement).
Discuss how the number of data types, and complexity of data types used by a function directly affect its complexity, ease of description (specification), debugging, etc.
copyright 1999, Perry R. Cook and Andrew Appel