Homework 1

Review the material in Lectures 1 and 2 and read the No Silver Bullet article available on the class's GitHub repo. Based on that review and your own experience, answer the questions below.

  1. Define the term essential difficulties as it is used by Brooks. Provide background and context with your answer and at least one example of an essential difficulty.
  2. Define the term accidental difficulties as it is used by Brooks. Provide background and context with your answer and at least one example of an accidental difficulty.
  3. List and briefly describe the four essential difficulties of developing software systems that Brooks identifies. Provide additional examples of each type of the four essential difficulties.
  4. Define what Brooks means by a silver bullet and reconstruct his argument as to why he believes there is no silver bullet for software engineering.
  5. In lecture, software engineering's relationship to computer science was described by analogy by discussing the differences between a chemist (chemistry) and a chemical engineer (chemical engineering). Define software engineering and its relationship to computer science; make use of the chemist vs. chemical engineer analogy when answering this question.
  6. In lecture, we discussed the importance of the following concepts to software engineers: abstractions, conversations, specification, translation, and iteration. Define each of these concepts as they are related to software engineering and discuss their importance.

You will use this assignment to practice your git, Markdown, and GitHub skills. Create a repo on your local machine and answer the questions above by creating a document called homework01.md. Use the various features of Markdown that we reviewed in lecture when answering the questions. Make sure you list all of the people who worked on the assignment at the top of your homework01 document (recall that you're allowed to work in teams on homework assignments). When you are ready to submit, upload your repository to GitHub and add kenbod as a collaborator of that repository. Note: If you do work as a team on this assignment, please add me as a collaborator on only ONE repository per TEAM.

Your repository needs to be uploaded to GitHub and I need to be made a collaborator on your repository BEFORE the start of Lecture 4 on Thursday, September 1, 2016.

Note: You are expected to maintain high standards of professionalism when creating this assignment. Plagiarism is not allowed and, if discovered, can reduce your grade to an F. Cite all of your sources and if you quote text from a source make sure it appears as a blockquote; examples of how to do this are present in the No Silver Bullet article on the class's GitHub repo. Take a look and apply those techniques in your own assignment.

If you have ANY questions about the assignment, send them to Prof. Anderson via e-mail.


© University of Colorado, Boulder 2016