| Instructor: | Adam Porter |
| Class Hours: | CLB 0111 TTH: 9:30 - 10:45 |
| Contact Information: | Email: aporter@cs.umd.edu |
| Office Hours: | T: 8:30 - 9:30 |
| AVW 4125, (301) 405-2702 | W: 16:00 - 17:00 |
| F : 10:00 - 11:00 |
| Teaching Assistant: | Rezarta Islamaj |
| Contact Information: | Email: rezarta@cs.umd.edu |
| Office Hours: | M : 12:00 - 14:00 |
| AVW 3136, (301) 405-2775 | T : 11:00 - 12:00 |
Software engineering encompasses the issues that arise
during the creation and use of large software applications: How do we determine
all that a system is supposed to do? How do we communicate these requirements
to teams of developers? How do we organize and coordinate these teams,
Once the system is developed, how do we check that it does what we originally
wanted it to do?
These challenges are not only technical in nature, but raise social, managerial and ethical issues as well. For example, we often think of software requirements as being fixed, accurate, and rationally constructed. In fact, since requirements can come from many sources (e.g., managers, marketers, and user communities), they often change as people and groups form perceptions about them and mobilize support for their viewpoints.
Keeping this broader view of software engineering in mind, we will examine:
I will divide the class into teams of roughly four
students each. This organization will be used in several ways throughout
the course, primarily for the class project. In addition, I will use case
studies and exercises in class to illustrate issues that arise in software
development.
There is a required textbook for this class.
We will also read from a series of journal articles - one article for each topic covered in the classroom. I expect you to have read the appropriate article before coming to class (See the class schedule). Take a look at Bill Griswold's tips on reading a research paper.
For each class session there will be a graded homework assignment. You must write an outline of the readings (2-page minimum) and answer any homework and answer any homework questions.
I will give you an initial set of "customer-generated"
requirements" for a desired software product, the class project. Starting
from these initial requirements, you will develop a complete set of requirements,
design a system that meets these requirements, and finally create and test
a software system that implements your design. At each step in this process
you will produce corresponding documentation. All documents must be submitted
in a computer-readable format (to be determined later) and must be written
in English. You must also submit an evaluation of yourself and each of
your teamates at each of these stages.
The university computer labs should provide all necessary support for the project. Other resources normally available to you (e.g., home computers) can be employed, however you do this is "at your own risk." No alterations to conditions of the assignment will be made to accommodate peculiarities of your other computing resources.
Late deliverables will not be accepted. Start your projects early --- last minute computer malfunctions will not be accepted as reason for delaying an assignment's due date.
The schedule for the project can be found here.
The final exam will be given in two parts: a written
exam testing general course concepts, and a presentation of the class project.
In order to do the project and read the articles you
may need access to certain tools. Click
here to find more information about these tools.