Scala Training Online is dedicated to providing online courses for people who want to learn how to program in Scala and related technology.

The Scala programming language is rapidly growing in popularity. There are many reasons for this, including tremendous scalability, a natural melding of object-oriented and functional capabilities, and the ability of Scala programs to interoperate with legacy Java code. Even though Scala presents a significant learning curve, benefits accrue almost as soon as programmers start to work with Scala. Machine learning / big data programmers have embraced Scala, and teaches language basics in a practical manner.

Both instructor-led and self-study options are offered. The course materials proceed methodically, so beginners through experienced Scala programmers alike will quickly learn valuable techniques, useful information, and gain practical experience. The material is introduced through many short lectures with working examples and self-discovery techniques. Just enough theory is introduced to gain an intuitive understanding of how to work with the concepts presented.

Learn the Way That Works for You

In addition to self-paced online learning, offers on-site and remote delivery and/or tutoring for this course. A combination of online training with videoconferencing (which we call office hours) is available. Please contact us for further details. provides a more effective learning experience than reading books or taking in-person courses. The site describes the advantages in detail.

  • Learn at your own speed – spend an hour a day or entire days learning, according to your schedule.
  • Material is presented as videos with complete, illustrated transcripts with working code projects. You can create a PDF of an entire course at any time.
  • More material is presented in each of our online courses than could be presented during an in-person course, at a fraction of the cost.
  • Presentation of new concepts is more effective when delivered via a video. See the instructor 'at work' on their computer, not at a blackboard. Animated videos help you quickly understand what is being said.
  • Books are obsolete by the time they are finished. After you attend an in-person course, the experience is over. helps you stay up-to-date. We update our courses regularly, and we provide a revision history for every lecture and every course. Each time we update a lecture we also tweet about the update, so follow @scalacourses on Twitter to stay up-to-date.
  • Want to talk with an instructor? offers several options. Please contact us for more details.
    • On-demand one-on-one sessions using video chat.
    • Regularly scheduled group sessions using video chat (this provides best value).
    • Traditional in-person on-site training, world-wide.

You can learn more about the courses by clicking on them.

About the Courses

These are hands-on courses. Please don't just read the notes, try every code example yourself as you type along with the material.

If you are enrolled in a course you will see the following tabs on each course page:

  1. The Revision History tab shows the changes made to the course, and when they were made, along with a clickable link to the lecture that was changed. Each lecture has its own Revision History tab; the course-level Revision History aggregates the individual Revision Histories from all of the lectures.
  2. Use the Outline tab as a way to quickly find and navigate to any lecture in the course.
  3. The Printable transcripts tab allows you to print out a transcript of the entire course by press Ctrl-P (Cmd-P on Mac). If you select a PDF printer then you can make a PDF containing the course notes. We recommend Google Chrome for making PDFs.
  4. The Course Details tab shows a link for downloading the course project as a Zip file and the git command to clone the course project as a git repository. The project home contains information about the course notes, and the issue tracker.

How to Study These Courses

  1. Watch a lecture's video. The material is dense and is presented quickly. Pause the video and rewind any portions that you didn't quite get at first.
  2. Try the code examples in the order they are presented. Pause the video frequently so you can try the code you just saw. Refer to the transcript so you can cut and paste the code; this will make your experimentation process more productive.
  3. When you encounter an exercise, pause the video when prompted and attempt to work out the answer yourself. Learning only happens when you try to apply new information. Getting stuck is part of the learning process. When you are ready, continue the video so you can view the answer.
  4. Read the lecture transcript. Transcripts are often more up-to-date than the video and contain more information, such as clickable links.
  5. Explore the links.
  6. If you have a question after doing all of the above, please ask for help from an instructor.
  7. Move on to the next lecture.


If you encounter a problem or have a question, and you are taking a live class, please talk with the instructor right away. If you are studying on your own and need to communicate with an instructor, email help and live TA sessions are available. If you find a error in the course material or wish to offer a suggestion, please use the Issue Tracker. We are also available via @ScalaCourses.

Course Evaluations

We would appreciate you taking the time to fill out the evaluation at the end of the course.

Get Scala - Click and Find Out How!

