CSE308 (Fall `04)
Software Engineering

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


General Information

Course description: This course introduces students to basic concepts and modern tools and techniques of software engineering. We will emphasize the development of reliable and maintainable software via system requirements and specifications, software design methodologies including object-oriented design, implementation, integration, and testing. We will discuss software project management, life-cycle documentation, software maintenance, and consider human factor and ethics issues.

The above description is based on the official course description. For this fall in particular, we will study UML (the Unified Modeling Language) and use it for capturing requirements, building models and specifications, mapping out designs, refining the designs, and viewing systems in multiple interrelated ways. We will also study design patterns for discussing design rationale and considering tradeoffs in design. We will emphasize reuse and incremental and iterative development throughout the course, and emphasize the use of tools. Students will work in groups on a software development project as a major part of the course.

Prerequisites: CSE219 or equivalent, or undergrad discrete math (sets, relations and functions, predicate logic), data structures, programming in Java, plus ability to catch up with materials of CSE219. | Credits: 3.

Instructor: Annie Liu | Email: liuATcsDOTsunysbDOTedu | Office: Computer Science 1433, 632-8463.

TAs: Brian Black, Email: bblack04ATcsDOTsunysbDOTedu | Ting Wang, Email: twangATcsDOTsunysbDOTedu
Undergrad TA: Jonathan Gong, Email: jgongATicDOTsunysbDOTedu

Hours: Tue Thu 3:50-5:10PM, in E&SSCI 001 | Annie's office hours: Tue 1:30-2:30, Thu 2:30-3:30, CS 1433; Tue Thu 3:40-3:50, E&SSCI 001 | Brian's office hours: Tue 10-11:20, Thu 11-12:20, CS 2110 | Ting's office hours: Mon 12-1:20, Fri 1-2:20, CS 2110 | Jonathan's office hours: Mon 2:30-3:50, Wed 3:30-4:50, CS 2110.

Textbook: The main text is Object-Oriented Software Engineering: Using UML, Patterns, and Java by Bernd Bruegge and Allen Dutoit, 2nd Edition, Prentice-Hall, 2004. Other useful references will be added during the course. You should also take good notes during the lectures.

Grading: Weekly assignments, all centered around the course project, by groups and/or individuals, together worth 40% of the grade; a midterm exam, a group project presentation, and the final group project evaluation, each worth 20%, 10%, and 30%, respectively, of the grade. No late assignment will receive credit. Exceptions only when supported with official documents will be accommodated. The Pass/No Credit (P/NC) option is not available for this course. grading guides

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


Lectures

Course overview, projects
Lecture 1 (08/31/04): Overview. Software engineering, state of the art, special difficulty, teaching; this course: UML, patterns, smart methods, projects, course work. Reading: Ch.1.1-2. Assign 1.
Lecture 2 (09/02/04): More overview. People involved, system to build (the "what"), steps to take; major issues; abstraction, methods and notations, etc.; project description, project ideas. Reading: Ch.1.
Lecture 3 (09/07/04): Software processes. Sequential, iterative, modeling and specification driven; extreme programming: agile, incremental and iterative; project ideas. Reading: Ch.15. Assign 2.
Requirements analysis, modeling and UML
Lecture 4 (09/09/04): UML. Overview; use case diagrams: actor, use case, text, include, extend; class and object diagrams: class, association, aggregation, composition, generalization. Reading: Ch.2.
Lecture 5 (09/14/04): More UML, requirements analysis. Interaction diagrams; state and activity diagrams; requirements elicitation; analysis. Reading: Ch.3, project planning and management. Assign 3.
Rosh Hashanah break: September 16-17.
Lecture 6 (09/21/04): Writing in computer science/information systems 1 (slides), by Prof. Larry Wittie. Reading: Ch.4, requirements elicitation, use case diagrams. Assign 4.
Lecture 7 (09/23/04): Ethics for computer professionals, by Prof. Phil Lewis. (departmental ethics webpage.) Reading: Ch.4.
Lecture 8 (09/28/04): No class scheduled. Reading: Ch.5, analysis, class and sequence diagrams. Assign 5.
Lecture 9 (09/30/04): Writing in computer science/information systems 2 (slides), by Prof. Larry Wittie. Reading: Ch.5.
System and object design, architecture and patterns
Lecture 10 (10/05/04): System design, by Prof. Scott Stoller. Design goals; subsystem decomposition; artchitectural styles: client server, peer to peer, MVC, repository. Reading: Ch.6. Assign 6.
Lecture 11 (10/07/04): More system design and more on UML class diagrams. Hardware software mapping, component and deployment diagrams; data management; access control; control flow; boundary conditions; more on associations, template classes, interfaces, abstract classes. Reading: Ch.7.
Lecture 12 (10/12/04): Object design and design patterns. Overview; use of inheritance and delegation; selecting class libraries, frameworks, and components; design patterns. Reading: Ch.8. Assign 7.
Lecture 13 (10/14/04): More design patterns and more on UML behavioral diagrams. More design patterns, taxonomy; more on sequence and activity diagrams. Reading: Ch.8.
Lecture 14 (10/19/04): Object design and interface specification. Review and overview; invariants on attributes and associated classes, pre and post conditions of operations. Reading: Ch.9.
Lecture 15 (10/21/04): More interface specifications and more on OCL. Where to put, some basics, navigation; collection operations, comprehension, quantifiers. Reading: Ch.9. Assign 7 due.
Midterm review, exam
Lecture 16 (10/26/04): Review for midterm exam. UML what why how, basic concepts, sample problems and solutions, your group project. See Handout E1 if you have not already.
Midterm exam (10/28/04): In-class exam.
Implementation, testing
Lecture 18 (11/02/04): Coding and optimization. 4 kinds of transformations; mapping to code; optimizing access paths; optimization by incrementalization: clarity and modularity vs. efficiency. Reading: Ch.10. Assign 8.
Lecture 19 (11/04/04): More coding and optimization. Queries and updates; incremental and iterative; incrementally maintaining results of expensive queries with respect to updates. Reading: Ch.10.
Lecture 20 (11/09/01): Meeting individual teams; continue coding and optimization. Tue: 9:30 Pinnacle, 11:00 Future Designers, 11:30 Cup-O-Java, 1:30 Nemo, 3:30 Pajama, 4:00 Byte Pirates, 4:30 MailxOr, Wed: 12:00 Ice Men, 1:00 Slackers, 1:30 Cereal Code, Thu: 9:00 Red Devils, 11:30 F-5, 2:30 Simplicity Vedio, 3:00 Born To Code, 3:30 Chronicle Soft, 4:00 SoftProduct Group, 4:30 Caffeine Group. Ethics paper due.
Lecture 21 (11/11/04): Continue meeting individual teams; continue coding and optimization.
Lecture 22 (11/16/04): Testing. Concepts, faults; unit test: code review, proving code, choosing test cases; integration test: bottom-up, top-down, etc; test plan, description, and report. Reading: Ch.11. Assign 9.
Lecture 23 (11/18/04): More testing. System testing; regression testing; testing tools; when to stop; project delivery and usage manual; assignments and bonus. Reading: Ch.11.
Lecture 24 (11/23/04): Class canceled. Team work: preparing for project delivery. Reading: Ch.12,16. Assign 10.
Thanksgiving break: November 25-28.
Project presentations, final evaluation
Lecture 25 (11/30/04): Project presentations: Mailx0r's StonyMail, Cereal Code's MeHungryNow.com, Born to Code's DrugNet, Byte Pirates' Online Battleship Gaming System. Team work: maintenance and improvement.
Lecture 26 (12/02/04): Project presentations: Cup-O-Java's Automated Restaurant Management System (ARMS), Team Caffeine's Elemental Masterz, Ice Men's Ice Cream to Your Door, Red Devils' Graduate Requirement Evaluation.
Lecture 27 (12/07/04): Project presentations: Future Designers' Wheel of Fortune, Chronicle Soft's Stony Brook Calendar, Nemo's University Calendar Project, The Slackers's Calendar System, PJAMA's Merchant Inventory Software. Team work: Evaluation and improvement.
Lecture 28 (12/09/04): Project presentations: PINNACLE's Quick Poker, Simplicity Video Rental's Video Rental System, SoftProduct Group's Inventory System, F-5's Restaurant Solution. Project report due.

Handouts

Handout Q: Questionnaire

Handout A1: Assignment 1: Questionnaire; Customer Wanting Software; What I Did

Handout A2: Assignment 2: Group Project Description; What I Did

Handout A3: Assignment 3: Group Project Plan; What I Did

Handout A4: Assignment 4: Group Project Requirements Elicitation; What I Did

Handout A5: Assignment 5: Group Project Requirements Analysis; What I Did

Handout A6: Assignment 6: Group Project System Design; What I Did

Handout A7: Assignment 7: Group Project Object Design; What I Did

Handout A8: Assignment 8: Group Project Coding and Optimization; What I Did; Extra Bonus

Handout A9: Assignment 9: Group Project Testing; What I Did; Extra Bonus

Handout A10: Assignment 10: Group Project Delivery; What I Did

Handout E1: Preparation for Midterm Exam

Handout E2: Midterm Exam

Handout E3: Sample Solution to Midterm Exam

Handout P: Presentation Evaluation

Handout R: Final Project Report


Other Pointers

Textbook homepage by the authors of the main text: lecture slides, document templates, etc.

Transaction Processing Lab: accounts, FAQ, policies, etc.
Instructions for using the CVS server
jBuilder Team Development Guide
Junit Documentation, including JUnit Cookbook and JUnit A Cook's Tour

Allen Holub's UML Quick Reference
OMG UML Resource Page

The Object Primer 3rd Edition: Agile Model Driven Development With UML 2, by Scott W. Ambler, Cambridge University Press, 2004. (straightforward; trying to combine some basic important ingredients)
Extreme Programming Explained: Embrace Change, by Kent Beck, Addison Wesley Professional, 2000.

CodeXchange Unveils New Software Development And Distribution Paradigm, submitted by Gregory Berman, who wrote "It is an article talking about a new way of selling code to companies. Any developer can post there code on this site and people can buy it... Companies can also post requests." (10/9/04)

Software Cost Reduction (PostScript | PDF): a 10 short pages article, appeared in Encyclopedia of Software Engineering, John J. Marciniak, editor, 2002.


Requirements

You should learn all information on the course homepage. Check the homepage periodically for Announcements.

Do all course work. The homeworks and projects are integral parts of the course as they provide concrete experiences with the basic concepts and methods covered in the class.

Your handins, whether on paper or in electronic form, should include the following information at the top: your name, student id, course number, assignment number, and due date.

Your work should be submitted in a neat and organized fashion; for handins on papers, if your handwriting is hard to read, then your work needs to be typed.

Your approach to solving problems is as important as your final solutions; 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 the assignment was returned to the class.

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 are encouraged to discuss with others and look up references, but you must write up your solutions/codes/reports independently and credit all sources that you used. Any plagiarism or other forms of cheating will result in an F or worse.

Computing facilities: You will have an account in the Transaction Processing Lab. Never let anyone else use your account; it is against the rules. Please be conscious of security in the lab; theft or vandalism will be punished severely. If you have any problems with the hardware or software in the lab (other than with the requirements of the course work itself), please email ntadminATcsDOTsunysbDOTedu with a copy to me; neither the TAs nor I could fix such problems.

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