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. While 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 Unified Modeling Language (UML) is used in this course to express software designs. I strongly recommend that you get one of the following two books on UML. I evaluated about a dozen UML books, and these are the best.
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.
Benefits of getting one of these books: (1) It will save you time, compared to hunting on the web for information about details of each kind of diagram. (2) When grading UML diagrams, we will accept usage shown in either of these books as correct. Usage found on random web pages might be non-standard or incorrect. (3) You can use the book during the exam. If you choose to get a different UML book, make sure it covers UML 2.0 or newer. Note that you cannot use ebooks during the exam (see Exam policy below).
Additional recommended readings directly related to course material:
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 Design of Sites, 2nd edition, by Van Duyne, Landay, and Hong. Prentice Hall, 2006. Ideally, read the whole book: cheap used copies are often available on Amazon and eBay. At a minimum, read the short summary of its key design principles posted in Google Classroom.
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).
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.
Recommended readings not directly related to course material, but relevant and interesting (give them a try!):
What Google Learned From Its Quest to Build the Perfect Team, by Charles Duhigg, The New York Times, 2016. It's not specific to software engineering, but it's interesting, not very long, and may help you become a better team player and manager. If that link doesn't work for you, see Readings on Google Classroom.
Time. Tue and Thu, 11:30AM-12:50PM.
Location/Delivery. Class will be held in person in CS 2120, except that code reviews and demos (in the second half of the semester) will be done online. This plan is subject to change due to unpredictable factors such as COVID.
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 UML 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. Also, at least one team member should bring a UML book.
Contact info is in Google Classroom (see People > Teachers).
Instructor: Tue 12:50pm-1:35pm (after class) in person until Oct 25; online thereafter. Wed 10:30am-11:15am, Thu 8pm-8:45pm, and Fri 3pm-3:45pm online. Also by appointment. 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: Yasharth Sharma: Mon, 4pm-5pm, online.
TA: Tejas Bhatia: Thu, 2:30pm-3:30pm, online.
TA: Mithilesh Singh: Mon, 12:30pm-1:30pm online. Tue, 4:30pm-5:30pm, in person.
The TAs' in-person office hours are held in (old) CS 2126. Their online office hours are held in the same way as the instructor's.
|Aug 26||hw1-team due||after 1 week of class|
|Sep 6||hw2-requirements due||1.5 weeks after hw1|
|Sep 13||hw3-design1 due||1 week after hw2|
|Sep 23||hw4-design2 due||1.5 weeks after hw3|
|Sep 27,29 Oct 4,6||design reviews||see hw5-design review|
|Oct 10-11||Fall recess||Have fun!|
|Oct 14||hw6-code1 due||2.5 weeks after hw4, not counting Fall recess|
|Oct 27, Nov 1,3,8||code review 1||see hw8-code-review|
|Nov 1||hw7-code2 due||2.5 weeks after hw6-code1|
|Nov 10,15,17,22||code review 2||see hw8-code-review|
|Nov 21||demo signup deadline|
||hw9-code3 due||3 weeks after hw7-code2, not counting Thanksgiving recess|
|Nov 28 - Dec 5||demos||no class|
|Dec 1||retrospective and teamwork assessment due|
|Dec 14||final exam, 11:15am-1:45pm||Location: our usual classroom|
Academic Integrity. If your team submits anything that includes any material created by other people, 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). 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:
Electronic Communication. (1) You are expected to read email sent to your official SBU email address (email@example.com or a variant). (2) You are expected to read announcements, discussions, etc. in the Google Classroom and Google Group for this class. I recommend turning all notifications on. 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 team members, unless they require confidentiality from your teammates.
Exam. The exam covers object-oriented design in UML, conceptual design, and the project; more details are in the itemized list below. The exam does not cover other topics. During the exam, you may use any book on UML that is bound and printed by a publisher. You may not use any electronic device, a book on any other subject, or any other printed material (printouts of ebooks, lecture notes, assignments, etc.). If even a few students brought hundreds of self-printed pages to the exam, there is no practical way I could check their contents. Make-up exams will be given only due to Participation in University-Sponsored Activities or documented extenuating circumstances (e.g., a note from a doctor or nurse at the Student Health Center stating that you were unfit to take the exam due to illness).
UML: The exam may cover any type of UML diagram covered in the lecture notes. It will not cover other types of UML diagrams. You should bring a UML book (the recommended approach) or memorize UML notation.
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.
Helpful Postings. As an additional incentive for helpful postings (e.g., answering other students' questions), at the end of the semester, the two students with the largest numbers of helpful postings (provided it is at least three postings) will get +1% on their sum of weighted scores. The instructor will determine which postings count.
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 include 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), because rescheduling them is disruptive and inconvenient. For other homework assignments, assignments submitted after the deadline receive a -1% penalty per 6 hours late, rounded up to the next multiple of 6.
Team Communication. Teams are encouraged to create and use a discussion group or messaging channel (e.g., a Google group or Slack channel) dedicated to the course project, rather than relying on email, SMS, etc.
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 later 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.
The following lists of tools are based largely on recommendations from former students. If you find a good tool not listed here, let me know!
These desktop UML tools provide the best support for UML. A poential downside is that they don't support collaborative editing in case multiple people want to work on the same diagram simultaneously.
Visual Paradigm for UML (Community Edition). A nice tool that supports all of the types of UML diagrams used in this course, with comprehensive support for their features. It is relatively well documented and free for non-commercial use. It runs on Windows, Linux, Mac OS X, etc. It is installed on computers in the Windows Lab. It puts a "Community Edition" watermark on the diagrams; that's fine for this course. There is a free online course, Visual Paradigm Essential, that teaches the essentials.
UMLet: a lightweight open-source UML tool. It supports class diagrams, use case diagrams, sequence diagrams, state diagrams, deployment diagrams, activity diagrams, and component diagrams (I think), but not communication diagrams. I don't know whether it supports all features of those diagrams (e.g., loops in sequence diagrams).
Violet. Not recommended. It does not support component diagrams, communication diagrams, or deployment diagrams, and it has limited support for sequence diagrams (lacks support for actor icons, loops, alternatives, conditions, etc.).
Note that these general-purpose diagramming tools happily let you draw invalid diagrams. The UML tools listed above perform UML-specific error checking.
diagrams.net (formerly known as draw.io) is a good web-based diagramming tool with a UML shape library.
Lucidchart is a good web-based diagramming tool with a UML shape library. However, the free account is limited to 3 diagrams with 60 elements per diagram. These limits could be an issue in the course project. If you choose Lucidchart, you might need to pay for a few months of a paid plan. Note: While editing a diagram, you can use the Share button in the upper right to share the diagram with your teammates.
PowerPoint (online version) via SBU's license for Office 365. PowerPoint is OK but less convenient, because it lacks a library of UML shapes.
Moqups Free accounts have fairly generous resource limits; see the FAQ.
Figma Recommended by Professor McKenna and several teams from recent semesters. It supports "live" wireframes (you can click to move between screens, etc.). A free account (a.k.a. starter account) limits the number of diagrams and shared projects per account but is probably adequate for this class.
Lucidchart For wireframes, select More Templates from the large menu bar, and then select Wireframe. For screen navigation diagrams (which show the connections between screens), select More Templates, then Flowchart, and then either Blank Diagram or User Journey Flow Template. See comments above regarding free account resource limits.
You may use any code repository satisfying the above policy. Here are some suggestions.
Git: Free private Git repos on GitHub allow unlimited collaborators. Free private Git repos on GitLab allow up to 5 users. Free private Git repos on Bitbucket allow up to 8 contributors.
Subversion: The Computer Science Department runs a Subversion server. If your team would like a repository on it, send a request for a repository, mentioning that it is for CSE 416, and specifying the names and SBU ID numbers of all team members, to email@example.com. A repository will be created within a few days. You can then access your team's repository using your Computer Science Department Windows Lab username with your Stony Brook ID as the password.
Every team is encouraged to use an Integrated Development Environment (IDE) for software development and debugging. Many teams from prior years recommend also using a build system such as Jenkins continuous integration server or Maven.
You will submit videos of your system in action. Here are some suggestions for screen recording software. If you find better tools, let me know.
Game Bar: On Windows, the built-in Game Bar can capture screen video and audio. I think it captures only a selected window, not the entire screen.
QuickTime Player in macOs: The QuickTime Player has built-in screen recording functionality. With the default settings, it produces huge video files. Please change the settings!
Zoom: Start a new meeting, share your screen, and then start recording the meeting.
Open Broadcaster Software is an open-source software for streaming and recording video. Available on Windows, Linux, and Mac.
You may use any database server. One option is the Computer Science Department's database server. To get an account on it, send a request, mentioning that it is for CSE 416, and specifying the desired DBMS (MySQL or Oracle) and the names and SBU ID numbers of all team members, to firstname.lastname@example.org. An account will be created within a few days.