537 research outputs found
The Profession of IT Learning Machine Learning
The article of record as published may be found at http://dx.doi.org/10.1145/3286868A discussion of the rapidly evolving realm of machine learning
Recommended from our members
An operator calculus for computer programs
An operator calculus for transforming assignment statements, loops, and choice constructs into equation-of-state expressions is shown to be powerful enough to synthetically execute a given computer program and its test data. A demonstration of the program is equivalent to applying an operator formalism to the equation-of-state in order to reduce the equation to a simple, single assignment sequence of assignment statements. The program is said to be demonstrated correctly with respect to the given test data if the resulting single-assignment sequence produces the desired "output" result.
The method is applied to a variety of programs of increasing complexity. A published program shown to be a correct implementation of the binary search algorithm is demonstrated to be incorrect
Recommended from our members
Performance evaluation of three microcomputer based systems in a small business dataprocessing environment
Recommended from our members
Piece-wise scheduling of composite task graphs onto distributed memory parallel computers
Heuristics for static scheduling of task graphs using list scheduling techniques have continued to improve by adding real-world factors such as processor speed, network transmission speed, interconnection topology, and link contention considerations to the basic task graph model. Yet, the resulting schedules do not fully model program loops and branches, startup costs for both process creation and message initiation, and a number of interesting parallel processing patterns such as meshes, tress, and supervisor/workers. In fact, improvements in the schedule may be obtained when the task graph is regular as when it contains repeated or replicated tasks, divide-and-conquer patterns of communication, or a mesh-structured pattern of computation. In this paper we describe a limited approach to scheduling composite task graphs that considers process and message startup costs, and three regular patterns : replicated, tree, and mesh. The approach is to model programs with such regular patterns as a composite task graph, where each regular structure is a decomposable sub-task node in the task graph. Then, we compute an optimal schedule for each sub-task. graph, piece the sub-tasks together, and perform an ordinary static scheduling heuristic on the pieces, to produce an overall schedule. We define a composite task graph as a hierarchical task graph containing regular-structured sub-task graphs as components. At the top level of this hierarchy, each graph node represents either a simple task or a hierarchically decomposable sub-task graph. We propose a piece-wise scheduling algorithm that simply allocates processors to sub-task graphs according to closed-form expressions which give determine the optimal number of processors, and then uses a list scheduling algorithm to schedule the flattened graph onto these processors. We do not address the pressing problem of loops and branches in the task graph representation, but we speculate that the technique of piece-wise scheduling introduced here can be adapted to a hybrid form of scheduling that may accommodate branches and loops. Piece-wise scheduling is not guaranteed to yield the best global schedule. Rather, it pieces together locally optimum sub-schedules. Finding globally optimum schedules for composite task graphs remains an open problem. We present an heuristic approach that has been experimentally used to schedule small parallel programs with encouraging results. More empirical evidence is needed to determine the usefulness of this technique, but early indications are encouraging
Recommended from our members
Yashar : a ruled based meta-tool for program development
Yashar is a rule based meta-tool for rapidly producing tools to increase programming speed through automating restructuring of existing source code modules so they can be reused, generating of syntax-directed tools, language-to-language translation, automated document generation , and various debugging tools. The main significance of Yashar is that it can be tailored to a wide variety of applications through the specification of rules. In this paper we describe the rule processor, rule syntax, and how to create an instance of Yashar for translating Modula-2 source programs into equivalent C source programs, automatically. Finally, we conclude that Yashar is a generalized meta-tool which can be tailored to a wide variety of application-specific tools by hand-crafting a small number of application-specific interface and support routines.Keywords: Programming environment, program transformation, source code mutation, syntax directed tools, rapid prototyping, source language to source language translation
Recommended from our members
Parallelism encapsulation in C++
Object oriented programming features information hiding and encapsulation, meaning that 1) each object hides the the implementation details tram access from outside and only a set of methods (interface routines) are visible outside of the object, and 2) changes to the implementation of the object do not require changes to the code that uses the object, so long as the interface is stable. However, the interface mechanism in C++ is not adequate to achieve information hiding and encapsulation when writing parallel C++ programs, since the methods are assumed to be invoked in sequence and no parallel interactions are represented by them. Also, even when the methods are the same, changes to the implementation details of the methods often affect the interaction pattern of the methods so the parallel code that uses the methods must be rewitten. To achieve information hiding and encapsulation, we propose adding path expressions to the class interface. Thus either dynamic or automatic parallelization can be used to achieve parallelism encapsulation. A new concept of data dependence analysis is introduced which uses the parallelism described by path expressions to efficiently and automatically parallelize an object-oriented program
Recommended from our members
Artimis : a module indexing and source program reading and understanding environment
Artimis is part of an environment for software reuse consisting of two logically independent portions, 1) the indexing and retrieval facility called, GrabBag, for storage and subsequent retrieval of reusable modules, and 2) a set of tools called Browsers, which aid reading and understanding of source programs. GrabBag creates a highly simple and friendly interface for retrieval of viable candidates for reuse. Browser's tool set, The Module Interconnection Graph Builder, Procedure Call Graph Builder, and Module Abstractor create different levels of abstraction to help a programmer understand a source program.Keywords: Programming environment, program transformation, source code mutation, code fragments, code selection, program understanding, program reading, program maintenance
Recommended from our members
OSU : a high speed software development environment
Several problems with user interface design and implementation have been identified: (1) user interfaces are difficult and time-consuming to design and implement; (2) most user interface management systems (UIMS) are themselves difficult to use by a programmer; (3) UIMS's have not been integrated with other tools that support structured design, coding and maintenance, thus failing to maximize programmer productivity.
In the Oregon Speedcode Universe (O.S.U.) project, we had taken the following approaches: (1) direct manipulation programming technique is used to address the problems with user interface design and implementation; (2) integration of UIMS with CASE tools; and (3) high-level program generation from scripts, and reusable components.
This report surveys some of the existing UIMS's and describes O.S.U., a high-speed software development system. The main emphasis of this work is the design and implementation of Structure Chart Editor in O.S.U.. The Structure Chart Editor has three unique features: 1) combination of functional decomposition with object-oriented design, 2) alternate architectural views, e.g. call graph, uses graph, object graph, and graphical display of procedures, 3) merging the user interface specification with design and coding specifications.
Experimental results suggest that the techniques employed by OSU can be used to develop 50-90% of an application without explicit programming yielding 2-10 fold productivity improvements
- …