Instructor: Dimitris Papamichail
Office: Ungar 403
Email: d.papamichail@miami.edu
Course Time: Tuesdays and
Thursdays, 3:30pm - 4:45pm
Place: Memorial 108
Office Hours: Tuesday 5pm-6pm, Friday 2pm-3pm, and by appointment.
Teaching Assistant: Faisal Sikder
TA Office hours: Thursday 11am-1pm, Saturday 1pm-4pm, Ungar 426 (lab)
Prerequisites: CSC322 - C Programming and UNIX or CSC517 - Data Structures and Algorithm Analysis. Prerequisite requirements may be waived with permission of the instructor. Attendees of this course will be expected to have intermediate/advanced knowledge of programming.
Textbook:
The textbook for this course will be the following:
Other books recommended as supplements are:
Roger Pressman: Software Engineering: A Practitioner’s approach, McGraw-Hill, 2009
David Gustafson: Schaum’s Outline of Software Engineering, McGraw-Hill, 2002
Perdita Stevens: Using UML: Software Engineering with Objects and Components, Addison Wesley, 2006
Additionally, for people interested in improving their code quality, there are a couple of books that are useful:
Steve McConnell: Code Complete: A Practical Handbook of Software Construction, Microsoft Press, 2004
Objectives: The objectives for the course are to:
Introduce models of software development and methodologies for project planning, requirements analysis, and system/test design.
Provide experience in working as a team to produce software systems that meet specifications while satisfying an implementation schedule.
Train students to produce quality oral/written presentations of system designs, reviews, and project demonstrations.
Expose students to ethical issues in software design and computing in general.
Material: This is a course in software engineering, focusing in modeling, planning, designing, managing, coding, testing, evaluating, documenting, delivering and maintaining large scale software projects. Topics include:
Project review and software requirements
System modeling, UML static and dynamic models, use cases
User interface prototyping and design
Object oriented design
Software and critical system development
Software reuse and program evolution
Verification, validation and testing
People management, cost estimation
Ethics
Grading: Grades will be assigned as follows:
Semester Project – 80%
In class midterm – 20%
Homework Assignments: There will be no homework assignments over the course of the semester.
Semester Project: This is your opportunity to apply the theory taught in class. The semester project aims to be a complete software project, passing through most phases of software production. It will consist of the following deliverables:
Requirements document
Prototype – Demo
Design Document
Specification document
Development progress report and demonstration
Testing report
Final report, complete product, user manual and presentation
The project phases will be distributed relatively evenly along the semester and, while I cannot guarantee it, I will try to cover the accompanying theory before the due date of the respective phase. As a team, you are encouraged to work in parallel, identify your individual strengths and take advantage of them.
Further instructions and consultation will be provided when the project’s requirements are announced. We will occasionally have brief discussions in class to voice questions, concerns, problems and possible directions.
Although the project topic will be assigned from the instructor, you are encouraged to submit your own ideas for a software project. Your suggestion should define a complete well thought-out project, with comparable requirements to the one suggested by the instructor. You will be responsible for the completion of your project’s requirements, as defined in your proposal.
Final Exam: There will be no final exam.
Rules of the Game:
The course will involve programming, using a programming language of the choice of your group, but appropriate for the project in hand. Use of an object-oriented language is preferred and highly encouraged.
Course handouts, material, homework assignments, project requirements, etc. will be available in blackboard as soon as possible, along with the latest announcements. Please check it out often. I will try to accompany important announcements with email notifications.
There could be changes/adjustments to the material and the project during the semester. I am generally open to suggestions to improve and direct the subjects covered.
The required textbook ‘Essentials of Software Engineering’ will be followed to some extent, but we may deviate in several subjects. It is recommended that you study the relevant sections from the book. My presentations and other notes will be made available on blackboard.
Because a primary goal of the course is to teach professionalism, any academic dishonesty will be viewed as evidence that this goal has not been achieved, and will be ground for receiving a failing grade. For details, please refer to the Honor Code of the University of Miami at:
http://www.miami.edu/dean-students/pdf/undergrad_honorcode.pdf