The content on this page is the work of Professor Glenn Blank.
Be advised that Professor Blank is no longer on the active faculty at Lehigh.
This content continues to be available as a courtesy, but it may not be maintained or current.
Questions for Preliminary Requirements Analysis
for CSc11: Introduction to Computing and CSc432: Object-Oriented Software Engineering
by Glenn D. Blank, July 2000, updated January 2001

Who?  Audience analysis.

1. Who is your audience?  Develop a profile of typical age, gender, ethnic or cultural background, etc.  Do you want to include or attract an audience wider than your typical profile?

For CSc11:

  1. Age: 85% are 17-19, 10% are 20-22, 5% are 23-60.
  2. Gender (based on the roster at the end of the semester, fall 1999): 61% male, 39% female.
  3. Ethnic/cultural background: Afro-American and Hispanic: 10-15%, Asian: 10-15%.
  4. Minorities and some women struggle in this course.

For CSc432:

  1. 90% are 22-45, 10% are 20-22 (give or take 5%).
  2. Gender: 90% male, 10% (or less) female.
  3. Ethnic/cultural background: Afro-American and Hispanic: less than 5%, Asian: 25-40%.
  4. We would like to see more women and minorities participate and succeed in this course.

2. What can you assume as background?  What limitations or attitudes might some of your audience have that needs to be overcome?

What?  Goals and Content Analysis

3. What unit or chapter(s) worth of material do you want to teach?

The Universal Machine has 16 chapters:

The new CS0/CS1 course material would have the 10 chapters of breadth of computer science material in common. A CS1 (majors) course would add the Introduction to C++ material as a supplement, while a CS0 course would add one or two chapters on web page development, HTML and JavaScript. See The Analytical Engine for a rough idea of what we have in mind for a CS0 supplement, particularly its chapters 4 (Designing For Use, covering HTML) and 5 (Cordon Bleu Programming, covering imagemaps, forms and JavaScript).

For the prototype, we want to rework the material in chapter 13, Object-Oriented Software Engineering, for both courses:

The content for the OOSE course can be gleaned from the syllabus of the OOSE course, with details from sections in lecture notes (for which there are links below). A subset of these topics are covered in the introductory textbook, The Universal Machine (UM). Copies of the textbook are available from Prof. Glenn Blank, as are manuscripts of the text in WordPerfect format. Corresponding materials in multimedia for The Universal Machine are also available (as noted below).

  1. OOSE as a new paradigm (way of organizing knowledge) for software development (Multimedia in UM: after explaining the idea of a paradigm shift with the example of Ptolemaic to Copernican models of planetary motion, it explains why moving from structured programming to OO programming is a paradigm shift in software engineering). (Possibly add material on principles and criteria of modularity. Ideal desiderata for software and how object-orientation can help us get there. Based on ideas from Bertrand Meyer's Object-Oriented Software Construction.)
  2. Object-oriented requirements analysis with UML use cases. Starts with a discussion of themes of OO analysis, then introduces UML (Unified Modeling Language) and how it relates to the software development process, and finally explains to develop use cases for requirements analysis.
  3. Generalization through inheritance and dynamic binding. (Multimedia for inheritance in UM, but weak on dynamic binding.)
  4. OO analysis: categorization, simulation, prototypes and the need for formalization. Rationale for OO methodologies.
  5. Responsibility-driven design, CRC cards (multimedia in UM): CRC cards are perhaps the simplest OO methodology and a handy way to do discover classes and their responsibilities and simulate how they behave together as a system.
  6. Object-oriented design with UML class diagrams, composition and aggregation diagrams, etc. This could probably be at least two different lessons.)
  7. Abstract data types as a formal way to model syntax and semantics as classes. (Introduced in text and multimedia of The Universal Machine, chapter 5, Classes: An Outside Look and chapter 14: Object-Oriented Software). (CIMEL prototype implements part of this lesson.)
  8. ADTs for collections. (Multimedia in UM.)
  9. Design patterns. A pattern is the abstraction from a concrete forms that recur in various programming languages. Meyer introduced Command and State Machine patterns (though he didn't call them design patterns) in Object-Oriented Software Construction. The "Gang of Four"(Gamma, Helm, Johnson & Vlissides 1995) introduced a method of describing and cataloguing design patterns.

Optional topics:

5. What is the desired performance level for learning these concepts/skills?

For CSc11, conceptual knowledge is sufficient.  They may be expected to implement or modify C++ programs involving simple classes.
For CSc432, students should attain deeper conceptual knowledge, practical software engineering skills, and research knowledge:

Why?  Needs Assessment

6. What are the current sources/methods/practices by which students learn these concepts/skills? Look at texts currently in use; interview faculty, TAs and students about current approach.

For CSc11, students: 

For CSc432, students:

7. What are the results of these practices?  How can these practices be improved by multimedia?

For CSc11:

8. What areas of difficulty are students having that multimedia could address?  How?

9. What strategies could you use for content and presentation of your material?

Where, how and when? Deployment, resources and timeline.

10. Where will your module be deployed? Via CD-ROM or via the Web or both?

11. Who will work on your project?  What roles will each project member have?

12. Who is the domain expert for teaching your content?  How will he/she work with your team?

13. What hardware and software resources will you need?  What do you already have?

14. When do you expect to complete a design, a prototype, a testable program?