Laura Moreno
Office: CSB 458
Office Hours: Tue & Thur, 3:15pm - 4:15pm
Email: if not enrolled, otherwise, Canvas
Lecture Time and Place:
2:00pm - 3:15pm, Tue, Thur, CSB 425

General course information


Software systems continuously change and, eventually, they become difficult and costly to comprehend and maintain. Consequently, software maintenance and evolution are essential activities that account for more than half of the resources invested in the development of a software system. To reduce such costs, different strategies can be adopted by software practitioners.

In this course, students will be introduced to the principles and techniques of software maintenance and evolution.

Topics covered: software change management, software quality, mining software repositories, software refactoring, defect prediction and effort estimation, software (re)documentation, etc.

Learning outcomes

By the end of the course:

  • Students will be able to explain theories, models, tools and processes related to the maintenance and evolution of large software systems.
  • Students will be able to apply state-of-the-art techniques when maintaining and/or evolving large software systems.

Course credits

4 semester hours (3 lecture, 1 lab

Lab hour to be arranged by teams to work on assignments and project deliverables.


CS 314 (Software Engineering) or consent of instructor (you should have a previous software engineering course taken or experience).


This course is geared towards graduate students in Computer Science.

Class material

Reference texts

The next textbooks are recommended, but they are not required. Additional online reading will be made available.

  • Software Evolution and Maintenance – A Practitioner’s Approach
    by Pruyadarshi Tripathy and Kshirasagar Naik (ISBN 978-0-470-60341-3)
  • Effective Software Maintenance and Evolution: A Reuse-Based Approach
    by Stanislaw Jarzabek (ISBN 0-8493-3592-2)
  • Software Evolution
    by Tom Mens & Serge Demeyer (ISBN 978-3-642-09529-0)
  • Refactoring: Improving the Design of Existing Code
    by Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts (ISBN: 978-0201485677)
  • Making Software - What Really Works, and Why We Believe It
    by Andy Oram, Greg Wilson (Print ISBN:978-0-596-80832-7; Ebook ISBN:978-0-596-80829-7)

Lecture slides

  • Slides will be available on Canvas.
  • Handouts regarding getting accounts, using specific tools and environments, etc, will be available on the resources webpage.

Minimal equipment and resources required

Students must have adequate computing resources able to do the following:

  • Access the class Canvas page. Students must use a browser installed on their computer that is compatible with Canvas. Browsers are generally available for free.
  • Create, compile, and run Java programs. Any up to date personal computer or workstation should be adequate for Java development. The Java Development Environment is available for free on the internet. Students typically use the Eclipse IDE.


Canvas will be the main communication platform for this course. If you do not have access to the course in Canvas, email the instructor directly.

Important dates

Project updates and presentations will be held in the same classroom as the regular lectures.

January 23* Assignment 1 posted
February 6* Assignment 1 due
February 8* Assignment 2 posted
March 6* Assignment 2 due
Assignment 3 posted
March 27* Assignment 3 due
Assignment 4 posted
April 10* Assignment 4 due
Project posted
March 13, 15 No class (Spring break)
April 19*, 24* Paper presentations
April 26* Project updates
May 8* Final project due

* Subject to changes. A detailed class schedule will be made available.

Course policies


Next are the formally graded elements of the course and associated weighting:

Activity Weight
Assignments 40 %
Project 25 %
Class presentations 20 %
Readings 10 %
Class participation 10 %

Calculation of the final class score is the average of grades for the category times the weight for the category shown in table above. The final point score will not be curved. The assignment of letter grades will be made as follows:

Letter grade Point range
A 95-105
A- 90-94
B+ 86-89
B 82-85
B- 78-81
C+ 74-77
C 70-73
F below 70

Makeup policy

There will be no makeup for missed assignments or in-class activities, and students will receive a zero. If a student is unable to deliver an assignment due to a documented illness, accommodations will be made by the instructor according to university policy.

Late work policy

Assignments are to be submitted through Canvas, presentend in class or stored in a repository. Specifics will be included in each assignment. Always check the assignment information for due dates. You lose 15% of the maximum possible grade per day for any late submissions; no late submissions accepted two weeks after original due date.

Class attendance

Students are expected to attend every class. Students should not ask for special considerations to allow them to miss classes or not take examinations, including finals, at appointed times.

Classroom citizenship

Respect for your classmates is necessary at all times. We work to maintain an environment supportive of learning in the classroom and laboratory. Towards that end, we require that you be courteous to and respectful of your fellow participants (i.e., classmates, instructors, GTAs and any tutors). In particular, unless otherwise directed for an in-class activity:

  • Put away your cellphone. If you are expecting an emergency call, sit near the door and slide out discretely to take it.
  • In class use of electronic devices in general, and laptops specifically, is permitted as a courtesy so that you may better participate and learn. If at any time the instructor judges that your use of an electronic device is becoming a distraction to others, you may be asked to to turn it off and put it away. Laptop/tablet users must sit in the back row starting from the corners.

Forum citizenship

Respect for your classmates is necessary at all times. We work to maintain an environment supportive of learning in the discussion forum. Towards that end, we require that you be courteous to and respectful of your fellow participants (i.e., classmates, instructors, GTAs and any tutors). In particular:

  • Be professional and corteous.
  • Do not post any questions about your grade or any grading issues. Such questions are private communication and must be emailed.
  • Do not post any opinions regarding your graded assignment, or any aspect of the course. You will have a chance to submit anonymous reviews at the end of the semester. Email feedback to the instructor regarding the course is acceptable and welcome.
  • Be constructive and provide complete answers.
  • Provide references and attribute credit for the content you post when needed.

The instructor reserves the right to delete postings that do not promote a conducive learning experience for students in the class.

Communication guidelines

Students are expected to be professional in the way they communicate with their fellow participants (i.e., classmates, instructors, GTAs and any tutors). Many guidelines exist for academic etiquette and written communication. Students are highly encouraged to read the next articles:

Professional Conduct

All students are expected to conduct themselves professionally. Students are assumed to be familiar with the policies in the student information sheet for the department.

This course will adhere to CSU Academic Integrity Policy as found in the the General Catalog and the Student Conduct Code. At a minimum, violations will result in a grading penalty in this course and a report to the Office of Conflict Resolution and Student Conduct Services.

students are considered computing professionals, albeit perhaps just starting. Students should be familiar with the code of conduct for the primary professional society, ACM. The ACM Code of Conduct can be found HERE.

Other policies