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?
- If so, revise your profile to be more inclusive.
- For the prototype, we need to consider the audience for two different courses,
CSc11 (Introduction to Computing), a freshmen level course and CSc432 (Object-Oriented
Software Engineering), a graduate level course.
For CSc11:
- Age: 85% are 17-19, 10% are 20-22, 5% are 23-60.
- Gender (based on the roster at the end of the semester, fall 1999): 61%
male, 39% female.
- Ethnic/cultural background: Afro-American and Hispanic: 10-15%, Asian: 10-15%.
- Minorities and some women struggle in this course.
For CSc432:
- 90% are 22-45, 10% are 20-22 (give or take 5%).
- Gender: 90% male, 10% (or less) female.
- Ethnic/cultural background: Afro-American and Hispanic: less than 5%, Asian:
25-40%.
- 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?
- Background: diverse. Just about all now come in knowing how to read e-mail
and use the web.
- Less than half know how to program in some language (mostly Pascal and Basic).
- About a quarter or less are novices who are intimated by computers and programming.
- The students in CSc11 could be divided into two groups:
- Those who might take another course (majors, minors or other programs
requiring or recommending a sequence in computer science) and
- Students not likely to take another course (over half), taking this
course out of interest and/or to fulfill a distribution requirement.
(In the fall of 2001 there will be a new “CS0” course, for 2 or 3 credits,
which would require little programming, perhaps some JavaScript, thus allowing
students to self-select themselves into these two groups.)
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:
- 10 deal with the breadth of computer science.
- Introduction ... the Universal Machine (Babbage, Turing, virtual machines,
ENIAC, etc.; OS user interfaces; hardware)
- Problem Solving Before Programming (algorithms, preliminary analysis,
hacking, analytical top-down decomposition and analogical problem solving)
- Programming Languages (interpreters vs. compilers, inside a programming
language translator, a brief history of programming languages)
- Software Development Life Cycle (programming in the large, waterfall,
spiral and iterative life cycles, requirements, design, coding, testing,
maintenance)
- Peeling the Onion: Computer Architecture (Register Machine, Boolean
circuits)
- Operating Systems and Networks (brief history of OSes, booting an OS,
OS architecture, networks and the Internet, protection and security)
- Theory of compution (complexity and efficiency, abstract computing machines)
- Object-Oriented Software (OO problem solving, responsibility-driven
design, generalizing through inheritance, designing abstract data types)
- Social and Ethical Issues (Computer revolution and social change, privacy,
legal issues, professional ethics)
- Artificial Intelligence (Turing test, strong and weak AI; AI algorithms,
engines and technology; neural networks; agents and robots
- 6 deal with programming in C++:
- A Taste of C++ ("Hello World", variables and types, arithmetic,
input/output, programming as problem solving)
- Classes: an Outside Look (Classes as abstract data types, constructors
and members, LOOKOUT class library)
- Structured Programming with Control Structures (conditionals, interactive
programs, repetitions, loop idioms, prevent bugs in loops)
- Functions and Decomposition (flow of control, local and global variables,
return values, functional decomposition, parameters, prototypes, recursion)
- Strings and Arrays (subscripts in strings, arrays, searching and sorting,
two-dimensional arrays)
- Classes: an Inside Look (public vs. private, implementing member
functions and constructors, inheritance via class derivation, case studies)
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:
- Material from chapter 6: Classes: An Outside Look, and
- Material from Chapter 14, Classes: An Inside Look, is also relevant
to the OOSE course.
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).
- 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.)
- 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.
- Generalization through inheritance
and dynamic binding. (Multimedia for inheritance in UM, but weak on dynamic
binding.)
- OO analysis:
categorization, simulation, prototypes and the need for formalization. Rationale
for OO methodologies.
- 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.
- Object-oriented
design with UML
class diagrams, composition
and aggregation
diagrams, etc. This could probably be at least two different lessons.)
- 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.)
- ADTs for collections. (Multimedia in UM.)
- 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:
- Perform analysis and design using CRC cards and a UML-based tool.
- Create software based on their analysis and design in C++ or Java using
class libraries.
- Appreciate the use of idioms and design patterns.
- Be able to use these concepts, tools and skills to communicate and work
together in teams on term projects.
- Should be able to perform analysis, design and implementation of small C++
or Java programs as individuals.
- Should be able to perform analysis, design and implementation of lrger team
projects in Java or C++.
- Students should be able to do and present background research on the (constantly
changing) state of the art in this field.
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:
- Use The Universal Machine textbook and CD-ROM (the multimedia is
installed on Lehigh campus LANs).
- Go through the multimedia in weekly laboratories.
- Attend lecture twice a week (there’s a significant level of absenteeism,
possibly because of redundancy with text and multimedia).
- There are apprentice teachers (undergraduate or graduate TA) helping students
in the labs and in extra office hours.
For CSc432, students:
7. What are the results of these practices? How can these practices be improved
by multimedia?
For CSc11:
- Performance on final exams and programs has improved significantly since
multimedia was introduced and refined.
- Nevertheless, many students struggle with the material and many drop the
course.
- Minorities and women struggle more than average.
- Students need to be coached to seek help.
- Apprentice teachers help students significantly.
8. What areas of difficulty are students having that multimedia could address?
How?
- Weaker students need to be encouraged to seek help from apprentice teachers
and instructors; avatars can help model and direct this interaction.
- Better students (potential majors and minors) need to be challenged to
explore the breadth topics as a way to learn more about the field; inquiry-based
learning can help here.
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?
- Both, but I don’t think slow modem bandwidth should limit what we try to
deliver.
- On-campus, students can access software installed on campus network or via
intranet;
- Off-campus students can use CD-ROM.
11. Who will work on your project? What roles will each project member have?
- For summer and fall 2000, Martin Herr, Harriet Jaffe and myself.
- Harriet is our chief graphics and user interface designer.
- Martin is our multimedia programmer.
- I am the project manager and assistant designer and programmer. Does this
sound right to you?
12. Who is the domain expert for teaching your content? How will he/she work
with your team?
- Myself. (Other instructors of OOSE could be solicited for review.)
13. What hardware and software resources will you need? What do you already
have?
- The machines in your office; Authorware, Flash, Dreamweaver, Fireworks,
Photoshop, etc.
14. When do you expect to complete a design, a prototype, a testable program?
- Design of ADT section by August 1, 2000.
- Testable prototype of ADT section by December, 2000.
- Alpha version by summer 2001