CSE 416: Software Engineering (Spring 2023)
Scott D. Stoller

Course Description

Official Course Description: Introduces the basic concepts and modern tools and techniques of software engineering. Emphasizes the development of reliable and maintainable software via system requirements and specifications, software design methodologies including object-oriented design, implementation, integration, and testing; software project management; life-cycle documentation; software maintenance; and consideration of human factor issues.

Official Course Outcomes:

Prerequisites: C or higher in CSE 316; and CSE major; and U4 standing.

Credits: 3

Additional Comments: Topics include:

The heart of the coursework is a capstone project in which teams of 4 students develop a complex software system following the principles and practices of software engineering. The project requires use of a database and development of a GUI (typically Web-based), so knowledge of databases and web programming is important. CSE216 and CSE316 provide a sufficient foundation. Additional knowledge from CSE305 (Principles of Database Systems) and CSE333 (User Interface Development), or other experience, is also helpful. CSE416 provides practical experience using these technologies and integrating them in more complex software systems, but teaching them is not a CSE416 course goal, because they are covered in other courses.

Required Readings

The Essence of Software, by Daniel Jackson. Princeton University Press, 2021. It is available as an ebook from SBU Library; here is its entry in SBU Library online catalog. An unlimited number of people can read it concurrently. The most important part is chapters 4-7.

The Unified Modeling Language (UML) is used in this course to express software designs. You can get through the class by loooking for UML information on the web, but I recommend buying a book. Having an authoritative reference, with good examples, at hand will make your life easier. UML information and examples that you find on random web sites might contain errors. I evaluated about a dozen UML books and consider the following to be the best choices for this class.

Additional recommended readings:


Time. Tue and Thu, 3:00PM-4:20PM.

Location. MELVILLE LBR W4535, except that code reviews and demos will be held on Zoom.

What to Bring. We will do several in-class exercises during roughly the first half of the semester. In-class exercises are done in the same teams as the project. At least one member of each team should bring either a few sheets of paper on which the team can write and submit its work, or a notebook computer on which the team can type text, draw diagrams, and submit the work on Google Classroom. Other team members should have a device (a smart phone is adequate but a tablet or notebook computer is better) where they can download and read that day's lecture notes, which include instructions for the exercise and are usually posted shortly before class.

Teaching Assistants

see Google Classroom (see People > Teachers).

Office Hours

