[comp.software-eng] Soft-Eng digest v5n16

nigam@pcsc-sun (Alok Nigam) (07/06/88)

Soft-Eng Digest             Tue,  5 Jul 88       V: Issue  16

Today's Topics:
                  Basics of Program Design (3 msgs)
                       C programming standards
                  Cynic's Guide, part 5:  Bookshelf
               Cynic's Guide, part 5:  Bookshelf(long)
                   Please post on SOFT-ENG.  Thanks
                        Project documentation
          Reporting progress on a software project (7 msgs)
 Short Course: Hierarchical Data Structures for Computer Graphics...
                          UNIX SHELL AS 4GL
               What books does a software manager need?
----------------------------------------------------------------------

Date: 20 Jun 88 15:12:01 GMT
From: pacbell!ptsfa!jmc@ames.arpa  (Jerry Carlin)
Subject: Basics of Program Design

In article <900@td2cad.intel.com> brister@td3cad.UUCP (James Brister) writes:
>What I mean is: do experienced programmers usually write flow charts,
>or pseudo code. Do they write the whole program out by hand first or
>build it up in their favorite editor?
>
>What's a good way to organize the writing process? I have all these
>great ideas running around in my head that I find difficult to get
>out without making mistakes in the task itself.

Good question! In spite of all the theory and people that say we can
reduce programming to a "factory", it is still a "craft" (in the
highest sense). There are a lot of aids, and experienced people will
use them when appropriate. It is almost never (as in <1%) a good idea
to code at the keyboard without knowing what you are doing.

On the other hand, for relatively simple programs, I'll code the comments
first, then the mainline and then fill in the functions without ever
using pseudo code/diagramming techniques etc. For complex systems,
I'll use everything under the sun.

The best way to organize the process comes with experience: some
problems need "data structuring", some "data flow", some "object-oriented"
etc. Beware of snake-oil. There is no magic elixer.

By the way, you will always make mistakes. Murphy's law lives.

I hope this helped you. (In case you're wondering, I've been

------------------------------

Date: 20 Jun 88 19:12:35 GMT
From: spar!freeman@decwrl.dec.com  (Jay Freeman)
Subject: Basics of Program Design

That's a fascinating subject; there are probably as many different answers
as there are programmers.  When I am doing a big system, I usually spend as
long a time as possible in a design phase, thinking about data structures,
algorithms and control flow at a quite abstract level, often accumulating
large stacks of notes on paper, backs of envelopes and so on.  I don't use
software tools too much for this phase, not because there aren't any (an
excellent text editor and perhaps a database tool for chasing down reference
material would be the premier items), but because I do much of this work in
places where there is no computer (in the shower, commuting, sitting in
coffee houses, lying in bed trying to get to sleep ...).

A key part of the design is figuring out how to bring the system up; I'm
sure your professors tell you that getting everything all written, then
compiled, then starting to test, is NOT the way!  It's important to define
a development path that starts with only a few pieces of the whole thing
up and running, and ends with a complete system, such that you can move
from point to point on the path by adding small modules to the system, in
such a way that each module is separately testable by itself and that the
system is immediately testable after module installation to see that the
integration worked.  If the modules are large, then each module is a project
in its own right, and has its own development path.  The overall development
path then becomes a directed graph.  The graph may even have cycles -- one
does prototypes and throws them away, and so on.

When I start to code I generally use a text editor that is sufficiently
familiar that I don't have to think about using it, enter algorithms and
data structure either in source or in in psuedocode -- structured English --
and then transmogrify them into real source in the latter case.  Depending
on the language, it is often easier to think about what's going on by
looking at psuedocode.  With higher-level languages, the psuedocode is
less often necessary.

Subject to the constraint on maintaining a testable development path, there
are several ways to think about the order in which to implement various
modules.  Top-down is nice and logical, but often leads to lots of stub
functions which are difficult to test until you have coded out to the leaves
of the call graph; then you have to do lots of careful incremental testing
as the effects of "real" functions propagate their way back to the root.
Bottom-up is useful if you are sure what primitives you are going to need;
you can then write them, test them independently, and start putting them
together.  Sometimes I develop along the path of least resistance, working
on whatever part of the system I think I best understand and am most
prepared to deal with.  That changes from day to day, of course.  A case can
be made for thinking hard about what part of the system is riskiest and
working on that part as soon as possible -- if the whole thing isn't going
to work, you want to know about it as soon as possible so you can work out
a fix or do something else.

