CS5500: Foundations of Software Engineering
Spring 2025
Spring 2025
Catalog Description
This course covers the foundations of software engineering, including software development life cycle models (e.g., waterfall, incremental, agile); requirements analysis; testing (functional testing, structural testing, testing strategies); code refactoring and debugging; software architecture and design; and integration. Includes a course project where some of the software engineering methods (from requirements analysis to testing) are applied in a team-based setting.
Course Outcomes
Build necessary skills to develop, manage, and maintain software.
Learn how to collect and define requirements for a software project.
Develop the skills to collaborate and manage teams in a software project.
Gain experience in full-stack development using a formal software engineering process.
Major Topics
Software processes
Software process models
Types of software process models
Requirements engineering
Methods to define and manage requirements
Software architecture
Architectural and design patterns
System modeling
Modeling tools such as UML
Software testing
Test-driven development
Behavior-driven development
Software maintenance & evolution
Continuous integration and delivery processes
Software Security
Threat modeling
Vulnerability detection and prevention
All course material for the course will be distributed through Canvas.
The Tech Stack
This course emphasizes hands-on experience with software engineering. Hence, you will apply software engineering concepts learned throughout the course to design, implement, test, and deliver/deploy a full-stack web application. To this end, we will use a combination of front-end and back-end frameworks, specifically Typescript, React, Node, Express, and MongoDB. All programming-related activities will use this tech stack. We will use modern software engineering tools that are applicable to this tech stack.
While the instructor will cover all aspects of the tech stack during lecture, you are expected to learn the basic concepts of the Typescript language on your own. To this end, we have provided relevant self-study sources and a practice lab in Canvas for you to get up to speed with TypeScript (See module on Programming: Self Study). We recommend that you finish this module before January 17th, 2025.
For the final project, you are allowed to use a different tech stack, however, you must make sure that all the tools that you are required to use in the final project are available in your chosen tech stack. The course staff is not guaranteed to provide support if you choose a different tech stack than what we are going to use for the assignments and other prorgramming-related activities.
Why this tech stack? We use this tech stack because it is widely used in industry and has support for all the tools we need to illustrate the various aspects of the software engineering process. We believe that if you learn the broad concepts and gain practice in applying the concepts using one set of tools, you will be able to transfer those skills into another set of tools. Moreover, adapting to tools and tech stacks that you haven't worked with before is an essential skill in software engineering.
Course Meeting Times
CS5500 Section 1
MR 11:45 – 1:25 PM
West Village H 108.
CS5500 Section 2
TF 1:35 – 3:15 PM
West Village H 108.
Both sections will cover the same material. Every attempt will be made to sync the two sections.
Recommended Textbooks
Software Engineering, 10th Edition, by Ian Sommerville.
Refactoring: Improving the design of existing code by Martin Fowler and Kent Beck.
UML Distilled by Martin Fowler.
Polyglot Persistence by Martin Fowler and Pramod Sadalage.
User Stories Applied: For Agile Software Development by Mike Cohn.
Value Sensitive Design: Shaping technology with moral imagination by Batya Friedman and David G. Hendry.
Piazza
The Piazza discussion board should be used for all communication with the teaching staff for questions about the course assignments and material. Email should be sent to individual instructors or teaching assistants only to schedule appointments.
Piazza is a forum for additional learning and assistance. The following are not appropriate uses of Piazza:
cyber-bullying
posting memes
complaining about a grade
airing concerns/comments/criticisms about the course
posting more than a few lines of source code from an attempt at a programming exercise or assignment
posting the solution to an assignment or a link to a website containing the solution
in general, anything unrelated to the course material and student learning
Therefore, students are expected to use the Piazza forum for all non-personal, course-related communication. Questions about what an assignment is asking, technical problems that need troubleshooting, or other questions that might be of interest to other students must be posted to Piazza and not emailed to the instructor or a TA.
If code is relevant to your Piazza question you may post only short code snippets. For more extensive help with reviewing or debugging your code, please visit office hours.
Email Etiquette
Be professional and respectful.
Begin your emails appropriately (e.g., Dear Prof. Mitra or just Joydeep).
Email the course staff under the following circumstances:
Canvas is not properly displaying a grade.
One cannot attend office hours and would like to schedule an appointment to meet at another time. In this case, the student should include their availability for the upcoming week.
If a student needs to contact the course staff about a private matter. Examples include:
Making arrangements for disability accommodations.
To discuss private, personal matters that are impacting one's coursework such as physical or mental illness, death in the family, etc.
When emailing the instructor about the course, students should observe the following guidelines to ensure a timely response:
use one's official @northeastern.edu email account
use a descriptive subject line that includes "CS 5500" and a brief note on the topic (e.g., "CS 5500: Appointment")
Recordings
Lectures will be recorded but will only be available on request to students who missed class due to illness or other emergency situations. As a general policy, students are expected to come to class and actively participate in class discussions. The exercises accompanying each module can be completed most effectively if students come to class and participate in the discussions.
Assessments and Grading
Exercises
Lectures will be accompanied by exercises. These exercises will be either programming labs or discussion posts based on material covered in the lecture or additional readings. All exercises and their solution will be discussed by the instructor in class. Students are encouraged to come up with the solutions in class during time set out for peer discussion.
Assignments
Assignments will be a combination of programming activities and software engineering process activities. There will be two individual projects to help students learn the tech stack needed to complete the final group project and explore different software architectures. The remaining assignments will be related to software engineering activities such as system modeling, testing, and threat modeling. All assignments, except the assignment on threat modeling, must be completed individually. The threat modeling assignment is a group assignment.
Final Project
The final project is a group project. Groups are expected to do the following:
Submit a proposal with the list of features they plan to implement.
Implementation and tests for the proposed features.
The submission must include a project management plan and a continuous integration process.
A presentation describing the key features, the development methodology, and challenges faced.
Group Work Policy
Students are expected to form their own groups. Each group must have exactly two members. If students are unable to form groups then the course staff will assign them to a group. The course staff will attempt to group students with similar prior experience with the tech stack, however this is not guaranteed. Each group member will receive the same grade as the group's. However, individual grades may be adjusted if a student feels that their group members have not contributed equally and if there is evidence of unequal work distribution from git logs. Members in a group will have the opportunity to submit an evaluation of their group members anonymously.
Late Policy
All exercises i.e., discussion posts and labs, and individual assignments can be submitted up to 48 hours late without any penalty. Group assignments cannot be submitted late.
Students who take this course are often surprised by just how much time this course requires of them. You are advised to budget your time wisely and to start working on an assignment the day it is posted.
Re-grades
Any grading errors you believe you have found on a homework submission must be emailed to j.mitra@northeastern.edu with the subject line "CS 5500: regrade request for Assignment X". Time is a precious commodity, so please do not spend instructor office hours or TA office hours arguing about points. Regrade requests must be made in writing no later than one week after graded work is returned to the class. Regrade requests that are made later than one week from the date the graded work is returned to the class will not be honored.
Grading Scheme
Assignments: 45%
There will be five assignments -- two individual projects and three software engineering (SE) specific assignments. If there is additional time then I will add a sixth assignment (SE) to be completed individually. If I do I will announce it at least three weeks before the sixth assignment is released. Regardless the breakdown of the assignments are as follows:
25% individual projects
20% SE assignments
Exercises: 10%
Final Project: 30%
Proposal: 5%
Final Submission: 25%
Final Presentation: 15%
Course Grade Cutoffs:
A [93-100],
A- [90-93),
B+ [87-90),
B [83-87),
B- [80-83),
C+ [77-80),
C [73-77),
C- [70-73),
F [0-70).
Course grade cutoffs are flexible and subject to change. Final scores will not be rounded.
Academic Integrity
Each student must pursue their academic goals honestly and be personally accountable for all submitted work. Representing another person's work as your own is always wrong. Faculty are required to report any suspected instances of academic dishonesty to OSCCR. For more comprehensive information on academic integrity, including categories of academic dishonesty, please refer to the OSCCR website at https://osccr.sites.northeastern.edu/academic-integrity-policy/ and the Khoury website at https://www.khoury.northeastern.edu/information-for-overview/current-undergrad/undergraduate-advising-academic-support/academic-policies/.
Violation of academic integrity on any assigned homework will lead to a 0 on that homework. Repeated violations will result in a failing grade for the course. Violation of academic integrity on the final project will also result in a failing grade for the course.
Generative AI Policy
You are allowed to use Generative AI tools like ChatGPT and others for the individual projects and the final project. These tools are increasingly becoming a part of the software engineering process, hence we allow you to use them in this course. However, you must not use these tools for written assignments such as discussions and other non-programming related assignments. Using them in such contexts will be considered a violation of academic integrity and the usual penalty for academic integrity violation outlined above will apply. If you are unsure check with the course staff before using it.
Students with Disabilities
Students who have disabilities who wish to receive academic services and/or accommodations should visit the Disability Access Services. If you have already done so, please provide your letter from the DRC to me early in the semester so that I can arrange those accommodations.
Inclusivity
Name and Pronoun Usage
As this course includes class discussion, it is vitally important for us to create an educational environment of inclusion and mutual respect. This includes the ability for all students to have their chosen gender pronoun(s) and chosen name affirmed. If the class roster does not align with your name and/or pronouns, please inform the instructor of the necessary changes.
Inclusion Statement
We believe diversity and inclusiveness are essential to excellence in academic discourse and innovation. In this class, the perspective of people of all races, ethnicities, gender expressions and gender identities, religions, sexual orientations, disabilities, socioeconomic backgrounds, and nationalities will be respected and viewed as a resource and benefit throughout the semester. Suggestions to further diversify class materials and assignments are encouraged. If any course meetings conflict with your religious events, please do not hesitate to reach out to your instructor to make alternative arrangements.You are expected to treat your instructor and all other participants in the course with courtesy and respect. Disrespectful conduct and harassing statements will not be tolerated and may result in disciplinary actions.