CS 520: Theory and Practice of Software Engineering

Spring 2023

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:Morill 1, Room N375
Lecture:Tuesday and Thursday 4:00PM – 5:15PM

Heather Conboy
office hours) TBA
phone) TBA
email) hconboy@cs.umass.edu
Course support:Jarred Bettencourt (TA), Mahbuba Tasmin (TA)

Attendance and late submission policy: Recorded lectures will be made available for later viewing on Moodle. 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
Feb 7 Tu Course introduction
Feb 9 Th Software requirements
Week 2
Feb 14 Tu Software architecture
Feb 16 Th Manual reviews
Homework 1: Requirements & manual review
Due: Feb 23
Week 3
Feb 21 Tu Version control
Project: Topic selection
Due: Mar 21
Feb 23 Th No class - Campus closing
Week 4
Feb 28 Tu In-class exercise 1: Version control. Due: Mar 7.
Mar 2 Th Requirements modeling
Week 5
Mar 7 Tu Design principles
Mar 9 Th Design patterns
Homework 2: Design & implementation
Due: Mar 28
Week 6
Mar 14 Tu No class - Spring break
Project: Requirements & design
Due: Apr 20
Mar 16 Th No class - Spring break
Week 7
Mar 21 Tu Collaborative development
Mar 23 Th Software testing
Week 8
Mar 28 Tu In-class exercise 2: Software testing. Due: Apr 5.
Mar 30 Th Recorded guest lecture (No in person class)
Week 9
Apr 4 Tu Test driven development
Homework 3: Testing
Now due: Apr 19
Apr 6 Th Requirement specifications
Week 10
Apr 11 Tu Debugging
Project: Implentation & evaluation
Due: May 22
Apr 13 Th In-class exercise 3: Debugging. Now due: Apr 25.
Week 11
Apr 18 Tu No class - Patriot's Day holiday
Apr 20 Th Mid-point project fair
Week 12
Apr 25 Tu Concurrent and distributed programs
Apr 27 Th Model checking
Homework 4: Debugging
Due: May 10
Week 13
May 2 Tu Model inference of programs
May 4 Th In-class exercise 4: Model inference of programs. Now due: May 15.
Week 14
May 9 Tu Recorded guest lecture (No in person class)
May 11 Th UMass medical safety project
Week 15
May 16 Tu Final project fair (See Piazza for the schedule)

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.