The programming language used for lab, tutorial and coursework exercises is Scala. Any DICE machine (i.e. any Linux machine in an Informatics computer lab) should have Scala 2.11 installed; type scala
at a command prompt to start the Scala interpreter.
I am hoping to use a more recent version of Scala such as Scala 3.x for this course but am awaiting confirmation from Computing Support before finalizing this. The first assignment starter code should work with Scala 2.11 or more recent versions.
If you prefer to work on programming assignments on your own laptop/desktop: as usual, we cannot support arbitarry computing environments used by students on their own hardware. Be aware that more recent version of Scala, such as Scala 3.2, wil be installed by default and there are nontrivial differences with Scala 2.11 so code provided may not (indeed usually will not) work with Scala 3.2 without changes. For now we recommend using Scala 2.11 as provided on DICE or installing Scala 2.11 on your own. We are hoping to transition to Scala 3.2 this year but this is dependent on the School's DICE installation of Scala being updated to accommodate this and this hasn't happened yet.
Scala has many features in common with functional languages (such as Haskell) and object-oriented languages (such as Java). Prior familiarity with Scala is not needed for EPL, and we will investigate many of these features as part of the course. We will not cover all of Scala's more advanced or experimental features.
We will follow a "functional-first" style of Scala programming for most of the course, while most resources on Scala are oriented towards object-oriented programmers familiar with Java, Python or Ruby. Although the lectures, tutorials and lab/assignment handouts should provide all of the information about Scala you need for this course, you might be interested the following resources which cover Scala's features in more depth or from a different perspective.
- Scala for Java Programmers explains how to map some familiar concepts from Java to Scala.
- A Tour of Scala covers most of the major features of Scala in bite-size pieces.
- The Scala Style Guide is also a good source of advice on good Scala coding practice.
- Finally, if you are especially interested, there is a Coursera MOOC on Functional Programming Principles in Scala that looks like fun.