This course will explore state-of-the-art techniques that make the analysisof various software artifacts cost-effective. Topics include dynamic and static program analysistechniques, such as automated test generation, fault localization and debugging, model inferencing,and type checking. The course includes the utilization of research tools and the development of aclass project that builds and improves on existing techniques.


We will alternate lectures and labs, and sprinkle a few research talks. There will be plenty of roomto roam as the assignments will leave space to grow in areas less covered by the course. A heavywork-load can be expected when the assignments/projects are due. There will be little hand-holding in terms of support to set the tools and complete the assignments as I expect for everyone to have the technical and programming skills of an undergraduate CS major.


Advanced Software Development Techniques or Software Engineering course orequivalent, expertise in at least one modern programming language. For undergraduates, instructor's permission is required.

Credit Hours:


Requirement Designation:

Software Systems Area


  • No textbook is required. Instructor will provide necessary reading material as part of the course.
  • Laptop is required for class work.

    Grade Distribution

  • Assignments 45%
  • Lightning Talk (tool and/or paper) 10%
  • Project (proposal, presentation, report) 35% (10%,10%,15%)
  • Participation 10%