CISC 475: Advanced Software Engineering
CISC 675: Software Engineering Principles and Practices
University of Delaware, Fall Semester 2014

Instructor: Stephen Siegel
Office hours: TRF 2:00-3:00
Office: 432 Smith
E-mail name: siegel
E-mail domain:
Skype: sfsiegel
TA: Kevin Corder
Office hours: R 10:00-12:00
Office: 201 Smith
E-mail name: kcorder
E-mail domain:
Phone: 302-
Class time: TR 12:30-1:45
Classroom: 109 Memorial Hall
Lab time: F 3:35-4:50
Lab room: 109 Memorial



In this course, you will understand and apply a complete modern software engineering process. Topics include requirements analysis, specification, design, implementation, verification, and project management. Real-life team projects cover all aspects of the software development lifecycle, from the requirements to acceptance testing.


This syllabus outlines the subjects I expect to cover in the course. They will not necessarily be approached in this order.
  1. Introduction to Software Engineering
  2. Process
  3. Requirements
  4. Design
  5. Testing and Debugging
  6. Infrastructure
  7. Formal Methods

Course Structure

The course will meet on Tuesdays and Thursdays for lectures mixed with some in-class activities. Any slides I use will be put up on the web, but I still strongly recommend taking notes, as a lot of the examples and discussion will be impromptu and on the board. Pen-and-paper is still the most effective note-taking technology, especially when it comes to diagrams and other non-text-based constructs.

There will be a small amount of individual homework. These assignments are to be completed by you, without communicating with anyone else, except the TA and instructor. Sakai will be used for posting assignments and submitting the solutions. Solutions submitted after the due time but within 24 hours of the due time will be graded with a 5 point (out of a total of 100 points) penalty. Solutions submitted within the next 24-hour period will receive a 10 point penalty, and so on, but after 5 days no more submissions will be accepted and the score will be 0.

There will be one take-home midterm exam. This is also to be completed by you only, without communicating with anyone other than the TA and instructor. Further instructions will be included on the Midterm.

There will be a final exam at the scheduled time during Finals' week. This will be a purely written exam; no computers or any other electronic devices will be used.

The bulk of the work in this class will be project-based. Each student will be assigned to a team which will work on one particular project. Links to the project descriptions are below. Your team will work on its project throughout the semester, starting on Friday of the second week. Your project work will encompass all of the main software engineering tasks, including requirements elicitation and specification, design, implementation, testing and verification, and delivery. Note that each project has a specified client who is your "customer", and his or her satisfaction with the project deliverables will be a key factor in your project grade. At two points in the semester, each team will give a report on the state of their project; these presentations are a very important part of the team effort and grade.

Projects will be developed incrementally, in six 2-week "sprints", with Sprint 1 beginning on Friday, Sep. 5, at the beginning of Lab. Each sprint must terminate with a working version of all deliverables. While you will receive feedback and a numeric score after each sprint, only the scores received on the even-numbered sprints (2, 4, and 6) will count in your grade. This will give you time to rectify any problems found in the odd-numbered sprints or at least prevent surprise when you get the grade that counts. The sixth and final sprint will be slightly shorter and will culminate in a poster presentation at the Computer Science Project Showcase, Thursday, Dec. 4, 2014, 5:00 PM to 7:00 PM. The project must be complete by 5:00 PM on that day, and every student should be present during the showcase to present it. (If for any reason you cannot be present at the showcase, talk to me ASAP.)

For all projects, the deliverables include: the project document, which includes the requirements, design, and verification documents; working, documented, source-code; a manual or README or similar document explaining how to build and use the product; an automated test suite; and a web page showing the results of automated build and test scripts, the result of test-coverage analysis; the generated code documentation (e.g., javadocs); and all documents. There may be additional deliverables for specific projects, but this is the minimal set required for all projects. A Sakai assignment for each sprint will give specific details about what is expected and how to submit artifacts at the end of each phase.

The assignement of students to teams/projects will be carried out based on everyone's stated preferences. You will be able to express a list of preferences in descending order of priority. A preference may express a desire to work (or not) on a specific project, or to be on the same team (or not) with a particular student. Details will be given in a Sakai assignment. We do our best to optimize the satisfaction of these preferences.

Labs will be held each week on Friday as long as classes are scheduled. For all but the first lab meeting, the time will be used for you to meet with your teammates and work together on the project.

Class attendance will not be part of the grade. After all, it's your money (or your parents' or someone's!). You and you alone are responsible for finding out what you missed if you don't come to class. Lab attendance is mandatory and will count as a small part of your grade, because it will really harm your team if you do not show up.

There are just a few class rules, most of which should be obvious: try to show up on time; don't chew gum; turn off and stow your cell phones for the duration; use laptops in class only for class activities; be respectful to everyone and in particular don't talk or engage in distracting behavior during a lecture or presentation. Never, ever try to pass off someone else's work as your own (plagiarize); we will prosecute cases of academic dishonesty.

You should bring pen and paper to class and lab. Bringing a laptop is very highly recommended, because almost every activity we do will require them.

The Projects


Your grade will be based 40% on individual work and 60% on team work.

Activity Percentage of Grade
Individual HW Assignments 10
On-time reports 2
Lab attendance 2
Completion of course evaluation 1
Midterm Exam 10
Final Exam 15
Project Phase 1 (Sprints 1-2) 10
Midterm Project Presentation 5
Project Phase 2 (Sprints 3-4) 15
Project Phase 3 (Sprints 5-6) 20
Final Project Presentation 5
Project Showcase Poster/Presentation 5

The numeric grade will be converted to a letter grade as follows:

Letter grade: A A- B+ B B- C+ C C- D+ D D- F
Minimum score: 93 90 87 83 80 77 73 70 67 63 60 0

Note that there is no rounding. For example, a score of 94.999 converts to an A-.


Each team is provided with one virtual machine. For security reasons, these machines are only accessible from within the university system. If you wish to access your VM from outside the university, you must use the UD VPN; see link below.

You will have root access to your VM, so you can configure it just about however you like and install just about whatever you want. However you do it, you must accomplish the following goals:

The "default" setup uses Apache, Trac, Subversion, Java, Ant, JUnit, JaCoCo, Javadoc, and various shell scripts to obtain these goals, but you can change these however you want.