Schedule:
(subject to change; check regularly)
week |
date |
day |
topic |
reading |
homework |
project |
Week 1 |
Sep 4 |
W |
Course Introduction |
|
|
|
Week 2 |
Sep 9 |
M |
Static and Dynamic Analyses Overview |
|
|
|
Sep 11 |
W |
Models, Tests, Bugs, and Symbols Overview |
|
|
|
Week 3 |
Sep 16 |
M |
Dynamic Analysis |
Dynamically
discovering likely program invariants to support program evolution &
Purify |
|
Sep 18 |
W |
Automated Test Generation, and
"On the Naturalness of Software" by Prem Devanbu
(watch video)
|
Korat:
Automated testing based on Java predicates & On the Naturalness
of Software |
Week 4 |
Sep 23 |
M |
Reproducing Field Failures |
Chronicler:
Lightweight Recording to Reproduce Field Failures |
Sep 25 |
W |
Pair Programming |
|
|
Week 5 |
Sep 30 |
M |
Research idea presentations |
|
Oct 2 |
W |
Speculative Analysis |
Early Detection of Collaboration Conflicts and Risks |
|
Week 6 |
Oct 7 |
M |
Performance debugging |
|
Oct 9 |
W |
no class. Instead, attend talk on Oct 10. |
|
|
Oct 10 |
R |
"Data Provenance and Query Provisioning" by Val Tannen
(watch video)
|
|
Week 7 |
Oct 14 |
M |
Bartolomé day: no class |
Oct 15 |
T |
Monday schedule: Design exercise |
|
Oct 16 |
W |
Design exercise |
|
Week 8 |
Oct 21 |
M |
Paper presentations on automated bug repair
|
Automatic Patch Generation Learned from Human-Written Patches,
Automatic Recovery from Runtime Failures, and
Modular and Verified Automatic Program Repair. |
Oct 23 |
W |
Paper Presentations on testing
|
Using likely invariants for automated software fault localization,
Finding your way in the testing jungle: A learning approach to web security testing, and
Automated testing with targeted event sequence generation. |
|
Week 9 |
Oct 28 |
M |
Privacy and Reliability |
Entrusting Private Computation and Data to Untrusted Networks, and
Smart redundancy for distributed computation |
|
Oct 30 |
W |
Paper presentations on defect prediction and fixing
|
SemFix: Program Repair via Semantic Analysis,
Data Clone Detection and Visualization in Spreadsheets, and
Sample Size vs. Bias in Defect Prediction. |
Week 10 |
Nov 4 |
M |
"Architectural Decay in
Software Systems: Symptoms, Causes, and Remedies" by Nenad Medvidovic
(watch video)
|
|
Nov 6 |
W |
Paper presentations on refactoring
|
RefaFlex: Safer Refactorings for Reflective Java Programs,
Refactoring with Synthesis, and
Drag-and-Drop Refactoring: Intuitive and Efficient Program Transformation. |
|
Week 11 |
Nov 11 |
M |
Veterans day: no class |
Due: M Nov 25, 2013, 9:00AM EST
Nov 13 |
W |
Midterm review and Software Architecture |
|
Week 12 |
Nov 18 |
M |
Midterm |
|
Nov 20 |
W |
Project work time: no class |
Week 13 |
Nov 25 |
M |
Paper presentations on regression logs and tests |
Be Conservative: Enhancing Failure Diagnosis with Proactive Logging,
Will You Still Compile Me Tomorrow? Static Cross-Version Compiler Validation, and
Guided Test Generation for Web Applications. |
Nov 27 |
W |
Paper presentations on verification |
Patterns in Property Specifications for Finite State Verification and
Injecting Mechanical Faults to Localize Developer Faults for Evolving Software. |
Week 14 |
Dec 2 |
M |
Project presentations |
|
Dec 4 |
W |
Zero Knowledge Proofs and
more |
|
Academic integrity:
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.
The students should familiarize themselves with the UMass Academic
Honesty Policy and
Guidelines for Classroom Civility and Respect. These policies and
guidelines apply to this class.
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.
Reading:
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:
- The Mythical Man-Month: Essays on Software Engineering by Frederick P.
Brooks Jr.; Addison Wesley
- Software Architecture: Foundations, Theory, and Practice by Richard N.
Taylor, Nenad Medvidovic, and Eric Dashofy; John Wiley and Sons
- Fundamentals of Software Engineering by Carlo Ghezzi, Mehdi Jazayeri,
Dino Mandrioli; Prentice Hall
- Software Testing and Analysis: Process, Principles, and Techniques, by
Mauro Pezzè and Michal Young, John Wiley and Sons
Prerequisites:
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.
Acknowledgements:
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.