CMPS290G: Topics in Software Engineering
Research Workshop in Automated Software Defect
Detection
Instructor: Raymie Stata
Class hours: TuTh 10-11:45, Porter 246
Office hours: Thursdays, 2-3:30p (or by appointment), BE357A
Schedule and readings
This semester, 290G will be a project-based workshop on the actual process
of research. Through a guided, hands-on experience, the goal of this
course is to give you first-hand experience with both the nature and
process of a certain type of research in Software Engineering. (As
"certain type of research" suggests, there are many ways to do
research, and the field of Software Engineering is borad. The style
and topics of research demonstrated in this workship will obviously be
biased by the instructor.)
In this course, you will:
- Select a project area based on papers and presentations made
by the instructor.
- Select an actual project based on your own literature search
and input from the instructor. This project will most likely involve
building a system and testing it in some fashion. Due to the time
constraints of the quarter, your project will be modest in scope,
however, it will demonstrate, "in the small," the type of novelty and
risk typical of research projects.
- Outline a hypothetical paper based on the project
before starting the project. This exercise will demonstrate
the benefit of "working backwards." That is, you will be forced to
define the hypothesis you're be testing and to outline the
experimental results you anticipate generating; from which you'll
design experiments; from which you'll identify the "minimal system"
you need to build to test your hypothesis.
- Build your system and run your experiments.
- Write a roughly 10-page paper. Of course, the actual course
of your work often takes unanticipated turns, so your actual paper may
vary substantially from your original outline.
Of course, a hallmark of research is risk-taking, thus it's quite
possible that you'll fail to prove your hypothesis or otherwise
generate interesting results. Such an outcome is fine. At the same
time, an important goal is to help you learn to scope a project, that
is, we'll be actively avoiding the failure-mode in which you fail to
run an interesting experiment because you simply ran out of time.
After the first two- to three-weeks of the course, class time will
be devoted to presentations and discuss of student projects. You'll
be expected to lead some of these discussions and participate in all
of them.
The projects in this class will be restricted to the area of
"Computer-Assisted Software Defect Detection." The goal of this line
of research is to build systems that assist developers find defects in
their software. This line of research is typically focused on the
class of defects called "bugs" - defects that cause the program to
crash or to otherwise violate its functional specification - versus
defects in other areas (e.g., the functionality, usability). Examples
of this type of research include:
You'll be encouraged to work in groups of two, although other
arrangements will be satisfactory.
(To access the rest of the course materials, use "cmps290g" as
both username and password.)
P.S. A number of students have asked about overlap between this
quarter's 290G and last
quarter's. There will indeed be a fair bit of overlap in readings
and ideas. However, the focus of this quarter is less on the actual
content and more on the doing research. So I believe people who
participated in 290G last quarter will benefit from this quarter's
approach.