86,817 research outputs found

    Imperative functional programming

    Full text link

    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..

    A generic imperative language for polynomial time

    Full text link
    The ramification method in Implicit Computational Complexity has been associated with functional programming, but adapting it to generic imperative programming is highly desirable, given the wider algorithmic applicability of imperative programming. We introduce a new approach to ramification which, among other benefits, adapts readily to fully general imperative programming. The novelty is in ramifying finite second-order objects, namely finite structures, rather than ramifying elements of free algebras. In so doing we bridge between Implicit Complexity's type theoretic characterizations of feasibility, and the data-flow approach of Static Analysis.Comment: 18 pages, submitted to a conferenc

    Smoothly Navigating between Functional Reactive Programming and Actors

    Full text link
    We formally define an elegant multi-paradigm unification of Functional Reactive Programming, Actor Systems, and Object-Oriented Programming. This enables an intuitive form of declarative programming, harvesting the power of concurrency while maintaining safety. We use object and reference capabilities to highlight and tame imperative features: reference capabilities track aliasing and mutability, and object capabilities track I/O. Formally, our type system limits the scope, impact and interactions of impure code. - Scope: Expressions whose input is pure will behave deterministically. - Impact: Data-races and synchronisation issues are avoided. The only way for an actor to behave nondeterministically, is by mutating its state based on message delivery order. - Interactions: Signals provide a functional boundary between imperative and functional code, preventing impure code from invalidating functional assumptions.Comment: Part of WFLP 2020 pre-proceedings (updated post-comments

    Certification of programs with computational effects

    Full text link
    In purely functional programming languages imperative features, more generally computational effects are prohibited. However, non-functional lan- guages do involve effects. The theory of decorated logic provides a rigorous for- malism (with a refinement in operation signatures) for proving program properties with respect to computational effects. The aim of this thesis is to first develop Coq libraries and tools for verifying program properties in decorated settings as- sociated with several effects: states, local state, exceptions, non-termination, etc. Then, these tools will be combined to deal with several effects

    Programming Paradigms in Computer Science Education

    Get PDF
    Main styles, or paradigms of programming – imperative, functional, logic, and object-oriented – are shortly described and compared, and corresponding programming techniques are outlined. Programming languages are classified in accordance with the main style and techniques supported. It is argued that profound education in computer science should include learning base programming techniques of all main programming paradigms
    • …
    corecore