Scala allows you to write clean and powerful code in a brief and concise manner. provides the best learning experience, and is also the best value for learning Scala. Be proactive – get the edge with our self-study and instructor-led training. Please contact us for information about instructor-led training. Learn Scala today!

Want to purchase a course for someone else, or don't want to use PayPal? Ask to email you an invoice.

We offer instructor-led and onsite training for groups. Please contact for more information.

There is a lot to know when one wants to learn how to program Scala or Play Framework 2. We have organized the information into separate courses, shown to the right, with prerequisites. For example, the Scala Introduction course is the logical beginning course for new Scala programmers.

The material is introduced through many short lectures with working examples and self-discovery techniques. Just enough theory is introduced to gain an intuitive understanding of how to work with the concepts presented. The material is broken into short segments so you can get right to your most important issues. Quick reviews of fundamental concepts are provided in case you need a refresher before being introduced to concepts built on the review material.

Logged-in students can download course notes. We update transcripts and videos frequently, and provide release notes for each course and lecture. Enrollment is for 365 days, and students automatically get updates as they are released. Students can renew their enrollment for a fraction of the original price.


" is a tremendous resource for developers looking to leverage Scala to and from Java, and presents useful information for maximizing productivity."
Jamie Allen, Sr. Director of Consulting, Typesafe, San Francisco, CA, USA.

"I love your videos. I've bought 3 courses so far."
Andrew Rubalcaba, Plano, TX USA.

"I like the pace (fast) and the content (deep). I’m glad I made the investment."
Kirk Sullivan, Orlando, FL, USA.

"This course is way more practical than other ones I have tried. Excellent!"
Riku Karjalainen, Helskini, Finland.

"The amount of Scala syntax you have to learn before you can code a Play Framework app is significant. That's why Intermediate Scala makes sense as a prerequisite for the Introduction to Play course."
Eric Torreborre, author of the Specs2 unit testing library for Scala.

"I encourage everyone interested in learning about Scala to enroll in online courses."
Scott Clasen, principal engineer, Heroku, San Francisco, CA, USA.

" is good stuff!"
Debasish Ghosh, author of “DSLs In Action”, Kolkata, India.

"I've been looking between Scala and Clojure recently. Your videos and responsiveness are keeping me in Scala land."
Marcos Trinidad, New York, NY, USA.

"The video production seems exceptionally painstaking."
N. Sriram, Philadelphia, PA, USA.

"Your process of continuously improving and updating the course material is a very important differentiator. My interest is using Scala with Spark and other machine learning applications. Another very important feature of is the ability for users to easily search the video transcripts."
R. Sargeant, Birkdale, Queensland, Australia.

"One of the many things I like about these courses is that they are filled with explanations of reality. I've taken the Functional Programming and Reactive Programming courses at Coursera, read multiple books on Scala, attended Scala meetp-up groups, listened to video lectures and presentations on Scala and done lots of exercises on my own over the past two years. I still learn lots from because the courses are filled with gems of practicality and reality that I've not found in books or other materials. The explanations are crisp and clear. The courses manage to keep a fine balance between not requiring a lot of prior knowledge, while still address the topic in a deep, meaningful way."
Bill Bourne, Ottawa, Canada.