It is often very handy to use a system that provides some kind of top-level
interpreter so that you can call and test functions interactively as you
create them.  Lisp is great for this, as are some of the interpreted Cs.
Most traditional systems and application languages fail badly on that score.
And in that context it is a useful rule of thumb never to create a data
structure without also creating a function that prints it out in a form
that humans can read; you end up inserting that function time after time
as a debugging aid.

My, how I ramble.  Hope this is useful or at least provokes thought.

------------------------------

Date: 21 Jun 88 12:33:03 GMT
From: pdn!larry@uunet.uu.net  (Larry Swift)
Subject: Basics of Program Design

In article <900@td2cad.intel.com> brister@td3cad.UUCP (James Brister) writes:
>What I mean is: do experienced programmers usually write flow charts,
>or pseudo code. Do they write the whole program out by hand first or
>build it up in their favorite editor?

Flow charts or state diagrams (I prefer the former) are better thought
organizers, but are difficult to maintain, so pseudo code usually wins out.
However, with flow charts it is difficult to forget about a path.  Does
ANYONE write code by hand, anymore?  I doubt it.

------------------------------

Date: Tue, 21 Jun 88 15:18:52 EDT
From: chuck@wooglin.scc.com (Charles Williams)
Subject: C programming standards

I am in search of C design and programming standards in the public domain.
Something of the nature of the infamous "Green Book" for Ada. Can anybody
help?

------------------------------

Date: Fri, 24 Jun 88 00:03:57 edt
From: shull@scrolls.wharton.upenn.edu (Christopher E. Shull)
Subject: Cynic's Guide, part 5:  Bookshelf

I have a couple of books to add to the Soft-Eng bookshelf:

James Gleick, !Chaos: Making a New Science!, Viking Penguin 1987,
     ISBN: 0-670-81178-5

Edward R. Tufte, !The Visual Display of Quantitative Information!,
     1983, Graphics Press, Box 430, Cheshire, Connecticut, 06410
     no ISBN on my copy.

------------------------------

Date: Sun, 05 Jun 88 19:27:43 PDT
From: PAAAAAR%CALSTATE.BITNET@CUNYVM.CUNY.EDU <Dick Botting>
Subject: Cynic's Guide, part 5:  Bookshelf(long)

Last year, with much help from SF-Lovers I put together a list of good
bad and indifferent non-technical/fictional books about computers.
It has about 40 items and probably has MORE of this type of thing
than any Software Engineer would want, but if you see one of these
going for 5cents in a garage sale...

Barth, John     Giles Goatboy   fantasy R Rated humor(WESCAC)
Baum, Frank L   The OZ Books    fantasy sf juvenile (Tic-toc)
Bierce, Ambrose Maxon's Master  horror short story
Bischoff, David Wargames        sf juvenile
Brunner, John   The Shockwave Rider     sf(networked society)
Caidin, Martin  The God Machine         sf
Cameron, Lou    Cybernia        sf(DP complex out of control)
Card, Orson Scott       ENDER'S GAME
Card, Orson Scott       SPEAKER FOR THE DEAD
Chalker, Jack   Quest for the Well World
Clark, Arthur C 2001    sf film(HAL 9000)
Clark, Arthur C 2010    sf film(SAL)
Creighton, Michael      The Andromeda Strain    sf thriller & Film
Deighton, Len   The Billion Dollar Brain        spy thriller
Ellison, Harlan I have no mouth, and I must scream      sf horror short
Evans, Christopher      The Micro Millenium     non-fiction BBC TV Series
Gawron, Jean Mark       Algorithm       sf (weird)
Gerrold,  David         When Harley Was One     sf(HARLEY)
Gibson, William Count Zero      sf
Gibson, William Neuromancer     sf
Heinlein, Robert        The Moon is a Harsh Mistress    sf (Mike)
Heinlein, Robert A      Number of the Beast     sf (Gay,Tic-toc, Dora...)
Heinlein, Robert A      The Cat Who Walks Through Walls sf(Mike,...)
Heinlein, Robert A      TIME ENOUGH FOR LOVE    sf (Dora)
Herbert, Frank  Destination Void        sf (SHIP)
Hogan, James P. <Anything>      sf author worked for computer Cos.
Hoyle, Fred     The Black Cloud sf
Hoyle, Fred     A for Andromeda,
Jackson, Bruce  The Programmer  ??
Kidder, Tracy   The Soul of a New Machine.      nonfiction dramatised
Ledgard, McQuaid et al  From Baker St. to Binary        Fictional Text Social
Milan, Victor   The Cybernetic Samurai  sf(TOKOGAYA??)
Nelson, Ted     Computer Lib    non-fiction (Tic Toc, PDP8 etc)
Nelson, Ted     Dream Machines  non-fiction (graphics, networks & fun)
Nelson, Ted     Computer Lib-second Edn non-fiction (less fun)
Pohl, Fred      The HeeChee Series:    sf
Quinn, Simon    The Human Factor        Thriller(terrorism )
Robinett, Stephen       The Man Responsible     sf
Ryan, Thomas J. The Adolesence of P-1   sf? thriller(IBM 360 teleprocessing!)
Varley, John    Press Enter     sf(short story)
Vinge, Vernor   True Names      sf(Networks, bbs, role playing games)

