567: Software Engineering  I

Fall 2008– Marco Gruteser

Description:  This is a graduate course in software engineering intended to create a foundation for research or advanced professional practice. This year the class will also emphasize security aspects.

Times:  Class will meet Fri ,  5:00pm to 8:00pm in CoRE 538

How to reach me?

Instructor: Marco Gruteser

Office: CoRE 505

Office hours  By Appointment

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

Detailed class information on sakai

Prerequisites:  Programming Methodology I & II or equivalent undergraduate course work and good Java and/or C/C++ programming skills. If you have not taken these courses you should discuss your situation with me before you enroll.


Text:  Bruegge, Dutoit, Object-Oriented Software Engineering, 2nd Edition, Prentice Hall.

Some meterial will also be derived from Anderson. Security Engineering, 2nd Edition, Wiley. The security book is not required but recommended as a good overview of security mechanisms.

Course Organization:  Work in this class consists of a mix of individual and group activities. As individuals, students will take the mid-term exam and may submit homework. The occasional homework assignments are voluntary and mostly serve as preparation for the exam. I will consider on-time submitted homework for fine-tuning the grades of students who are on the borderline of two grades. Every student must also present one or two research or survey papers in class. These are typically 20min presentations at the end of each lecture. The presentations serve several purposes. First, the papers provide additional depth on some of the topics covered in class. Second, carefully reading research papers will make you familiar with the style and organization of research writing -- a great preparation for conducting your own research. Third, you will practice your presentation skills, an essential skill whether you pursue an academic or industry career. These individual activities make up about half of your grade. To stimulate discussion of these papers in class all students are expected to read the papers and email me brief reviews before class.

The second part of this class is to complete an ambitious design and development project in a team of at least five students. In this project you will apply and practice the techniques covered in class. It will also provide you with experience and insights about larger team projects. Be prepared to invest a substantial amount of time into this project throughout the class. Apart from a running system, the deliverables are periodic progress reports and a final project report that describes the complete project, including requirement analysis, system architecture, design, implementation, testing, and verification.

Tentative Topics:

  • Software Process Models
  • Requirement analysis
  • Specification with UML and other formal methods
  • System Design
  • Privacy & Security engineering
  • Robust programming
  • Testing (with JUnit)
  • Methodologies (e.g. Extreme programming)

mid-term exam                                                 30%

                        student paper presentation and reviews             20%

project reports                                                 20%

final project presentation                                   20%

project peer evaluations and participation          10%

homework                                              fine tuning

Total                                                              100%