CSE/ISE308 (Spring 2010)
Software Engineering

[ General Information | Lectures | Handouts | Other Pointers | Requirements ]
[ Announcements ] [ Groups ] [ Wish List ] [ Projects]

General Information

Course description: This course introduces the basic concepts and the modern tools and techniques of Software Engineering. The course 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.

Course goals: (1) Introduce models of software development and methodologies for project planning, requirements analysis, and system/test design; (2) Provide experience in working as a team to produce software systems that meet specifications while satisfying an implementation schedule; (3) Train students to produce professional quality oral/written presentations of system designs, reviews, and project demonstrations; (4) Expose students to ethical issues in software design and computing in general.

Above are the official course description and goals. Throughout the course, we will also emphasize modular design and reuse, incremental and iterative development, and the use of tools, especially the use of symbolic languages for capturing requirements and designs, and the use of design patterns for discussing design rationales and tradeoffs. Students will work in groups on a software development project as a major part of the course.

Prerequisite: CSE 219 or CSE 260 or ISE 305, or undergrad discrete math (sets, relations, functions, predicate logic), data structures, programming in Java, plus ability to catch up with materials of CSE219. | Credits: 3.

Instructor: Annie Liu, liu@cs.sunysb.edu, Computer Science 1433, 632-8463. | office hours: Mon Fri 11:45AM-12:45PM and 2:10-2:30PM, by appointment (send email), or stop by any time I'm around.

TA: Muhammed Fatih Bulut, mubulut@cs.stonybrook.edu, 428-4055. Office hours: Tue Thu 12:00-1:20PM, Computer Science 2110.

Lectures: Mon Fri 12:50-2:10PM, in Javits 109.

Textbook: Main text: Software Engineering (in preparation, free for download) by Ivan Marsic, last updated June 2009. | Supplemental text: Object-Oriented Software Engineering: Using UML, Patterns, and Java by Bernd Bruegge and Allen Dutoit, 3rd Edition, Prentice-Hall, 2010.

Grading: Weekly assignments, centered around the course project, by groups or individuals, together worth 30% of the grade; several quizzes, together worth 10% of the grade; an exam, two group project presentations with demos, and the final group project evaluation, each worth 20% of the grade. Homework is always due before class on the following Monday. Reduced credit for late submissions, 20% per day, unless more than 40% of group members provide official documents for excuses.

Course homepage: http://www.cs.sunysb.edu/~liu/cse308/, containing all course related information.

Lecture Schedule