------------------------------

Date: 8 Jun 88 17:46:00 EDT
From: Nahum (N.) Goldmann <ACOUST%BNR.BITNET@CORNELLC.CCS.CORNELL.EDU>
Subject: Object Oriented Programming

Everybody in Canada who is interested in the Object-Oriented Programming
(OOP) and/or in the Behavioral Design Research as related to the
development of human-machine interfaces (however remotely connected to
these subjects) - please reply to my e-mail address.  The long-term
objective - organization of a corresponding Canadian bulletin board.

------------------------------

Date: 15 Jun 88 20:21:17 GMT
From: tikal!sigma!uw-nsr!john@beaver.cs.washington.edu  (John Sambrook)
Subject: Project documentation

My research group is interested in improving its software development
methodologies.  One area of concern to our group, and I imagine to other
groups as well, concerns project documentation.  I would be interested in
learning what types of documentation other groups produce when executing
software development projects.

In particular, I am more interested in document types and content, and
less interested in style issues.  Of particular interest would be general
outlines of specification documents, design documentation, statement of
work, test plans, etc.  It would be great if we could establish a
working repository of such information.  TeX and/or LaTeX sources are
also of interest to me personally, but perhaps not to other sites.

I will point out that the IEEE publishes some standards in this area.
We are ordering copies of these standards, but I thought I would ask for
some net-input as well.

------------------------------

Date: 13 Jun 88 14:14:35 GMT
From: mailrus!caen.engin.umich.edu!conliffe@husc6.harvard.edu  (Darryl C. Conliffe)
Subject: Reporting progress on a software project

I would like suggestions and/or reports on how others accomplish
the following:  having convinced management that an iterative
approach to a software design project is appropriate, how do you
report progress on same?  Since you are not proceding linearly
through a series of measurable milestones, what *DO* you use to
indicate that the development is "on schedule"?

This seems to be a corollary of the question "why aren't you
coding yet?", but it also represents management's valid need to know
if the appropriate resources are allocated to a job and that the
plan of attack is correct.

Finally, when employing Structured Analysis and while still working
out the layout and definition of your "bubbles", how do you project
how long it will take?  (This is a new system and the design tools
and approach have not been used before on ANY project, no no "history"
is available.)

------------------------------

Date: 14 Jun 88 20:07:37 GMT
From: agate!garnet.berkeley.edu!csm@presto.ig.com
Subject: Reporting progress on a software project

conliffe@caen.engin.umich.edu (Darryl C. Conliffe) writes:
>the following:  having convinced management that an iterative
>approach to a software design project is appropriate, how do you
>report progress on same?
>...how do you project how long it will take?
> Darryl C. Conliffe  conliffe@caen.engin.umich.edu  (313) 721-6069