Instructor: Online, Mon 8pm-8:45pm, Tue noon-12:45pm, Thu 8pm-8:45pm, and Fri 1pm-1:45pm. (Assignments are due on Tuesdays and Fridays. Office hours are scheduled when students are more likely to have questions, and are decomposed into four pieces to spread more evenly throughout the week.) Also by appointment for in-person or online discussion. During online office hours, I am available on Google Chat. Login to Google Chat using your @stonybrook.edu account, and enter my name in the search box. This will create a private (one-on-one) chat message thread for us. (If Chat says my status is "away", don't always believe it; chat a message to me anyway.) If you'd like to talk, create a Zoom or Google Meet meeting, and send me the link in Google Chat; if you'd like to talk with me together with some teammates, send them the link, too. I'll join the meeting, and we can talk. If I'm currently talking with other students, I'll mention this in the chat and tell you when I'm ready to join your meeting.

TA: Wed 4pm-4:45pm online; Fri 1:30pm-2:15pm in person. The TA's in-person office hours are held in (old) CS 2126. Their online office hours are held in the same way as the instructor's.

Tentative Schedule

Date Event Notes
Jan 27 hw1-team due after 1 week of class
Feb 7 hw2-requirements due 1.5 weeks after hw1
Feb 14 hw3-design1 due 1 week after hw2
Feb 21 hw4-design2 due 1 week after hw3
Feb 28, Mar 2,7,9 design reviews see hw5-design review
Mar 13-17 Spring recess Have fun!
Mar 21 hw6-code1 due 3 weeks after hw4, not counting Spring recess
Mar 28,30, Apr 4,6 code review 1 see hw8-code-review
Apr 7 11 hw7-code2 due 2.5 3 weeks after hw6-code1
Apr 18,20,25,27 code review 2 see hw8-code-review
Apr 23 demo signup deadline
Apr 30May 2 hw9-code3 due 3 weeks after hw7-code2, not counting Thanksgiving recess
May 1-5 3-10 demos no class
May 5 teamwork assessment due
May 9 final exam, 2:15pm-5:00pm location TBD


Academic Integrity. If your team submits anything that includes any material created by people not on your team, your team's submission must clearly identify that material and indicate its source; otherwise, it is plagiarism. Discussing assignments with other people is fine. However, each team must write its own code and documentation independently. Showing your team's written work to other students, giving it to them, or making it accessible to them (e.g., by putting it in a public repository) will be treated as a suspected academic integrity violation.

Code Repository. Code must be stored in a repository that (1) is private, i.e., not accessible to students on other teams, (2) maintains a commit history, and (3) is shared with the instructor (read-only access is fine). Common choices are repos on GitHub, GitLab or Bitbucket. If a team's code is in a public repository during the semester, and another team copies it or is suspected of copying it, both teams will be charged with suspected academic integrity violations for code sharing.

Course Grades. Each assignment is graded relative to a maximum number of points. The score is normalized into a number between zero and one (e.g., 18/20 = 0.9) and then multiplied by the assignment weight. Course grades are based primarily on the sum of these weighted scores. The weights are:

hw8-code-review 13
hw8-code-review 23

Communication. You are expected to read email sent to your @stonybrook.edu email address. You are expected to read announcements, discussions, etc. in the Google Classroom and Google Group for this class. I strongly recommend turning on all notifications in Google Classroom and selecting "Subscription: Each email" in your membership settings for the Google Group. Questions that do not require confidentiality should be posted in the Google Group, so everyone can benefit from the discussion and answers. Questions not suitable for posting to the group should be sent by email with CC to all of your teammates, unless the questions require confidentiality from your teammates.

Exam. The exam covers only these topics: object-oriented design in UML, conceptual design, and the project. More details are in the itemized list below. The exam is closed-book. Make-up exams will be given only due to Participation in University-Sponsored Activities or documented extenuating circumstances, such as a note from a doctor or nurse at the Student Health Center stating that you were unfit to take the exam due to illness. Students who miss an exam for a valid reason must contact the instructor immediately to arrange a make-up exam.

Submission of Assignments. All assignments are due by 11:59pm on the due date in the above schedule. hw1 is submitted as a Google Form. All other assignments are submitted by exactly one team member uploading files in Google Classroom. The name of every file uploaded to Google Classroom should start with the team name. Upload a single .zip or .tar.gz file containing all of the files for the assignment, unless the instructions for the assignment specify otherwise. Multiple team members submitting the same assignment will incur a 5 point penalty, because it is a nuisance for TAs to figure out which submissions are from the same team and then compare timestamps to determine which one is most recent. Note: if one team member submits an assignment, and another team member later wants to submit a different version, the first team member can unsubmit.

Late Submissions. For homework assignments that involve live presentations (design review, code reviews, and the demo for hw9), lateness penalties are 10% per day and strictly enforced (except in extenuating circumstances). For other homework assignments, assignments submitted after the deadline receive a -1% penalty per 4 hours late, rounded up to the next multiple of 4 hours.

Teamwork. Each team member is responsible for ensuring that he or she contributes equally, and that the Contributions section of each assignment documents their contributions accurately and in sufficient detail, in case any dispute arises about whether they contributed a fair share to the project. If you believe that your teammates are preventing you from contributing a fair share, or that one of your teammates is not contributing a fair share, discuss the situation with the instructor promptly. If you wait until near the end of the semester to notify the instructor of a problem, the response is likely to be "Sorry, it's too late to do anything about that now." Team members not contributing their fair share may receive individual project scores lower than the team's scores, or they may, at the instructor's discretion, be removed from the team and would then need to work on the project on their own.

University Policies

Missed work due to extenuating circumstances. Students are expected to attend every class, report for examinations and submit major graded coursework as scheduled. If a student is unable to attend lecture(s), report for any exams or complete major graded coursework as scheduled due to extenuating circumstances, the student must contact the instructor as soon as possible. Students may be requested to provide documentation to support their absence and/or may be referred to the Student Support Team for assistance. Students will be provided reasonable accommodations for missed exams, assignments or projects due to significant illness, tragedy or other personal emergencies. Please note, all students must follow Stony Brook, local, state and Centers for Disease Control and Prevention (CDC) guidelines to reduce the risk of transmission of COVID. For questions or more information click here.

Academic Integrity Statement. Each student must pursue his or her academic goals honestly and be personally accountable for all submitted work. Representing another person's work as your own is always wrong. Faculty is required to report any suspected instances of academic dishonesty to the Academic Judiciary. Faculty in the Health Sciences Center (School of Health Technology & Management, Nursing, Social Welfare, Dental Medicine) and School of Medicine are required to follow their school-specific procedures. For more comprehensive information on academic integrity, including categories of academic dishonesty please refer to the academic judiciary website at http://www.stonybrook.edu/commcms/academic_integrity/.

Critical Incident Management. Stony Brook University expects students to respect the rights, privileges, and property of other people. Faculty are required to report to the Office of University Community Standards any disruptive behavior that interrupts their ability to teach, compromises the safety of the learning environment, or inhibits students' ability to learn. Faculty in the HSC Schools and the School of Medicine are required to follow their school-specific procedures. Further information about most academic matters can be found in the Undergraduate Bulletin, the Undergraduate Class Schedule, and the Faculty-Employee Handbook.

Student Accessibility Support Center Statement. If you have a physical, psychological, medical or learning disability that may impact your course work, please contact Student Accessibility Support Center, Stony Brook Union Suite 107, (631) 632-6748, or at sasc@stonybrook.edu. They will determine with you what accommodations, if any, are necessary and appropriate. All information and documentation are confidential. Students who require assistance during emergency evacuation are encouraged to discuss their needs with their professors and Student Accessibility Support Center. For procedures and information go to the following website: http://www.stonybrook.edu/ehs/fire/disabilities.