104 research outputs found

    The AL Compiler

    Get PDF
    None provided

    Programming Languages for Distributed Computing Systems

    Get PDF
    When distributed systems first appeared, they were programmed in traditional sequential languages, usually with the addition of a few library procedures for sending and receiving messages. As distributed applications became more commonplace and more sophisticated, this ad hoc approach became less satisfactory. Researchers all over the world began designing new programming languages specifically for implementing distributed applications. These languages and their history, their underlying principles, their design, and their use are the subject of this paper. We begin by giving our view of what a distributed system is, illustrating with examples to avoid confusion on this important and controversial point. We then describe the three main characteristics that distinguish distributed programming languages from traditional sequential languages, namely, how they deal with parallelism, communication, and partial failures. Finally, we discuss 15 representative distributed languages to give the flavor of each. These examples include languages based on message passing, rendezvous, remote procedure call, objects, and atomic transactions, as well as functional languages, logic languages, and distributed data structure languages. The paper concludes with a comprehensive bibliography listing over 200 papers on nearly 100 distributed programming languages

    Colloquium bedrijfssystemen

    Get PDF

    The Fifth NASA Symposium on VLSI Design

    Get PDF
    The fifth annual NASA Symposium on VLSI Design had 13 sessions including Radiation Effects, Architectures, Mixed Signal, Design Techniques, Fault Testing, Synthesis, Signal Processing, and other Featured Presentations. The symposium provides insights into developments in VLSI and digital systems which can be used to increase data systems performance. The presentations share insights into next generation advances that will serve as a basis for future VLSI design

    Programming tools for intelligent systems

    Full text link
    Les outils de programmation sont des programmes informatiques qui aident les humains Ă  programmer des ordinateurs. Les outils sont de toutes formes et tailles, par exemple les Ă©diteurs, les compilateurs, les dĂ©bogueurs et les profileurs. Chacun de ces outils facilite une tĂąche principale dans le flux de travail de programmation qui consomme des ressources cognitives lorsqu’il est effectuĂ© manuellement. Dans cette thĂšse, nous explorons plusieurs outils qui facilitent le processus de construction de systĂšmes intelligents et qui rĂ©duisent l’effort cognitif requis pour concevoir, dĂ©velopper, tester et dĂ©ployer des systĂšmes logiciels intelligents. Tout d’abord, nous introduisons un environnement de dĂ©veloppement intĂ©grĂ© (EDI) pour la programmation d’applications Robot Operating System (ROS), appelĂ© Hatchery (Chapter 2). DeuxiĂšmement, nous dĂ©crivons Kotlin∇, un systĂšme de langage et de type pour la programmation diffĂ©renciable, un paradigme Ă©mergent dans l’apprentissage automatique (Chapter 3). TroisiĂšmement, nous proposons un nouvel algorithme pour tester automatiquement les programmes diffĂ©renciables, en nous inspirant des techniques de tests contradictoires et mĂ©tamorphiques (Chapter 4), et dĂ©montrons son efficacitĂ© empirique dans le cadre de la rĂ©gression. QuatriĂšmement, nous explorons une infrastructure de conteneurs basĂ©e sur Docker, qui permet un dĂ©ploiement reproductible des applications ROS sur la plateforme Duckietown (Chapter 5). Enfin, nous rĂ©flĂ©chissons Ă  l’état actuel des outils de programmation pour ces applications et spĂ©culons Ă  quoi pourrait ressembler la programmation de systĂšmes intelligents Ă  l’avenir (Chapter 6).Programming tools are computer programs which help humans program computers. Tools come in all shapes and forms, from editors and compilers to debuggers and profilers. Each of these tools facilitates a core task in the programming workflow which consumes cognitive resources when performed manually. In this thesis, we explore several tools that facilitate the process of building intelligent systems, and which reduce the cognitive effort required to design, develop, test and deploy intelligent software systems. First, we introduce an integrated development environment (IDE) for programming Robot Operating System (ROS) applications, called Hatchery (Chapter 2). Second, we describe Kotlin∇, a language and type system for differentiable programming, an emerging paradigm in machine learning (Chapter 3). Third, we propose a new algorithm for automatically testing differentiable programs, drawing inspiration from techniques in adversarial and metamorphic testing (Chapter 4), and demonstrate its empirical efficiency in the regression setting. Fourth, we explore a container infrastructure based on Docker, which enables reproducible deployment of ROS applications on the Duckietown platform (Chapter 5). Finally, we reflect on the current state of programming tools for these applications and speculate what intelligent systems programming might look like in the future (Chapter 6)

    Analysis of Students' Programming Knowledge and Error Development

    Get PDF
    Programmieren zu lernen ist fĂŒr viele eine große Herausforderung, da es unterschiedliche FĂ€higkeiten erfordert. Man muss nicht nur die Programmiersprache und deren Konzepte kennen, sondern es erfordert auch spezifisches DomĂ€nenwissen und eine gewisse Problemlösekompetenz. Wissen darĂŒber, wie sich die Programmierkenntnisse Studierender entwickeln und welche Schwierigkeiten sie haben, kann dabei helfen, geeignete Lehrstrategien zu entwickeln. Durch die immer weiter steigenden Studierendenzahlen wird es jedoch zunehmend schwieriger fĂŒr LehrkrĂ€fte, die BedĂŒrfnisse, Probleme und Schwierigkeiten der Studierenden zu erkennen. Das Ziel dieser Arbeit ist es, Einblick in die Entwicklung von Programmierkenntnissen der Studierenden anhand ihrer Lösungen zu Programmieraufgaben zu gewinnen. Wissen setzt sich aus sogenannten Wissenskomponenten zusammen. In dieser Arbeit fokussieren wir uns auf syntaktische Wissenskomponen, die aus abstrakten SyntaxbĂ€umen abgeleitet werden können, und semantische Wissenskomponenten, die durch sogenannte Variablenrollen reprĂ€sentiert werden. Da Wissen an sich nicht direkt messbar ist, werden hĂ€ufig Skill-Modelle verwendet, um den Kenntnissstand abzuschĂ€tzen. Jedoch hat die ProgrammierdomĂ€ne ihre eigenen speziellen Eigenschaften, die bei der Wahl eines geeigneten Skill-Modells berĂŒcksichtigt werden mĂŒssen. Eine der Haupteigenschaften in der Programmierung ist, dass die Wissenskomponenten nicht unabhĂ€ngig voneinander sind. Aus diesem Grund schlagen wir ein dynamisches Bayesnetz (DBN) als Skill-Modell vor, da es erlaubt, diese AbhĂ€ngigkeiten explizit zu modellieren. Neben derWahl eines passenden Skill-Modells, mĂŒssen auch bestimmte Meta-Parameter wie beispielsweise die GranularitĂ€t der Wissenkomponenten festgelegt werden. Daher evaluieren wir, wie sich die Wahl von Meta-Parameters auf die VorhersagequalitĂ€t von Skill-Modellen auswirkt und wie diese Meta-Parameter gewĂ€hlt werden sollten. Wir nutzen das DBN, um Lernkurven fĂŒr jede Wissenskomponenten zu ermitteln und daraus Implikationen fĂŒr die Lehre abzuleiten. Nicht nur das Wissen von Studierenden, sondern auch deren “Falsch”-Wissen ist von Bedeutung. Deswegen untersuchen wir zunĂ€chst manuell sĂ€mtliche Programmierfehler der Studierenden und bestimmen deren HĂ€ufigkeit, Dauer und Wiederkehrrate. Wir unterscheiden dabei zwischen den Fehlerkategorien syntaktisch, konzeptuell, strategisch, NachlĂ€ssigkeit, Fehlinterpretation und DomĂ€ne und schauen, wie sich die Fehler ĂŒber die Zeit entwickeln. Außerdem verwenden wir k-means-Clustering um potentielle Muster in der Fehlerentwicklung zu finden. Die Ergebnisse unserer Fallstudien sind vielversprechend. Wir können zeigen, dass die Wahl der Meta-Parameter einen großen Einfluss auf die VorhersagequalitĂ€t von Modellen hat. Außerdem ist unser DBN vergleichbar leistungsstark wie andere Skill-Modelle, ist gleichzeitig aber besser zu interpretieren. Die Lernkurven der Wissenskomponenten und die Analyse der Programmierfehler liefern uns wertvolle Erkenntnisse, die der Kursverbesserung helfen können, z.B. dass die Studierenden mehr Übungsaufgaben benötigen oder mit welchen Konzepten sie Schwierigkeiten haben.Learning to program is a hard task since it involves different types of specialized knowledge. You do not only need knowledge about the programming language and its concepts, but also knowledge from the problem domain and general problem solving abilities. Knowing how students develop programming knowledge and where they struggle, may help in the development of suitable teaching strategies. However, the ever increasing number of students makes it more and more difficult for educators to identify students’ needs, problems, and deficiencies. The goal of the thesis is to gain insights into students programming knowledge development based on their solutions to programming exercises. Knowledge is composed of so called knowledge components (KCs). In this thesis, we focus on KCs on a syntactic level, which can be derived from abstract systax trees, e.g., loops, comparison, etc., and semantic level, represented by so called roles of variables. Since knowledge is not directly measurable, skill models are an often used for the estimation of knowledge. But, the programming domain has its own characteristics which have to be considered when selecting an appropriate skill model. One of the main characteristics of the programming domain are the dependencies between KCs. Hence, we propose and evaluate a Dynamic Bayesian Network (DBN) for skill modeling which allows to model that dependencies explicitly. Besides the choice of a concrete model, also certain metaparameters like, e.g., the granularity level of KCs, has to be set when designing a skill model. Therefore, we evaluate how meta-parameterization affects the prediction performance of skill models and which meta-parameters to choose. We use the DBN to create learning curves for each KC and deduce implications for teaching from them. But not only students knowledge but also their “mal-knowledge” is of importance. Therefore, we manually inspect students’ programming errors and determine the error’s frequency, duration, and re-occurrence. We distinguish between the error categories syntactic, conceptual, strategic, sloppiness, misinterpretation, and domain and analyze how the errors change over time. Moreover, we use k-means clustering to identify different patterns in the development of programming errors. The results of our case studies are promising. We show that the correct metaparameterization has a huge effect on the prediction performance of skill models. In addition, our DBN performs as well as the other skill models while providing better interpretability. The learning curves of KCs and the analysis of programming errors provide valuable information which can be used for course improvement, e.g., that students require more practice opportunities or are struggling with certain concepts.2022-02-0

    34th Midwest Symposium on Circuits and Systems-Final Program

    Get PDF
    Organized by the Naval Postgraduate School Monterey California. Cosponsored by the IEEE Circuits and Systems Society. Symposium Organizing Committee: General Chairman-Sherif Michael, Technical Program-Roberto Cristi, Publications-Michael Soderstrand, Special Sessions- Charles W. Therrien, Publicity: Jeffrey Burl, Finance: Ralph Hippenstiel, and Local Arrangements: Barbara Cristi

    The shared data-object model as a paradigm for programming distributed systems

    Get PDF

    GM : a gate matrix layout generator

    Get PDF
    • 

    corecore