Course: Introduction to Scala

The "Working With IntelliJ IDEA" lecture is not free and you are not enrolled in the course, or you are not logged in. Information about the lecture follows. Click on the About the Course and Course Outline tabs above to learn more about the course. You can enroll by clicking on the button on the upper right of this page.

For programmers who would like to use IntelliJ IDEA with this course and those that follow. This lecture has been updated to IDEA 14.1.4, and discusses special considerations for Mac OS/X, Linux and Windows, as well as Eclipse / Scala IDE compatibility.

Revision History

Date Changes
2015-06-26 Updated video and transcript for IDEA 14.1.4, lecture is no longer free
2014-07-24 Minor update - just changed the short introduction segment. No technical content was modified
2014-07-02 Updated video; more than half is new, the rest was remastered
2014-06-29 Updated transcript to IDEA 13.1.3 and added the Invalid JDK Settings section
2013-09-01 First published transcript and video

Lecture Contents

Configuring IDEA

Modifying Plugins

Settings

Launching IDEA from the Command Line (Supplemental)

Invalid JDK Settings

Tuning Memory Allocation

Creating a Scala Project (Supplemental)

Opening SBT projects

Converting SBT Projects Into IntelliJ Projects

Working With IDEA

Run / Debug Configurations

Fixing the No 'scala-library*.jar' in Scala compiler library error (Supplemental)

Helpful Hints

Useful IntelliJ Hot Keys

Hot Keys From Eclipse Key Bindings

