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 |
Instructor: |
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 | project |
---|---|---|---|---|---|
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) |
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.
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.