Skip to content
Ches Martin edited this page Apr 9, 2016 · 2 revisions

This is a free course book from Scala consulting and training company Underscore, teaching Scala through examples with a drawing library. Note that there is an email collection required to download the book—if you're working in a group at hack night you might want to submit once and share the files with each other ☺️

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

Our goal is to demonstrate the building blocks that Scala developers use to create programs in a clear, succinct, and declarative manner. Working through the exercises in the book should take a few hours, after which you will know the basics of programming in Scala and have a feel of how the functional programming mindset works.

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 apply to all well-designed software written in a functional style.

Coursera

This is a beginning computer science course taught by Martin Odersky, professor at EPFL and the inventor of the Scala language. This course loosely tracks the classic textbook Structure and Interpretation of Computer Programs from MIT, but using Scala as the language.

This course introduces the cornerstones of functional programming using the Scala programming language. Functional programming has become more and more popular in recent years because it promotes code that’s safe, concise, and elegant. Furthermore, functional programming makes it easier to write parallel code for today’s and tomorrow’s multiprocessors by replacing mutable variables and loops with powerful ways to define and compose functions.

A more advanced course following from the preceding one, with a focus on concurrent and distributed systems and the compromises of functional purity inherent in distributed programs.

The aim of the second course is to teach the principles of reactive programming. Reactive programming is an emerging discipline which combines concurrency and event-based and asynchronous systems. It is essential for writing any kind of web-service or distributed system and is also at the core of many high-performance concurrent systems. Reactive programming can be seen as a natural extension of higher-order functional programming to concurrent systems that deal with distributed state by coordinating and orchestrating asynchronous data streams exchanged by actors.

Scala.js

Scala.js provides the ability to compile Scala to JavaScript to run in the browser or other JS runtimes (Node.js, Electron, serverless with AWS Lambda, etc.). This is an exciting way to learn about Scala in the context of more interactive applications (client- and server-side!), while still writing statically-typed code with powerful IDE support. A few resources:

Set Up and Build Scala Projects

TODO: a quick-start guide to a basic SBT project config

Clone this wiki locally