This course is the study of the technology involved in the construction of the software tools and environments commonly used throughout the software life cycle. The course will focus on the goals of each kind of tool, how the tools are used in practice and could be leveraged for additional uses, tool architectures, the technical challenges that must be addressed to build the tools, current strategies for addressing the technical problems, evaluation of tools, and limitation of current tools and open problems. We plan to examine tools for version control, documentation generation, program analysis, software testing, issue tracking, debugging, intellectual property protection, software restructuring, reverse engineering, and integrated development environments.
At the end of the semester, a student completing the course should have:
Tuesdays and Thursdays, 11:00AM-12:15PM, 102 Smith Hall
Prerequisite: Algorithms would be helpful.
Restrictions: Undergraduates must obtain instructor's permission.