4 ms·
I think there are a number of possible sources for the observed phenomenon. Students find it very difficult to get started. Students also find it hard to aban
by drallison 16y ago
I think there are a number of possible sources for the observed phenomenon. Students find it very difficult to get started. Students also find it hard to abandon code preferring to try to make poorly structured and thought through code rather than starting over. Finally, students find it hard to invent the abstractions that they need to solve large problems from whole cloth. Programming classes often concentrate on the details of expression and ignore the issue of using them to create patterns and abstractions to solve real problems.
One way you can improve things is to provide a framework for each of the assigned problems, either a program with stubbs or a working program which can be adapted to solve the assigned problem. I don't know how you teach students to throw away code rather than trying to make it work. Finally, teach programming rather than the programming language.
I also have found that having many small assignment works better than having a few larger projects. When I taught beginning programming I assigned on or two small programs per class meeting whereas the other sections had three larger projects. It is also useful to have the small assignments provide a library of abstractions (procedures) which can be used in later assignments. I also think it is useful to teach test focused programming where student need to present tests which validate their program as well as the program. These days I'd be tempted to require students use one of the source code control systems, probably Mecurial.