Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
OCAML Teaching Resources
List of books on Awesome OCaml repo
Developing Applications With Objective Caml. By Emmanuel Chailloux and Pascal Manoury and Bruno Pagano
Think OCaml: How to Think Like a (Functional) Computer Scientist, by Allen Downey and Nicholas Monje.
Unix System Programming in OCaml
Using, Understanding, and Unraveling OCaml
Programmation du système Unix en Objective Caml (in French)
[Introduction to Objective Caml, by Jason Hickey, 2008] (http://courses.cms.caltech.edu/cs134/cs134b/book.pdf)
In the browser
Run and explore OCaml without installing it.
- Try OCaml
- Compile OCaml Online
- Run OCaml Code Online
Understanding the OCaml top-level (interactive) system
To use the OCaml top level system effectively it is advisable to understand its inputs and outputs.
- [Formal description of OCaml top level system] (http://caml.inria.fr/pub/docs/manual-ocaml-400/manual023.html)
- [Explanation of the output of the OCaml top level system] ---waiting for contribution.
- [QUICKSTART--The most important ways to use findlib] (http://projects.camlcity.org/projects/dl/findlib-1.3.1/doc/guide-html/quickstart.html). This page shows how findlib works and how to use it from the top-level and ocamlfind level.
- EMACS with OCaml
- Setting Up Your OCaml Development Environment on OS X
- Installing Emacs with Tuareg Mode
- Emacs from scratch
- VIM with OCaml
- Ocaml 4.01 for MAC
- Cornell's Linux VM VirtualBox image (more info here)
- Princeton's Ubuntu VirtualBox VM (more info on the course's site )
- 99 Problems (solved) in OCaml
- Examples and Exercises for the book "More OCaml"
- From UMass's CS691F Programming languages course
- Try OCaml
CSE 130: Programming Languages Course, at University of California San Diego. Click on [Lectures] (http://cseweb.ucsd.edu/classes/wi11/cse130/) and [Discussion Notes] (http://cseweb.ucsd.edu/classes/wi11/cse130/). Have a look at Lec 7 (a pp presentation by Zach) for an inspiring introduction into map and fold.
CS 3110 Fall 2013 :: Data Structures and Functional Programming, at Cornell University. The lecturing materials explain OCaml on the basis of the fundamental concepts of functional programming languages. For instance, [Lecture 4] (http://www.cs.cornell.edu/courses/CS3110/2011sp/lectures/lec04-types/types.htm) includes an excellent discussion of parameterized variant types.
CIS 500: Software Foundations, at University of Pennsyvania. A Software Foundations course with strong emphasis on Types. The [OCaml Tutorial] (http://www.seas.upenn.edu/~cis500/cis500-f05/resources/seas-ocaml.html) includes a gentle introduction to the OCaml interactive top-level system and compilation in OCaml.
[Tutorial: OCaml for scientific computation, at University of Southampton] (http://www.southampton.ac.uk/~fangohr/software/ocamltutorial/). Lecture 2 (Functions) includes an in-depth discussion of the concept of functions in programming languages.
OCaml for the Skeptical, at University of Chicago. The [Course Material] (http://www2.lib.uchicago.edu/keith/ocaml-class/class-01.html) link takes you to OCaml in a Nutshell where you will find a tutorial. The Compiling and Running Programs section has some examples of compilation with command line options and discusses some make-like tools that look after dependencies.
[COS 326 Functional Programming, at Princeton University] (http://www.cs.princeton.edu/~dpw/courses/cos326-12/info). The [Lectures] (http://www.cs.princeton.edu/~dpw/courses/cos326-12/lectures) link takes you to lectures slides.
[Functional, at University of Wroclaw] (https://www.ii.uni.wroc.pl/~lukstafi/pmwiki/index.php?n=Functional.Functional) The focus of the course is on the foundations of Functional Programming. They use OCaml as an example of a funcional language. The Lectures and assigned material section contains examples of OCaml code with explanation of fundamental concepts such as type inference.
[Programming in OCAML, at University of Innsbruck] (http://cl-informatik.uibk.ac.at/teaching/ss06/ocaml/schedule.php). The slides include a gentle introduction to Ocaml. For instance, transparences 2-up explain the use of the Formatter module in the printing data structures.
[Theory of Programming Languages, at Wellesley College] (http://cs.wellesley.edu/~cs251/). OCaml is used to teach fundamental concepts (syntax, naming, state, data control, concurrency, nondeterminism, and types) of programming languages.
Tutorials in other languages
[Introduction to OCaml] (http://habrahabr.ru/post/108529/) This is a basic introduction to OCaml in Russian (на русском языке).
Metodologias de Programacion: Programacion Funcional, at Universidad Veracruzana, Mexico. This is a Functional Programming course based on OCaml and Lisp. The teaching materials (Notas) are in Spanish (en Español) and explained with the level of details and depth of book chapters.
Introduction au langage OCaml in french
Three fundamental concepts of Functional Programming
To feel at home with OCaml and (any other Functional Language) it helps to have some understanding of types, recursion and Lambda Calculus as these three concepts are at the heart Functional Programming. The following links point to some introductory references.
Recursion: A good discussion of how recursion is implemented at compiler level is presented in Section 5-4 (Subprogram Sequence Control, pages 147-178) of Programming Languages: Design and Implementation, Terrance W. Pratt, Prentice Hall, Inc, 1975.
Lambda Calculus: A Tutorial Introduction to the Lambda Calculus, Raul Rojas, FU Berlin, WS-97/98, is a nine-page concise introduction to Lambda Calculus.
Five of the most influential publications on Functional Languages
The content and length of this list is based on personal opinion.
- A Basis for a Mathematical Theory of Computation, John McCarthy. In P. Braffort and D. Hirschberg, editors, Computer Programming and Formal Systems, North-Holland, 1963.
This is a seminal article on the topic....
- Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs, John Backus. Communications of the ACM, Aug 1978, V.21, N.8.
This article explains the influence of the von Neumann architecture on early programming languages such as Fortran and Algol. The author discusses the impact of the assignment statement on the way computation is conceived in these languages.