If management cannot judge from the prototype itself how you are
progressing, they sure as hell are not in any position to judge
from a (possibly fudged) PERT chart.  Arrange periodic hands-on
demonstrations (but no more frequently than every two weeks).

You must have the following guarantees from the powers that be:
   1) Hardware and Software for the project will be delivered
to you on schedule or the project will be extended on a day
for day basis.  If you are not responsible for procurement
and/or installation make sure that delays in this process are
documented and added linearly to expected delivery date.
   2) End-user time will be available.  You must be able to get
personnel when you need them.  Remember, verbal assurances from a
middle manager are going to be forgotten when you say you need
two secretaries and a supervisor this Friday, all day.  The
middle manager has someone checking his/her department's progress, too.

Ok, how long will it take?
   For each manager involved in initial meetings add one month.
   For each manager who says "data flow analysis" add another month.
   For each unique end-user type add one month.
   For each unknown software package to be employed add two months.
   For each unknown hardware device add two months.
   For each 100 miles between developer and installation add one month.
   For each type of communication channel add one month.
   If an IBM mainframe shop is involved and you are working on a non-IBM
      system add 6 months.
   If an IBM mainframe shop is involved and you are working on an IBM
      system add 9 months.
Round up to the nearest half-year.

                --Brad Sherman

By the way, ALL software projects are done by iterative prototyping.
Some companies call their prototypes "releases", that's all.

------------------------------

Date: 15 Jun 88 15:08:52 GMT
From: wor-mein!pete@uunet.uu.net  (Pete Turner)
Subject: Reporting progress on a software project

csm@garnet.berkeley.edu writes:
>You must have the following guarantees from the powers that be:
>   1) Hardware and Software for the project will be delivered
>to you on schedule or the project will be extended on a day
>for day basis.  If you are not responsible for procurement
>and/or installation make sure that delays in this process are
>documented and added linearly to expected delivery date.

Has any engineer out there EVER been able to get "the powers that be" to
sign up to slip a project schedule in this fashion?

This sounds completely unrealistic to me, even if it does make sense.

------------------------------

Date: 16 Jun 88 20:00:55 GMT
From: helios.ee.lbl.gov!pasteur!agate!garnet.berkeley.edu!csm@tis.llnl.gov
Subject: Reporting progress on a software project

In article <1377@wor-mein.UUCP> pete@wor-mein.UUCP (Pete Turner) writes:
>Has any engineer out there EVER been able to get "the powers that be" to
>sign up to slip a project schedule in this fashion?
>This sounds completely unrealistic to me, even if it does make sense.

   If you can point to a history of delivering good products on-time
(it is possible), you can begin to make the rules.  If you are in the
position of setting schedules for project delivery, you have to decide
whether to tell the people with the $$$ the truth or what they want to
hear.  I was predicating my statements on the former, although I admit
the latter will get you more first-time business.
   One thing we should all learn about negotiations from the Reagan DoD
budgets is that if you need 50 demand 150. Then howl like a banshee as
you grudgingly settle for 133.

------------------------------

Date: 18 Jun 88 12:45:09 GMT
From: attcan!utzoo!yunexus!geac!david@uunet.uu.net  (David Haynes)
Subject: Reporting progress on a software project

In article <917@blue.engin.umich.edu> conliffe@caen.engin.umich.edu (Darryl C. Conliffe) writes:
>I would like suggestions and/or reports on how others accomplish
>the following:  having convinced management that an iterative
>approach to a software design project is appropriate, how do you
>report progress on same?

One tool I have used from time-to-time is a system I call todo.
When a pert chart has been made for the project, the tasks are then
fired off to the appropriate personnel as todo items. The person
receiving the todo item has the option of accepting, refusing or
delegating the item. If the item is accepted, the acceptor places
a personal priority on the item and the initiator of the message
is notified. If the message is delegated, the new person has the
option for accepting, refusing or delegating. However, since the
todo item has been delegated, the originator is also notified of
the delegation.

Now, when an item is pending (or almost pending) the person who
accepted the item is notified of its prescence. As the task is
completed, the acceptor releases the todo item, which is date
stamped and returned to the originator of the item. Tracking
projects then becomes a much easier task.

All this was implemented using unix mail and a special todo daemon.

