www.editrice-esculapio.it
)
2002, ISBN 88-7488-031-6
Jon D. Harrop
Available from
Flying Frog Consultancy Ltd..
This book teaches the fundamentals of programming using OCaml, assuming little prior knowledge of computer programming. Particular emphasis is placed upon programming paradigms rarely seen in current scientific computing, such as exceptions, polymorphism, higher-order functions, nested functions, pattern matching and modules.
Guy Cousineau and Michel Mauny
Cambridge University Press, Cambridge, 1998, ISBN 0-521-57183-9
(hardcover), 0-521-57681-4 (paperback) (web
page of the book)
A programming course should concentrate as much as possible on a program's logical structure and design rather than simply show how to write code. The Functional Approach to Programming achieves this aim because logical concepts are evident and programs are transparent so can be written quickly and cleanly. In this book the authors emphasise the notions of function and function application which relate programming to familiar concepts from mathematics and logic. They introduce functional programming via examples but also explain what programs compute and how to reason about them. They show how the ideas can be implemented in the Caml language, a dialect of the ML family, and give examples of how complex programs from a variety of areas (such as arithmetic, tree algorithms, graph algorithms, text parsing and geometry) can be developed in close agreement with their specifications. Many exercises and examples are included throughout the book; solutions are also available.
Available from Amazon.
Bruno Petazzoni
Éditions Springer, Paris, 2001, ISBN 3-540-67387-3.
A set of sixteen problems in computer science, with detailed answers to all questions and complete solutions to algorithmic problems given as Caml programs.
Written for students attending to the computer science optional cursus of the MPSI/MP classes (classes préparatoires aux grandes écoles d'ingénieurs), this book mainly covers problems on automata, words (finite or infinite), formal languages theory, and some classical algorithms such as bin packing.
A good book for teachers and students in computer science (upto master degree).
Available from Springer.
Michel Quercia
Éditions Vuibert, Paris, mai 2000, ISBN 2-7117-8990 X.
Learning computer science requires some strong theoretical basis but computer science cannot be masterized without practical exploration.
Those 103 exercices and 5 problems about algorithmic fullfill this mandatory requirement.
Programs are written in Caml and fully functionnal. Each subject is covered by a detailed answer along with the necessary theoretical preliminaries.
Summary
Michel Quercia also wrote a complete computer science course unsing
Caml as language support. This course is freely available from
http://pauillac.inria.fr/~quercia/
.
Book available from Vuibert.
Emmanuel Chailloux, Pascal Manoury, et Bruno Pagano
Éditions O'Reilly, Paris, avril 2000, ISBN 2-84177-121-0.
A comprehensive (742 pages) book on Objective Caml, covering not only the core language, but also modules, objects and classes, threads and systems programming, and interoperability with C.
A preliminary English translation of this book is available on-line. The French text is also on-line.
Pierre Weis et Xavier Leroy
Second edition, Dunod, Paris, 1999, ISBN 2-10-004383-8. First edition, InterEditions, Paris 1993.
Xavier Leroy et Pierre Weis
InterEditions, Paris 1993, ISBN 2-7296-0492-8
Two books about Caml written in french, and respectively entitled ``Le Langage Caml'' (The Caml programming language) and ``Manuel de Reference du langage Caml'' (The Caml programming language reference manual). The first one is in fact a programming course based on Caml and contains many examples of Caml programs, some of which are really non-trivial. The second book is an up-to-date french version of the Caml documentation, with new examples and new explanations when necessary.
Order online: Le langage Caml, Manuel de référence du langage Caml.
Thérèse Accart Hardin et Véronique Donzeau-Gouge Viguié
InterEditions, ISBN 2 7296 0419 7
This book presents a new approach for teaching programming concepts to beginners, based on language semantics. A simplified semantic model is used to describe precisely the features found in the most advanced functional or imperative programming languages. This model is powerful enough to take into account typechecking, polymorphism, evaluation, side-effects, modularity, genericity, exceptions. However, this model is simple enough to be manipulated by hand, so that students may really compute with it. This book starts with a functional approach (with CAML), followed by the presentation of the imperative languages (with Ada). Thanks to the semantic model, the concepts of the imperative and functional worlds and their relationships may be explained simply but correctly and completely. Also, this book provides numerous exercises with solutions.
Guy Cousineau et Michel Mauny
Ediscience (Collection Informatique), Paris 1995, ISBN 2-84074-114-8 (web page of the book)
This book is also available in english (see here).
It uses CAML somehow in the same spirit as Abelson and Sussman use SCHEME in their book "Structure and interpretation of computer programs" i.e. as a tool to introduce the main programming concepts.
The book is divided in three parts. The first part is an introduction to CAML and to the spirit of functional programming a la ML. It introduces the kernel of CAML (functional structure and data types) and then describes evaluation by rewriting, evaluation strategies and program proofs by induction. Finally, once the principles of functional programming have been stated, it describes the imperative features of CAML.
The second part is dedicated to the description of application programs which belong to various fields and might interest various types of readers or students. These fields are exact arithmetic (integer, rational), algorithms on terms (pattern- matching, unification and applications), balanced trees for the implementations of sets and maps, graph traversals with application to problem solving, lexical and syntactic analysis, tree drawing and tesselations of the plane.
Finally, the third part is dedicated to implementation. It describes interpretation then compilation, with a brief description of memory management, and finally type synthesis. It does not describe an existing implementation in full details but rather emphasizes clarity and simplicity of description. However, the description of type synthesis is quite close to a real implementation.
Denis Monasse
Vuibert (Enseignement supérieur & Informatique), Paris 1996, ISBN 2-7117-8831-8
This is a computer science course for the first year of ``Classes préparatoires aux grandes Écoles'', the french excellence way to become an engineer. The course starts by an introductory lesson on algorithms and a description of the Caml language. Then fundamental of algorithms are described and illustrated via programs in Caml.
The book aims at mathematical reasonning, and mathematical descriptions of objects are related to the data structures of the programming language.
This book is intended for students with some mathematical
background, and every one who wants to learn the bases of computer
science.
Mathematics and computer science teachers will also read this book with
profit.
Jacques Rouablé
Eyrolles, Paris 1997, ISBN 2-212-08944-9
This books is adressed to beginners that will find here the basic notions of programming. The teacher will dig here the basic material to write training exercises for students.
The book has two parts :
Three complete programs are given : a translator, an electronic spreadsheet, and a text editor.
The book is equipped with a companion CD-Rom, containing the Caml sources of the examples given, a complete distribution of Caml-Light 0.71, an HTML version of the first part of the book (the programming course), and a commercial Web Browser to read the CD-Rom.
To contact the author : <Jacques.Rouable@wanadoo.fr>
Denis Monasse
Vuibert (Enseignement supérieur & Informatique), Paris 1997, ISBN 2-7117-8839-3
This is a computer science course for the second year of ``Classes préparatoires aux grandes Écoles'', the french excellence way to become an engineer.
The book contains 4 parts: Trees - Algebraic expressions - Automata and languages - Caml programming: streams.
The books has a table of contents of more than 120 entries and there are more than 200 Caml programs, the language chosen for its expressive power, its elegance and readability, and also for its simplicity and its fit to the themes studied.
As for the first year course, the book aims at mathematical rigor and reasonning: mathematical descriptions of objects are related to data structures, algorithms are validated and implemented as Caml programs.
This book is intended for students with some mathematical
background, and every one who wants to learn the bases of computer
science.
Mathematics and computer science teachers will also read this book with
profit.
Ouvrage collectif -- Coordination Luc Albert
Thomson Publishing Internationl, Paris 1997, ISBN 2-84180-106-3
This book has been written by teachers from university and ``classes préparatoires aux grandes écoles''. It is intended to students from CPGE learning computer science, and students engaged in a computer science cursus at the master level. Any person that desires to get a basic knowledge in theoretical computer science will read it with profit.
This book includes a tutorial for the Caml language, and a course on algorithmic, data structures, automats theory, and formal logic.
It offers 135 exercices (with solutions) and encompasses the full cursus for students that engaged the computer science option in ``MPSI'' and ``MP'' classes; the official cursus program is given in an appendix. Teachers will find in this book a basis to build lectures, exercices, and application projets.
About the authors
Luc Albert, Bruno Petazzoni and Nicolas Puech are teachers at ``classes préparatoire'' at Fénelon, Marcelin Berthelot and Newton high schools. Antoine Petit teaches at l'ENS Cachan, Pascal Weil is researcher at CNRS, and Paul Gastin teaches at Paris VII university.
Authors' royalties are sent to various non-profit organisations: AICF (struggle against starving), l'OPC (that helps blind people), and ROC (environmental preservation).
Juergen Wolff v. Gudenberg
Addison-Wesley, Bonn 1996
The design of algorithms, their implementation and the handling of data structures belong to the basic tools of each computer scientist.
This book gives an introduction where algorithms as well as data structures are considered functionally. It is intended as an accompanying book for basic courses in computer science, but it is also suitable for self-studies.
In the first part the algorithms are concisely and precisely designed
using Caml Light as a kind of pseudo code. The main ideas are thus not
concealed by a lot of details.
As an additional advantage the pseudo code describes complete programs
and the designs are directly executable.
In this manner the reader becomes familar with functional programming.
The second part provides a tutorial introduction into the language Caml Light and in its last chapter a comprehensive description of the language kernel.
Caml Light is an easily portable, typed, functional language which is interpreted but may also be compiled if neccessary. There is a considerable amount of interesting application modules.
The sample programs for all algorithms mentioned in the book are freely available as well as the system itself.
Carla Limongelli e Marta Cialdea
Societa' Editrice Esculapio, 2002, ISBN 88-7488-031-6.