86,817 research outputs found
Teaching functional programming to first-year students
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
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
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
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
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
- …