Home Page - Syllabus

Schedule, Classnotes  

 

CS 6340: Software Analysis and Testing
Fall 2009
Home Page - Syllabus

 

Instructor

Mary Jean Harrold, harrold@cc.gatech.edu

2322 Klaus Advanced Computing Building

404.385.0612

Home page (http://www.cc.gatech.edu/~harrold)

Aristotle Research Group home page (http://www.cc.gatech.edu/aristotle)

Course Information

Time: Tuesday, Thursday, 4:35-5:55 pm

Location:  KACB 1456

 

Motivation for Course

Software systems are increasingly complex, dynamic, and pervasive. The quality of such systems cannot be guaranteed unless effective and efficient techniques for analyzing and/or testing the artifacts of software development are used. This course will examine software testing and analysis techniques that let us build, validate, maintain, reuse, and evaluate software systems. The course will study the goals of testing and analysis, with special emphasis on techniques for demonstrating and assessing various software qualities and for identification of software defects. The course will also cover some available tools that implement testing and analysis techniques. This course can be used as a breadth course for Software Engineering and Programming Languages/Compilers.

Course Objectives

At the end of the course, students should be familiar with the primary current approaches to software testing and analysis. Students should also be aware of the major open problems in demonstrating quality using testing and/or analysis, such that research within this domain would be a natural follow-on to this course.

  • To study traditional static and dynamic analyses, such as data-flow, slicing, and profiling, along with promising techniques such as model checking and abstract interpretation
  • To study traditional applications of these analyses, such as validation, program understanding, and debugging as well as new applications, such as security and component-based systems
  • To explore important areas for research in analysis and use of software artifacts
  • To apply these analyses and applications through homeworks and a semester project

Means for Approaching Course Objectives

During the semester, we will explore software testing and analysis techniques through class lectures, paper readings (similar in style to a graduate-level seminar), and homework. In addition to learning about important research in analysis, students will select a project that will let them investigate an area of interest, experiment with an existing technique, or perform original research. Students will share their discoveries with the class through written and oral reports.

Class periods will be of three types:

  • Lectures, which introduce the fundamental concepts of static analysis, dynamic analysis, and testing. 
  • Discussion of papers, in which a student or a group of students lead the discussion on one of the assigned readings; students may propose papers to be discussed, as long as the topic is relevant.
  • A mini-conference, shaped as a regular computer-science conference, in which students present the results of their projects. .

Responsibilities of Students

  • Arrive on time and attend all class meetings (no make-ups for lectures, exams, presentations, etc.)
  • Prepare for and participate in classes
  • Submit homeworks, projects, etc. at beginning of class on the due date (no credit for late submissions)

 

Academic Honesty

 

All students are expected to adhere to the Georgia Tech Honor Code. For example, students are expected to maintain traditional standards of academic integrity by giving proper credit for all work referenced, quoted, etc. Plagiarizing is defined by Webster’s as “to steal and pass off (the ideas or words of another) as one's own: use (another's production) without crediting the source.”   For another example, students are expected to do their work individually (e.g., homeworks, take-home exams), unless otherwise stated.  If caught violating the Georgia Tech Honor Code, students  will be dealt with according to the GT Academic Honor Code.  

Course Evaluation

Course requirements include reading relevant papers, participation in class, satisfactory performance on pop quizzes covering the reading material and on semester examinations, and a project that includes two short presentations and a paper that describes the projects and the results. 

  • Homeworks (30%),
  • Semester project (including presentation) (30%),
  • Exams (30%), and
  • Class participation (10%).

Prerequisites

Graduate-level standing, CS 4240, its equivalent, or permission of the instructor.