ESE 344: Software Techniques for Engineers