The objective of this course is to provide students with a working knowledge of the state of research and practice on software product and process evaluation and improvement. Students completing this course should be able to evaluate both software artifacts and software processes. Software product evaluation includes the evaluation of external characteristics such as usability and functionality, as well as internal characteristics such as design structure, testability and maintainability. Software process evaluation addresses the problem of understanding the software development process, assessing the quality of the process, and developing plans for process improvement. The use of quantitative methods in software engineering will be stressed. The course will also cover experimental methods as they are applied to evaluating software engineering methods.
Students will read papers on recent research topics such as regression test selection and prioritization, test input generation, fault localization, automatic program repair, fuzz testing, and metamorphic testing.
This semester we will introduce security research topics related to vulnerability assesment, penetration testing, and static analysis of software.
For simplicity, we will use Canvas for (1) disseminating slides, papers, and lecture videos, (2) submitting quizzes, discussion posts, assignments, and exams, (3) maintaining a detailed calendar of activities and deadlines, and (4) posting grades. The schedule on the course website will only show the topics being covered every week.
This course can be applied toward:
CS 414 (Object Oriented Design).
Textbooks and Materials
Textbooks and materials can be purchased at the CSU Bookstore unless otherwise indicated.
- Introduction to Software Testing, 2nd Ed. (2016)
Paul Ammann & Jeff Offutt
- Software Metrics: A Rigorous and Practical Approach, 3rd Ed. (2014)
N. Fenton & J. Bieman
Dr. Sudipto Ghosh is a Professor of Computer Science at Colorado State University. He received the Ph.D. degree in Computer Science from Purdue University in 2000. His research interests are in the areas of modeling and testing software in the object-oriented, aspect-oriented, and component-based paradigms. Specific topics include data warehouse testing, fault localization, model-based software development, mutation testing and higher order mutation, and regression test selection.
Dr. Ghosh is on the editorial boards of IEEE Transactions on Reliability, Software Quality Journal, and Information and Software Technology. He was a general co-chair of the ACM/IEEE 12th International Conference on Model Driven Engineering Languages and Systems held in Denver in 2009, and the 16th Modularity Conference in Fort Collins in 2015. He was a program co-chair of the Third International Conference on Software Testing, Verification and Validation held in Paris in 2010, the Fourth International Conference on Dependable Systems and their Applications in Beijing in 2017, and the 29th IEEE International Symposium on Software Reliability Engineering in Memphis in 2018. He is a member of the ACM and a Senior Member of the IEEE.