An enhancement I would like to add at some point would allow
for percentage complete and problem tracking, but, it isn't
what I get paid for, so it may take some time.

------------------------------

Date: 19 Jun 88 12:31:23 GMT
From: attcan!utzoo!yunexus!geac!david@uunet.uu.net  (David Haynes)
Subject: Reporting progress on a software project

In article <1377@wor-mein.UUCP> pete@wor-mein.UUCP (Pete Turner) writes:
>In article <10941@agate.BERKELEY.EDU> csm@garnet.berkeley.edu writes:
>>You must have the following guarantees from the powers that be:
>>   1) Hardware and Software for the project will be delivered
>>to you on schedule or the project will be extended on a day
>>for day basis.  If you are not responsible for procurement
>>and/or installation make sure that delays in this process are
>>documented and added linearly to expected delivery date.
>
>Has any engineer out there EVER been able to get "the powers that be" to
>sign up to slip a project schedule in this fashion?
>
>This sounds completely unrealistic to me, even if it does make sense.
>
>
>Pete


There is an old tried and true method for attaining the correct
response (on your part) from the powers that be. It goes like this:

                M E M O R A N D U M

        To: Powers That Be
        From: Mindless Worker Lackie Drone

        Subject: Slippage in Schedule

        Dear PTB:

                Since we have not yet recieved our Frobotz 1200
        which is required at this time to continue work according
        to the Project Plan dated 19th June, we are now faced with
        a potential slippage in the schedule provided at that date.

#ifdef KNOW_WHEN_FROBOTZ_IS_DUE

                Since the Frobotz is now estimated to arrive in
        three weeks, please adjust the schedule provided in the
        Project Plan to reflect a new completion date of xxth
        May 19xx. We are currently looking at re-scheduling some
        less other work to fill in this unexpected gap in our
        planned schedule.

#else

                Since we have received no word on when the Frobotz
        is to arrive, we appear to have two options on how to
        proceed:

                1) If we can determine the date of expected arrival
                   of the Frobotz 1200 we will attempt to re-schedule
                   for its arrival and will inform you of the new
                   scheduled completion date based upon this new
                   information.

                2) We can re-work the schedule to push the requirement
                   for the Frobotz further down the schedule. We estimate
                   that this rescheduling effort will take one month
                   and involve a series of meetings with other managers
                   in order to co-ordinate our new delivery schedules
                   with thier personnel and resources. Naturally, we
                   will automatically incur a slippage of one month
                   for this re-planning effort.

#endif

In the first ifdef, you are practicing an ancient and honorable business
tradition of covering your ass. You have informed management that a slippage
is occuring and you have said you are trying your best, and you have
made the manager both aware of the problem and responsible for its
solution.

In the second ifdef, you are making the manager make a choice -- what they
get paid for. Either s/he has to find out the expected arrival date of
the Frobotz *and* accept that the project will slip *or* s/he will have
to fund a re-planning effort with the fact that the project is slipping
being broadcast throughout the company as you have the "meetings with
the managers of other departments". This is (potentially) of great
embarassment to the PTB and is to be avoided at all costs. Notice
that if the second plan is adopted, you get some time to determine
what affect the non-arrival of the Frobotz will have on the project.

This works for some managers -- others just refuse to make the decision.
So what? You have done your corporate duty by pointing out the slippage
and may now go back to trying to build the project.

------------------------------

Date: 22 Jun 88 15:50:50 GMT
From: wor-mein!pete@uunet.uu.net  (Pete Turner)
Subject: Reporting progress on a software project

>There is an old tried and true method for attaining the correct
>response (on your part) from the powers that be. It goes like this:
>
>               M E M O R A N D U M

I reiterate: This sounds completely unrealistic to me, even if it does make
sense.

If you work for Teeny Tiny Products, Inc. and they are under contract to ship
10 Profit Making Widgets by next month then any suggestion that the schedule
must slip will be either ignored or thrown right back in the face of the
suggestee, even if the Frobotz hasn't shown up yet.

Fortunately, such situations have not arisen at my current place of employment.
However, they were quite the norm at my previous jobs (hence their
previousness).

