The long-term objective of the Programmer's Apprentice project is to develop a theory of programming and to automate the programming process. Current research is aimed toward the intermediate objective of develop...
详细信息
The long-term objective of the Programmer's Apprentice project is to develop a theory of programming and to automate the programming process. Current research is aimed toward the intermediate objective of developing an intelligent computer assistant for programmers, called the Programmer's Apprentice (PA). The Knowledge-Based Editor in Emacs (KBEmacs) is the current demonstration system implemented as part of the PA project. The primary benefit of KBEmacs is that it makes possible the rapid construction of a reliable program by combining algorithmic fragments stored in a library. A scenario showing the construction of a 58-line Ada program through the use of 6 simple KBEmacs commands is presented. KBEmacs is capable of operating on both Ada and LISP programs of realistic size and complexity. KBEmacs is not fast or robust enough to be considered a true prototype, but these problems could be overcome if the system were to be reimplemented.
Building upon years of evolution in object-oriented programming language design, Java has emerged as the language of choice among many educators for teaching introductory computer science. A clean, type-safe language,...
详细信息
Building upon years of evolution in object-oriented programming language design, Java has emerged as the language of choice among many educators for teaching introductory computer science. A clean, type-safe language, Java provides a garbage collected heap and a comprehensive exception-handling mechanism. However, in spite of this support, many students in introductory computer science courses still find programming to be an overwhelming source of frustration. Linguistic concerns and programming mechanics demand so much attention that deeper concepts are often postponed for later courses, leaving students in introductory courses with the mistaken impression that computer science is a shallow discipline, concerned only with transcribing ideas into code, and not with the ideas themselves. JPie is a tightly integrated programming environment for live software construction in Java. JPie treats programming as an application in its own right, providing a visual representation of class definitions and supporting direct manipulation of graphical representations of programming abstractions and constructs. Exploiting Java's reflection mechanism, JPie supports the notion of a dynamic class that can be modified while the program is running, thereby eliminating the edit-compile-test cycle. Following years of experience using Java as the vehicle for teaching introductory computer science, we have designed JPie to provide a more natural and fluid software development process that both raises the level of abstraction and eliminates many of the common pitfalls that beginning Java programmers face. This paper studies JPie from an educational perspective. We systematically review key programming abstractions and explain how JPie supports them in ways that keep beginning programmers focused on important ideas. Our experience using JPie in an introductory computer science survey course for non-majors is briefly discussed. (C) 2004 Elsevier B.V. All rights reserved.
Data frames are a tabular data structure widely used in transforming data to an appropriate form in data analysis, especially in data wrangling. However, when data frames are implemented with libraries rather than sup...
详细信息
Data frames are a tabular data structure widely used in transforming data to an appropriate form in data analysis, especially in data wrangling. However, when data frames are implemented with libraries rather than supported at the language level, it is hard to find out errors due to the limitation of type checking on columns. Data scientists may encounter errors due to missing column labels or inconsistent types, especially when they reuse code snippets for new data. These errors are usually left to runtime, and it is sometimes difficult to find out where the problems are. To address this issue, we propose using abstract interpretation to perform type checking on data frame columns. We defined the type for data frames based on column labels and developed semantics to verify the typing in general operations. A static checker can be implemented based on the semantics to help programmers quickly fix errors without executing the code. To show the feasibility, we implemented a proof-of-concept for the pandas library as an example, PDChecker, to discuss the limitation and usage. It is then used to compare the functionalities with existing solutions. The results show our approach can fulfill the function of type checking for data frames. Supporting more data frame operations is included in our future work.
THIS ARTICLE PRESENTS A NEW TOOL CHAIN THAT MAPS A DOMAIN-SPECIFIC PACKET-PROCESSING LANGUAGE CALLED PX TO HIGH-PERFORMANCE RECONFIGURABLE-COMPUTING ARCHITECTURES BASED ON FPGA TECHNOLOGY. PX IS A DECLARATIVE LANGUAGE...
详细信息
THIS ARTICLE PRESENTS A NEW TOOL CHAIN THAT MAPS A DOMAIN-SPECIFIC PACKET-PROCESSING LANGUAGE CALLED PX TO HIGH-PERFORMANCE RECONFIGURABLE-COMPUTING ARCHITECTURES BASED ON FPGA TECHNOLOGY. PX IS A DECLARATIVE LANGUAGE WITH OBJECT-ORIENTED SEMANTICS. A CUSTOMIZED COMPUTING ARCHITECTURE IS GENERATED TO MATCH THE EXACT REQUIREMENTS EXPRESSED IN THE PX DESCRIPTION. THIS ARCHITECTURE IS DYNAMICALLY PROGRAMMABLE VIA CUSTOM FIRMWARE UPDATES WHEN THE PACKET-PROCESSING SYSTEM IS IN OPERATION.
The full power of process programming can only be achieved by a system in which we can dynamically design and execute the software process model, as well as the environment which executes the software process model. W...
详细信息
The full power of process programming can only be achieved by a system in which we can dynamically design and execute the software process model, as well as the environment which executes the software process model. We are developing a new process modelling strategy (meta-model) called the object process model and an object process modelling environment (meta-environment) OPM, which allows us to design and build both software process models and software development environments that execute the software process models. In the object process model, software process models are not static entities executed by the environment. An executing software process provides a working environment in which software designers can work in order to accomplish a wide variety of software development tasks. In OPM, software process models are described in an object-oriented process programming language called Galois and are executed by the Galois runtime system. OPM itself is written in Galois, and therefore it is considered as a software process running on top of the Galois runtime system. Galois is syntactically a superset of C + + but has four major innovations beyond conventional programming languages: meta-classes, derivation, typed functions and rule-based features. This paper presents the object process model and shows how software process models and software development environments can be designed in the process programming language Galois.
The first in a three-part series appearing in IEEE Annals, this article gives a historical explanation of the endemic confusion surrounding the stored-program concept. After a detailed investigation of the history of ...
详细信息
The first in a three-part series appearing in IEEE Annals, this article gives a historical explanation of the endemic confusion surrounding the stored-program concept. After a detailed investigation of the history of this idea, the authors propose three more precisely defined alternatives to capture specific aspects of the new approach to computing introduced in 1945 by John von Neumann and his collaborators.
In order to make precise some of the desirable features of a programming support environment, and in order to encourage others to do likewise, this paper presents the formal specification of a small module or package ...
详细信息
In order to make precise some of the desirable features of a programming support environment, and in order to encourage others to do likewise, this paper presents the formal specification of a small module or package manager suitable foruse in a Modula or Ada environment.
This paper reports on an application of programming environments generation to structured document manipulation. We use the Centaur system as a formal tool to model and implement logical and physical document structur...
详细信息
This paper reports on an application of programming environments generation to structured document manipulation. We use the Centaur system as a formal tool to model and implement logical and physical document structure, logical structure editing, layout processing, format conversion, and document queries, for a sample class of documents: scientific articles containing figures. We support two particular concrete external syntaxes for logical structure: LAT(E)X, and Tioga (Tioga is a wysiwyg editor in the Cedar programming environment). From the formal specifications of the logical and physical structures of the article document class, and a formal specification of varied tools such as layout processing and document queries, the Centaur system automatically generates a document manipulation system including a structured editor for articles, a;format converter between LAT(E)X and Tioga, a previewer displaying articles in their layout form, as well as management tools over a set of articles.
HEDRA, an ESPRIT project (nr. 6768), aims to develop a heterogeneous distributed real-time architecture for robot and machine control. This paper describes an open and flexible programming system, as a part of this ar...
详细信息
HEDRA, an ESPRIT project (nr. 6768), aims to develop a heterogeneous distributed real-time architecture for robot and machine control. This paper describes an open and flexible programming system, as a part of this architecture, that is based on an existing system called Virtuoso. The programming system is an evolution of Virtuoso towards the architecture at which the project is aiming. The work concentrates on the achievement of guaranteed real-time behaviour, minimum interrupt latency and transparency of interprocessor data communication.
This paper presents a framework for teaching robotics at engineering university degrees in a practical way. It is open source, multiplatform (Linux, Windows, MacOS) and emphasizes the programming of the robot intellig...
详细信息
This paper presents a framework for teaching robotics at engineering university degrees in a practical way. It is open source, multiplatform (Linux, Windows, MacOS) and emphasizes the programming of the robot intelligence. It consists of a collection of exercises of several types, which are similar to the new robotic applications (autonomous vehicles, drones, vacuum cleaners...). It uses the Gazebo simulator and the Python programming language. For each exercise an academic application has been created which performs all the auxiliary tasks like graphical interface, connection to the sensors and actuators, timing of the code, etc. and hosts the student's code, who can focus on the perception and control algorithms. Each academic application combines an infrastructure part, which it is provided and remains hidden, and the student part, who simply fills a form file with the robot logic for such exercise. It has been successfully used in several subjects at engineering degree, master and robotics introductory courses.
暂无评论