Lecture 1 (01/25/10): Overview. Software engineering, state of the art, special difficulty; this course: emphasize modular design and reuse, incremental and iterative development, and use of tools; course work. Reading: Ch.1. Assignment 1.
Lecture 2 (01/29/10): Software process models. Review; development phases; process models: sequential, iterative, modeling and specification driven; creative software ideas, class split. Reading: Ch.1.
Lecture 3 (02/01/10): Project description and planning. Review; meeting group members; people involved, system to build (the "what"), development tasks, development team; project description, project ideas. Reading: Ch.1. Assignment 2.
Lecture 4 (02/05/10): Review; scheduling, effort estimation, product quality; summary of major software engineering issues, about product and process; group meeting: project planning. Reading: Ch.1.
Lecture 5 (02/08/10): Requirement specification. Review; quiz 1; requirement gathering and use case modeling: user stories, use cases, group exercises, use case diagrams, use case text, "what" instead of "how". Reading: Ch.2. Assignment 3.
Lecture 6 (02/12/10): Review; system sequence diagrams; group exercises; requirement analysis and domain modeling: concepts for responsibilities, associations and attributes; group exercises. Reading: Ch.2.
Lecture 7 (02/15/10): Design. Review; decompose responsibilities, refine interactions, introduce "how"; design sequence diagrams; basic design principles: nothing too big, maximizing sharing. Reading: Ch.2. Assignment 4.
Lecture 8 (02/19/10): Review; from dynamic interactions to static structures; more design principles: transactions, caching; class diagrams, class relationships; packages and notes; group exercises. Reading: Ch.2.
Lecture 9 (02/22/10): Implementation and testing. Coding: clarity, efficiency, cost; generate code from models, reuse existing code; forward, backward, and round-trip engineering; add functionalities incrementally; component diagrams. Reading: Ch.2. Assignment 5.
Lecture 10 (02/26/10): Canceled due to snow and moved to next time. Testing: concepts, faults; unit test: code review, choosing test cases, test coverage; integration test: bottom-up, top-down, others; test plan, description, and report; quiz 2. Reading: Ch.2.
Lecture 11 (03/01/10): Advanced topics. Compressed due to cancellation last time and moved to next time. Object relational mapping, persistent objects. Reading: Mapping Objects to Relational Databases: O/R Mapping In Detail, by Scott W. Ambler. Demo 1.
Lecture 12 (03/05/10): Delivery: deployment diagram, training and manuals. Project presentations. EZBoon's EZBoon (on-line shopping system); Island Health Solutions' Universa Office Suite (electronic health record management).
Lecture 13 (03/08/10): Project presentations. One Stop Solutions' QuickResponse (automatic response to emails); Parfait's Trinity Life (social file sharing on the web); Group SOS' Stony Stuff (trading textbooks and stuff on campus). Assignment 6.
Lecture 14 (03/12/10): Project presentations. Team IDC's Course Recommendation System; Team 314's Multimedia Augmented Notetaking Application; Irrational Machines' Rubrik (creating and applying grading rubrics).
Lecture 15 (03/15/10): Modeling and specification Systems, individuals and relations, states and state variables, events; state diagrams, composite states; activity diagrams. Reading: Ch.3. Assignment 7.
Lecture 16 (03/19/10): Interface specifications and OCL. Design by contracts, class invariants, method pre and post conditions, constraints; object constraint language (OCL); an exercise. Reading: Ch.3.
Lecture 17 (03/22/10): Measurements and estimation. Review: comprehension, in different languages; group exercises; measurements, use case points; effort estimation. Reading: Ch.4. Assignment 8.
Lecture 18 (03/26/10): Review: comprehension, Russell's paradox; quiz 3; SLOC count, cyclomatic complexity; effort estimation; believe it or not; group exercises. Reading: Ch.4.
Spring break: 3/29-4/2/10.
Lecture 19 (04/05/10): Advanced design. Design patterns: structure and behavior, observer pattern, overview of other patterns; patterns for concurrency, distribution, security; frameworks and architectures: MVC. Reading: Ch.5. Assignment 9.
Lecture 20 (04/09/10): No class. Self study: more design patterns for extra credit in Assignment 9. Reading: Ch.5.
Lecture 21 (04/12/10): Advanced implementation and testing. Advanced implementation: 4 kinds of transformations, object queries and updates, cost, optimization by incrementalization, maintaining invariants, demo. Reading: Slides. Assignment 10.
Lecture 22 (04/16/10): Advanced testing. Review, quiz 4; proving code; system testing; regression testing; testing tools; when to stop. Reading: Handout E1: Preparation for Exam.
Lecture 23 (04/19/10): Review for exam. Reading: Handout E1: Preparation for Exam.
Exam (04/23/10): In class. You can prepare one hand-written "crib sheet".
Lecture 25 (04/26/10): Advanced topics. Security: encryption, authentication, authorization, RBAC, trust management, attacks; AOP; problem solving: clear specification, efficient implementation, image processing example, puzzles; summary. Assignment 11.
Lecture 26 (04/29/10): CASE and CASE tools, links and resources. Project presentations. Team 314's Multimedia Augmented Notetaking Application; One Stop Solutions' QuickResponse (automatic response to emails).
Lecture 27 (05/03/10): Project presentations. EZBoon's EZBoon (on-line shopping system); Parfait's Trinity Life (social file sharing on the web); Irrational Machines' Rubrik (creating and applying grading rubrics). Demo 2 and Final Project Report.
Lecture 28 (05/07/10): Project presentations. Team IDC's Course Recommendation System; Group SOS' Stony Stuff (trading textbooks and stuff on campus); Island Health Solutions' Universa Office Suite (electronic health record management).


