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