Suggestions welcome for additional links!
- The Scala Programming Language website
- Online tutorials and exercises
- I have created a series of tutorials about Scala for first time programmers on my blog, Bcomposes.
- Part 1: the Scala REPL, expressions, variables, basic types, simple functions, saving and running programs, comments
- Part 2: Tuples, Lists, methods on Lists and Strings
- Part 3: Conditional execution with if-else blocks and matching
- Part 4: Iterating, mapping, filtering and counting
- Part 5: Regular expressions and matching with them
- Part 6: Regular expression matching and substitution with the Regex API
- Part 7: Maps, Sets, groupBy, Options, flatten, flatMap
- Part 8: Word counting, scala.io.Source, file access, flatMap, mutable Maps
- Part 9: Objects, classes, inheritance, traits, Lists with multiple related types, apply
- Part 10: Scripting, compiling, main methods, return values of functions
- Part 11: SBT, scalabha, packages, build systems
- Part 12: Code blocks, coding style, closures, Scala documentation project.
- Variations for computing results from sequences in Scala
- Student questions about Scala, Part 1
- Student questions about Scala, Part 2
- Incorporating and using OpenNLP in Scalabha’s SBT build system
- Basic XML processing with Scala
- Processing JSON in Scala using Jerkson
- SimpleScala: tutorial and online REPL for beginning programmers
- Kojo: a learning environment that includes an interactive Scala tutorial (which was adapted from SimplyScala)
- Scala School: Resources created by Twitter for training programmers new to Scala.
- Stackoverflow Scala Tutorial: organized links to answers on Stackoverflow that cover many questions in Scala.
Applications and Toolkits
- OpenNLP: A natural language processing toolkit.
- Mallet: A machine learning toolkit.
- Textgrounder: A research system for textual geolocation.
- Beginners guide to programming.
- Editors for writing your Scala code
- JEdit - Multiplatform, easy to use editor.
- Kate - Easy to use editor with built-in Scala support, but only works (easily) on Linux.
- ScalaEdit - An editor designed with Scala in mind. It looks to have been started as a project fairly recently, so I'm not sure how robust it is -- but it could be well worth a try.
- Emacs - my editor of choice, but probably not ideal for most students in the class
- Integrated Development Environments - more powerful programming environments. Unnecessary for this class, but worth mentioning.
- Eclipse - excellent support for Scala (it's what I use for my own Scala development)
- IntelliJ IDEA - apparently works well with Scala out of the box