Handout Q: Questionnaire

Handout QQ: Questionnaire2

Handout A1: Assignment 1: Questionnaire; Customer Wanting Software

Handout A2: Assignment 2: Project Description and Plan

Handout A3: Assignment 3: Requirement Specification

Handout A4: Assignment 4: Design

Handout A5: Assignment 5: Implementation and Testing

Handout A6: Assignment 6: Initial Delivery

Handout A7: Assignment 7: Requirement Specification and Design 2

Handout A8: Assignment 8: Implementation and Testing 2

Handout A9: Assignment 9: Requirement Specification and Design 3

Handout A10: Assignment 10: Implementation and Testing 3

Handout A11: Assignment 11: Comments; Customer Evaluating Software

Handout Q1: Quiz 1

Handout Q2: Quiz 2

Handout Q3: Quiz 3

Handout Q4: Quiz 4

Handout E1: Preparation for Exam

Handout E2: Exam

Handout E3: Sample Solution to Exam

Handout D: Demo

Handout P: Presentation

Handout PE: Presentation Evaluation

Handout D2: Demo 2

Handout P2: Presentation 2

Handout PE2: Presentation Evaluation 2

Handout R: Final Project Report

Other Pointers

Textbook homepage by the author of the main text: textbook, projects, course, links

Transaction Processing Lab: accounts, FAQ, policies, database servers, etc.
Instructions for using the TransLab SVN Server

Allen Holub's UML Quick Reference
OMG UML Resource Page

Mapping Objects to Relational Databases: O/R Mapping In Detail, by Scott W. Ambler
List of object-relational mapping software

An Interactive OCL Tutorial
OMG OCL Specification 2.2

Advanced implementation: Optimizing OOP by incrementalization

Computer Aided-Software Engineering at wikipedia, with links to tools at the bottom
Computer Aided-Software Engineering resources by Pressman


You should learn all information on the course homepage. Check the homepage periodically for Announcements. Use Blackboard for additional communications, including in particular assignment handins and discussions.

Attend all lectures and take good notes. I will start promptly on time, if only to be fair to people who come on time. We will start with quizzes from time to time. I will have every student participate in solving problems and presenting solutions in class. We will discuss materials not in the textbook from time to time.

Do all course work. The readings are mainly to help you preview and review the materials discussed in the lectures. The assignments are to provide concrete experiences with the basic concepts and methods covered in the lectures. The quizzes are to help check that you are keeping up with the lectures and the assignments. The exam will be comprehensive.

Your handins, whether on paper or in electronic form, should include the following information at the top: your name(s), student id(s), course number, assignment number, and due date, and should be submitted in a neat and organized fashion.

Your approach to solving problems is as important as your final solutions, so you need to show how you arrived at your solutions and include appropriate explanations.

If you feel your grade was assigned incorrectly, please bring it up no later than two weeks after notification of the grade.

Computing facilities: You will have an account in the Transaction Processing Lab. Never let anyone else use your account. Please be conscious of security in the lab. If you have any problems with the hardware or software in the lab (other than with the requirements of the course work itself), please contact the system staff and copy me on your email; neither the TAs nor I could fix such problems.

Academic honesty: Individual portion of the course work must be done by the individual; group portion of the course work must be done by the group. You may discuss ideas with others and look up references, but you must write up your solutions independently and credit all sources that you used. Any plagiarism or other forms of cheating discovered will have a permanent consequence in your university record. For more comprehensive information on academic integrity, please refer to the academic judiciary website at http://www.stonybrook.edu/uaa/academicjudiciary/

Disability: If you have a physical, psychological, medical or learning disability that may have an impact on your ability to carry out assigned course work, please contact the staff in the Disabled Student Services office (DSS), Room 133 Humanities, 632-6748/TDD. DSS will review your concerns and determine with you what accommodations are necessary and appropriate. All information and documentation of disability are confidential.

Annie Liu