CS 520: Theory and Practice of Software Engineering

Fall 2021

News | Description | Logistics | Grading | Schedule | Nondiscrimination | Academic integrity | Reading | Acknowledgements



CS 520 introduces students to the principal activities and state-of-the-art techniques involved in developing high-quality software systems. Topics include: requirements engineering, formal specification methods, software design, software testing and debugging, program analysis, and automated software engineering.

This course will cover the following high-level topics:

Besides becoming familiar with Software Engineering principles and best practices, students will learn about cutting-edge research in areas such as Programming Languages, Software Engineering, and Human-Computer Interaction. The exercises and the group project provide additional hands-on experience in using state-of-the-art techniques.

Students should have taken an intermediate course in software engineering and have built, in a team, a software system of roughly 10,000 lines of code or more. Students are expected to be familiar with an object oriented programming language, such as Java or C++. The ability to use a Unix-like operating system (e.g., Linux, Mac OSX) and download and use off-the-shelf tools are expected.

See the syllabus for more details.


Room:Integrated Learning Center, Room S211
Lecture:Tuesday and Thursday 10:00AM – 11:15AM

Heather Conboy
office hours: By appointment as well as Wednesdays 3 - 4 PM (remote) and Fridays 11 AM - 12 PM (noon - in person CS207 and remote)
phone: TBA
email: hconboy@cs.umass.edu
Graders: Sirisha Annamraju, Supriya Shreekant Jahagirdar, Mrinal Tak

Attendance and late submission policy: Participation, in addition to attendance, is an expectation for all students enrolled in the course. Assignment due dates and times are listed on the schedule. All assignment submissions are through Moodle. The submission deadlines are sharp and the submission site will be closed at the specified time.

We understand that circumstances may arise where you may need to miss a class, or submit an assignment late. Seek approval by contacting us at least 24 hours in advance (unless it’s a last-minute emergency and you cannot). Medical conditions, religious or funerary events, university-related events (conference visit, athletic event, field trip, or performance), or extenuating non-academic reasons (military obligation, family illness, jury duty, automobile collision) that need extension will be accommodated with written documentation.


Your success in this class is important to us. All assignments must be completed to pass this course.

 Assignment Grade
Homework 30%
In-class exercises 35%
Class project 25%
Participation 10%

The final numerical cutoff for final course letter grade assignment will be made after all grading is done. The following grades may be given: A, A-, B+, B, B-, C+, C, C-,D+, D, F, PASS/SAT. The approximate grade thresholds that usually apply are: A (93-100), A- (90-92), B+ (87-89),B (83-86), B- (80-82), C+ (77-79), C (73-76),C- (70-72), D+ (67-69), D (60-66), F (0-59). Incompletes will be granted only in exceptional cases, and only if you have completed at least half the course with a passing grade. Prior to that, withdrawal is the recommended course of action.


(subject to change; check regularly)

week date day topic homework
Week 1
Sep 2 Th Course introduction
Week 2
Sep 7 Tu Software requirements and architecture
Sep 9 Th Best and worst software development practices
Project topic selection
Due: Tue Oct 5, 2021, 9:00PM
Week 3
Sep 14 Tu User interfaces
Sep 16 Th Version control
Homework 1: Code review & architecture
Due: Thu September 30, 2021, 9:00 PM
Week 4
Sep 21 Tu In-class exercise: Advanced uses of git. Due Sep 28.
Sep 23 Th Requirements specification
Week 5
Sep 28 Tu Design principles
Sep 30 Th Design patterns
Week 6
Oct 5 Tu Software testing
Oct 7 Th In-class exercise: Software testing. Due Oct 14.
Homework 2: Design, implementation, & testing
Due: Mon November 1, 2021, 11:59PM
Project mid-point report (see last section)
Week 7
Oct 12 Tu Guest lecture
Oct 14 Th Test driven development
Week 8
Oct 19 Tu Collaborative development
Oct 21 Th Debugging
Week 9
Oct 26 Tu In-class exercise: Debugging. Due Nov 4.
Oct 28 Th Guest lecture
Week 10
Nov 2 Tu Final project mid-point presentations (1)
Nov 4 Th Final project mid-point presentations (2)
Final project completion
Due: Mon Dec 13, 2021, 11:59PM
Week 11
Nov 9 Tu Model checking
Homework 3: Design patterns, testing & debugging
Due: Tue November 30, 2021, 11:59PM
Nov 11 Th No class (Veterans Day)
Week 12
Nov 16 Tu Model inference of programs
Nov 18 Th In-class exercise: Model inference of programs. Due Nov 27.
Week 13
Nov 23 Tu Automated theorom proving Example Z3 programs
Nov 25 Th No class (Thanksgiving break)
Week 14
Nov 30 Tu Guest lecture (recorded lecture and slides available on Moodle)
Dec 2 Th Reasoning about programs
Week 15
Dec 7 Tu Final project presentations

Nondiscrimination policy:

Software engineering is at its nature a collaborative activity and it benefits greatly from diversity. We celebrate the diversity in our community and actively seek to include and listen to voices that are often silenced in the computing world. We welcome all individuals regardless of age, background, citizenship, disability, sex, education, ethnicity, family status, gender, gender identity, geographical origin, language, military experience, political views, race, religion, sexual orientation, socioeconomic status, and work experience.

Everyone has the right to be addressed by the name and pronouns that they use for themselves. You can indicate your preferred/chosen first name and pronouns on SPIRE, which appear on class rosters. I am committed to ensuring that I address you with your chosen name and pronouns. Let me know what name and pronouns I should use for you if they are not on the roster.

Please remember: We want to foster open discussion in this course. We will be following the UMass Guidelines for Civility and Respect. Any kind of language or action displaying bias against or discriminating against members of any group, or making members of any group uncomfortable are against the mission of this course and will not be tolerated. The instructor welcomes discussion of this policy, and encourages anyone experiencing concerns to speak with her.

Academic integrity:

Students are allowed to work together on all aspects of this class. All work in this course will be labeled as “individual” or “group” work. When the work is individual, we expect that you will complete the work on your own. You may work alongside others and discuss the work, but all writing (either natural language or code) should be yours and yours only. When the work is group-based, you will submit a single submission for your entire group, and you will all receive the same grade.

All work in this class must be your own or the work of your group, where appropriate. In most cases this work will consist of a written component (either natural language or code). ALL writing must be your own original work, or the joint work of your group where appropriate, and may not be copied from any source without proper attribution. Please refer to the UMass Academic Honesty Policy and Procedures for guidelines on what constitutes academic dishonesty and the sanctions that may be imposed on any student who has committed an act of academic dishonesty. If you have any questions or concerns about what constitutes cheating in this class, please ask us as soon as the question arises.


The following text books provide a more comprehensive discussion of the topics addressed in this class. Note that these text books are not a requirement for this class.


Various materials used in this course have greatly benefited from materials developed by Yuriy Brun, Rene Just, Michael Ernst, David Notkin, Alex Orso, and Lee Osterweil. Thank you.