CSV 882 : Special Module in Software Systems

Instructor : Dr. Komondoor V Raghavan, IBM IRL

ADVANCED PROGRAMMING TOOLS

Commercial software development is a complex, failure-prone effort. While initial design and implementation of software are the most well-understood aspects, quality assurance activities such as testing and debugging are actually harder in practice, consuming more resources and contributing more to the risk of budget and schedule slippage. Also, after the first release of a software, adding features to the software in subsequent releases becomes progressively harder because of increasing complexity and decreasing understandability of the code. In this course we will review several cutting-edge tools, both open-source and commercial, that go beyond basic IDEs and debuggers, and provide powerful help for quality assurance and code understanding. The power of these tools comes from the deep, automated program analysis capabilities they bring. We will experiment with these tools hands-on, and also briefly review the theory behind them. This course will impart skills useful for software developers, while also providing background to those interested in pursuing scientific research in these topics.

Target: Final year undergraduates, PG students.

Prerequisites: Programming experience, experience in using basic code development tools such as editors, compilers and debuggers, and familiarity with the languages C and Java.

Credits: 1 (14 classroom hours)

Course activities: Instructor will demonstrate tools in class, and will provide overview of how they work. Assignments will consist of using each tool hands-on to solve an assigned problem, and reporting the result. Assignments will involve modifying or extending given programs, but will not involve significant coding. Grades will be based mainly on assignments, and possibly an objective-type final exam.