Schedule:
(subject to change; check regularly)
week |
date |
day |
topic |
reading |
homework |
project |
Week 1 |
Jan 23 |
Tu |
Course introduction |
|
|
|
Jan 25 |
Th |
Static and dynamic analyses overview |
|
|
|
Week 2 |
Jan 30 |
Tu |
Models, tests, bugs, and symbols overview |
|
|
|
Feb 1 |
Th |
Project ideas discussion |
|
Homework 1
|
|
Week 3 |
Feb 6 |
Tu |
Fairness testing |
Testing software for discrimination |
|
Feb 8 |
Th |
Dynamic analysis
|
Dynamically
discovering likely program invariants to support program evolution &
Purify |
|
Week 4 |
Feb 13 |
Tu |
Software development lifecycle
|
A spiral model of software development and enhancement |
|
Feb 15 |
Th |
Automated test generation |
Korat:
Automated testing based on Java predicates |
|
Week 5 |
Feb 20 |
Tu |
Pair Programming (in-class activity) |
video |
Feb 22 |
Th |
Project idea presentations |
Week 6 |
Feb 27 |
Tu |
Last project idea presentation, presentation discussion, project group organization |
|
Mar 1 |
Th |
Security in software
|
sTile and
smart redundancy
|
|
Week 7 |
Mar 6 |
Tu |
Reproducing field failures
|
Chronicler:
Lightweight Recording to Reproduce Field Failures and
BugRedux:
Reproducing Field Failures for In-house Debugging |
|
Mar 8 |
Th |
Testing |
|
Week 8 |
Spring break: no class |
Week 9 |
Mar 20 |
Tu |
Quality of automated repair and Search Repair |
Is the Cure Worse than the Disease?
Overfitting in Automated Program Repair |
Mar 22 |
Th |
Paper presentations:
slides,
slides, and
slides
|
Automatic Recovery from Runtime Failures,
Angelix: Scalable Multiline Program Patch Synthesis via Symbolic Analysis, and
Program Boosting: Program Synthesis via Crowd-Sourcing.
|
|
Week 10 |
Mar 27 |
Tu |
Paper presentations:
slides and
slides
|
Checking App Behavior Against App Descriptions and
Are Mutants a Valid Substitute for Real Faults in Software Testing?
|
|
Mar 29 |
Th |
Speculative analysis
|
Early Detection of Collaboration Conflicts and Risks
|
Week 11 |
Apr 3 |
Tu |
Paper presentations:
slides,
slides, and
slides
|
Natural
Language is a Programming Language: Applying Natural Language Processing to Software Development,
DASE: Document-Assisted
Symbolic Execution for Improving Automated Software Testing, and
A Guided Genetic Algorithm for Automated Crash Reproduction.
|
Apr 5 |
Th |
Watch "The Automated-Reasoning Revolution" |
|
Week 12 |
Apr 10 |
Tu |
Project plan presentations |
Apr 12 |
Th |
Review and software architecture |
|
|
Week 13 |
Apr 17 |
Tu |
Monday schedule: no class |
Apr 19 |
Th |
Midterm (in class)
|
|
Week 14 |
Apr 24 |
Tu |
Groupthink exercise part 1
|
|
Apr 26 |
Th |
Groupthink exercise part 2 |
|
|
Week 15 |
May 1 |
Tu |
Final project presentations |
Nondiscrimination policy:
Software engineering is at its nature a collaborative activity and it
benefits greatly from diversity. This class includes and welcomes all
students regardless of age, background, citizenship, disability, sex,
education, ethnicity, family status, gender, gender identity, geographical
origin, language, military experience, political views, race, religion,
sexual orientation, socioeconomic status, and work experience. Our
discussions and learning will benefit from these and other diverse points of
view. Any kind of language or action displaying bias against or
discriminating against members of any group, or making members of any group
uncomfortable are against the mission of this course and will not be
tolerated. The instructor welcomes discussion of this policy, and encourages
anyone experiencing concerns to speak with him.
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 COMPCSI 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.