ECS 245: Analysis of Software Artifacts

Subject
ECS 245
Title
Analysis of Software Artifacts
Status
Active
Units
4.0
Effective Term
Fall 2023
Learning Activities
Lecture: 3 hours
Term Project
Description
Techniques for the analysis of software artifacts, including source code, build processes, test suites, bug reports and documentation with a special emphasis on software correctness and performance in real-world settings.
Prerequisites
ECS 140A; ECS 142
Enrollment Restrictions
Pass one open to Ph.D. students in Computer Science only. Pass two open to graduate students in Computer Science only.

Expanded Course Description

As computers have become more powerful, the complexity and size of software has increased significantly. There is a need for tool support in all aspects of software development. This course explores the analysis of a variety of software artifacts that arise in the design, implementation, validation, verification and maintenance of software including software specifications, source code, intermediate code representations, build processes, tests, bug reports and software documentation. This course will serve as an introduction to software artifacts and will discuss both foundational and recent state-of-the-art research related to the design and development of analysis tools for software artifacts, with a focus on their application to real-world software.

A main component of the course is a term project. The project is an opportunity for students to (1) propose novel software analysis techniques to solve interesting problems, (2) build upon existing analysis techniques to solve new problems, (3) apply the techniques discussed in class to new problem domains, or (4) conduct user studies to evaluate existing techniques or tools. There will be several project milestones throughout the quarter that will involve writing different parts of a research report, and developing a software artifact to be used to evaluate the project's ideas. Students will be required to submit a final report along with the final artifact. Emphasis will be put on software reproducibility by having teams test each others' final artifacts.

Course Category