Home

14:332:452 Software Engineering

Spring 2008– Marco Gruteser


Description:  This is an undergraduate course covering basic concepts of software engineering. It intents to lay a foundation for the software capstone design course and professional practice by conveying fundamental knowledge about the software development process, requirements analysis, design techniques, and testing methods. The course emphasizes modeling skills with the Unified Modeling Language.

Times:  Class will meet Tue/Fri,  10:20am to 11:40am in SEC 118  


How to reach me?
 

Instructor: Marco Gruteser

Office: CoRE 505

Office hours: Fri 11:45am– 12:30pm or by appointment  

Email: gruteser (at) winlab (dot) rutgers (dot) edu

TA: Jian Zhang

Office hours: Mo 2-3pm

Email: jianz@caip.rutgers.edu

Course website: More class information is available on Sakai [Update: Due to technical issues we will be using Sakai instead of the moodle course managment system. Please enter your profiles on Sakai. No enrollment key is required on Sakai.]

Prerequisites:  Programming Methodology I & II or equivalent undergraduate course work and good Java (or C++ and able to pick up Java quickly) programming skills.  These are firm prerequisites; if you have not taken these courses you should discuss your situation with me before you enroll.

 

Text:  Bernd Bruegge, Allen Dutoit:  “Object-Oriented Software Engineering: Using UML, Patterns, and Java”, Prentice Hall, 2003 (required). Also recommended is Miles & Hamilton: “Learning UML 2.0”, O’Reilly 2006.

Course Organization: This is a lecture + project course, where topics are presented by the instructor and practiced in the context of a team project. Work in this class consists of a mix of individual and group activities. As individuals, students will take the mid-term and final exams, occasional quizzes, and submit homework assignments. The occasional homework assignments carry less weight than the project reports, and mainly serve to help exam preparation. Some ttime at the end of lectures will be allocated to discuss the team project. To experience the key software engineering challenges arising in larger-scale multi-person development efforts, all students will be working towards a single integrated software system. As part of this project, students will be required to submit periodic reports approximately every 2-3 weeks. These reports will be written in smaller subteams of 5-6 students and have significant influence on students grades. Each report must contain a breakdown of contributions from all group members and a time log for each group member covering all project-related activities. The exact deadlines and content requirements for these reports will be announced in class.


Grading Policy:

mid-term exam
25%
final exam
25%
assignments quizzes
10%
group project reports
30%
project peer evaluations
10%


Tentative Topics and Schedule:

DATE TOPIC
Jan 22 Course overview
Jan 25 Intro to modelling with UML
Jan 29 Project and team organization
Feb 1 Requirements Elicitation
Feb 5 Object-Oriented Analysis
Feb 8 System Design
Feb 12 Object Design: Specifying Interfaces
Feb 15 Mapping Models to Code
Feb 19 Tools: Build Systems and Issue/Bug-Tracking
Feb 22 Coding: Robust and Readable Code
Feb 26 Source and Version Control / Configuration Management
Feb 29 Code inspection and review
Mar 4 Testing: white-, black-box, boundary, and integration Testing
Mar 7 JUnit - An automated test framework for Java
Mar 11 Review
Mar 14 MID-TERM EXAM
Mar 25 Rationale Management
Mar 28 Project Management
Apr 1 Software Metrics
Apr 4 Cost/Effort Estimation
Apr 8 Design Reuse: Design Patterns
Apr 11 Design Patterns 2
Apr 15 Design Patterns 3
Apr 18 Intro to formal specification and verification techniques
Apr 22 Software Life Cycle
Apr 25 Putting it all together: methodologies
Apr 29 Case Study: Extreme Programming
May 2 Project Review
May 14 FINAL EXAM (4-7 PM)