bluuebunny/crossref_metadata_2025 huggingface dataset:
On classifying recursive algorithms
Authors: Leinbach L. Carl , Wijesinha Alex L.
Published: July 2004

A scheme is presented for classifying recursive problems based upon an analysis of their parameters. Several well known recursive algorithms are then classified according to this scheme. The classification is used to determine if strategies for effecting significant savings in computation time of a recursive algorithm can be developed. Such strategies and the results of applying them are also discussed.
A component part for a performance course
Authors: Shub Charles M.
Published: July 2004

The maturation of Computer System Performance Courses is briefly described giving excerpts from the two major ACM curriculum documents and providing a list of possible texts for such a course. It is then proposed that a course in performance evaluation contain a component on the role of performance work in the product life cycle. A prototype model for this is described in detail. The description includes the need for such work, who accomplishes it, what sort of interactions are necessary and appropriate, and what steps comprise integrating performance work into a product life cycle.
Counting nodes in binary trees
Authors: Khuri Sami
Published: July 2004

This paper describes an original method for introducing linear recurrence relations. Boolean expressions are represented by binary trees and the counting of the internal nodes of these trees yield linear recurrence relations. The method allows the students to create their own family of Boolean expressions, to draw the corresponding binary trees, to deduce the recurrence relation representing the number of nodes in the trees, and finally, to solve and check the solutions of these relations.
Design strategies for a computer-based instruction system
Authors: Christensen Larry C. , Stokes Gordon , Hays Bill
Published: July 2004

In February, 1984, the Computer Science Department at Brigham Young University began working on a project that would automate the delivery of a beginning programming class. This project known as THE ELROND PROJECT, was funded by the university with the expectation that the instructional delivery costs and the need for additional faculty for this course could be reduced.

This paper describes the system design and principles that were used and presents strategies for creating computer automated courseware.
A project for operating systems simulation
Authors: Shay William A.
Published: July 2004

The purpose of this paper is to describe a project in a course on Operating Systems. The project is designed to reinforce the concepts of memory management, process management and processor management that are discussed in most Operating Systems texts. Each student is to design and write a program that will simulate these major components of an operating system. This project is presented to the student in 3 phases and is written in Pascal although it can be adapted to other languages. The first phase requires the design of memory management routines for an operating system which schedules jobs through the use of a combined round robin/FIFO philosophy. The major concerns are the allocation and deallocation of memory pages as programs are submitted to the system and are removed from the system as they finish. The second phase takes into account various scheduling techniques, I/O requests, and swapping. Having already worked out the bugs in the memory management routines, the student now must be concerned with the management of the jobs that pass through the system. The third and last phase is the implementation of job synchronization. Several events are described, any of which may be the object of a WAIT or SIGNAL directive issued by an executing program. The project must synchronize jobs that issue a WAIT and SIGNAL directive on the same event.