The usual solution was to pressure all developers to work 80+ hour weeks at
no extra pay and then refuse to discuss comp time because the next project
schedule can't be slipped (hence their previousness).

------------------------------

Date: 10 Jun 88 21:07:05 GMT
From: agate!saturn!saturn.ucsc.edu!chucko@ucbvax.berkeley.edu  (Chuck Stein)
Subject: Short Course: Hierarchical Data Structures for Computer Graphics...

                The University of California
                     Eighteenth Annual
               INSTITUTE IN COMPUTER SCIENCE
                    presents courses in:

   * Scientific Visualization    * Fault Tolerant Computing
   * Parallel Computation        * Image Engineering
   * Data Compression            * Machine Learning
                             at
                   Techmart, Santa Clara
                            and
                  on campus in Santa Cruz

Following is a course description for:
-------------------------------------------------------------------------
         Hierarchical Data Structures for Computer Graphics,
        Image Processing, and Geographic Information Systems
                         September 14-16

Instructor:  HANAN SAMET
X418 Computer Engineering (2)

The objective of this seminar is to introduce and understand the use of
the current and emerging developments in hierarchical data structures
for multi-dimensional data applications in computer graphics, image
processing, and geographic information systems.  Attendees will gain
an appreciation for the simplicity of these methods, the differences
between them, and how to evaluate their appropriateness for their
applications.

Who Should Attend
This course is designed to introduce a wide range of professionals to
the use of hierarchical data structures in the handling of spatial data.
Engineers, mathematicians, analysts, programmers, cartographers, and
technical managers will all benefit by learning about how to use these
new methods in applications in areas that include computer graphics,
image processing, solid modeling, and geographic information systems.

Description
This three day seminar provides a comprehensive introduction to the
use of hierarchical data structures for handling multidimensional data.
It consists of three parts.  In the first part, hierarchical data structures
such as the quadtree are defined and motivated in the context of
representing two-dimensional region data.  You will be shown the
basics of manipulating a quadtree and how it is interchangeable with
more traditional region representations.  Operations that find use in
computer graphics applications such as the computation of geometric
properties, overlay translation, and image approximation are
discussed in greater detail.  Hierarchical representations are
compared to other related data structures by examining their time and
space requirements.
The second part stresses hierarchical representations of points, lines,
rectangles, and three-dimensional data.  The representation of point
data is important in applications that require searching and finds use
in dealing with large off-line databases found in geographic
information systems, computer graphics, image processing, and
numerous other applications that involve spatial databases.  For line
data the representations are evaluated in the context of preserving
accuracy.  For rectangle data the evaluation is in the context of
searching and set operations.  Rectangle data arises in the
approximation of data of a geographic nature and in VLSI applications.
Uses of the octree (a quadtree in three dimensions) are also
reviewed.
The third part examines an existing geographic information system
which employs hierarchical data structures to represent point, line, and
region data in a consistent manner.

Prerequisite:  A familiarity with computer terminology and some
programming experience.

Seminar Outline
Part I:  Two-Dimensional Region Data
 l.  Introduction
     *Sample application
     *Historical background
     *Why use quadtrees instead of hexagons or other tessellations
2.  Alternative Quadtree Implementations
      *Explicit pointers
      *Linear quadtrees
      *Tree traversals
      *Bintrees
3.  Manipulating Quadtrees Using Neighbor Finding Methods
     *Alternatives
     *Horizontal and vertical neighbors
     *Diagonal neighbors
     * Ropes and nets
     *Expected execution costs
4.  Interchangeability  with Other Representations
     *Building quadtrees from binary arrays
     *Building quadtrees from boundary codes
     *Converting a quadtree to a boundary code
     *Building quadtrees from rasters or run representations
     *Converting a quadtree to a run representation
5.  Geometric Operations
     *Perimeter
     *Connected component labeling
     *Euler number or Genus
     *Linear quadtree methods
6.  Transformations and Computer Graphics
      *Set operations
      *Areas, centroids, moments
      *Translation
      *Rotation
      *Windowing
7.   Quadtree Approximation Methods
      *Pyramid-based
      *Compression
      *Transmission
      *Successive Approximation
8.   Skeletons
       *Distance
       *Quadtree skeletons
       *Quadtree medial axis transforms (QMAT)
       *Construction of a quadtree from a QMAT
