- You, This Course and Us
- 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
- 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
- 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
- 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
- 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