Scala in a Nutshell
click the boxes below to see Scala in action!
Run Scala in your browser
Scastie is Scala + sbt in your browser! You can use any version of Scala, or even alternate backends such as Dotty, Scala.js, Scala Native, and Typelevel Scala. You can use any published library. You can save and share Scala programs/builds with anybody.
BLOGTuesday, May 21, 2019
In this article, I want to share with you the current state of our online Scala courses (MOOCs) and introduce our plans for the future.
How it all started
We stepped into the world of MOOCs with the Functional Programming Principles in Scala course. It was launched in 2012 and was a success, with more than 100,000 participants in the first two years, and a notably high completion rate (Miller et. al.)!
We believe that we were able to manage this load of learners because our assignments grading system was an automated process: when a learner submitted his/her work, our grading infrastructure analyzed the submission’s source code, ran the tests and produced detailed feedback for each observed error. In addition to this automated infrastructure, our team of (human!) teaching assistants was present on the discussion forums to answer other requests.
Encouraged by this success, one year later we launched our second course: Principles of Reactive Programming.
Where we are
We currently have 6 running courses, ranging from the basics of the language to more specific programming techniques:
- Functional Programming Principles in Scala (Martin Odersky): still our most popular course, introduces both the Scala language and the functional programming paradigm,
- Functional Program Design (Martin Odersky): shows how to apply functional programming techniques to design large applications,
- Parallel Programming (Viktor Kuncak, Aleksandar Prokopec): teaches programming techniques for leveraging multicore machines,
- Big Data Analysis with Scala and Spark (Heather Miller): teaches how to process datasets that don’t fit into the computer’s memory,
- Scala Specialization Capstone Project (Julien Richard-Foy): the four previous courses are grouped in a specialization, and this course invites students to apply the previously learned skills by implementing a large project,
- Programming Reactive Systems (Roland Kuhn, Konrad Malawski, Julien Richard-Foy, Martin Odersky): teaches programming techniques for implementing scalable, resilient, and responsive systems.
In practice, we are able to deploy our grading infrastructure on both the Open edX and the Coursera platforms. The benefits are twofold: we can test and improve our next courses internally at EPFL on an Open edX based platform before making them public, and we believe that by having more freedom on where we eventually publish our courses (edX or Coursera) you will be more likely to get the best online learning experience.
The content of our courses is available for free. In addition, a paid version allows you to receive a grade for the whole course as well as a certificate of completion. Statistics revealed that this paid version is mostly used by companies to train their employees. The MOOCs revenues allow us to pay one engineer (myself) and a team of teaching assistants.
What we plan to do
Our goal is to ease the adoption of Scala and, beyond the language, to turn new, innovative, programming techniques into familiar practices.
We will keep making our material accessible for free and we will continue selling certificates of completion to sustain our activity.
More concretely, the next steps in our roadmap are the following:
- teach more advanced concepts (implicits, path-dependent types, etc.),
- give ready-to-use recipes for common programming tasks (manipulate files, perform HTTP requests, etc.),
- update the material to recent Scala versions and Dotty.
And you, what would be your expectations for our next MOOCs? Please share your thoughts on the following discussion thread.
Scala 2.13.0-RC2 is now available!
- Friday, May 17, 2019
Scala 2.13.0-RC2 fixes bugs and improves Java interop. If no major problems are found in this release candidate, we will re-release it a...
Community and Communication
- Thursday, May 2, 2019
- Martin Odersky
The Scala language is a big tent. It supports object-oriented and functional code working together. The point of Scala was always to show...
Write Scala in VS Code, Vim, Emacs, Atom and Sublime Text with Metals
- Tuesday, April 16, 2019
- Ólafur Páll Geirsson, Gabriele Petronella, Jorge Vicente Cantero
We are excited to announce the release of Metals v0.5. Metals is a Scala language server that supports code completions, type at point, g...
Talk to us!
for general Scala questions, discussion and library announcements.
for Scala contributions, language evolution discussions, standard library, Scala platform evolution discussions and more.
More chat rooms are listed on the Community page
See more tweets, orFollow Scala on twitter