The project is part of a 3 credit course in Operating Systems taught to Juniors and Seniors. Successful completion of the project includes not only the correct implementation of a well documented and logically designed operating system, but also a comparative study, within each phase, of the efficiency and effectiveness of the operating system as a variety of parameters, which describe the environment, are changed. Observations are submitted in a report that is required with each phase.
Increasing students security awareness: article II. What C.S. graduates don`t learn about security concepts and ethical standards
Authors: Cook Janet M.
Published: July 2004

Students think that security is crime prevention, someone else's business. In fact, security is error prevention and is everybody's business.

At government and industrial conferences employers complain that C.S. and C.I.S. graduates

1) don't see security as a significant factor in getting their jobs done, and

2) don't have a clear conception of what constitutes ethical professional behavior.

This article, demonstrates ways to integrate into existing courses activities that promote students' awareness of professional responsibilities to protect the integrity of the systems and data they work with, and of accepted professional ethical standards.
A project-based course in compiler construction
Authors: Sathi Harbans L.
Published: July 2004

The paper describes the experience gained by teaching a project-based course in Compiler Construction. The course is a blend of theoretical concepts and practical considerations that go into the development of a compiler. A project in compiler writing is an important component of this course. ASP, a subset of standard PASCAL, is used as the source language. The compiler for ASP is to be developed in various phases: character manipulator, lexical analyzer, syntax analyzer, semantic analyzer, and code generator. Recursive descent method is used to parse the various syntactic entities. The code generator emits code for a hypothetical machine called AOC (ALGOL Object Code). A simulator executes this code.
Predicting student performance in a beginning computer science class
Authors: Werth Laurie Honour
Published: July 2004

This study investigated the relationship between the student's grade in a beginning computer science course and their sex, age, high school and college academic performance, number of mathematics courses, and work experience. Standard measures of cognitive development, cognitive style, and personality factors were also given to 58 students in three sections of the beginning Pascal programming class.

Significant relationships were found between the letter grade and the students' college grades, the number of hours worked and the number of high school mathematics classes. Both the Group Embedded Figures Test (GEFT) and the measure of Piagetian intellectual development stages were also significantly correlated with grade in the course. There was no relationship between grade and the personality type, as measured by the Myers-Briggs Type Indicator (MBTI); however, an interesting and distinctive personality profile was evident.
The influence of color on program readability and comprehensibility
Authors: Rambally Gerard K.
Published: July 2004

Readability and comprehensibility are among the most important attributes of a program. A program that is easy to read and understand is easier to test, maintain, and modify. Many factors affect program readability and comprehensibility, including variable names, internal documentation, modularity, and so on. This paper investigates the influence of color on program readability and comprehension. Three color schemes were used: Color-scheme-A used different colors to indicate the different blocks in a program; Color-scheme-B used different colors to identify the various statements function in the program; and the third color scheme was the usual black-and-white programs. This study showed that subjects who used programs with Color-scheme-B had the highest mean score for program comprehension, followed by those who used Color-scheme-A. Subjects who used black-and-white programs scored the lowest on the comprehension quiz.
Retraining computing faculty: a perspective
Authors: Mitchell William
Published: July 2004

The author has been actively involved in the retraining of college faculty to teach computing science for six years. He is presently recruiting a fifth class for a two-summer masters degree program which addresses this goal, and is preparing for a seventh offering of a week-long, non-credit summer institute. This paper reflects upon the experience of having worked first-hand with nearly 200 faculty members from a great variety of disciplines. It also incorporates interchanges with directors of other formal retraining efforts around the country, and the comments made by some of the nearly 500 faculty who have participated in formal summer retraining programs. From these sources the author tries to clarify the phenomena of retraining and suggests some areas which merit further study.
Anatomy of an introductory computer science course
Authors: Henderson Peter B.
Published: July 2004

An introductory computer science course is frequently the most difficult course in the curriculum to teach. Computer science educators must stay abreast of rapidly changing trends, text books, technology and teaching techniques. This paper provides an overview and perspective of introductory computer science courses, surveys some trends, and presents new alternative approaches regarding organization, foundations and material. It is based on the premise that the introductory course should create strong foundations upon which students can build, and that the curriculum should teach students to build software systems which people use and maintain, not just toy computer programs. The paper presents personal views and insights, motivates underlying concepts, and provides many useful suggestions which have been successfully employed in such introductory courses.
Using spreadsheets to teach computer science
Authors: Shinners-Kennedy Dermot
Published: July 2004

This paper describes a research project which commenced recently at the NIHE, L. The project investigates the use of micro-computer software to teach aspects of computer science. Spreadsheets are the subject of this report. The potential of spreadsheet systems for teaching assembler programming is considered. We outline a model for enabling students to acquire fundamental computer science concepts using a simplistic “language machine”. The language machine is embedded in a programmable spreadsheet package which acts as the host language. The aim of the project is to explore the possibility of creating interactive, robust and instructional computer models using some of the more powerful spreadsheet packages in an imaginative fashion.
The author-mode interface for the ASAG assignment generating system
Authors: Weiner Leonard H. , Allaire William P.
Published: July 2004

ASAG, the
A
ssignment
S
cheduler,
A
nalyzer and
G
enerator [2], was first developed in 1968. Its purpose was to help fill the gap between computer grading systems and large scale, frame-oriented CAI systems. In particular, it was designed to generate assignments at a level and pace appropriate for each student and, at the same time, to automate assignment checking and record keeping in a mass education environment.

The original system design met these goals, but the manner of implementation imposed some unexpected and undesirable restrictions on both the students and instructors. In order to ease these restrictions, and lay the groundwork for implementing ASAG in other courses, two major revisions have recently been made to the system. The purpose of this paper is to introduce and describe these new ASAG features.
A Software oriented Computer Science program
Authors: Pitts Gerald N. , Bateman Barry
Published: July 2004

Many Computer Science programs are mainly concerned with hardware and software theory. Computer Software especially is studied with very little application.

American Technological University has attempted to breach the gap in the area of qualified software computer science graduates by tailoring the courses to allow students to study or write, and/or modify operating systems. This is accomplished by selected course work and “hands on” use of the 370/145. Junior, senior and graduate level students are allowed to sign up for blocks of time between 10:00 p.m. and 6:00 a.m. Monday through Friday when available and on most week-ends. A description of courses, the philosophy of teaching, the computer facilities, and a critique of our former students is presented.
From teaching-machine to automatic tutor
Authors: Nievergelt Jurg , Wilcox Thomas R.
Published: July 2004

A steadily increasing fraction of human activities involves interacting with machines, and this interaction will become more sophisticated as more and more machines in our environment are controlled by computers. As the degree of sophistication of this interaction increases, its quality becomes more important. This is particularly true in computer-based education where a student is expected to learn something by interacting with a machine for an extended period of time.

Quality of interaction has various aspects. The most obvious is the physical properties of the man-machine interface: to what extent does the machine allow the human senses of sight, sound, touch to come into play? Early teaching machines were at best suitable for rote training tasks in restricted applications. Only recently have computer terminals been developed whose physical properties make this interface suitable for computer-based education in a wide variety of subject areas. All indications are that rapid progress will continue, particularly in the important aspect of reduced costs.
A systems programming course using the HMS 5050, a counterfeit, hands-on, large-scale computer system
Authors: Weinberg Bernhard , Weiner Leonard H.
Published: July 2004

Computer Science students at MSU design and implement multiprogramming monitors for a simulated computer system which is an amalgamation of Control Data 3000- and 6000-series machines. In this paper we describe this computer, the systems programming course in which it is used, and the students' project. We also report briefly on student performance.
CAI tutorial method of teaching Thermodynamics at U.S. Naval Academy.
Authors: Wu Chih
Published: July 2004

A computer-assisted instruction in Thermodynamics developed during the past two years at the U. S. Naval Academy has been used for teaching a number of midshipmen individually . An IBM 1500 instructional system is used in which each midshipman is provided with a terminal, with a cathode ray tube (complete with a typewriter keyboard, and a light pen), and an image projector. The instructional material, optional supplementary instruction, questions and tests are presented to each midshipman individually, enabling him to proceed at his own demand and pace. Detailed records of each section of material are stored in the computer and will enable the instructors to review each midshipman's progress through the course.

The content of the course, the background of the midshipmen, as well as the equipment which the system comprises in use is described. The overall logic and approach to the course is discussed. The method of development of programmed material and a study of its effectiveness toward the stated goals along with recommendations, are also included.
Hardware systems in the core curriculum of a computer science ph.d. program
Authors: Clark Douglas
Published: July 2004

This syllabus is organized around the view of digital computer systems presented in chapter 1 of Bell and Newell the major divisions of the syllabus correspond to the major conceptual levels of design and description of digital systems, and the divisions (levels) appear in order of increasing complexity. Two things need to be said about this organization.

First, while this conceptual structure of computer systems according to levels of complexity has an intrinsic formal appeal, many if not most of the references cited at any given level or sublevel of the structure do not confine themselves exclusively to material at that level. References occasionally reach up to borrow concepts from a higher level of complexity, and of course they frequently reach down to provide lower-level underpinnings for the systems they describe.
Computer architecture in U. S. and Canadian electrical engineering departments
Authors: Sloan M. E.
Published: July 2004

This paper traces the history of computer architecture courses in U. S. electrical engineering departments. Data from the Fall 1972 survey of U. S. and Canadian electrical engineering departments by the COSINE Committee of the Commission on Education of the National Academy of Engineering are given to show current computer architecture course offerings and texts. Computer architecture courses offered in 1972-73 are analyzed, compared with ACM and COSINE recommendations, and classified into five categories: introductory computer engineering courses with a computer architecture flavor, software -oriented computer organization courses, hardware-oriented computer organization courses, case study courses, and topical seminars Future trends in computer architecture education are predicted.
LINUS
Authors: Woolley John D. , Miller Leland R.
Published: July 2004

One of the crucial decisions in organizing a first course in computer science is the choice of a programming language. Although there is considerable variance of opinion as to what the ideal language should be, two main approaches can be delineated. The first approach stresses the necessity of learning the dominant scientific language, which in the Americas amounts to a vote for Fortran (2). The practicality of this choice is as indisputable as the awkwardness of the syntax of that language. The alternative view stresses the importance of the program structure in developing a sound sense of “algorithmic thinking”. Proponents of this view would suggest Algol W (4) or perhaps Pascal (5). We contend that both approaches have important advantages. This paper explores an approach which attempts to maximize the benefits of both.
Teaching structured programming attitudes, even in APL, by example
Authors: Plum T. W. S. , Weinberg G. M.
Published: July 2004

As a programming assignment in a graduate programming course, students were to program an interactive word game, JOTTO. The language used was APL, under constraints of well-structured programming and complete control of the user-machine interaction. In response to complaints that teamwork was an impediment to programming and that it was not possible to write efficient well-structured programs in APL, the instructors undertook to complete the assignment working as a team. The results of the effort were carefully documented, including experiences with program modification, and are presented here, as they were to the class, to illustrate the principles that should be communicated to professional programmers.
Experiences with a simple structured programming language
Authors: Basili Victor R. , Turner Albert J.
Published: July 2004

A great deal of interest has developed in structured programming [Dahl, Dijkstra, and Hoare, 1972] during the past few years. This paper is concerned with some experiences obtained in the use of a structured programming language in the computer science curriculum at the University of Maryland. The language used was SIMPL-X [Basili, 1973], a language designed and implemented at the University of Maryland.

SIMPL-X was designed to be a transportable, extendable, compiler-writing language that was to be the base language for a family of programming languages. It is, in fact, being used for that purpose as the SIMPL-X compiler [Basili and Turner, 1973] is written in SIMPL-X, and a compiler for the graph algorithmic language GRAAL [Rheinboldt, Basili, and Mesztenyi, 1972] is presently being designed as an extension of the SIMPL-X compiler.
Relating Computer Science programs to the needs of industry through internships and cooperative programs
Authors: Goddard Alton R.
Published: July 2004

The purpose of this paper is to discuss some approaches for achieving more meaningful relationships between degree programs at the college level in Computer Science and the needs of industry. Nothing is more encouraging to most students than to know that their academic preparation will enhance their future life styles and future employment opportunities. Also, probably nothing is more depressing to a person than perhaps being a hungry, competent, and unemployed expert in an academic area where employment opportunities are nonexistent.

The balance between knowledge attributed to real world experiences and academic theory is a crucial issue. Either type of knowledge is hollow without the other component. Mr. Jack Jackson, who is an Instructor for the American Airlines Academy amply describes an “experience” as being - when something is happening to you and you wish it were happening to someone else. Many schemes have been used to simulate real world electronic data processing experiences in the classroom situation. Some of these schemes have proven very successful. However, most employers will not consider this as what they mean when they ask a prospective employee “Do you have any experience?”. The remarks in this paper are directed toward the employer's definition.
The view from down under
Authors: Marshall Sister Patricia
Published: July 2004

Xavier shares at least six characteristics with other developing institutions. some of which are not shared by all: private small, predominantly black, liberal arts-oriented, church-related, and serving a large percentage of disadvantaged students. Difficulties in launching and maintaining a computer science program at such an institution are not rooted in any one of these alone but rather in the complex, often apparently conflicting, cross currents of philosophies represented by these characteristics. Serving the needs of disadvantaged students in a liberal arts milieu is difficult enough, and once you establish computer science in this picture, you still have to meet the challenge of staffing with permanent, full-time faculty to effect continuity. It has been evident at Xavier from the beginning (1968) that without a strong computer science curriculum the ability to serve other departments would be severely limited; its experience bears this out. We have no great success story to tell, but we have experience to relate and some ideas for the future.
Computer facility
Authors: Randolph Robert H.
Published: July 2004

The purpose of the discussion that follows is to shed some light on the mystical process of buying a computer. The problem of computer acquisition is often approached from a very rational, very scientific perspective with lots of charts, graphs, comparisons and rating scales. Sometimes the original intent of the effort can get lost in the piles of data.

What I hope to do here is to augment or clarify this super rational approach (which certainly has its place) with some practical, down to earth common sense. At the very least, what I am advocating could certainly become the basis for a more elaborate scientific approach. In order to keep things simple, I have looked at the problem of computer acquisition in terms of (1) some thinking, (2) some planning, (3) and a lot of doing.
A modified Chief Programmer Team approach to an operating systems class project
Authors: Perry James T. , Weymouth Terry E.
Published: July 2004

This paper describes the use of the Chief Programmer Team method in an operating systems class to implement a subset of a multiprogramming operating system. The operating system consisted of elements of Job Management, Task Management, and Data Management functions. The students were divided into four groups. One of these, called the Steering Committee, was responsible for assigning coding and design duties to each of the three coding groups. When each major part of the operating system was completed, the Steering Committee would examine the code and approve it, or return it to the coding group for revision. Thus, the Steering Committee acted as Chief Programmer to the other three groups. When all parts of the system were completed, they were linked together and tested. A comprehensive survey containing questions regarding the effectiveness of the Chief Programmer approach was given to all students. The results of this survey indicated that the group programming effort was superior to the conventional method of assigning the project, in its entirety, to each student. Key Words: Chief Programmer Team, Monitor, Operating Systems, Systems Programming.
Development and implementation of a computing major program based on suggested ACM curricula at an undergraduate liberal arts college
Authors: Sapega A. E.
Published: July 2004

Two recent ACM reports have been published suggesting curricula for undergraduate education in Computer and Information Sciences. These reports have provided the basis of a new major program, the Computer Coordinate Major, recently established at Trinity College. The synthesis of these reports with the curriculum of the College in developing the new major is discussed. The resulting program is suggested as a case study in the implementation of the ACM reports. It is recommended that the ACM reports be regularly reviewed and up-dated so as to continue to provide the basis for development of curricula for undergraduate education in computing.
Teaching declarative programming
Authors: Adams J. M.
Published: July 2004

At the Conference on Programming Methodology in January 1974 at Albuquerque, New Mexico Prof. Edsger Dijkstra described a method of program development in which the imperative form of a program is developed from the assertions which form the correctness proof. In other words the declarative (or non-procedural) aspect of an algorithm guides its implementation into an imperative (or procedural) form. While extremely exciting, this methodology is rather alien to those with traditional training in the imperative method of program development. Since this encompasses almost everyone including most instructors and students, a problem arises in introducing the methodology into the standard computer science curriculum. This paper describes our approach to the problem at New Mexico State and the results.
A course in effective programming
Authors: Ripley G. David
Published: July 2004

This paper describes a graduate Computer Science course in which all aspects of the programming process are examined.

The course has been taught for the past three years, and represents an attempt to pull together various results of researchers working on this rather undeveloped but important area. Unfortunately space does not permit the inclusion here of many details or examples. Rather, the emphasis is on the form of the course and how the reference material is used in pursuing the course objectives. (The topic of program measurement is expanded on somewhat, being a topic of interest to the author and one about which little has been said elsewhere.)
Development of computing at Federal City College
Authors: Mayes Jesse J.
Published: July 2004

After joint discussions between the House and the Senate, a bill authorizing the creation of Federal City College (and the Washington Technical Institute) was signed into law in 1966 by President Lyndon B. Johnson as Public Law 89-791.

The Federal City College Computer Center is organized as a consolidated center designed to support both academic and administrative data processing requirements of the College. The Center has chosen this organizational structure because it provides the College with the best cost effective means of providing a wide range of data processing services to all areas of the College. The management of one centralized Computer Center and its supporting staff obviates the necessity for the College to staff and support an array of decentralized computing staffs and facilities in each school.
Innovative computer services at a developing institution
Authors: Stone Fred W.
Published: July 2004

Tuskegee Institute installed an IBM 1620 in October 1961. Over the next several years as demand required, the system was expanded from the original 20K to 60K then to disk. The original acquisition was made possible with a NSF grant.

in June 1972, with the assistance of a NSF grant, among others, Tuskegee Institute was able to install a Hewlett-Packard 2000F Time Sharing system. With the ability to use the system from any part of of the campus, service to the various schools and departments is staggering. Engineering has increased it's use but it accounts for only 30% of the current use of the system.
An instructional Computer Program Library
Authors: Lovas Charles M.
Published: July 2004

The Computer Program Library, a compilation of computer programs coded in FORTRAN and executed in the batch mode, facilitates both direct and adjunct use of the computer by students. A six year project, the library now contains over 290 fully-documented subprograms and programs which engineering students utilize for problem-solving, independent study projects, and research. In addition, the library provides the instructor with a ready source of material which may be used to augment course content in several ways. The computer program library concept has proven to be an effective method of implementing computer augmented engineering education, especially in curricular areas not adequately serviced by task-oriented software and/or in small emerging educational institutions.
Description of course given on “Computers in the Humanities and Social Science”
Authors: Sammet Jean E.
Published: July 2004

This paper describes a course entitled “Computers in the Humanities and Social Science” given at a small liberal arts college. The basic purpose of the course was to provide the student with knowledge about how a computer could be used in various fields (e.g. art, literature, economics). There was no intent to make the student expert in using the computer, although several programs were written and debugged as homework assignments. This paper includes appendices which show copies of the homework assignments given, a questionnaire on attitudes toward the computer, as well as further details on the course.
Curricula for two-year data-processing programs
Authors: Kearney James F.
Published: July 2004

A review is given of the current situation in two-year institutions with data-processing course offerings. There are three types of students, “transfer,” “occupational,” and “optional,” whose needs must be satisfied by any curriculum. The author suggests a curriculum for all schools, large and small, containing six courses, of which the student enrolls in four according to his educational goals.
B4Tran
Authors: Meissner Loren P. , Hinkins Ruth L.
Published: July 2004

Although senior computer scientists at major universities deplore the continued widespread use of Fortran in beginning computing courses, the fact remains that half a million college students each year are enrolled in courses that include Fortran proficiency as a major objective. If these students are to learn about program structure, ways must be found to teach this concept in Fortran courses. We propose the use of a structured mini-language, rather than a preprocessor, at the beginning of such a course.

The B4Tran language has been designed as a subset of an extended Fortran dialect. It introduces alternative structures and iterative structures by using labelled statements to delimit the ends of blocks, in a manner analogous to the indexed
DO
block of Fortran. Controlled alternatives to
GO TO
are also provided.

Some features of Fortran that cause difficulty for beginning students are omitted. All variables are of a single (“real”) type. Input and output are format-free. B4Tran runs as an interpreter; thus it can furnish improved feedback to the programmer during execution.
A panel session on “digital system education”
Authors: Chu Yaohan
Published: July 2004

This panel is composed of the chairmen of the task forces of the DISE (Digital Systems Education Committee). DISE is a project sponsored by the NSF and managed by University of Pittsburgh for the purpose of generation and dissemination of educational material on all aspects of digital system education. The panel members will discuss the current activities of these task forces and then seek the audience's participation in learning more about the status and need of current digital system education.
Software Configuration Management
Authors: Bersoff Edward H. , Henderson Vilas D. , Siegel Stan G.
Published: July 2004

This paper is about discipline. It is about discipline that managers should apply to software development. Why is such discipline needed? Quite simply because the software industry has traditionally behaved in an undisciplined manner—doing its own thing. The products that the industry has turned out have typically

Contained other than what was expected (usually less, rather than more);

Been delivered much later than scheduled;

Cost more than anticipated;

Been poorly documented; and

If you have been involved in any of the situations quoted above, then this paper may be of some help. In short, if you are now, or intend to be, a software seller or buyer, then you should benefit from an understanding of Software Configuration Management. Lest you think that you are not now, or ever will be, a software seller or buyer—keep in mind that the recent technology explosion in electronic component miniaturization has placed the era of personalized computing at hand. In that context, nearly everyone may be considered a potential seller or buyer of software.

This paper is about the discipline called Software Configuration Management (SCM). The objective of SCM is to assist the software seller in achieving product integrity and to assist the software buyer in obtaining a product that has integrity.
Computing failure
Authors: Glass Robert L.
Published: July 2004

Computing people can learn from failure as well as success. Most professional papers deal only with the latter ... yet it is well known that some of our most lasting learning experiences are based on failure. This paper is a lighthearted, anecdotal discussion of a computing failure, with an underlying message that sharing the sometimes embarrassing truths about What Goes Wrong In Our Field is at least as illuminating as more serious discussions about Things That Look Promising.

There are some necessary defense mechanisms to be dealt with in discussing failure. People who have failed in general do not want the world to know about it. Perhaps even more so, companies which have failed also do not want the world to know about it. As a result, the content of this paper is fictionalized to some extent. That is, company names and people names are creations of the author, and there are corresponding distortions in some story details. However, the computing meat of the paper, the basis for the failure learning experience, is untouched.
A comparison of software assurance methods
Authors: Fujii Marilyn S.
Published: July 2004

Several methods are currently employed by software developers to improve software quality. This paper explores the application of three of these methods: quality assurance, acceptance testing, and independent verification and validation. At first glance these methods appear to overlap, but a closer evaluation reveals that each has a distinct objective and an established set of procedures. The purpose of this paper is to clarify the role of each of these methods by examining their scope, organization, and implementation in the software development process.
A Requirements Tracing Tool
Authors: Pierce Robert A.
Published: July 2004

A software development aid termed the Requirements Tracing Tool is described. Though originally designed to facilitate requirements analysis and thus simplify system verification and validation, it has also proven useful as an aid for coping with changing software requirements and estimating their consequent cost and schedule impacts. This tool provides system analysts with a mechanism for automated construction, maintenance, and access to a requirements data base—an integrated file containing all types and levels of system requirements. This tool was used during the development of a large Navy undersea acoustic sensor system. It is presently being used to support the Cruise Missile Mission Planning Project. An outline version of this tool is under development.
Requirements language processing for the effective testing of real-time systems
Authors: Davis Alan M. , Rataj Walter J.
Published: July 2004

GTE Laboratories is currently developing a trio of software tools which automate the feature testing of real-time systems by generating test plans directly from requirements specifications. Use of the first of these tools, the Requirements Language Processor (RLP), guarantees that the requirements are complete, consistent, non-ambiguous, and non-redundant. It generates a mode] of an extended finite-state machine which is used by the second tool, the Test Plan Generator, to generate test plans which thoroughly test the software for conformity to the requirements. These test plans are supplied to the third tool, the Automatic Test Executor, for actual testing. The RLP is the subject of this paper.

The primary goal of the RLP is to provide the ability to specify the features of a target real-time system in a vocabulary familiar to an application-oriented individual and in a manner suitable for test plan generation. The RLP produces a document which can be easily understood by non-computer personnel. It is expected that this document will function as a key part of the “contract” between a real-time system supplier and a customer. This document must also serve as a springboard for the software designers during their development of the actual product.

In addition to the requirements document, the RLP also produces an augmented state transition table which describes a finite state machine whose external behavior is identical to the target real-time system as defined by the specified requirements.
Relating software requirements and design
Authors: Peters Lawrence
Published: July 2004

Software development is a process which has evolved into a number of phases. Although the names of the phases and some of their characteristics differ from contractor to contractor and customer to customer, the functional similarities among sets of phases cannot be ignored. The basic software development scenario depicted by these phases starts with problem identification and definition, requirements specification, design, code, test, and installation and maintenance. Although some “smearing&rdquo of one phase activity into other(s) may occur, this represents the basic flow. However, it is just that smearing which occurs between requirements and design that we wish to explore here.

Identifying or defining problems and solving problems are viewed by many to be separate, distinguishable activities. They are complementary in that one identifies what must be done (requirements) while the other depicts how it will be done (design). But software designers complain bitterly that requirements are poorly defined while customers and analysts often complain that the design is not responsive to the problem(s) as they perceive it. Somehow software designers end up discovering previously unknown requirements and end up solving a problem which is foreign to the customer. Is there a workable mechanism to reduce this difficulty?
Design feedback and its use in software design aid systems
Authors: Stavely Allan M.
Published: July 2004

It is argued that software system designers would benefit greatly from feedback about the consequences of a proposed design if this feedback could be obtained early in the development process. A taxonomy of possible types of feedback and other design aids is presented, and the capabilities of several existing design aid systems are described relative to this taxonomy.
A software quality assurance experiment
Authors: Benson J. P. , Saib S. H.
Published: July 2004

An experiment was performed to evaluate the ability of executable assertions to detect programming errors in a real time program. Errors selected from the categories of computational errors, data handling errors, and logical errors were inserted in the program. Assertions were then written which detected these errors. While computational errors were easily detected, data handling and logical errors were more difficult to locate. New types of assertions will be required to protect against these errors.
An application of graph theory to software test data selection
Authors: Stickney M. E.
Published: July 2004

Graph theory is playing an increasingly important role in the design, analysis, and testing of computer programs. It's importance is derived from the fact that flow of control and flow of data for any program can be expressed in terms of directed graphs. From the graph representing the flow of control, called the program graph, many others can be derived that either partially or completely preserve the program control structure. One derived graph known as a cyclomatic tree is of particular value in program testing. It is so named because the number of leaves of the tree is equal to the cyclomatic number of the program graph. A thorough treatment of cyclomatic numbers is provided in [3]. A program called the Complexity/Path Analyzer (CPA) has been developed that builds and utilizes a program cyclomatic tree to provide test planning information, automatically place software counters called probes as discussed in [9] and [10] in a program, and provide selected parameters such as program length and program graph cyclomatic number. The paper discusses the features and derivation of cyclomatic trees as well as their value and application to testing and test data generation.

A cyclomatic tree provides a test planner with information useful for planning program tests. In particular, it furnishes test data selection criteria for developing tests that are minimally thorough as defined by Huang in [9]. A test data selection criterion will be defined as minimally thorough if any complete test with respect to the criterion is at least minimally thorough. The term complete is used as defined by Goodenhough and Gerhart in [13]. A test is defined to be a non empty sequence of test cases. Each test case consists of an element selected from the input domain of the program being tested. The paper discusses the merits of one particular technique selected to achieve a minimally thorough test data selection criteria. Part of the technique is automated by the CPA program.
A mini-computer based library control system
Authors: Josephs William H.
Published: July 2004

One of the major problems encountered in any large scale programming project is the control of the software. Invariably, such large programs are divided into many smaller elements since these are easier to code, test and document. However, such a division adds new complexity to the task of Configuration Management since the many source modules, data base elements, JCL (Job Control Language) and DATA files must be controlled with the goal of maximizing program integrity and minimizing the chances of procedural errors. Furthermore, whenever any program is released either for field test or for final production, an entire change control procedure must be implemented in order to trace, install, debug and verify fixes or extensions to the original program. These maintenance activities can account for up to 80 percent of the entire programming cost in a large, multi-year project. The library control program (SYSM) presented here was developed to aid in these processes. It has facilities for capturing all elements of a program (commonly called baselining), editing any element or group of elements that have been baselined to build an updated version of the program, adding and/or deleting elements of a program, and listing the current contents of a given element or elements. SYSM is written mainly in FORTRAN, and runs on a Hewlett-Packard HP-21MX computer with two tape drives, the vendor supplied RTE-II or RTE-III operating system, and at least 16K of user available core. It can be used to control code targeted for either the HP21MX itself, or, using the optional HP/LSI-11 link program, code targeted for a Digital Equipment Corp. LSI-11 system.
An example of software quality assurance techniques used in a successful large scale software development
Authors: Kacik Paul J.
Published: July 2004

Development of the software package for the Combat Grande Air Defense System was considered by the Hughes Aircraft Company to be highly successful in that a reliable system was produced that met customer requirements and was completed within time and budget allocations - a feat not often attained in large scale software developments. Much of the success can be attributed to the software quality assurance (QA) techniques used. Some of these QA techniques are listed in Table 1 along with the phases in which they were used.

This paper describes these QA techniques in some detail, as well as those aspects of the system and software development program that permitted these techniques to be used effectively.

Background information is presented first which describes the system, software, organization and software configuration management. This is followed by a description of the three major phases of software development. The overall results are then presented, followed by recommended improvements and conclusions. Many of the QA techniques listed in Table 1 were used in several phases of software development. However, a particular technique is discussed only in the phase in which it was most extensively used.
An experience on students' participation in blended vs. online styles of learning
Authors: Dodero Juan Manuel , Fernández Camino , Sanz Daniel
Published: July 2004

This work compares two learning experiences developed with different styles during an academic semester in two universities. The objective of the study has been to test the advantages of the blended style of learning, in terms of students' participation and initiative in the learning process, compared with those of pure virtual e-learning. The study shows how information technologies act as an incentive to improve students' participation during traditional classroom-located teaching, but do not help to increase their participation when the learning process is completely virtual and not complemented by regular classes.
Using image processing to teach CS1 and CS2
Authors: Hunt Kenny
Published: July 2004

The use of digital image processing techniques in undergraduate computer science curriculum has advantages in terms of motivating student interest and immediate, visual feedback of executed code. Although the standard Java distribution includes support for basic image processing operations, including the display of images, the complexity of the package renders it unsuitable for inexperienced programmers. This paper presents an extension to the built-in image processing package that is suitable for use in CS1 and CS2 courses and suggests ways that the package can be used to teach topics in these courses.