182 research outputs found

    Technical Dimensions of Programming Systems

    Get PDF
    Programming requires much more than just writing code in a programming language. It is usually done in the context of a stateful environment, by interacting with a system through a graphical user interface. Yet, this wide space of possibilities lacks a common structure for navigation. Work on programming systems fails to form a coherent body of research, making it hard to improve on past work and advance the state of the art. In computer science, much has been said and done to allow comparison of programming languages, yet no similar theory exists for programming systems; we believe that programming systems deserve a theory too. We present a framework of technical dimensions which capture the underlying characteristics of programming systems and provide a means for conceptualizing and comparing them. We identify technical dimensions by examining past influential programming systems and reviewing their design principles, technical capabilities, and styles of user interaction. Technical dimensions capture characteristics that may be studied, compared and advanced independently. This makes it possible to talk about programming systems in a way that can be shared and constructively debated rather than relying solely on personal impressions. Our framework is derived using a qualitative analysis of past programming systems. We outline two concrete ways of using our framework. First, we show how it can analyze a recently developed novel programming system. Then, we use it to identify an interesting unexplored point in the design space of programming systems. Much research effort focuses on building programming systems that are easier to use, accessible to non-experts, moldable and/or powerful, but such efforts are disconnected. They are informal, guided by the personal vision of their authors and thus are only evaluable and comparable on the basis of individual experience using them. By providing foundations for more systematic research, we can help programming systems researchers to stand, at last, on the shoulders of giants

    Topics in Programming Languages, a Philosophical Analysis through the case of Prolog

    Get PDF
    [EN]Programming languages seldom find proper anchorage in philosophy of logic, language and science. is more, philosophy of language seems to be restricted to natural languages and linguistics, and even philosophy of logic is rarely framed into programming languages topics. The logic programming paradigm and Prolog are, thus, the most adequate paradigm and programming language to work on this subject, combining natural language processing and linguistics, logic programming and constriction methodology on both algorithms and procedures, on an overall philosophizing declarative status. Not only this, but the dimension of the Fifth Generation Computer system related to strong Al wherein Prolog took a major role. and its historical frame in the very crucial dialectic between procedural and declarative paradigms, structuralist and empiricist biases, serves, in exemplar form, to treat straight ahead philosophy of logic, language and science in the contemporaneous age as well. In recounting Prolog's philosophical, mechanical and algorithmic harbingers, the opportunity is open to various routes. We herein shall exemplify some: - the mechanical-computational background explored by Pascal, Leibniz, Boole, Jacquard, Babbage, Konrad Zuse, until reaching to the ACE (Alan Turing) and EDVAC (von Neumann), offering the backbone in computer architecture, and the work of Turing, Church, Gödel, Kleene, von Neumann, Shannon, and others on computability, in parallel lines, throughly studied in detail, permit us to interpret ahead the evolving realm of programming languages. The proper line from lambda-calculus, to the Algol-family, the declarative and procedural split with the C language and Prolog, and the ensuing branching and programming languages explosion and further delimitation, are thereupon inspected as to relate them with the proper syntax, semantics and philosophical élan of logic programming and Prolog

    CLiFF Notes: Research in the Language Information and Computation Laboratory of The University of Pennsylvania

    Get PDF
    This report takes its name from the Computational Linguistics Feedback Forum (CLIFF), an informal discussion group for students and faculty. However the scope of the research covered in this report is broader than the title might suggest; this is the yearly report of the LINC Lab, the Language, Information and Computation Laboratory of the University of Pennsylvania. It may at first be hard to see the threads that bind together the work presented here, work by faculty, graduate students and postdocs in the Computer Science, Psychology, and Linguistics Departments, and the Institute for Research in Cognitive Science. It includes prototypical Natural Language fields such as: Combinatorial Categorial Grammars, Tree Adjoining Grammars, syntactic parsing and the syntax-semantics interface; but it extends to statistical methods, plan inference, instruction understanding, intonation, causal reasoning, free word order languages, geometric reasoning, medical informatics, connectionism, and language acquisition. With 48 individual contributors and six projects represented, this is the largest LINC Lab collection to date, and the most diverse

    M̲, a memory manager for Ḻ

    Get PDF
    Thesis (M.S.)--Massachusetts Institute of Technology, Dept. of Electrical Engineering and Computer Science, 1988.Characters with an underscore appear as italic on the t.p.Bibliography: leaves 94-95.by Andrew Edward Ayers.M.S

    Impact of Ada and object-oriented design in the flight dynamics division at Goddard Space Flight Center

    Get PDF
    The Software Engineering Laboratory (SEL) is an organization sponsored by NASA/GSFC and created to investigate the effectiveness of software engineering technologies when applied to the development of applications software. The goals of the SEL are (1) to understand the software development process in the GSFC environment; (2) to measure the effects of various methodologies, tools, and models on this process; and (3) to identify and then to apply successful development practices. The activities, findings, and recommendations of the SEL are recorded in the Software Engineering Laboratory Series, a continuing series of reports that includes this document

    Development of computer science online and preliminary validation of its efficacy as an instructional environment

    Full text link
    CS Online was developed as an instructional environment to address many issues facing computer science education. One of these is the need to rekindle interest in introductory computer science. CS Online seeks to accomplish this by offering active learning experiences set in real-world contexts. The intended outcomes are increased interest in computer science as an academic discipline, increased enrollments in related courses, and increased achievement resulting from cognitive skills growth; The CS Online system generated data while 36 high school students solved programming problems, and questionnaires administered by the system were used to collect information about students\u27 self-regulatory skills and experience in math and computers. In addition, qualitative data analysis of source code submitted by students was conducted to determine how students progressed through the problem solving process and the common mistakes they made; The study revealed that students with differing levels of math and computer experience and self-regulatory skills were able to adequately complete programming problems using the system. The descriptive data on the 36 students indicated that students with high motivation seemed to outperform low motivation students in all performance measures in the study. Those who had high planning skills also seemed to outperform the low group in most of the performance measures. A similar pattern was observed in the students with high versus low math and computer skills. As the task difficulty increased, students with high planning skills seemed to require increasingly fewer attempts to complete exercises than those with lower planning skills. A qualitative analysis of problem solving revealed that students erred in syntax, logic, and then grammar---in that order. It was also shown that students spent considerable time re-running programs to observe output or to clean-up code; Although the findings suggest that in general motivation and planning seem to be important components of learning a programming language, the current descriptive findings should be interpreted with caution. Future studies with larger sample sizes are warranted. To examine effects of self-regulation on learning and performance, other relevant variables, such as existing computer language skills, may be included to control their effects on the performance; Additional findings suggest that the use of hints were helpful for students with lower math skills, computer skills, and motivation. Teachers can encourage the use of hints for those who need the extra help, but can discourage their use for the more highly skilled and motivated. The findings also suggest that, based on the types of mistakes students commonly made, instruction on debugging skills should be considered to reduce the number of syntax, logic, and grammar errors. Less time spent correcting errors becomes more time spent on problem solving. (Abstract shortened by UMI.)

    Software test and evaluation study phase I and II : survey and analysis

    Get PDF
    Issued as Final report, Project no. G-36-661 (continues G-36-636; includes A-2568

    Natural Language Tutoring and the Novice Programmer

    Get PDF
    For beginning programmers, inadequate problem solving and planning skills are among the most salient of their weaknesses. Novices, by definition, lack much of the tacit knowledge that underlies effective programming. This dissertation examines the efficacy of natural language tutoring (NLT) to foster acquisition of this tacit knowledge. Coached Program Planning (CPP) is proposed as a solution to the problem of teaching the tacit knowledge of programming. The general aim is to cultivate the development of such knowledge by eliciting and scaffolding the problem solving and planning activities that novices are known to underestimate or bypass altogether. ProPL (pro-PELL), a dialogue-based intelligent tutoring system based on CPP, is also described. In an evaluation, the primary findings were that students who received tutoring from ProPL seemed to exhibit an improved ability compose plans and displayed behaviors suggestive of thinking at greater levels of abstraction than students in a read-only control group. The major finding is that NLT appears to be effective in teaching program composition skills

    MU : a domain-independent case-based expert system

    Get PDF
    • …
    corecore