Coding is an important skill set to develop in any computing
discipline and can be especially challenging for Information
Technology majors, many of whom shy away from the topic.
Learning to program is an iterative process that takes time,
requiring trial and error, but as students learn new concepts and
tackle more sophisticated problems, it becomes difficult to let go
of bad ideas. Instead, students try to improve a bad design when
starting over may be a better approach. In an advanced
programming course, we design a challenging homework
assignment and add in a restart. Students first solve the problem
in their own way, after which the instructor develops the
solution live in a lab session while students watch without
taking notes. Afterwards, students get a second attempt to solve
the assignment but must not use any of their original code. The
idea is to teach students to throw away code and start over as
that is sometimes the best way to learn. This paper details the
approach and how it impacts student learning.