References: Lecture Installing Scala
Lecture SBT Global Setup
Lecture SBT Project Setup
Referenced by: Lecture Installing First-Level Software Tools for this Course
Lecture Working on Play Projects with IDEs
Lecture Working on Play Projects with IntelliJ IDEA
Lecture Play Framework REPL & Tools
Lecture SBT Project Setup
Lecture Working With Scala-IDE for Eclipse

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. 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. The course consists of 6 hours of video, over 450 pages of lecture notes (if printed as an O'Reilly-sized book), more than five-dozen sample programs and about a dozen exercises.

In addition to self-paced online learning, Micronautics Research (the company that operates ScalaCourses.com) offers on-site and remote delivery and/or tutoring for this course. A combination of online training with videoconferencing for office hours is available. Please contact us for further details.

As discussed in the Installing Scala lecture, the course notes use the left arrow (), right arrow character (), and right double arrow character, also known as the rocket operator, () because they display better than the multicharacter equivalents (<-, -> and =>). The provided source code does not use these characters because it is awkward to enter these characters, and no fun to do search and replace with them. The Scala compiler works equally well with the UTF-8 arrows and the multicharacter equivalents.

If you are enrolled in this course you will see the following three tabs on this page:

  1. Use the "Outline" tab as a way to quickly find and navigate to any lecture in this course.
  2. The "Printable transcripts" tab allows you to print out a transcript of every lecture in the 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.
  3. 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 courseNotes project and issue log.

This is a hands-on course. Please don't just read the notes, try every code example yourself. Type along with the REPL. If you encounter a problem or have a question, and you are taking a live class, please talk with the instructor right away. Otherwise, please log an issue for this course.

Sample Code

Registered users will see a tab on the course overview page entitled Course Details that provides the URL for the sample code repository. I show code throughout this course that can be pasted into the Scala REPL (and I show you how to work with the REPL). That code is also provided in the courseNotes directory. You can choose to run the sample code as standalone programs, or you can paste it into the REPL to play with, or you can paste it into a Scala worksheet.

Prerequisites

Java familiarity or other object-oriented programming language is recommended.

Problems?

If you are attending an in-person course, the instructor will attempt to deal with issues on the spot. Otherwise, and for unresolved problems and for suggestions, 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.

Revision History

Date Lecture Changes
2015-07-01 Scala Overview and Philosophy Added new paragraph on implicit conversions in the Everything is an Object section
2015-07-01 Learning Scala Using The REPL Added Scala / Java Interoperability section
2015-06-26 Working With IntelliJ IDEA Updated video and transcript for IDEA 14.1.4, lecture is no longer free
2015-06-24 Installing Scala Updated to Scala 2.11.7
2015-06-13 Reading ScalaDoc Added Symbol Definitions section
2015-06-08 SBT Global Setup Fixed video, which was missing first 5 seconds of audio
2015-05-29 Type Hierarchy and Equality Added 'Exercise - Something to Go "Hmm" about'
2015-05-26 Case Classes Added a cautionary section about defining types in methods and functions
2015-05-24 Case Classes Added case object section to transcript
2015-03-15 Either, Left and Right Moved after Functions are First Class lecture and added Processing Either Efficiently with fold section
2015-03-11 Classes Part 2 Added Splatting a Seq section to the transcript
2015-03-10 Classes Part 2 Republished video because audio for first few minutes was missing
2015-03-10 Classes Part 1 Republished video to fix portion that had no video
2015-03-10 More Fun With Functions Hived from Functions are First Class lecture and published video with enhanced transcript.
2015-03-10 Closures Hived from Functions are First Class lecture and published video with enhanced transcript.
2015-03-10 Functions are First Class Hived portions of this overly long lecture into the Closures and More Fun With Functions lectures and republished video.
2015-02-28 SBT Project Setup Updated transcript; many small changes, published a completely new video
2015-02-26 Installing Scala Updated transcript to Scala 2.11.6, removed "bad quality" information because it is now obsolete
2015-02-25 Type Hierarchy and Equality Updated video to match transcript
2015-02-25 Either, Left and Right Updated video to match transcript
2015-02-25 Deceptively familiar: access modifiers Updated video to match transcript
2015-02-25 Enumerations Published video
2015-02-21 Sublime Text Added Always on Top section to transcript
2015-02-21 Lambda Review & Drill Published video
2015-02-20 SBT Project Setup Reworked Using sbtTemplate section of transcript
2015-02-19 Recursion and Functional Programming Published transcript
2015-02-13 Case Classes Fixed preamble video so output is visible
2015-02-12 Functions are First Class Enhanced Call By Name / Lazy Evaluation of a Parameter section and touched up most of the other sections. Published new video, nearly twice as long as the previous video.
2015-02-11 Try and try/catch/finally Updated video to reference the Trying Harder exercise in the Partial Functions lecture of the Intermediate Scala course
2015-02-10 Learning Scala Using The REPL Added 95% Runtime Fidelity and Pasting a Transcript sections, added information on string interpolation, recreated entire video
2015-02-07 Setting up Bash and Git on Windows Updated screen shots for Configuring ConEmu With Cygwin Bash (Supplemental) section
2015-02-06 Lambda Review & Drill Published transcript for new lecture
2015-02-06 Scala Overview and Philosophy Added 60% more material and republished video
2015-02-05 Installing Scala Updated transcript for JDK 8, added more UTF-8 info, made many small changes and republished video
2015-01-14 Functions are First Class Added Handmade unless Construct and Handmade until Construct sections to transcript
2015-01-13 Setting up Bash and Git on Windows Added the ConEmu Hot Keys section
2015-01-07 SBT Global Setup Updated Debian/Ubuntu SBT install instructions to SBT 0.13.7
2015-01-07 Installing Scala Updated transcript to Scala 2.11.5 and added .deb installation instructions for Debian-related Linux distros like Ubuntu
2015-01-01 Classes Part 1 Updated and expanded material from the original Classes lecture
2015-01-01 Classes Part 2 Hived this lecture from the Classes lecture and expanded the material
2014-12-31 Type Hierarchy and Equality Added discussion of array equality to transcript
2014-12-29 Either, Left and Right Added the Option vs. Either vs. Try section to transcript
2014-12-26 SBT Global Setup Updated and expanded the lecture and video
2014-12-23 Working With Scala-IDE for Eclipse Published updated video
2014-12-19 Setting up Bash and Git on Windows Published the transcript and the video of a special lecture for Scala programmers that must use Windows
2014-12-18 Working With Scala-IDE for Eclipse Updated the transcript to JDK 8 and Scala-IDE 4.0.0 with Scala 2.11
2014-12-16 Traits / Mixins Refactored some material into the Self Types vs Inheritance lecture
2014-12-16 Self Types vs Inheritance Added the Self Types vs Inheritance vs Composition section and a section on numerically formatted interpolated strings
2014-12-16 Stackable Traits and Abstract Override Hived this lecture from the More Traits lecture
2014-12-08 Classes Added the Digging Deeper section to transcript
2014-11-29 SBT Global Setup Transcript now mentions that SBT 0.13.7 no longer requires double-spaced .sbt files
2014-11-29 Unit testing With ScalaTest and Specs2 Added an example to the transcript of running a specific ScalaTest test by using the -z argument within sbt
2014-11-29 Traits / Mixins Added the Self Types section to transcript
2014-11-21 Pattern Matching Added the Match Case with Multiple Values section
2014-11-19 Updated courseNotes project to SBT 0.13.7
2014-11-01 Updated sample code to Scala 2.11.4
2014-11-01 Scala Overview and Philosophy Added a reference to the Scala Specification
2014-11-01 SBT Global Setup Added the Colorized Scala REPL Output section to transcript
2014-10-12 Deceptively familiar: access modifiers Added update for Scala 2.11.3 bug fixes
2014-10-11 Updated sample code to Scala 2.11.3
2014-09-21 Enumerations Updated transcript
2014-09-17 Enumerations Wrote transcript for new lecture
2014-08-28 SBT Global Setup Added information about sbt-updates plugin
2014-08-17 Functions are First Class Added the Function1 Shorthand section to transcript
2014-08-08 Functions are First Class Video is 50% longer, recorded 3 new sections
2014-08-07 Functions are First Class Added the Method Lifting Turns Varargs into a Sequence section to the transcript
2014-08-04 Type Hierarchy and Equality Reworked video
2014-07-26 Classes Added the Types vs. Classes section to the transcript
2014-07-24 Working With IntelliJ IDEA Minor update - just changed the short introduction segment. No technical content was modified.
2014-07-08 SBT Project Setup Updated sbtTemplate to Scala 2.11.1 and fixed the sbt eclipse setup. Updated theDiscovering Dependencies and Versions section with a Scala 2.11 example.
2014-07-03 Updated the courseNotes project to Scala 2.11.1 and SBT 0.13.5.
2014-07-02 Working With IntelliJ IDEA Updated the video for this free lecture; more than half is new, the rest was remastered.
2014-06-29 Working With IntelliJ IDEA Updated the transcript for this free lecture to IDEA 13.1.3 and added the Invalid JDK Settings section
2014-06-22 Installing Scala Updated the brew install incantation in lecture and this page.
2014-06-22 Sublime Text, SBT Project Setup Moved the Sublime Text lecture after the SBT Project Setup lecture.
2014-06-14 SBT Global Setup Added sbt-dependency-graph-sugar to SBT configuration instructions.
2014-04-24 Course complete, Early Access program ends, maintenance begins.
2014-01-13 Functions are First Class Published video
2012-12-14 Initial course setup.
$375usd