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, polymorph...