9.   Space Requirements
      *Storage
      *Optimal quadtrees

Part II: Points, Lines, Rectangles, and Volumes
l.   Multidimensional Point Data
     *Non-hierarchical representations
     *Grid method
     *Point quadtrees
     *K-d trees
     *MX quadtrees
     *PR quadtrees
     *Bit interleaving
     *EXCELL
     *Grid File
     *Range searching
2.  Line Data
     *Boundary codes
     *Vectors
     *Strip trees
     *Binary Searchable Polygonal Representation
     *Edge quadtrees
     *Line quadtrees
     *PM quadtrees
3.  Rectangle Data
     *Plane-sweep methods
     *Quad-CIF trees
     *Grid File
     *R-trees
4.  Three-Dimensional Data
     *Arrays
     *Boundary methods
     *Constructive solid geometry
     *Octrees

Part III:  Quadtree-Based Geographic Information Systems
l.   Example System
     *Experimental results
     *Query language

Text:  Notes and copies of the instructor's transparencies will be
          provided.  Participants will be provided with the survey
          "The Quadtree and Related Hierarchical Data Structures" by
            H. Samet.

Instructor:  HANAN SAMET is a Professor of Computer Science at the
University of Maryland, College Park.

Fee:  Credit, $875 (EDP C6031)

Dates:  Three Days, Wed.-Fri., Sept. 14-16, 9 a.m.-5 p.m.

Place:  Techmart, 5201 Great America Pkwy., Santa Clara

-----------------------------------------------------------------------

RESERVATIONS:
Enrollment in these courses is limited.  If you wish to attend a course
and have not pre-registered, please call (408) 429-4535 to insure that
space is still available and to reserve a place.

DISCOUNTS:
Corporate, faculty, IEEE member, and graduate student discounts and
fellowships are available.  Please call Karin Poklen at (408) 429-4535
for more information.

COORDINATOR:
Ronald L. Smith, Institute in Computer Science, (408) 429-2386.

FOR FURTHER INFORMATION:
Please write Institute in Computer Science, University of California
Extension, Santa Cruz, CA 95064, or phone Karin Poklen at (408) 429-
4535.  You may also enroll by phone by calling (408) 429-4535.  A
packet of information on transportation and accommodations will be sent
to you upon receipt of your enrollment.

------------------------------

Date: 14 Jun 88 20:39:40 GMT
From: pacbell!pbhyf!rsp@ames.arpa  (Steve Price)
Subject: UNIX SHELL AS 4GL

Without permission, for your edification & entertainment I post this quotation:

    UNIX Shell is the Best Fourth Generation Programming Language

    It is the UNIX shell that makes it possible to do applications in a small
    fraction of the code and time it takes in third generation languages.  In
    the shell you process whole files at a time, instead of only a line at a
    time.  And, a line of code in the UNIX shell is one or more programs,
    which do more than pages of instructions in a 3GL.  Applications can be
    developed in hours and days, rather than months and years with traditional
    systems.  Most of the other 4GLs available today look more like COBOL or
    RPG, the most tedious of the third generation lanaguages.

"UNIX Relational Database Management:  Application Development in the UNIX
 Environment" by Rod Manis, Evan Schaffer, and Robert Jorgensen.  Prentice
 Hall Software Series.  Brian Kerrighan, Advisor.  1988.

------------------------------

Date: 9-JUN-88  2:16p
From: dan@WILMA.BBN.COM
Subject: What books does a software manager need?

I'm not sure I'd consider myself a "manager type", but here
are two books I'd recommend for software managers:

    CRUNCH MODE: Building Effective Systems on a Tight Schedule
        John Boddie, Yourdon Press Computing Series

This slim book describes all the essentials for doing a whole project
in "crunch mode".  Very useful, even if you don't spend all your time
that way.

    Managing for Excellence
        David L. Bradford and Allan R. Cohen
        (don't have publisher here)

Perhaps not really a reference, but it was this book that convinced me
that supervision of other programmers might actually be as worthwhile
an activity as programming itself.  Maybe even more worthwhile, if you
do it well.

------------------------------

End of Soft-Eng Digest
******************************