Engr 692-06: Special Topics in Engineering Science
The Fall 2007 class meets in Weir 235 from
8:00 until 9:15 on Tuesday and
The class is taught by Prof. Conrad Cunningham, whose
office is 203 Weir Hall. Prof. Cunningham's official
office hours for this session are 10:00
a.m. to Noon on Wednesday
or by appointment at other times.
Prof. Cunningham's voice telephone number is (662) 915-5358 and fax
number is (662) 915-5623. His WWW home page is
and his email address is email@example.com
The WWW home page for this class is
The final examination for this class is scheduled for 8:00 a.m. on
Tuesday, 4 December 2007.
Student Disabilities Services Statement
"It is the responsibility of any student with a disability who
requests a reasonable accommodation to contact the Office of
Disability Services (915-7128). Contact will then be made by that
office through the student to the instructor of this class. The
instructor will then be happy to work with the student so that a
reasonable accommodation of any disability can be made."
Upon completion of the course, the students should:
- understand the software engineering concepts of information
hiding, abstract interfaces, design by contract, modularization, and
software families (in particular software frameworks),
- be able to understand and apply software frameworks developed by
- know the basic domain and commonality/variability analysis
techniques needed for development of software families,
- be able to design and implement software frameworks (i.e.,
families) using contemporary object-oriented programming languages
such as Java or Scala and appropriate design patterns.
This course will examine concepts, techniques, and tools for the
analysis, design, and implementation of software families (e.g.,
software frameworks and software product lines) and other generic
This class is intended for students admitted in full standing to the
graduate program of the Department of Computer and Information
Science. Students are expected to have a background in
object-oriented programming, algorithms, data structures, and
programming languages similar to the undergraduate courses CSCI 111,
112, 211, 433, and 450. Students are expected to have a mature
understanding of data abstraction, inheritance, polymorphism,
composition, and other object-oriented concepts.
Graduate students in other fields should not be enrolled in this
class without the explicit permission of the instructor and of their
department. Any students in this category are expected to provide the
instructor with a note from their advisor or department chair
indicating such permission.
- Journal and conference articles, research reports, and other
materials as appropriate. These will be listed on the
page on the Web site.
The actual topics and their order will be refined as the semester
- essential difficulties of software development
- information hiding, abstract interfaces, and modular design
- program families
- design by contract techniques
- languages for programming components
- object-oriented frameworks
- software design patterns
- commonality/variability analysis
- software product line methods
- process patterns
As a student in Engr 692, you are expected to conduct yourself in
a professional manner according to the
Honor Code of the School of Engineering, the Information
Appropriate Use Policy, the M Book, and any other
Unless otherwise stated explicitly for an assignment, all
assignments and projects in this class are covered by the School of
Engineering's Honor Code statement on plagiarism. It is
plagiarism "to knowingly deceive, copy, paraphrase, or otherwise
misrepresent your work in a manner inconsistent with professional
The grading scale is A [90..100], B [80..90), C [70..80), D [60..70),
and F [0..60).
Credit toward the semester grade will be allocated to each of the
components as follows:
| Presentations/Homeworks/Projects || 50% |
| Examinations and quizzes || 50% |
- All students are expected to study the relevant portions of
the source materials in conjunction with our class discussions (i.e.,
before coming to class).
- In preparing and submitting homework papers make sure that:
- your name, the course number or name, the assignment identifier,
and individual exercises are clearly indicated on the paper or in the
file. (If it is a group assignment, give the group identifier and the
names of all members.)
- for any handwritten work, you write legibly on only one side of
the paper in black or blue pen or dark pencil. (Do NOT use
red or green ink!) Some assignments may require that materials be
generated with a word processor and/or other tools.
- any papers turned in are stapled together in the upper left corner.
- As appropriate, there may be a few in-class assignments or quizzes
that count toward the assignment/project portion of the grade.
- Some of the projects may be small group projects; others may
be individual efforts. One of these might involve presentation of a
paper or other material to the class on some aspect of software
architecture or related software technology. Another project may
involve a significant analysis and design effort.
- All students or groups are expected to complete their assignments
by their due dates. If an assignment is submitted late,
a penalty of 10 percent of that assignment's grade
may be assessed for each day it is late. A homework
assignment will not be accepted after graded papers have been returned,
after a solution has been distributed, or after the final examination.
- I plan three examinations, one in early October, another before
Thansksgiving break, and the third at the final exam time. I will
take the two best of the three exams in computing your grade.
- The exams may include both in-class and take-home components.
- Please do not ask to take the final exam at an earlier time than
set for the entire class.
[ ENGR 692 Home ]
Send any comments or suggestions to Prof. Conrad Cunningham,
Copyright © 2007, H. Conrad Cunningham
Last modified: 21 August 2007