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.
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.
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.
Simon Bennett, John Skelton, and Ken Lunn, Schaum's Outline of UML, 2nd edition, McGraw-Hill, 2004. This book has thorough coverage of UML and abundant examples. It is out of print in the U.S., but inexpensive used copies are usually available, e.g., on Amazon.
Russ Miles and Kim Hamilton, Learning UML 2.0, O'Reilly Media, 2006. This is a reasonably priced book with thorough coverage of UML. New and used copies are available, e.g., on Amazon.
Additional recommended readings:
Software Engineering at Google, curated by Titus Winters, Tom Manshreck and Hyrum Wright. O'Reilly, 2020. The book is available free online; click on the title.
The Design of Sites, 2nd edition, by Van Duyne, Landay, and Hong. Prentice Hall, 2006. At a minimum, read the short summary of its key design principles posted in Google Classroom. If you are interested in reading the whole book, cheap used copies are often available on Amazon and eBay.
Software Engineering Best Practices: Lessons from Successful Projects in the Top Companies by Capers Jones. McGraw Hill, 2009. You can borrow it as an ebook from SBU Library; here is its entry in SBU Library online catalog. It can be borrowed by 3 people simultaneously, for up to a week.
Scott W. Ambler. Mapping Objects to Relational Databases: O/R Mapping In Detail. A good explanation of object-relational mapping (ORM).
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.
see Google Classroom (see People > Teachers).
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.
|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 18,20,25,27||code review 2||see hw8-code-review|
|Apr 23||demo signup deadline|
|hw9-code3 due||3 weeks after hw7-code2, not counting Thanksgiving recess|
|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:
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.
UML: The exam may cover any type of UML diagram covered in the lecture notes. It will not cover other types of UML diagrams. A "cheat sheet" summarizing UML notation will be distributed with the exam.
Conceptual design: The exam will include an example of a concept definition, to remind you of the structure and notation.
Project: As an example, a project-related question might ask you to explain a given issue and how it is handled by your team's design. By the time of the exam, you should be sufficiently familiar with the project requirements and your team's design to answer such questions without having the documents in front of you. If details of the project requirements are relevant to the question, the relevant part of the project requirements will be quoted in the exam question.
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.
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 firstname.lastname@example.org. 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.