CSE416 Section 3
Software Engineering
(updated 12/24/2024)

CSE 416 News

Links

Course Information

Semester: Fall 2024
Time: Tuesday and Thursday, 2:00PM - 3:20PM
Location/Delivery: In-person and Synchronous Online: direct instruction occurs in real time either in the designated classroom (CS2120) or via a Zoom session. Most sessions are planned to be offered in-person, but some sessions may be held through Zoom if the educational objectives can be better achieved on-line. For any on-line session, an e-mail message will be sent in advance to each student with the URL needed to access the session. Recordings of in-person class sessions will not be made available, so be sure to attend during the regular class hours. Recordings of on-line class sessions will also not be made available, but you will be enabled to record each session once you are admitted into the Zoom session.
Texts (recommended, but not required):
  1. UML Distilled, 3rd Edition, Martin Fowler, Addison-Wesley, ISBN# 0-321-19368-7, 2003.
    (note that this text is not required, but it will be a very helpful reference)

Contact Information

Instructor: Dr. Robert Kelly
E-mail: robkelly@cs.stonybrook.edu
Office hours (Zoom): Mondays, 5:00PM-6:30PM,
Wednesdays, 2:00PM-3:30PM,
but most office hour discussions by Zoom in advance of scheduled hours.
Office location: New Computer Science 218

Content

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.

This is a project course, so you will be working in a team of 3-4 students to develop a complex system using the principles of software engineering. A single project will be available for all students.

For CSE majors, completion of CSE 316 is required to enroll in this course. You will also find that CSE305, CSE333 and CSE356, although not required, provide some suitable background to CSE416. Depending on how many of these courses you have completed, you may need to spend more time working on the course project to understand the related database and user interface technologies.

Course Outcomes

The outcomes for the course are:

  1. An ability to perform project planning, requirements analysis, and system/test design.
  2. An ability to work effectively as a member of a software development team.
  3. An ability to produce software systems that meet specifications while satisfying an implementation schedule.
  4. An ability to produce professional quality oral/written presentations of system designs, reviews, and project demonstrations.

Interaction

For in-person class sessions, class interaction will be through questions and comments raised in class. For Zoom sessions, class interaction will be provided using the interaction features of Zoom.  For example, during a class students are encouraged to enter any questions using the chat feature. Appropriate questions will be reviewed by the instructor at suitable times during the session, read to the class, and answered. An on-line grade sheet is available during the semester that contains scores for all graded assignments and exams. Oral communications scores are also included. Grades are updated frequently so that students know their up-to-date class status. The grade sheet also contains a ranking so that students know their ranking in the class according to the grading formula during the semester. All graded reviews (e.g., code reviews) include frequent feedback during the review. Following the session, the comments are summarized and available to the students on request.

Lectures and Assignments

We will be following the syllabus closely. The assigned reading for the class will be found in the textbook and in documents (articles, standards, etc.) available on the Internet. The readings are included in the class notes and in a page on the class Web site.

Click on the lecture topic below to download a PDF file containing the class notes.

Date Topics
8/27 (Tu) Introduction
8/29 Introduction (continued)
9/3 (Tu) Project Overview
9/5 Project Overview (continued)
9/10 (Tu) Quality Measures
9/12 Data Analysis
9/17 (Tu) Data Analysis (continued)
9/19 GUI Review prep, DataFrames
9/24 (Tu) SeaWulf - Dr. David Carlson, guest speaker
9/26 GUI Review prep (continued),
Volunteer prototype GUI demos:
1.
10/1 (Tu) GUI Review
1. Bills
2. Bengals
3. Giants
10/3 RESTful Services
10/8 (Tu) UML Overview, Master Use Case Discussion
Volunteer Client/Server Reviews
1.
2.
3.
10/10 Project requirements analysis,
Client/Server Reviews
1. Bengals
2. Dolphins
3. Browns
10/15 Fall Break - no class
10/17 Midterm exam prep,
Algorithms
10/21-10/25 Mid-term exams (no class on 10/22 and 10/24)
10/29 (Tu) Preliminary midterm exam results
UML, Class diagrams
10/31 (Th) Volunteer class diagram
1.
Sequence diagrams and activity diagrams
11/5 (Tu) Sequence diagrams and activity diagrams (continued)
Volunteer sequence diagram
1. Broncos
11/7 Volunteer sequence/activity diagrams
1. Broncos (continued)
2. Giants
3.
11/12 (Tu) Volunteer UML
1. Browns
Design review preparation
11/14 Project Management
Volunteer project management plan
1.
Volunteer Design reviews
1. Browns
11/19 (Tu) Design Reviews
1. Dolphins
2. Giants
11/21 Volunteer GUI look & feel presentation
1.
2.
Coding Conventions
11/26 (Tu) Volunteer Code Reviews
1.
2.
3.
11/28 Thanksgiving Break - no class
12/3 (Tu) Volunteer GUI Presentations
12/5 (Th) Final Presentation Guidelines
Code Reviews
1. Dolphins
2. Jets
12/10-12/18 Final Project Presentations

Development Tools

