Many software engineering concepts normally found in upper-level courses were
able to be infused into the one-semester experience. For example, estimation was a
recurring theme of the course, and estimation is difficult even for professional developers.
Hence, one can expect student groups to frequently misjudge the effort required to
complete a project. In longer projects, this can be remedied by using multiple
deliverables. In smaller projects, it's simply a good opportunity to talk about the
challenges of estimation and the importance of clear communication with stakeholders
about failed estimates. These kinds of lessons provide the students with a broader
perspective of computer science and an understanding that programming is not the only
interesting and challenging part of the field.