Instructor
Professor Suraj C. Kothari
|
Teaching Assistants
|
Contents
Syllabus | Class Activities | Research Papers | Projects | Office Hours |
Homework | Grading | Links | WebCT |
Aim:
This
course will focus on working with real-world software that is often hard to
understand and analyze because of its size and complexity. The objective of the
course is to learn strategies and tools for applying high-level reasoning
to complex software in various contexts such as defect analysis, impact
analysis, safety or security concerns, or developing architectural views of the
software.
Topics:
Reasoning about programs- addressing, articulating and answering the right questions.
Software complexities due to various factors and issues such as concurrent and interrupt-driven programming
The commonality in analyzing codes written in different languages such as C, C++, Java, ADA, and FORTRAN
Software inspections
Static and dynamic software analysis
Applying software analysis to find security, safety, and resource utilization defects
Software visualization and compact visual models for managing complexity of software
Scope and limitations of tools such as Rational Purify
Software analysis vs. Testing
Analyzing software with respect to cross-cutting concerns
Extracting and understanding architectural views
Use of software analysis in modifying/migrating/refactoring software.
You will be engaged in analyzing complex software, learning new tools for analyzing software, reading technical papers, communicating your knowledge through written documents and oral presentations, and above all critical thinking and problem solving.
Textbook:
The material will be selected from research papers and reference books. The
website has a list of papers.
Weekly homework (75%)
Final Exam (25%)
Grading will be pretty close to the scale with A:91% and above, B:81% to 90%, and so on.
Academic Integrity
All your
work (including the labs) should be done individually unless otherwise
specified. You are not allowed to use work done by others, or obtain the answers
directly in any form (such as from the web). If you have any questions
about what is allowed/not allowed, please contact the instructor or the
TAs.
Any cases of cheating will be dealt with the strictest possible
measures allowed by the university, please refer to the university
policies on academic dishonesty.
Disability
The departmental policy will be followed.
Students with disability should inform the instructor so that appropriate
arrangements can be made to help them.
Office hours
Hours | Location | |
Professor Kothari | Tuesday 9:30-10:20, Thursday 1:10-2:00 | 3132 Coover Hall |
Students can always make appointments outside the office hours. Make appointments by talking to the instructor before or after the class. Appointments are not necessary during scheduled office hours.
Week |
Lecture Topics |
Homework Problems |
Reading |
Week 1 |
Reasoning about complex software: Introduction Introduction to Software Configuration Management (SCM) |
| |
Week 2 |
Introduction to Software Evolution (PPT
and PDF),
a fun quiz on computer evolution (PPT
PDF)
, code sample (PDF) for the discuss on
Thursday (1/19) regarding cross-cutting memory leaks and how to analyze
those.
Lecture 4: Defect Analysis -1 (PDF)
|
Homework 1 Due on Thursday, January 26, statement (WORD PDF), CODE (ZIP) |
|
Week 3 |
Lecture 5: Memory Leaks (PPT) Lecture 6: Introduction to Security Vulnerabilities (PPT) |
Homework 2 Due on Thursday, February 2, statement and code (WORD), |
|
Week 4 (Jan 30-Feb 3) |
Lecture 7: Two security Vulnerabilities Buffer Overflow (PDF) and SQL Injection ( PDF) Lecture 8: Program Analysis (PDF) |
||
Week 5 (Feb 6-Feb10) |
Lecture 9-10 Introduction to Static Analysis (PDF) (Note: Lecture 9 file is replaced by a new file that combines lectures 9 and 10) |
Homework 3 Due on Thursday, February 16, statement (PDF) |
|
Week 6 (Feb 13-Feb17) |
Lecture 12- Program Comprehension (PDF) We will use the XINU as the first case study for program comprehension and discuss strategies to understand the file system code. The required code Xinu-Source (zip file, will be needed for HW-5) |
Homework 4 Due on Thursday, February 23, statement (PDF) |
|
Week 7 (Feb 20- Feb 24) |
Document (PDF): Basics of the Xinu File system ( will be needed for HW-5) Concern-based program understanding (PDF) About FEAT tool (PDF) |
Homework 5 Due on Thursday, March 9, statement (WORD or PDF) Use the already posted Xinu-Source and the document on basics of the Xinu File system.
|
|
Week 8 |
A worldwide competition for software developers - an article from Wall Street Journal (PDF) - I think you will find it interesting. (An Iowa State Alumni is an executive for the company that hosts these competitions) Human Complexity of Software Lecture 15 (PPT) |
How would I go about understanding Xinu File System - student responses (PDF) |
|
Week 9 |
Software Defect Analysis using C-Vision tool - Flash Demo You can download the file and use the Flash viewer to see the demo. |
|
|
Week 10 |
Spring Break |
|
|
Week 11 March 20- March 24 |
Lecture 19 - Program slicing and it application to efficient debugging (PPT) Version Model (PPT) |
HW-6 (WORD): Program Slicing (Due March 30) HW-7 (WORD): Detecting memory leaks using CVision tool (Due April 6) |
|
Week 12 March 27- March 31 |
Configuration Management (PPT) |
|
|
Week 13 April 3 -April l7 |
|
|
|
Week 14 April 10 - April 14 |
Software verification using abstraction and refinement (PPT) |
||
Week 15 April 17 - April 21 |
A position paper - starting point for one part of the final exam |
|
|
Week 16 April 24- April 28 |
Individual Interactions |
|
|
Week 17 |
Final Exam on Thursday, May 4, 7:30 to 9:30 (Final Exam Schedule posted on university website) |
|
1. MOPS: An Infrastructure for Examining Security Properties of Software, by Hao Chen and David Wagner
2. Bugs as Deviant Behavior: A General Approach to Inferring Errors in Systems Code, by Dawson Engler, David Yu Chen, Seth Hallem, Andy Chou, and Benjamin Chelf
3. Jeromy Carriere Rick Kazman. Playing detective: Reconstructing software architecture from available evidence. Technical Report CMU/SEI-97-TR-010 3, page 52, 1997.
4. F. P. Brooks, Jr. The Computer Scientist as Toolsmith, Communications of the ACM, 39:61–68,1996.