You, This Course and Us
  • You, This Course and Us
Introducing Scala
  • Introducing Scala: Java's Cool Cousin
  • Installing Scala
  • Examples 1 and 2 - Hello world
  • Example 3 - Mutable and Immutable ‘variables’
  • Example 4 - Type Inference
  • Type Inference
  • Example 5 - String Operations
  • Example 6 - A Unified Type System
  • Example 7 - Emptiness in Scala
  • Example 8 - Type Operations
Expressions or Statements?
  • Module Outline - Loops and Conditionals
  • Example 9 - Statements v Expressions
  • Example 10 - Defining Values and Variables via Expressions
  • Example 11 - Nested Scopes in Expression Blocks
  • Example 12 - If/Else expression blocks
  • Example 13 - match expressions
  • Example 14 - match expressions: Pattern guards & OR-ed expressions
  • Example 15 - match expressions: catch-all to match-all
  • Example 16 - match expressions: down casting with Pattern Variables
  • Pattern Matching
  • Example 17 - for loops can be expressions OR statements
  • Example 18 - for loops: 2 types of iterators
  • Example 19 - for loops with if conditions: Pattern Guards
  • Example 21 - while/do-while Loops: Pure Statements
  • For Loops
First Class Functions
  • Module Outline - Functions
  • First Class Functions
  • Functions v Methods
  • Example 22 - Functions are named, reusable expressions
  • Example 23 - Assigning Methods to Values
  • Example 24 - Invoking Functions with Tuples as Parameters
  • Example 25 - Named Function Parameters
  • Example 26 - Parameter Default Values
  • Parameter Default Values
  • Example 27 - Type Parameters: Parametric Polymorphism
  • Example 28 - Vararg Parameters
  • Example 29 - Procedures are named, reusable statements
  • Example 30 - Functions with No Inputs
  • Example 31 - Nested Functions
  • Example 32 - Higher Order Functions
  • Higher Order Functions
  • Example 33 - Anonymous Functions (aka Function Literals)
  • Example 34 - Placeholder Syntax
  • Example 35 - Partially Applied Functions
  • Partially Applied Functions
  • Example 36 - Currying
  • Parameter Groups
  • Example 37 - By-Name Parameters
  • By-Name Parameters
  • Example 38 - Closures
Collections
  • Module Outline - Collections
  • Example 39 - Tuples
  • Tuples
  • Example 40 - Creating Lists
  • Example 41 - Simple List Operations
  • Lists
  • Example 42 - Higher Order Functions Introduced
  • Simple Higher Order Methods
  • Example 43 - Scan, ScanFold,ScanReduce
  • Example 44 - Fold, FoldLeft, FoldRight
  • Example 45 - Reduce,ReduceLeft,ReduceRight
  • Example 46 - Other, Simpler Reduce Operations
  • Scan
  • Fold
  • Reduce
  • Example 47 - Sets and Maps
  • Maps
  • Example 48 - Mutable Collections, and Arrays
  • Mutable Collections and Arrays
  • Example 49 - Option Collections
  • Example 50 - Error handling with util.Try
  • Options
Classes and Objects
  • Module Outline - Classes
  • Example 51 - Classes
  • Example 52 - Primary v Auxiliary Constructors
  • Primary Constructors
  • Example 53 - Inheritance from Classes
  • Example 54 - Abstract Classes
  • Example 55 - Anonymous Classes
  • Example 56 - Type Parameters
  • Example 57 - Lazy Values
  • Example 58 - Default Methods with apply
  • Example 59 - Operators
  • Example 60 - Access Modifiers
  • Example 61 - Singleton Objects
  • Example 62 - Companion Objects
  • Example 63 - Traits
  • Traits
  • Example 64 - Case Classes
  • Example 65 - Self Types