CSE308 Section 2
Software Engineering
(updated 11/24/2014)

Valid HTML 4.0!

CSE 308 News

Hot Links

Course Information

Semester: Fall 2014
Time: Monday and Wednesday, 7:00PM - 8:20 PM
Location: CS2120
Texts (Provisional List):
  1. Head First Object-Oriented Analysis & Design, Brett D. McLaughlin, Gary Pollice & 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
Office hours:

Tuesdays, 10:30AM-12:00PM,
Wednesdays, 11:30AM-1:00PM,
and by appointment.

Office location: Computer Science 2427, 2nd floor.


CSE308 introduces the basic concepts and modern tools and techniques of Software Engineering. It 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 with 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 is required to enroll in this course. Other upper division courses are not required, but I recommend that you have successfully completed at least one of: CSE305, CSE333, and CSE336. If you have not already completed one of these three courses, you may need to spend much more time working on the course project to understand the related database and user interface technologies.


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.
  4. An understanding of ethical issues in software design and computing.

The course will also satisfy the following program objectives:

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
9/25 (M) Introduction
9/27 (W) Project review
9/1 (M) No class (Labor Day)
9/3 (W) Requirements
9/8 (M) UML and Use Case Documents
9/10 (W) Requirements analysis through prototyping
9/15 (M) Project Management, Project Review
9/17 (W) Software Engineering Processes, Ethics
9/22 (M) Project team coordination (repositories),"Volunteer" project team requirements review
9/24 (W) Identifying objects through use cases and the GUI
9/29 (M) Preliminary Object Review
10/1 (W) UML Class Diagrams
10/6 (M) UML Sequence Diagrams, Web Programming
10/8 (W) Database issues
10/13 (M) Design Reviews: 1. Team Elm; 2. Team Dogwood
10/15 (W) Design Reviews: 1. Live Free or Malloc Team; 2. Hemlock
10/20 (M) Mid-term exam
10/22 (W) Web Concepts; DB persistence
10/27 (M) Coding conventions, "volunteer" code reviews
10/29 (W) Test data, Project plan, SE Tools, System design, modularity
11/3 No class
11/5 Code Review Discussion
11/10 Code Reviews (1. Team Birch, 2. Team Elm)
11/12 Code Reviews (1. Team Hemlock)
11/17 Code Reviews (1. Team Dogwood; 2. Team Hemlock)
11/19 Final Presentation Preparation
11/24 Code Review (1. Team Cedar)
12/1 (M) Final Presentations (1. Live free or malloc, 2. Team Elm))
12/3 (W) Final Presentations (1. Team Birch)
12/16 (Tu)
Final Exam (45 minutes at end of exam period)

Development Tools

You should use a Java Interactive Development Environment (IDE) for your project. The official IDE for the class is NetBeans. However, you can use any Java IDE supporting Java SDK 6.0 or above and Java EE.

You should coordinate all your project documents in a repository. We will discuss repository options in class during the week of 9/8.

NetBeans is available as a download from the NetBeans site; use the standard 7.1 version . If you have not already installed the most recent Java SDK, it also might be easier to download and install the Java SDK with NetBeans at the Oracle site. You might also use Eclipse.

For HTML development, Nvu is a very capable HTML tool supporting your HTML and CSS development, and is available for a free download. Dreamweaver is the industry standard tool, but it is not available with a free unlimited license. However, if you already have access to it, it should be fine for this course and it is available in the CS Labs.

You can use a Web development tool such as wix.com or Bootstrap to create the initial prototype of your GUI. Bootstrap is greatly preferred since you will have easy access to the generated html.

You should use MySQL as your DBMS. CSE-308 database accounts have been activated on the MySQL server.

For the development of your design documents (primarily UML), you can use a visual UML editor. The easiest tool to use is Microsoft Visio Professional, however this tool is fairly limited. Visio is installed in the Trans Lab, and should be available for download through MSDNAA. The preferred tool for UML development is Violet.

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 assignments during the semester. Some of the assignments 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 will have 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 and a brief final exam. and your oral and written communications during class.

The components of the grade are:

The oral component of your grade is based on a collection of oral communications categories. These categories are 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 satisfy each oral communications element. The classroom is meant to be a safe way for you to learn the skills necessary software team communications. You will receive feedback on your communications in class, so that you can improve these skills. Please let me know any time you would like additional feedback.

The mid-term and final exams will be closed book, however relevant reference material will be provided to you. The exams will be composed of some short answer questions, design documentation questions, and some programming questions. For these questions, your understanding of the concepts will be more important than your knowledge of the exact syntax.

Be sure to bring your student ID to all exams. The TAs will check your ID, and no one will be allowed to take an exam without the proper ID.

Be sure to be there for you assigned examination time since there will be no make-up exams.

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

Labs and TAs

Farhan Ul Haq
Farhan Ul Haq

The class is a hands on programming class, so you will require access to a computer and a Java development environment. The NetBeans development environment is available on the workstations located in the Transaction Lab.

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:

TA Sessions

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


One of the important aspects of software engineering is the generation of documentation. The larger the team, the more important is this aspect of the process. You will be creating many of these documents during your development of the course project. Descriptions of these project documents is contained below

Academic Integrity & Behavior

As a student at Stony Brook, you have agreed to follow the university's rules regarding academic honesty and appropriate conduct. You should read both the academic honesty information and procedures and the student code of conduct.

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. Any suspected instance of academic dishonesty will be reported to the Academic Judiciary. For more comprehensive information on academic integrity, including categories of academic dishonesty, please refer to the academic judiciary web site.

Stony Brook University expects students to respect the rights, privileges, and property of other people. Faculty are required to report to the Office of Judicial Affairs any disruptive behavior that interrupts their ability to teach, compromises the safety of the learning environment, or inhibits students' ability to learn.  

Special Assistance

If you have a physical, psychological, medical or learning disability that may impact your course work, please contact Disability Support Services office, 128 ECC Building (631) 632-6748. They will review your concerns and determine, with you, what accommodations are necessary and appropriate. All information and documentation of disability is confidential.

Students who require assistance during emergency evacuation are encouraged to discuss their needs with their professors and Disability Support Services. For procedures and information go to the Environmental Health and Safety web site, and search Fire Safety and Evacuation and Disabilities.

If you need general computer help, you can use the Computer Science Help Desk. Services offered include setting up an account on a department server, using Windows NT, using a browser, and connecting to the campus network. The Help Desk office is located in the SBCS Office - Room 2110.


The following list will contain links and references that will be useful in the course. To access some of the documentation, you have to register for the Sun Java Developer Connection and the IBM DeveloperWorks.