"These courses are what I wished for when I was learning Scala and Play Framework."
Mike Slinn, Half Moon Bay, CA, USA.

  • Core Scala Courses

    This group of courses is the logical beginning for new Scala programmers, especially those who intend to work with big data/machine learning software such as Spark. We recommend that students who wish to take the Introduction to Play Framework for Scala course take both of these courses. You should already be a proficient programmer in another language, such as Java or Ruby.

    • Introduction to Scala

      Whether you want to learn Scala in order to work with Apache Spark, or an industrial-strength Scala program, or Play Framework 2, enrolling in this course is the logical starting point.

      This Introduction to Scala course covers the fundamentals and is designed to give you a variety of hands-on experiences with Scala. The unique features of Scala are introduced, including object-oriented and functional aspects. Software tools are discussed in detail, including SBT, both leading IDEs (IntelliJ IDEA and Scala-IDE), and several options for programming Scala without an IDE. Exercises are provided throughout that reinforce the lecture material.

      More ...

      430 07:52:42
      Prerequisites: None
      Instructors: Mike Slinn and Bill Bourne.
    • Intermediate Scala

      This Intermediate Scala course builds on the Introduction to Scala course. Many concepts and techniques are introduced, with lots of working code examples and exercises, including functional programming, implicits, process control, I/O, collections, pattern matching, combinators, partial functions, application configuration techniques, memoization, and multithreading (including parallel collections, Futures, Promises and Akka Actors). You can see a detailed outline from the Outline tab of this web page. We guarantee that taking this course will make you work hard; and as a result students gain a lot of practical, hands-on experience with Scala. The concepts taught allow you to feel comfortable with the code that you will find in Apache Spark and Play Framework 2 for Scala projects, and motivational Spark and Play examples are provided in the course.

      As with the Introduction to Scala course, this course is based on code samples that can be pasted into the Scala REPL, and that code is also provided in the the courseNotes directory. The course consists of 10 hours of video, over 450 pages of lecture notes (if printed as an O'Reilly-sized book), more than six-dozen sample programs and about a dozen exercises.

      More ...

      360 09:58:35
      Prerequisites: Introduction to Scala or equivalent.
      Instructors: Mike Slinn and Bill Bourne.
  • Play Framework Courses

    Play Framework 2 for Scala is a powerful web application framework, and is the most popular webapp framework for Scala. Although you can use Java with Play Framework, Scala is much more expressive and powerful. is a Play Framework for Scala application.

    • Introduction to Play Framework for Scala

      The course, including all transcripts and code examples, has been updated to Play 2.5.4 and emphasizes dependency injection. Students should have prior experience with setting up a web server such as Apache, or programming a web application using a facility such as ASP, Tomcat, PHP, Ruby on Rails, etc.

      This "Introduction to Play with Scala" course covers the fundamentals of Play Framework for Scala programmers. Exercises are provided throughout that reinforce the lecture material. The material builds from lecture to lecture, so be sure to go through the material from start to finish. Several complete working sample Play Framework projects are provided and discussed in detail. The course consists of 5.5 hours of video, over 300 pages of lecture notes (if printed as an O'Reilly-sized book), and about a dozen exercises. As you can see from the Revision History tab on this page, we continually keep this course up-to-date.

      More ...

      340 06:09:43
      Prerequisites: Intermediate Scala and Introduction to Scala or equivalent.
      Instructor: Mike Slinn.
    • Wildcard SSL Certificates for Federated Services

      The universal drive to SSL-enable all web pages has reached the point where search engines now favor SSL-enabled web sites. You might have heard about free SSL certificates that are now available from Those certificates work well for simple web sites which do not use cloud-based services such as content distribution networks (CDNs) for securely serving assets, however they do not provide any relief from cross-site scripting issues. CDNs are important for reducing latency and increasing scalability.

      The old-school method of front-ending an application server like Tomcat or Play Framework with a web server like Apache httpd or nginx so static assets are served by the web server instead of a CDN provides poor latency. It is better to set up DNS entries for each cloud service so they can be addressed as subdomains of your main web site. This is the first step towards federating cloud services with your web site.

      More ...

      50 01:08:26
      Instructor: Mike Slinn.
  • Java / Scala Interoperability Courses

    This group of courses is for programmers who need to interface Scala code with Java code.

    • Object-Oriented Compatibility

      This course is based on Scala 2.10 and Java 7, and has not been updated to Scala 2.11 or Java 8. Updating this course to a newer version of Java or Scala is currently a low priority.

      This course focuses on Java/Scala interoperability. It provide students the knowledge and techniques to work with combined Scala/Java code bases in all their forms.

      More ...

      320 02:45:29
      Prerequisites: None
      Instructor: Mike Slinn.
  • Create Courses with Micronautics Cadenza Courses

    Micronautics Cadenza powers online sites such as, and it provides an online course editor as well as a course delivery mechanism. The pages you can view and the contents visible on each page are determined by your role or roles. The currently visible roles are Publisher, Instructor, Student and Visitor. This group of courses shows new publishers and instructors how to create and manage online courses using Micronautics Cadenza.