Skip to content
Quick, graphical, fun introduction to programming in Scala.
Scala Other
  1. Scala 98.0%
  2. Other 2.0%
Branch: develop
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.
src Miscellaneous updated pictures Mar 29, 2020
.gitignore Ignore metals / bloop files Dec 6, 2019
docker-compose.yml Assume Docker Native Jul 8, 2016
package.json Add script (for Travis build) Oct 22, 2018

Creative Scala

Written by Dave Gurnell and Noel Welsh. Copyright 2015--2020.

Creative Commons Licence
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.


Creative Scala is a free ebook aimed at developers who have no prior experience in Scala. It is designed to give you a vital first taste of functional programming. We assume you have some familiarity with another programming language but little or no experience with Scala or other functional languages.

This is version 2 of Creative Scala, which is still in development. See the master branch for the first version.

Our goal is to demonstrate the building blocks that Scala developers use to create programs in a clear, succinct, declarative manner. Working through the exercises in the book should take two to three hours, after which we hope you will have a feel of what Scala can do for your applications.

The exercises in Creative Scala are based on a functional graphics library called Doodle. Although Doodle is primarily designed to make programming fun and creative, it is based on universal concepts that can be applied to any business application.


Creative Scala uses Underscore's ebook build system.

The simplest way to build the book is to use Docker Compose:

  • install Docker Compose (brew install docker-compose on OS X; or download from; and
  • run (or docker-compose run book bash if doesn't work).

This will open a bash shell running inside the Docker container which contains all the dependencies to build the book. From the shell run:

  • npm install; and then
  • sbt.

Within sbt you can issue the commands pdf, html, epub, or all to build the desired version(s) of the book. Targets are placed in the dist directory:

You can’t perform that action at this time.