This course covers an introduction to OCaml, the OCaml language, tools, and library. By the end of the course, learners will be able to understand the core language, module system, objects, labeled arguments, polymorphism, parallel programming, memory model, language extensions, and various tools like batch compilation, debugging, profiling, and interfacing C with OCaml. The teaching method includes theoretical explanations, practical examples, and advanced demonstrations. This course is intended for individuals interested in learning OCaml programming language and its associated tools and libraries.
Overview
Syllabus
I. An introduction to OCaml
- 1. The core language
- 2. The module system
- 3. Objects in OCaml
- 4. Labeled arguments
- 5. Polymorphic variants
- 6. Polymorphism and its limitations
- 7. Generalized algebraic datatypes
- 8. Advanced examples with classes and modules
- 9. Parallel programming
- 10. Memory model: The hard bits
- 11. The OCaml language
- 12. Language extensions
- 13. Batch compilation (ocamlc)
- 14. The toplevel system or REPL (ocaml)
- 15. The runtime system (ocamlrun)
- 16. Native-code compilation (ocamlopt)
- 17. Lexer and parser generators (ocamllex, ocamlyacc)
- 18. Dependency generator (ocamldep)
- 19. The documentation generator (ocamldoc)
- 20. The debugger (ocamldebug)
- 21. Profiling (ocamlprof)
- 22. Interfacing C with OCaml
- 23. Optimisation with Flambda
- 24. Fuzzing with afl-fuzz
- 25. Runtime tracing with runtime events
- 26. The “Tail Modulo Constructor” program transformation
- 27. The core library
- 28. The standard library
- 29. The compiler front-end
- 30. The unix library: Unix system calls
- 31. The str library: regular expressions and string processing
- 32. The runtime_events library
- 33. The threads library
- 34. The dynlink library: dynamic loading and linking of object files
- 35. Recently removed or moved libraries (Graphics, Bigarray, Num, LablTk)
- Index of modules
- Index of module types
- Index of types
- Index of exceptions
- Index of values
- Index of keywords
Taught by
Xavier Leroy, Damien Doligez, Alain Frisch, Jacques Garrigue, Didier Rémy and Jérôme Vouillon