Software engineering goes well beyond software development. It involves understanding customer needs, planning the development process, teamwork, maintenance, and analysis and evaluation tasks, such as testing, verification, and validation. In CS 521/621, we will explore the state-of-the-art research in techniques that make analysis and evaluation of software easier. Concurrently, student groups will engage in research to push forward that state of the art.
This term will cover the following topics: static, dynamic, and speculative analyses; model inference, model checking, and formal verification; bug localization; mutation and regression testing, and symbolic execution.
A research project will constitute a major part of this class. Each student, either individually or in groups of up to four, will engage in a term-long project to advance the state of the art of one of the above topics. The students will identify a shortcoming of today's techniques, review the relevant literature, develop a novel technique that addresses the shortcoming, and evaluate the technique against the state of the art. Finally, the goal is for students to write a research paper describing their work worthy of submission to a research conference.
|Room:||142 computer science building|
|Lecture:||Tuesday and Thursday 9:30AM–10:45AM|
office: 346 computer science building
office hours: Tuesday 11AM–12PM
office: 316 computer science building
office hours: Monday 2PM–3PM
All assignment submissions are through Moodle.
Late policy: Assignment due dates and times are listed on the schedule. All deadlines are sharp and the submission site will be closed at the specified time. No extensions will be granted after the assignment is due. Early requests for extensions will be considered only in extenuating circumstances. No more than one extension will be granted per student.
Students are responsible for submitting all homework and project assignments. A student who fails to submit at least one of the homework or project assignments, or does not participate in the midterm, will receive the grade F for the entire class.
|Paper summaries and participation||5%|
The project's 59% are further broken down:
|progress reports and project meetings||5%|
|project plan and presentation||10%|
|final report and presentation||33%|
|Sep 4||Tu||Course and project introduction||
Due: Th Sept 6, 2012, 9:00AM EDT
|Sep 6||Th||Static and dynamic analyses|
|Sep 11||Tu||Models, Tests, Bugs, and Symbols||
Due: Tu Sept 18, 2012, 9:00AM EDT
|Sep 13||Th||Speculative analysis and vision brainstorm|
|Sep 18||Tu||Idea proposal presentations|
|Sep 20||Th||Idea proposal presentations||
Due: Tu Oct 2, 2012, 9:00AM EDT
|Sep 25||Tu||Dynamic analysis||
Due: Tu Oct 16, 2012, 9:00AM EDT
|Sep 27||Th||Requirements and UI|
|Oct 2||Tu||Groupthink: Specification is hard|
|Oct 4||Th||Groupthink: Specification is still hard (with prizes!)|
|Oct 9||Tu||Monday schedule: no class|
|Oct 11||Th||Automatic Test Generation|
|Oct 16||Tu||Testing and Coverage|
Due: Tu Oct 30, 2012, 9:00AM EDT
|Oct 23||Tu||Project focus time: work on project plan|
|Oct 25||Th||Ben Ransford (guest lecture): Security in Software|
|Oct 30||Tu||Plan presentations|
|Nov 1||Th||Plan presentations|
Due: Th Nov 17, 2012, 9:00AM EST
Final project report
Due: Fr Dec 7, 2012, 11:59PM EST
|Nov 8||Th||Teamwork and Debugging|
|Nov 13||Tu||Project focus time: work on project|
|Nov 15||Th||Heather Conboy (guest lecture): Flow analysis with FLAVERS|
|Nov 20||Tu||Path-Based Static Analysis||
Due: Th Nov 29, 2012, 9:00AM EST
|Nov 22||Th||Thanksgiving: no class|
|Nov 27||Tu||Performance Debugging|
|Nov 29||Th||Development Models: SimSE|
|Dec 4||Tu||Project presentations|
|Dec 6||Th||Project presentations|
Students are allowed to work together on all aspects of this class except the midterm. However, for the homework assignments, each student must submit his or her own write up, clearly stating the collaborators. Your submission must be your own. When in doubt, contact the instructors about whether a potential action would be considered plagiarism. If you discuss material with anyone besides the class staff, acknowledge your collaborators in your write-up. If you obtain a key insight with help (e.g., through library work or a friend), acknowledge your source and write up the summary on your own. It is the student's responsibility to remove any possibility of someone else's work from being misconstrued as the student's. Never misrepresent someone else's work as your own. It must be absolutely clear what material is your original work. Plagiarism and other anti-intellectual behavior will be dealt with severely. Note that facilitation of plagiarism (giving your work to someone else) is also considered to be plagiarism, and will carry the same repercussions.
Students are encouraged to use the Internet, literature, and other publicly-available resources, except the homework solutions and test (including quizzes, midterms, finals, and other exams) solutions, from past terms' versions of this course and other academic courses, whether at UMass and at other institutions. To reiterate, the students are not allowed to view and use past homework and test solutions, unless explicitly distributed by the CMPCSI 521/621 staff as study material.
Whenever students use Internet, literature, and other publicly-available resources, they must clearly reference the materials in their write ups, attributing proper credit. This cannot be emphasized enough: attribute proper credit to your sources. Failure to do so will result in a zero grade for the assignment and possibly a failing grade for the class, at the instructor's discretion. Copying directly from resources is not permitted, unless the copying is clearly identified as a quote from a source. Most use of references should be written in the words of the student, placing the related work in proper context and describing the relevant comparison.
Students who violate University standards of academic integrity are subject to disciplinary sanctions, including failure in the course and suspension from the university. Since dishonesty in any form harms the individual, other students, and the university, policies on academic integrity have been and will be strictly enforced.
There is no required textbook for the course. Reading assignments will come from publicly available research papers. Students who wish to read established textbooks beyond the assigned reading should consider:
Students should have taken an introductory course in software engineering or have the equivalent background. Students are expected to be familiar with an object oriented programming language, such as Java or C++. Some programming and the ability to download and use off-the-shelf tools are expected.
Various materials used in this course have greatly benefited from materials developed by Alex Aiken, Lori Clarke, Carlo Curino, Sebastian Elbaum, Michael Ernst, David Notkin, Nenad Medvidovic, Alex Orso, Lee Osterweil, Willem Visser. Thank you.