1209785
Ubiquitous applications: embedded systems to mainframe
Over the last 10 years, Smalltalk has moved from the “Parc” to Main Street as a standard object-oriented (OO) fifth generation language (5GL) for enterprise computing. To meet the needs of application developers, Smalltalk environments and tools have matured from the original research implementations to full-featured, multiplatform development environments. A recent study of development tools conducted by Software Productivity Research in Massachusetts for a software productivity consortium ranked Smalltalk first in most categories. What is surprising about this study is the application: a demanding telephone switch traditionally dominated by C or proprietary talc languages such as Chill, Protel, and Plex. The fact that Smalltalk ranked so highly is a testimony that Smalltalk is an application 5GL that scales. This article discusses the major technical challenges addressed by Smalltalk implementors and application developers working on a wide spectrum of applications.
25083231
Meeting the challenge of software engineering education for working professionals in the 21st century
Software engineering education for working professionals remains a challenge from the perspective of determining relevant content; identifying effective methods for delivery; and maintaining the focus and motivation of students. This panel brings together academic and industry professionals to share their perspectives and experiences. Anticipated points for discussion include: education/training delivery strategies, curriculum definition, certification challenges, marketing issues, collaboration strategies to engage industry sponsorship, value assessments for students and sponsoring organizations, and program success stories. This will be a highly interactive panel and the audience should come prepared to both ask and answer questions.
14636461
Introducing object-oriented programming into the computer science curriculum
In recent years, object-oriented programming languages and object-oriented program design have become increasingly popular. Dialects of many popular programming languages are now available which support the major concepts of object-oriented programming; namely message-passing, classes, generic operations and inheritance. Experience in the paradigm is increasingly supporting the view that object-oriented programming may be to the 80's what structured programming was to the 70's in terms of its influence on software development.
After reviewing the notions of object-oriented programming, we describe our experiences in introducing the object-oriented paradigm into the Computer Science curriculum. The impact was felt in four courses dealing with data types and data structures, programming languages, software engineering, and compiler construction. In addition, we describe the use of the Smalltalk environment in advanced course and project work. We chronicle our experiences in the expectation that they will be of benefit to other educators considering adopting the object-oriented paradigm. Finally, we review the potential benefits of introducing object-oriented programming into the computer science curriculum.
34406304
Agile Experiences
The proponents of various Agile Methodologies often share anecdotal evidence about how their favorite methodologies work. Come to this panel to hear first-hand experiences of those who have applied these methodologies in their organizations.
14393969
Programming with Models? Modeling with Code. The Role of Models in Software Development
In practice, engineers work with partial descriptions (models) and add/remove model elements at each level of abstraction. Models describe a slice of life – not life itself. Modelers use many different models to explore different aspects of the thing being modeled such as requirements, data, behavior, event/time, security, flow, process, activity, performance, quality, usability, etc. These models can take many forms and be expressed through many different tools including systems dynamics, prototypes, textual and visual models of artifacts and their relationships. It is important to note that UML is just one of many models representations which may be used in this process. The set of central relations in model-driven engineering and object-oriented technology are fundamentally different. The two central relations in object-oriented technology are isA and isPartOf. In model engineering the key relations are isBasedOn, isLike, and isRepresentedBy. These inherently one-to-many and partial relationships are often mistakenly confused with OOP relationships. Trying to use one set of relations, as a central interpretation, in the wrong context, can lead to serious problems. Models provide a representation of partial truths about the software system, but only the final code contains the actual truth.
2028674
An Exemplar Based Smalltalk
Two varieties of object-oriented systems exist: one based on classes as in Smalltalk and another based on exemplars (or prototypical objects) as in Act/1. By converting Smalltalk from a class based orientation to an exemplar base, independent instance hierarchies and class hierarchies can be provided. Decoupling the two hierarchies in this way enables the user's (logical) view of a data type to be separated from the implementer's (physical) view. It permits the instances of a class to have a representation totally different from the instances of a superclass. Additionally, it permits the notion of multiple representations to be provided without the need to introduce specialized classes for each representation. In the context of multiple inheritance, it leads to a novel view of inheritance (or-inheritance) that differentiates it from the more traditional multiple inheritance notions (and-inheritance). In general, we show that exemplar based systems are more powerful than class based systems. We also describe how an existing class based Smalltalk can be transformed into an exemplar-based Smalltalk and discuss possible approaches for the implementation of both and-inheritance and or-inheritance.
15059814
Caching queues in memory buffers
Motivated by the need for maintaining multiple, large queues of data in modern high-performance systems, we study the problem of caching queues in memory under the following simple, but widely applicable, model. At each clock-tick, any number of data items may enter the various queues, while data-items are consumed from the heads of the queues. Since the number of unconsumed items may exceed memory buffer size, some items in the queues need to be spilled to secondary storage and later moved back into memory for consumption. We provide online queue-caching algorithms under a number of interesting cost models.
45579896
Full Minimal Steiner Trees on Lattice Sets
Given a finite set of points P in the Euclidean plane, the Steiner problem asks us to constuct a shortest possible network interconnecting P. Such a network is known as a minimal Steiner tree. The Steiner problem is an intrinsically difficult one, having been shown to be NP-hard [7]; however, it often proves far more tractable if we restrict our attention to points in special geometric configurations. One such restriction which has generated considerable interest is that of finding minimal Steiner trees for nice sets of integer lattice points. The first significant result in this direction was that of Chung and Graham [4], which, in effect, precisely characterized the minimal Steiner trees for any horizontal 2_n array of integer lattice points. In 1989, Chung et al. [3] examined a related problem, which they described as the Checkerboard Problem. They asked how to find a minimal Steiner tree for an n_n square lattice, that is, a collection of n_n points arranged in a regular lattice of unit squares like the corners of the cells of article no. TA962752
206483087
State Machines
We are surrounded by real-world state machines: ballpoint pen retractor mechanisms, vending machines, washing-machine controllers, digital watches. They are a trivial but underused technology that can simplify how we implement programs that must track how they got to their current state before handling a new event. However, many programmers feel that state machines are only useful when they're developing communication protocol stacks, which is not an everyday activity. This is unfortunate. State machines can be appropriate in surprising circumstances. Correctly applied, they will result in faster, more modular, less coupled, and easier to maintain code. State machines make it easy to eliminate duplication, honoring the DRY principle. They also let you write more expressive code, because you can specify intent and implementation independently. These are all good, pragmatic, reasons to investigate them further, so let's look at some simple state machine implementations and problems they can solve.
206569252
Minimal Steiner Trees for Rectangular Arrays of Lattice Points
We construct minimal Steiner trees for any square or rectangular array of integer lattice points on the Euclidean plane.
2682242
Two Can Keep A Secret: A Distributed Architecture for Secure Database Services
Recent trends towards database outsourcing, as well as concerns and laws governing data privacy, have led to great interest in enabling secure database services. Previous approaches to enabling such a service have been based on data encryption, causing a large overhead in query processing. We propose a new, distributed architecture that allows an organization to outsource its data management to {\em two} untrusted servers while preserving data privacy. We show how the presence of two servers enables efficient partitioning of data so that the contents at any one server are guaranteed not to breach data privacy. We show how to optimize and execute queries in this architecture, and discuss new challenges that emerge in designing the database schema.