Academia.edu no longer supports Internet Explorer.
To browse Academia.edu and the wider internet faster and more securely, please take a few seconds to upgrade your browser.
1990, SIGCSE bulletin
Various arguments have been made for the use of functional programming, This paper presents some additional arguments for teaching the discipline of functional programming in an introductory programming course. In particular, functional programming . focuses students on the goal of solving the problem at hand rather than distracting them with a multitude of extraneous details; . encourages the formation of templates, i.e. stereotypical chunks of programming knowledge; . provides computer experiences that reinforce and deepen students' understanding of the abstract concept of function; . leads to code that is concise and elegant. We illustrate these points and others with some of our favorite functional programming examples. Examples are given in LISP and Pascal.
1999
Abstract We outline a deductive concept for an introductory course to computer science aimed at CS students as well as students from other disciplines. The emphasis is on introducing fundamental concepts of computer science and showing how they evolve from each other. Functional programming in Haskell is used as a vehicle to explain these concepts and to allow for practical exercises. We argue that functional programming is more than just a good option for such an introductory course.
1995
This paper discusses our experience in using a functional language in topics across the computer science curriculum. After examining the arguments for taking a functional approach, we look in detail at four case studies from different areas: programming language semantics, machine architectures, graphics and formal languages.
1998
The choice of which programming language to use in introductory computer science courses is guaranteed to spark debate in the computer science community. Programming languages used in computer science instruction have followed various trends or fads within the computing industry. The language choice has often been between languages which are currently in wide use by industry for software production. While it is true that computer science education has a responsibility to achieve a balance between providing training in current practices within the field and core concepts and theory, it is felt that computer science education should not be overly influenced by popular trends when choosing a programming language to use in the teaching of introductory computer science. Functional programming languages are shown to be useful in the teaching of the concepts of computer science. The functional language approach presented in this paper has advantages over imperative languages in the areas of model building, exposition, experimentation and analysis of algorithms. Examples using the J and Scheme programming languages, with emphasis on the use of functional programming notation in exposition are given. 1
Journal of Functional …, 1993
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 rst year of the computer science curriculum at the University o f T w ente.
2002
Functional programming is a powerful style in which to write programs. However, students and faculty alike often have a hard time appreciating its beauty and learning to exploit its power. These difficulties arise in part because the functional style requires programmers to think at a higher level of abstraction, and in part because functional programs differ in fundamental ways from programs written in more common styles. A pattern language of functional programs can provide programmers with concrete guidance for writing functional programs and at the same time offer a deeper appreciation of functional style. Used effectively, such pattern languages will help functional programming educators reach a broader audience of faculty, students, and professionals. The result will be better programmers and better programs.
Lecture Notes in Computer Science, 1995
This paper describes why and how a functional programming language was used in an introductory database course. The purpose of the programming exercises in this course is to give students a better understanding of the internal structure and use of databases and database management systems. We used a functional language for its high level of abstraction and the automatic memory management which make writing a simple database management system considerably easier. Although the students had no previous knowledge of functional programming, they were capable to obtain useful experience in the database field. In order to enable students to concentrate on the database aspects of the exercises and to make rather elaborated systems in a limited amount of time, we supplied skeletons of the programs to make. Only the parts that are the core of the exercise had to be written by the students. The exercises appear to serve their purpose very well. The corresponding parts of the exams are made considerably better since the introduction of these exercises in the course. After some initial hesitation, the students indicate that they prefer a functional language for these exercises above the imperative languages they know. basic database course. In: P. H. Hartel and M. J. Plasmeijer (editors): Functional programming languages in education FPLE,
2014
We report on the design and preliminary evaluation of a short introductory course on interactive theorem proving and program verification using the Coq proof assistant, targeted at students with background in functional programming and software engineering. The course builds on concepts familiar from functional programming to develop understanding of logic and mechanized proving by means of the Curry-Howard isomorphism. A particular emphasis is made of the computational nature of decidable properties of various data structures. This approach is of practical importance, as Coq’s normalization can automatically simplify or discharge such properties, thus reducing the burden of constructing the proofs by hand. As a basis for teaching this style of mechanization, we use Gonthier et al.’s Ssreflect extension of Coq and its associated libraries. In the course, we minimize the exposure to ad-hoc proof automation via tactics, and request that students develop proofs using only a small set o...
Programming is an art that enables, one to elaborate or instruct ones aim to compute specific facets. The adoption of functional programming as a mainstream language is a challenge. However, with great rewards. Functional programming defines the concepts of problems that one rationalises for developing robust, scalable as well as for example concurrent systems. This research study, considers the following: why is functional programming the future for software engineering? And why is functional programming, receiving more attention than mainstream languages such as C++ and others.
2004
In this paper authors present a didactic method for teaching Data Structures on Computer Science undergraduate course. An approach using functional along with procedural languages (Haskell and ANSI C) is presented, and adequacy of such a method is discussed. Authors are also concerned on how functional language can help students to learn fundamental concepts and acquire competence on data typing and structure for real programming.
Proceedings of the Fourth International C* Conference on Computer Science and Software Engineering, 2011
One affective way to carry out a program comprehension process is by refactoring the source code. In this paper we explore this approach in the functional programming paradigm, on Haskell programs specifically. As result, we have identified many correlations between the traditional (procedural and object-oriented) program comprehension process and the so called understanding-oriented refactorings, in the functional programming context. Besides, we have identified a catalog of refactorings used to improve program efficiency which, applied in reverse order, are valuable for program understanding purposes. Coupled to these refactorings, there is a calculational process by (means of) which we obtain a full formal description of program functionality. All together, a bottom-up program comprehension strategy in the functional setting is described.
Journal of Computing Sciences in Colleges, 2006
There are several advantages to introducing a functional language early in a student's college experience: it provides an excellent setting in which to explore recursively-defined functions and data structures, it encourages more abstract thinking, and it exposes students to a language paradigm that is likely quite different from their previous experience. Even in a core curriculum based on a traditional imperative (and object-oriented) language, it is valuable to spend two or three weeks investigating a functional language. However, we have found that most existing functional languages and environments pose significant hurdles to the introductory student, especially when the language is only being used for a short time. This paper discusses some of our ideas to simplify the framework, and allow students to experiment easily with the important concepts of functional programming in the setting of CS2.
Journal of Functional Programming, 1999
ACM SIGCSE Bulletin, 1998
The goal of this paper is to describe our experiences in teaching functional programming in computer science careers at the University of Río Cuarto (Argentina). First, the frame in which the subject is learned in these careers is established. Then, the results after three years teaching this subject are discussed. The main conclusion suggests maintaining this subject in the curriculum, but redefining and updating most of its contents.
Lecture Notes in Computer Science, 1995
In this paper, we make a proposal for a second year course on advanced programming, based on the functional paradigm. It assumes the existence of a first course on programming, also based on functional languages. Its main subject is data structures. We claim that advanced data structures and algorithms can be better taught at the functional paradigm than at the imperative one, and that this can be done without losing efficiency. We also claim that, as a consequence of the higher level of abstraction of functional languages, more subjects can be covered in the given amount of time.
Lecture Notes in Computer Science, 2006
Electronic Proceedings in Theoretical Computer Science
Students introduced to programming using a design-based approach and a functional programming language become familiar with first-class functions. They rarely, however, connect first-class functions to objects and object-oriented program design. This is a missed opportunity because students inevitably go on to courses using an object-oriented programming language. This article describes how students are introduced to objects within the setting of a design-based introduction to programming that uses a functional language. The methodology exposes students to interfaces, classes, objects, and polymorphic dispatch. Initial student feedback suggests that students benefit from the approach.
Computability via Turing machines gave rise to Imperative Programming. Computability described via λ-calculus gave rise to Functional Programming. As imperative programs are more easy to run on hardware, this style of software became predominant. We present major advantages of the functional programming paradigm over the imperative one, that are applicable, provided one is has the mental capacity to explicitly deal with simple abstractions.
2007
Abstract The goal of the Commercial Users of Functional Programming series of workshops is to build a community for users of functional programming languages and technology". The fourth workshop in the series took place in Freiburg, Germany on 4th October 2007, colocated as usual with the International Conference on Functional Programming.
2008
For the past five years, the University of Oklahoma has used the ACL2 theorem prover for a year-long sequence on software engineering. The goal of the course is to introduce students to functional programming with "Applicative Common Lisp" (ACL) and to expose them to defect recognition at all levels, including unit testing, randomized testing of conjectures, and formal theorem proving in "a Computational Logic" (ACL2). Following Page's example, Northeastern University has experimented with the introduction of ACL2 into the freshman curriculum for the past two years. Northeastern's goal is to supplement an introductory course on functional program design with a course on logic and theorem proving that integrates the topic with programming projects. This paper reports on our joint project's progress. On the technical side, the paper presents the Scheme-based integrated development environment, its run-time environment for functional GUI programming, and its support for different forms of testing. On the experience side, the paper summarizes the introduction of these tools into the courses, the reaction of industrial observers of Oklahoma's software engineering course, and the feedback from a first outreach workshop.
Proceedings of the 2008 international workshop on Functional and declarative programming in education - FDPE '08, 2008
For the past five years, the University of Oklahoma has used the ACL2 theorem prover for a year-long sequence on software engineering. The goal of the course is to introduce students to functional programming with "Applicative Common Lisp" (ACL) and to expose them to defect recognition at all levels, including unit testing, randomized testing of conjectures, and formal theorem proving in "a Computational Logic" (ACL2). Following Page's example, Northeastern University has experimented with the introduction of ACL2 into the freshman curriculum for the past two years. Northeastern's goal is to supplement an introductory course on functional program design with a course on logic and theorem proving that integrates the topic with programming projects. This paper reports on our joint project's progress. On the technical side, the paper presents the Scheme-based integrated development environment, its run-time environment for functional GUI programming, and its support for different forms of testing. On the experience side, the paper summarizes the introduction of these tools into the courses, the reaction of industrial observers of Oklahoma's software engineering course, and the feedback from a first outreach workshop.
Loading Preview
Sorry, preview is currently unavailable. You can download the paper by clicking the button above.