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|
office hours: By appointment as well as Wednesdays 3 - 4 PM (remote) and Fridays 11 AM - 12 PM (noon - in person CS207 and remote)
|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.
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)
|Sep 2||Th||Course introduction|
|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
|Sep 14||Tu||User interfaces||Sep 16||Th||Version control||
Homework 1: Code review & architecture
Due: Thu September 30, 2021, 9:00 PM
|Sep 21||Tu||In-class exercise: Advanced uses of git. Due Sep 28.||Sep 23||Th||Requirements specification|
|Sep 28||Tu||Design principles||Sep 30||Th||Design patterns|
|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)
||Test driven development
exercise: Debugging. Due Nov 4.
||Final project mid-point presentations (1)
||Final project mid-point presentations (2)
Final project completion
Due: Mon Dec 13, 2021, 11:59PM
Homework 3: Design patterns, testing & debugging
Due: Tue November 30, 2021, 11:59PM
||No class (Veterans Day)
||Model inference of programs
exercise: Model inference of programs. Due Nov 27.
||Automated theorom proving
||Example Z3 programs
||No class (Thanksgiving break)
||Guest lecture (recorded lecture and slides available on Moodle)
||Reasoning about programs
||Final project presentations
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.