Course Information

18-654SV: Software Verification and Testing

Units:

12

Description:

Verification and testing (V&T) support software engineers and development teams in their endeavor to build dependable systems. These interrelated activities form the backbone of a high-quality software solution that performs its function as intended. V&T is no longer considered an exclusively backend phase undertaken by a separate quality assurance unit, vulnerable to availability of discretionary resources near project end. Rather, V&T is a cross-functional discipline applied throughout the software lifecycle from beginning to end. As such V&T is an integral and essential part of any sensible software development process. This course introduces the students to concepts, principles, theory, types, tools, and techniques of V&T with exposure to both modern, widely-applicable approaches and traditional, formal techniques. Students will acquire sufficient depth and breadth in V&T through a balanced coverage of topics. The course syllabus spans fundamentals such as V&T principles, systematic testing, input space analysis, and test coverage; practical strategies such as test-driven development, unit testing, and test design; and formal approaches such as abstraction, model checking, static analysis, and symbolic execution.

Please note that this course is intended for ECE master students with a concentration in Software Engineering and will satisfy the “Analysis” area core course requirement.

Prerequisites: 18-652, 18-213 or 15513 , Basic software development experience and proficiency in at least one modern programming language. Java is the main programming language used in this course.

Last Modified: 2017-10-13 3:54PM

Semesters offered:

  • Fall 2017
  • Fall 2016
  • Spring 2016
  • Fall 2015
  • Spring 2015