8,356 research outputs found

    Several types of types in programming languages

    Get PDF
    Types are an important part of any modern programming language, but we often forget that the concept of type we understand nowadays is not the same it was perceived in the sixties. Moreover, we conflate the concept of "type" in programming languages with the concept of the same name in mathematical logic, an identification that is only the result of the convergence of two different paths, which started apart with different aims. The paper will present several remarks (some historical, some of more conceptual character) on the subject, as a basis for a further investigation. The thesis we will argue is that there are three different characters at play in programming languages, all of them now called types: the technical concept used in language design to guide implementation; the general abstraction mechanism used as a modelling tool; the classifying tool inherited from mathematical logic. We will suggest three possible dates ad quem for their presence in the programming language literature, suggesting that the emergence of the concept of type in computer science is relatively independent from the logical tradition, until the Curry-Howard isomorphism will make an explicit bridge between them.Comment: History and Philosophy of Computing, HAPOC 2015. To appear in LNC

    Teaching Archetypal Design with an Electronic Textbook

    Get PDF
    How can parallel programming be made tractable for students in high schools and community colleges, to programmers in four-year colleges, to commercial and government employees, to interested independent users learning on their own, and as CASE tools for professional software designers? The computer science community must address this question if the ability of programmers to harness the power of parallel systems is to maintain pace with technology advances forthcoming in parallel systems. This paper addresses some of the issues of bringing parallel programming to the people, ranging from newly developing programmers with little experience on any computer to seasoned programmers of single-processor machines. We aim not only to enable people to use more powerful computers, but also to enable people to use computers more powerfully, by nurturing the techniques that enable them to develop efficient, correct code with relative ease. This paper briefly presents the concept of an Archetype, a software engineering methodology developed at the Caltech for patterns of problem solving, and for providing media for quick reference and natural software reuse. We then describe eText, an interactive multimedia electronic textbook that facilitates the teaching of, navigating through, and referring to Archetypes. Initial experience with Archetypes and the electronic textbook suggests that this approach to teaching parallel programming can aid computer users in the immediate future

    Teaching programming with computational and informational thinking

    Get PDF
    Computers are the dominant technology of the early 21st century: pretty well all aspects of economic, social and personal life are now unthinkable without them. In turn, computer hardware is controlled by software, that is, codes written in programming languages. Programming, the construction of software, is thus a fundamental activity, in which millions of people are engaged worldwide, and the teaching of programming is long established in international secondary and higher education. Yet, going on 70 years after the first computers were built, there is no well-established pedagogy for teaching programming. There has certainly been no shortage of approaches. However, these have often been driven by fashion, an enthusiastic amateurism or a wish to follow best industrial practice, which, while appropriate for mature professionals, is poorly suited to novice programmers. Much of the difficulty lies in the very close relationship between problem solving and programming. Once a problem is well characterised it is relatively straightforward to realise a solution in software. However, teaching problem solving is, if anything, less well understood than teaching programming. Problem solving seems to be a creative, holistic, dialectical, multi-dimensional, iterative process. While there are well established techniques for analysing problems, arbitrary problems cannot be solved by rote, by mechanically applying techniques in some prescribed linear order. Furthermore, historically, approaches to teaching programming have failed to account for this complexity in problem solving, focusing strongly on programming itself and, if at all, only partially and superficially exploring problem solving. Recently, an integrated approach to problem solving and programming called Computational Thinking (CT) (Wing, 2006) has gained considerable currency. CT has the enormous advantage over prior approaches of strongly emphasising problem solving and of making explicit core techniques. Nonetheless, there is still a tendency to view CT as prescriptive rather than creative, engendering scholastic arguments about the nature and status of CT techniques. Programming at heart is concerned with processing information but many accounts of CT emphasise processing over information rather than seeing then as intimately related. In this paper, while acknowledging and building on the strengths of CT, I argue that understanding the form and structure of information should be primary in any pedagogy of programming

    Musical Program Auralisation: Empirical Studies

    Get PDF
    Program auralisation aims to communicate information about program state, data, and behaviour using audio. We have argued that music offers many advantages as a communication medium [1]. The CAITLIN system [4, 16, 17, 18] was constructed to provide auralisations within a formal structured musical framework. Pilot studies [4, 16] showed that programmers could infer program structure from auralisations alone. A study was conducted using twenty-two novice programmers to assess a) whether novices could understand the musical auralisations and b) whether the musical experience and knowledge of subjects affected their performance. The results show that novices could interpret the auralisations (with accuracy varying across different levels of abstraction) and that musical knowledge had no significant effect on performance. A second experiment was conducted with another twenty-two novice programmers to study the effects of musical program auralisation on debugging tasks. The experiment aimed to determine whether auralisations would lead to higher bug detection rates. The results indicate that, in certain circumstances, musical auralisations can be used to help locate bugs in programs and that musical skill does not affect the ability to make use of the auralisations. In addition, it the experiment showed that subjective workload increased when the musical auralisations were used

    Teaching functional programming to first-year students

    Get PDF
    In the period 1986-1991, experiments have been carried out with an introductory course in computer programming, based on functional programming. Due to thorough educational design and evaluation, a successful course has been developed. This has led to a revision of the computer programming education in the first year of the computer science curriculum at the University of Twente. This article describes the approach, the aim of the computer programming course, the outline and subject matter of the course and the evaluation. Educational research has been done to assess the quality of the course. Contents 1 Introduction 50 1.1 Motivation 50 1.2 The students 51 2 The computer programming course 51 2.1 Functional Programming 52 2.2 Imperative Programming 53 2.3 Programming techniques 53 2.4 Instructional material 54 3 Evaluations 55 3.1 Observations 55 3.2 Problems 56 3.3 Functional versus imperative programming 58 4 Programming project 60 4.1 Organisation 61 4.2 Railway information sys..

    Teaching lower level computer science courses via virtual classroom and video : course reports by faculty

    Get PDF
    New Jersey Institute of Technology is the grateful recipient of a generous grant from the Alfred P. Sloan Foundation which has enabled it to explore the use of asynchronous learning networks to create and deliver an entire undergraduate degree program in computer and information science. Each of these courses uses some amount of lecture-type material delivered via videotape. These materials are usually available to students in three different ways: by viewing broadcasts on a New Jersey cable station, by renting the set of videotapes, or by viewing in a special room in the library. Videotapes for distance learning are not new and are not, in themselves, a very effective means of delivery. The innovative part of this project is the Virtual Classroomℱ which is a specially tailored set of features embedded in New Jersey Institute of Technology\u27s computer conferencing system, EIES (Electronic Information Exchange System). This makes possible a rich interchange and collaboration among students and faculty as they discuss and work through the problems and concepts in a course. As of the spring of 1995, both the B.A.I.S and the B.S.C.S. are available to distance and oncampus students. Teaching in a Virtual Classroom mixed with other media (such as video or CD ROM) is not simple however. The purpose of the enclosed descriptions of experiences by faculty members is to familiarize prospective teachers using this media mix in the future with both some ideas for how to organize their online activities, and knowledge of problems that have been encountered. The faculty members were given a suggested outline of topics to include in their reports, but otherwise were free to include whatever they thought would be of most use to other faculty members in the future, teaching the same or similar courses. Those who are interested in learning more about teaching and learning in ALN environments are referred to two book-length treatments: Starr Roxanne Hiltz, The Virtual Classroom: Learning Without Limits via Computer Networks (Ablex, Norwood NJ, 1994); and Linda Harasim, Starr Roxanne Hiltz, Lucio Teles and Murray Turoff, Learning Networks: A Field Guide to Teaching and Learning Online (MIT Press, 1995

    A Comparative Analysis of Structured and Object-Oriented Programming Methods

    Get PDF
    The concepts of structured and object-oriented programming methods are not relatively new but these approaches are still very much useful and relevant in today’s programming paradigm. In this paper, wedistinguish the features of structured programs from that of object oriented programs. Structured programming is a method of organizing and coding programs that can provide easy understanding and modification, whereas objectoriented programming (OOP) consists of a set of objects, which can vary dynamically, and which can execute byacting and reacting to each other, in much the same way that a real-world process proceeds (the interaction of realworldobjects). An object-oriented approach makes programs more intuitive to design, faster to develop, more amenable to modifications, and easier to understand. With the traditional, procedural-oriented/structuredprogramming, a program describes a series of steps to be performed (an algorithm). In the object-oriented view of programming, instead of programs consisting of sets of data loosely coupled to many different procedures, objectoriented programs consist of software modules called objects that encapsulate both data and processing while hidingtheir inner complexities from programmers and hence from other object

    A Comparative Analysis of Structured and Object-Oriented Programming Methods

    Get PDF
    The concepts of structured and object-oriented programming methods are not relatively new but these approaches are still very much useful and relevant in today’s programming paradigm. In this paper, wedistinguish the features of structured programs from that of object oriented programs. Structured programming is a method of organizing and coding programs that can provide easy understanding and modification, whereas objectoriented programming (OOP) consists of a set of objects, which can vary dynamically, and which can execute byacting and reacting to each other, in much the same way that a real-world process proceeds (the interaction of realworldobjects). An object-oriented approach makes programs more intuitive to design, faster to develop, more amenable to modifications, and easier to understand. With the traditional, procedural-oriented/structuredprogramming, a program describes a series of steps to be performed (an algorithm). In the object-oriented view of programming, instead of programs consisting of sets of data loosely coupled to many different procedures, objectoriented programs consist of software modules called objects that encapsulate both data and processing while hidingtheir inner complexities from programmers and hence from other object
    • 

    corecore