software design: writing lecture