37,276 research outputs found

    On Object-Orientation

    Full text link
    Although object-orientation has been around for several decades, its key concept abstraction has not been exploited for proper application of object-orientation in other phases of software development than the implementation phase. We mention some issues that lead to a lot of confusion and obscurity with object-orientation and its application in software development. We describe object-orientation as abstract as possible such that it can be applied to all phases of software development

    ProgramaciĂłn lĂłgica

    Get PDF
    Treballs Finals de Grau d'Enginyeria Informàtica, Facultat de Matemàtiques, Universitat de Barcelona, Any: 2015, Director: Juan Carols Martínez AlonsoThis text aims to collect the research work done in a very specific field of programming, logic programming. Therefore, I have focused my work on the study of first-order logic and specific language for this paradigm: Prolog. Dr. Peña Marí wrote in bis book "De Euclides a Java", about the history of algorithmics: «This story begins almost at very same time that the history of mankind... ». But this study does not go that far. Since the purpose of the work is programming -or rather, a part of it-, we must move forward in time a bit... The aim of this work is to expand the knowledge received in the course of "Logica i llenguatges, Grade Computer Engineering" at UB. In previous editions more study material was dealt with, so that the course had to be divided in two different matters. My work has consisted on studying all materials that are no longer a topic within the course, extending them when necessary, namely the study of Prolog language. I want to start my presentation by putting, both in historical and scientific context, everything connected with what I'm going to talk about in this work. In this introductory chapter I will try to provide you with some historical details. I will cite the most basic, necessary elements that make possible programming, the programmable machines. I will give a context to our programming paradigm, that is, logic programming. In chapter 2 I will explain the first-order logic, in full detail. I will review the basic and most characteristic predicate language concepts, interpretations in these languages and some logical equivalences. At the end we'll see the unification algorithm and the method of resolution specifics for languages with declarative paradigm, and more specifically, the logical one. In chapter 3 we will see the programming language Prolog. We will see its relationship with the declarative and logic languages, its evolution throughout history, the way we use it, its basic elements, and how it makes it possible to unify terms. We'll see the way lists are dealt with, arithmetic expressions are used, cut is used, etc. We will finish in chapter 4 with a few solved exercises to exemplify all the the information in this work, either related to predicate logic, or to fundamentals of Prolog

    From Functions to Object-Orientation by Abstraction

    Full text link
    In previous work we developed a framework of computational models for function and object execution. The models on an higher level of abstraction in this framework allow for concurrent execution of functions and objects. We show that the computational model for object execution complies with the fundamentals of object-orientation.Comment: arXiv admin note: text overlap with arXiv:1010.3100, arXiv:1111.5172, arXiv:1208.334

    Key courses of academic curriculum uncovered by data mining of students' grades

    Full text link
    Learning is a complex cognitive process that depends not only on an individual capability of knowledge absorption but it can be also influenced by various group interactions and by the structure of an academic curriculum. We have applied methods of statistical analyses and data mining (Principal Component Analysis and Maximal Spanning Tree) for anonymized students' scores at Faculty of Physics, Warsaw University of Technology. A slight negative linear correlation exists between mean and variance of course grades, i.e. courses with higher mean scores tend to possess a lower scores variance. There are courses playing a central role, e.g. their scores are highly correlated to other scores and they are in the centre of corresponding Maximal Spanning Trees. Other courses contribute significantly to students' score variance as well to the first principal component and they are responsible for differentiation of students' scores. Correlations of the first principal component to courses' mean scores and scores variance suggest that this component can be used for assigning ECTS points to a given course. The analyse is independent from declared curricula of considered courses. The proposed methodology is universal and can be applied for analysis of student's scores and academic curriculum at any faculty

    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

    Gift Young Engineers: An Extra-Curricular Initiative for Updating Computer and Electrical Engineering Courses

    No full text
    The curricula of engineering courses are well defined by the central government for all Brazilian universities. Indeed, there are some mandatory determinations that must be fulfilled prior to the accreditation of any engineering course in Brazil. Modifications must be submitted for evaluation beforehand, resulting in a process that sometimes takes years to be approved. That is a secure way to guarantee that the fundamentals of each engineering program will be part of the students’ carrier all over the country, and at the same time a problem when you need to introduce new technological subjects. That poses a problem when you have new demands for technological curricular components that could express the actual state of the art of modern subjects. Trying to solve these issues some professors from the Federal University of Amazonas developed a flexible extra-curricular program for electrical and computer engineering courses, named Gift Young Engineers. This paper describes the philosophy of these extra-curricular programs. Some examples of successful particular partnerships are also discussed. Indeed the proposed training programs for Digital TV Systems (hardware and software) will be presented and analyzed in details. The obtained results will also be discussed in order to contribute to similar experiences worldwide

    A game-based approach to the teaching of object-oriented programming languages

    Get PDF
    Students often have difficulties when trying to understand the concepts of object-oriented programming (OOP). This paper presents a contribution to the teaching of OOP languages through a game-oriented approach based on the interaction with tangible user interfaces (TUIs). The use of a specific type of commercial distributed TUI (Sifteo cubes), in which several small physical devices have sensing, wireless communication and user-directed output capabilities, is applied to the teaching of the C# programming language, since the operation of these devices can be controlled by user programs written in C#. For our experiment, we selected a sample of students with a sufficient knowledge about procedural programming, which was divided into two groups: The first one had a standard introductory C# course, whereas the second one had an experimental C# course that included, in addition to the contents of the previous one, two demonstration programs that illustrated some OOP basic concepts using the TUI features. Finally, both groups completed two tests: a multiple-choice exam for evaluating the acquisition of basic OOP concepts and a C# programming exercise. The analysis of the results from the tests indicates that the group of students that attended the course including the TUI demos showed a higher interest level (i.e. they felt more motivated) during the course exposition than the one that attended the standard introductory C# course. Furthermore, the students from the experimental group achieved an overall better mark. Therefore, we can conclude that the technological contribution of Sifteo cubes – used as a distributed TUI by which OOP basic concepts are represented in a tangible and a visible way – to the teaching of the C# language has a positive influence on the learning of this language and such basic concepts

    CS Circles: An In-Browser Python Course for Beginners

    Full text link
    Computer Science Circles is a free programming website for beginners that is designed to be fun, easy to use, and accessible to the broadest possible audience. We teach Python since it is simple yet powerful, and the course content is well-structured but written in plain language. The website has over one hundred exercises in thirty lesson pages, plus special features to help teachers support their students. It is available in both English and French. We discuss the philosophy behind the course and its design, we describe how it was implemented, and we give statistics on its use.Comment: To appear in SIGCSE 201

    ITSB: An Intelligent Tutoring System Authoring Tool

    Get PDF
    Abstract. Intelligent Tutoring System Builder (ITSB) is an authoring tool designed and developed to aid teachers in constructing intelligent tutoring systems in a multidisciplinary fields. The teacher is needed to create a set of pedagogical fundamentals, which, in line, are inured to automatically build up a broad tutor framework and construct an intelligent tutoring system. In this paper an explanation of the theory and the architecture of the tool is outlined. A presentation of several system components, the requirements of the different components, integration of these components in ITSB tool are shown. Furthermore, implanting of requirements, cognitive principle, and common design fundamentals in the tool to ease the use of teachers. A variety of design matters, an example of building an intelligent tutoring system for teaching Java language using ITSB tool and an evaluation are presented
    • 

    corecore