CSE416 Section 1
Software Engineering
(updated 10/20/2020)

CSE 416 News

Links

Course Information

Semester: Fall 2020
Time: Tuesday and Thursday, 6:30PM - 7:50PM
Location:
Synchronous on-line: fully on-line course (with the exception of the midterm exam); direct instruction occurs in real time without time delay. In advance of each class, an e-mail message will be sent to each student with the URL needed to access the session. Recordings of class sessions will not be made available, so be sure to attend during the regular class hours.
Texts (recommended, but not required):
  1. Head First Object-Oriented Analysis & Design, Brett D. McLaughlin, Gary Police & David West, O'Reilly Press, ISBN# 0-596-00867-8, 2006.
    The on-line version is available to Stony Brook students through Safari books on-line.
  2. Head First Design Patterns
  3. 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
Zoom Office hours: Tuesdays, 2:30PM-4:00PM,
Wednesdays, 2:30PM-4:00PM,
and by appointment.
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 219 (or CSE260), CSE320, CSE305 (or CSE306) are required to enroll in this course. You will also find that CSE333 and CSE336, although not required, provide some suitable background to CSE308. 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.

Objectives

The outcomes for the course are:

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

The course will also satisfy the following program objectives:

Interaction

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 review) 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 Group Group Members
8/25 (Tu) Introduction Bears Brian Lee, Justin Ying, Weixin Tan, and Zhengyu Wu
8/27 Project overview Colts Ethan Cheung, Daniel Goon, Zheng Lu, and Darren Zeng
9/1 (Tu) Project overview (continued) Dolphins Kamile Demir, Jennifer Peshansky, Yang Yang, and Kyle Simon
9/3 Project approach Eagles Zaitian Mou, Haolin Yu, Derrick Lam, and Henry Chu
9/8 (Tu) Project components Falcons Jenny Gao, William Xiang, Daniel Moses, and Anthony Chen
9/10 UML, Top-Level Project Requirements, Sample use case list, Volunteer use case development Giants Gurpreeth Singh, Raymond Huang, Tenzin Loden, and Tenzin Jangchup
9/15 (Tu) Identifying objects through use cases.
Volunteer class diagram generation
Jaguars Jiawei Chen, Ricky Wu, Ray Chen, and James Hua
9/17 Prototype GUI,
Volunteer GUI demos:
1.
Lions Andrew Argueta, Billy Luy, Kristy Tan, and Siyuan Zou
9/22 (Tu) SeaWulf Panthers Vasu Sharma, Harsh Vig, James Lungu, and Travis Li
9/24 JSON/Serialization, Sequence diagrams, Volunteer class/sequence diagram review
1.
Ravens Daniel Calabria, Henry Li, and Erik Zhou
9/29 (Tu) Graded GUI demos (in class)
1. Bears
2. Ravens
3. Giants
4. Panthers
Seahawks Yuchen Pu, Tianhao Xi, Haoyu Lu, and Boren Wang
9/30 (W)
2:30PM-3:30PM
Graded GUI demos (not in class)
1. Broncos
2.
3.
4.
Titans Tao Lin, Alexander Chung, and Bryan Lai
10/1 Graded GUI demos (in class)
1. Seahawks
2. Lions
3. Falcons
4. Dolphins
Broncos Carlos (Charlie) Lopez, Daniel Hamam, Marc Da Rita, and
Kadiatou Diallo
10/2 (F)
11:00AM-12:15PM
Graded GUI demos (not in class)
1. Jaguars
2. Titans
3. Eagles
4.Cardinals
5.Colts
Cardinals Danny Kirby, Jinwoo Seol, and Sophia Song
10/6 (Tu) Use case discussion    
10/8 SeaWulf access, Mid-term exam discussion, Use case discussion (continued)
   
10/12 (M) Midterm exams:
12:30-2:00: 1. Jennifer Peshansky, 2. Harsh Vig, 3. Kyle Simon, 4. Yang Yang, 5. Daniel Hamam
6:00-7:30: 1. Daniel Calabria, 2. Bryan Lai, 3. Ray Chen, 4. Vasu Sharma, 5. Darren Zeng, 6. Daniel Goon
   
10/13 (Tu) Midterm exams:
2:30-4:00: 1. Brian Lee, 2. Justin Ying, 3. Weixin Tan, 4. Jenny Gao, 5.Daniel Moses
6:30-8:00: 1. ZhengYu Wu, 2. Travis Li, 3.Haoyu Lu, 4. Erik Zhou, 5.Gurpreeth Singh, 6. Marc Da Rita
   