Your project will use Java, JavaScript and Python. You can use any IDE appropriate to a particular language. The Java part of the system should use JDK 8.0 or above and Java EE 8.0 or above. Python should be 3.8 or above.

You should coordinate your project documents in a repository to facilitate coordination within your team. You can use whatever repository tool is suitable for your team. For project deliverables, you will use a shared repository, which you should set up to be shared among your teammates, TAs, and the course instructor. Details on the naming of files and folders in this directory is contained in the project deliverable table.

For the user interface part of the project, you can use a Web development tool such as Bootstrap to create the initial prototype of your GUI. Bootstrap is recommended since you will have easy access to the generated HTML.

For the development of your design documents (primarily UML), the most appropriate visual UML Lucidchart. When you sign up for your account, be sure you are using your student email. This will ensure that you get an educational account in which the usage limits do not constrain your work.

For the full development, the Spring Framework might be helpful.

You can use either a relational DBMS or a NoSQL DBMS for your project (CSE305 covers relational and CSE316 covers NoSQL). CSE416 database accounts can be activated on the MySQL server, but you are free to use a different relational DB server, but if you do, you take the risk of performance impact on your final presentation. Instructions on how to access the MySQL server are contained in the CS Department Web site.

Please be sure to request your Stony Brook VPN access. This will allow you to easily implement 2-factor security when you access the SeaWulf.

Assignment Information

You are expected to work on the project as part of a small group (maximum of 4 students in a group).

The semester project includes a number of deliverables during the semester. Some of these are intended to ensure that you stay on track, while others are meant to provide feedback during the semester. For the "on-track" assignments, you can lose points on your project if the components are incomplete or late. A few project components are major milestones and will be graded, with the grade counting towards your final project grade.

Each group of 3-4 students use a shared repository, accessed by members of the group along with the TAs. However, most of the grading is done through a series of project reviews. Some ungraded assignments are required, submitted either directly to the instructor or submitted through the shared repository.

Grades and Exams

This is a three credit graded course. Your final grade is based primarily on your project, but the grade is also influenced by your performance on the mid-term exam, as well as your oral and written communications during class and project reviews.

The components of the grade are:

The oral component of your grade is designed to reflect oral communications skills for you as a member of a software engineering development or research team. An important consideration in this part of the grade is that your grade cannot be reduced by any of your oral communication in class. You start at 0 points in this category, and your grade is increased when you show evidence of effective oral communications. These points are typically earned through "volunteer" presentations in class. The classroom is meant to be a safe way for you to learn the skills necessary for software team communications. You will receive feedback on your communications in class, so that you can improve these skills. For any of your presentations, please let me know any time you would like additional feedback.

The project score is calculated as the weighted average of your scores for your 1) GUI prototype (10%), 2) client-server prototype (5%), 3) DB access prototype (5%), 4) design review (25%), 5) code review (20%), and your 6) final project presentation (35%). The DB access prototype might be removed from the project score calculation.

The mid-term is closed book and conducted as a 15-minute oral exam through a Zoom video session scheduled primarily outside of normal class hours. Please be sure that your Zoom connection provides for a video link in order to confirm your identity. The exam will be designed to assess your skills in requirements analysis, teamwork, project management, and design. Available time slots, both during and outside normal class hours, will be made available to students in the week prior to the midterm exam. Depending on class size, there may be no regular class hours during the week of the mid-term exam. The on-line exam will be recorded and a student’s identity will be validated against his/her official Stony Brook photo. There will be no make-up exams.

Graded project sessions (i.e., GUI review, client-server prototype, DB access prototype, design review, code review, and final presentation) will be scheduled for each team primarily outside of class hours. Students must have an audio and video connection to any such session. These sessions will be recorded to ensure student access and participation.

Students participating in University-sponsored activities will be offered options for make-up of exams and assignments consistent with the University policy as stated in the Undergraduate Bulletin. Similarly, accommodations to students concerning syllabus assignment and exam policies for religious reasons will be granted consistent with Undergraduate Bulletin policies.

The Pass/No Credit (P/NC) option is not available for this course.

Academic Integrity & Behavior

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. For more comprehensive information on academic integrity, including categories of academic dishonesty please refer to the academic judiciary website.

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. In the instance of missed lectures or labs, the student is responsible for review posted slides, participation in Piazza interaction, and seeking additional information from classmates, TAs, ad the instructor.  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.

Special Assistance

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 is 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.

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.

References

The following list will contain links and references that will be useful in the course.

  1. You might consider developing your Web GUI using a tool such as Bootstrap.
  2. UML editor - Visual Paradigm (Community Edition). Visual Paradigm is available as a free download. You can also download a PDF of the VPUML documentation.
  3. An excellent collaborative tool for UML modeling is Lucidchart.
  4. You can find guidelines for your comments at Java Coding Conventions and at Javadoc conventions.
  5. Google JavaScript Style Guide
  6. Oracle documentation of Java EE Technologies
  7. Alan Holub's UML Quick Reference.
  8. New features are included in MySQL 5.7.
  9. SeaWulf multiprocessing in Python.