saturn.cs.uml.edu(267)>
cat curriculumManifesto_rjl.txt
From
owner-sigcse-members@LISTSERV.ACM.ORG
Mon Jan 17 02:28:37 2005
Sender: SIGCSE Member Forum <SIGCSE-MEMBERS@LISTSERV.ACM.ORG>
From: Bob Lechner <lechner@CS.UML.EDU>
Subject: Re: CC 2004:
Computing disciplines
To:
SIGCSE-MEMBERS@LISTSERV.ACM.ORG
On Jan 14, 2005 04:46:55 PM
Lillian Cassel said:
> Do note that the
proposed changes in the ABET/CAC criteria are currently
> open for comment. It is very reasonable to raise these issues
in that
> forum so that the needs
of the community can be reflected in the
> decisions made.
I tried to add this LONG
comment to the Overview_Draft.pdf
Unfortunately it overflowed
the SQL string buffer
and was rejected :-( So I am
sending it to SIGCSE instead:
Please pardon me for
extending this debate with one item of disruptive technology. (
(Clearly my view is based on
hindsight and bias - see full disclosure below. :-).
[Bias disclosure: I am a
former systems engineer (MSEE) turned modeler
(PhD/AppliedMath)
with over 20 years in computer-based systems R and D
and over 25 years teaching
software engineering and object-oriented design.
http://www.acm.org/education/Overview_Draft_11-22-04.pdf
(Section 4.4.2.
Organizational structure) refers to filter vs.
funnel approaches; clearly I
advocate the funnel approach below.]
I believe one important
aspect is missing from the curriculum taught to generations of CS
undergraduates: Most curricula do not expose students to enough critical mass
during software design to appreciate the qualitative distinction between
component-view and system view of software development. This distinction is not unexpected since it applies to all branches of engineering. The distinction is better handled when both views are taught within an engineering
department. The systems view is more critical for systems that cross
disciplinary boundaries, now that the 'glue' is likely to be software-based components. In order to convey
this appreciation it is necessary IMHO to expose all students to an
inter-disciplinary common core of modeling abstractions. This has a logical
progression from discrete math theory toward its applications to model
description through code generation to model verification for computerized
information systems.
What is still missing (except
in some combined EE&CS departments)
is a curriculum that provides a
legacy of discrete information and control modeling concepts, common to most, if
not all, types of software system design problems. These models are of two
basic types: static information (relation) models and dynamic behavioral
(control) models.
There is no reason IMHO why
these concepts should not be introduced
to every
undergraduate engineering,
science and business system major, preferably in common courses. Surely these
are fundamental concepts and can be taught at differing levels of
sophistication to suit any IT or CS or Engineering curriculum. Information modeling concepts are fundamental
concepts: see "Design Patterns" (Gamma et al) for software architecture,
"Data Model Patterns" (David Hay) for business applications, and
similar models in industrial engineering and computer-aided design. Algorithms courses can also benefit from a
common modeling language for data structures; this approach can progress to a
level appropriate for operations
research, database, compiler and OS
applications.
Unfortunately, large systems
decompose hierarchically into multi-level layered models of both of these two
types, as reflected in their inheritance taxonomies, component aggregation
relationships, and nested behavioral descriptions. More sophisticated models
for distributed systems include collaboration models whose control-state-based
object life cycles are linked by asynchronous event-driven interactions; IMHO as these models mature, they will also
migrate from graduate level topics into the CS and engineering undergraduate
curriculum.
Half a century ago (before CS
departments existed :-) I was exposed to
a Sophomore Engineering Analysis course pair which was part of the common
engineering core curriculum introduced at Yale and then at Carnegie Tech. Its sections combined students from all
Engineering departments and it applied the same differential equation models to
all types of linear system problems. It
obviously helped produce some very good system engineers, among other things.
Now it is time to define a
new common undergraduate core course(s) combining students from science and
business as well as engineering schools.
Analogous to Watts Humphrey's Software Process courses, modeling courses
could lead (some) students to appreciate their own respective talents and the
need to bridge inter-disciplinary communication gaps to collaborate in building
large component-based systems. It is to
our shame that such a course is commonly offered to advanced EE or CS students (usually as object-oriented
modeling and design) but is not yet
required for most technical and business undergraduates (or at least the
system-oriented ones) because these modeling concepts will help them
communicate effectively within and among
application domains.
Bob Lechner,
Prof. Emeritus,
Computer Science Dept., UMass
Lowell
lechner@cs.uml./edu, //www.cs.uml.edu/~lechner