CS 6340: Software Analysis and Testing

Fall 2014

[Recent News] [Course Information] [Course Description] [Syllabus]

Recent News

Course Information

Time:Mondays and Wednesdays, 4:35-5:55 pm
Location: Room 1103, UA Whitaker Biomedical Engineering Building
Instructor: Mayur Naik
Email: naik@cc.gatech.edu
Office: Room 2320, Klaus Advanced Computing Building
Office hours: By appointment
Teaching Assistant: Xin Zhang
Email: xin.zhang@gatech.edu
Office: Room 2319, Klaus Advanced Computing Building
Office hours: By appointment

Course Description

Objectives: Aspects of software development besides programming, such as testing, debugging, and verification, comprise over 50% of the cost of software development. Modern technology has come a long way to aid programmers with these aspects. At the heart of this technology lies program analysis: a body of work that concerns discovering facts about a given program. Many diverse program analysis approaches exist, each with their own strengths and weaknesses. This course will cover a broad spectrum of these approaches, including type systems, dataflow analysis, model checking, theorem proving, and dynamic analysis, as well as their combinations. Both the principles underlying these approaches and hands-on experience with using and implementing tools that realize these approaches will be covered. A mix of basic and advanced topics will be covered.

Intended Audience: The course is intended for students who would like to: 1) pursue research in the specializations of programming languages, compilers, and software engineering; 2) pursue research in other specializations of computer science (e.g., information security or systems) that may involve applying program analysis to problems in their domain; and 3) become more productive software engineers in industry.

Evaluation: Students will be evaluated based on three components: take-home assignments (50%), an in-class midterm exam (25%) and an in-class final exam (25%). Assignments will be of two kinds: (1) using a program analysis tool based on a technique presented in class, and reporting your findings, or (2) implementing a program analysis algorithm in Java using the Chord program analysis framework.

Pre-Requisites: There are no pre-requisites for the course but sudents will be expected to do programming in Java for some assignments. The course is open to both MS and PhD students. Undergraduate students require permission from the instructor. The course counts as an elective in the MS CS program for the specializations of "Information Security" and "Databases and Software Engineering (DB+SE)", and as a breadth component in the PhD CS program for the areas of "Programming Languages and Compilers" and "Software Methodology and Engineering".

Course Material: There is no required textbook; all relevant materials will be made available on-line.

Academic Honesty: Students are expected to abide by the Georgia Tech Honor Code. Honest and ethical behavior is expected at all times. All incidents of suspected dishonesty will be reported to and handled by the office of student affairs. You will have to do all assignments individually unless explicitly told otherwise. You may discuss the assignments with classmates but you may not copy any solution (or any part of a solution) from a classmate.

Syllabus

Date Handout Topic Reading More Resources
Aug 18 Quiz Course logistics and quiz -- --
Aug 20, Aug 25 [PPTX] [PDF] Introduction to program analysis -- --
Aug 27 [Part 1] [Part 2] Dataflow analysis -- --
Sep 01 -- No class (Labor Day holiday) -- --
Sep 03 -- TBD -- --
Sep 08 -- TBD -- --
Sep 10 -- TBD -- --
Sep 15 -- TBD -- --
Sep 17 -- TBD -- --
Sep 22 -- TBD -- --
Sep 24 -- TBD -- --
Sep 29 -- TBD -- --
Oct 01 -- TBD -- --
Oct 06 -- Midterm exam -- --
Oct 08 -- TBD -- --
Oct 13 -- No class (Fall recess) -- --
Oct 15 -- Review by TA (Instructor away) -- --
Oct 20 -- TBD -- --
Oct 22 -- TBD -- --
Oct 27 -- TBD -- --
Oct 29 -- TBD -- --
Nov 03 -- TBD -- --
Nov 05 -- TBD -- --
Nov 10 -- TBD -- --
Nov 12 -- TBD -- --
Nov 17 -- TBD -- --
Nov 19 -- TBD -- --
Nov 24 -- TBD -- --
Nov 26 -- TBD -- --
Nov 03 -- TBD -- --
Dec 01 -- TBD -- --
Dec 03 -- TBD -- --
Dec 08 -- Final exam -- --