10/14 (W) Midterm exams:
9:30-11:00: 1. Tao Lin, 2. Kadiatou Diallo, 3. Alexander Chung, 4. Yuchen Pu, 5. James Hua
6:00-7:30: 1. Ricky Wu, 2. Boren Wang, 3.Raymond Huang, 4. Zheng Lu, 5. Henry Li
   
10/15 (Th) Midterm exams:
12:30-2:00: 1. Sophia Song, 2. Tianhao Xi, 3. James Lungu, 4. Anthony Chen, 5. Tenzin Loden
6:00-7:30: 1. Danny Kirby, 2. Zaitian Mou, 3. Kamile Demir, 4. Ethan Cheung, 5. Henry Chu, 6. Carlos Lopez
   
10/16 (F) Midterm exams:
9:30-11:00: 1. Jinwoo Seol, 2. Andrew Argueta, 3. Haolin Yu, 4. Jiawei Chen, 5. Derrick Lam
1:00-2:30: 1. Kristy Tan, 2. Siyuan Zou, 3. Billy Luy, 4. William Xiang, 5.Tenzin Jangchup
   
10/20 (Tu) Sequence Diagrams, Spring Controller    
10/22 Volunteer design reviews
1. Bears
2.
   
10/27 (Tu) Design Reviews
1. Bears
2. Broncos
   
10/29 Design Reviews
1. Eagles
2. Seahawks
   
11/3 (Tu) Object-Relational Mapping (Hibernate/JPA)    
11/5 Preprocessing
Volunteer Preprocessing Discussion
1.
2.
   
11/10 (Tu) Preprocessing
Volunteer Preprocessing Discussion
1.
2.
   
11/12 Coding Conventions
Volunteer Code Reviews
1.
2.
   
11/17 (Tu) Code Reviews (in class)
1.
2.
   
11/19 DB Issues
Volunteer Partial System Demo
1.
2.
   
11/24(Tu) Thanksgiving Break (no class)    
11/26 Thanksgiving Break (no class)    
12/1 (Tu)

Preparation for final project presentation
Volunteer partial project presentations
1.

   
12/3 Volunteer Partial Project presentations
1.
   

Development Tools

Your project will most likely 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.

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 should use a relational DBMS for your project since it is consistent with your experience in CSE305. CSE416 database accounts have been 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.

You will submit assignments through a shared repository. Each group of 3-4 students will use a shared repository, accessed by members of the group along with your TA. The assignments are due at Midnight on the due date listed in the class Web site. However, TAs will not begin grading until the next morning, so if you submit it a few hours after midnight it will also be accepted.

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.

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) design review (30%), 3) code review (30%), and your 4) final project presentation (30%).

The mid-term exam will be a 15 minute oral exam conducted in a Zoom session. 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.

Graded project sessions (i.e., GUI review, 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 must bring a student ID to the mid-term exam if given in-person. No one will be allowed to take an exam without the proper ID. If the mid-term exam is conducted through a video session, the 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.

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

Labs and TAs

Narayan

Narayan Acharya

TBD

Manoj Madala

TBD

Vamshi Muthineni

TBD

Jayakrishna Paidy

The class is a hands on programming class, so you will require access to a computer and a Java development environment.

The class TAs are available to help you in understanding the material in many ways. They will provide hints and suggestions when they respond to your submission of a homework assignment. They will also be available in teaching sessions given in the Computer Science Teaching Lab. The TAs for the course are:

The TAs will be coordinating hints and instructions concerning the HW assignment through Piazza. Piazza is a Q&A platform designed to get you answers from classmates and instructors. It serves as a forum to allow you to collaborate and solve common challenges. You can post any doubts you have or errors you may encounter, and we will post our answers on Piazza directly. You are also encouraged to answer any questions posted by your classmates.  This way when a issue is resolved, everyone gets to benefit and learn from the answer.

We also be posting assignment-specific instructions or notices on Piazza, so make sure you sign up. We would also like to remind you that Piazza is for sharing errors or doubts you encounter. For the sake of academic integrity, you should avoid posting your actual code in the discussion forums. If you feel it is absolutely necessary, you can check either with the instructor or one of the TAs.

TA Sessions

Depending on TA availability, we may hold TA session on tools relating to software engineering.

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. 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/index.html 

Special Assistance

If you have a physical, psychological, medical or learning disability that may impact your course work, please contact Student Accessibility Support Center, ECC (Educational Communications Center) Building, Room 128, (631)632-6748. 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. Altova UModel UML Modeling tool - 30 day free trial
  5. NetBeans plugin for JSLint.
  6. NetBeans features for Java EE applications.
  7. You can find guidelines for your comments at Java Coding Conventions and at Javadoc conventions.
  8. Google JavaScript Style Guide
  9. Oracle documentation of Java EE Technologies
  10. Alan Holub's UML Quick Reference.
  11. New features are included in MySQL 5.7.