CS 520: Theory and Practice of Software Engineering

Spring 2022

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:Tobin Hall, Room 204
Lecture:Tuesday and Thursday 10:00AM – 11:15AM

Heather Conboy
office hours: Mondays 1-2 pm (Held in person LGRT225. See Moodle for a Zoom link), Wednesdays 4-5 pm (Held in person CS207. See Moodle for a Zoom link), and by appointment
phone: TBA
email: hconboy@cs.umass.edu
Graders: Sirisha Annamraju, Kimberley Faria, Divya Maiya

Attendance and late submission policy: Recorded lectures will be made available for later viewing on Moodle. The office hours will be held in person as well as held remotely over Zoom. 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 assignments will have Q&A forums on Piazza and will be submitted through Gradescope. The submission deadlines are sharp.

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 35%
In-class exercises 30%
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
Jan 25 Tu Course introduction
Jan 27 Th Software requirements and architecture
Week 2
Feb 1 Tu Best and worst software development practices
Feb 3 Th User interfaces
Project: Topic selection
Due: Thu Feb 24, 2022, 11:59 PM
Week 3
Feb 8 Tu Version control
Feb 10 Th In-class exercise 1: Version control. Due Feb 17.
Homework 1: Architecture patterns and code review
Due: Thu Feb 24, 11:59 PM
Week 4
Feb 15 Tu Design principles
Feb 17 Th Design patterns
Week 5
Feb 22 Tu No class (Monday class schedule)
Feb 24 Th Requirement specification
Week 6
Mar 1 Tu Software testing
Project: Requirements & design
Mar 3 Th In-class exercise 2: Software testing. Due Mar 10.
Week 7
Mar 8 Tu Test driven development
Mar 10 Th Collaborative development
Homework 2: Design, implementation, and testing
Due: Tue Apr 5, 11:59 PM
Week 8
Mar 15 Tu Spring recess
Mar 17 Th Spring recess
Week 9
Mar 22 Tu Recorded guest lecture about testing (no in person lecture)
Mar 24 Th Debugging
Week 10
Mar 29 Tu Mid-point presentations
Mar 31 Th In-class exercise 3: Debugging. Due Apr 9.
Project: Implentation & evaluation
Week 11
Apr 5 Tu Concurrent and distributed programs
Apr 7 Th Model checking
Homework 3: Design patterns, testing, & debugging
Due: Sat April 30, 11:59 PM
Week 12
Apr 12 Tu Guest lecture (in person and recorded)
Apr 14 Th Data flow analysis
Week 13
Apr 19 Tu Model inference of programs
Apr 21 Th In-class exercise 4: Model inference of programs. Due Apr 27.
Week 14
Apr 26 Tu Reasoning about programs
Apr 28 Th Guest lecture on automated theorem proving (in person)
Week 15
May 3 Tu Final project demonstratins and 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.