Scala is the fastest-growing language on the JVM, and quite possibly the fastest-growing functional language ever invented. More companies than ever are embracing Scala as their secret weapon to rapidly build high-performing, powerful desktop and server-side applications, with fewer defects than Java and similar languages thanks to declarative coding, an extremely powerful type system, and an automated testing ecosystem second to none (ScalaCheck, Specs, ScalaTest, etc.).
In this two day, hands-on workshop, you will go from knowing nothing about Scala, to being able to proficiently solve complicated problems in an idiomatically Scala way. Every session consists of a 45 minute lecture (with examples, interactive coding, and Q&A), and a 50 minute hands-on exercise in which you pair up and work through a problem with a fellow attendee.
Teachers include highly-experienced Scala developers and committers to the hottest Scala web framework, with collectively more than 10 years experience writing Scala applications.
Breakfast, lunch, WiFi, and tables are provided. You should bring your own laptop.
Space is extremely limited, so register now while you still can!
Day 1: Dungeon Game
In day 1, you’ll learn the basics of Scala as you build a simple dungeon game that allows you to work your way around a map and fight monsters.
Networking & Breakfast: 8:00 - 8:40
Networking & Lunch: 1:00 - 2:00
Afterhours Social: 7:30+ @ Absinthe House
- Why Scala? 8:40 - 9:00
-
- JVM
- Consistent
- Functional
- Powerful Type System
- Internal DSLs
- High-level
- Easy to factor out duplicated data/logic
- Low boilerplate = easier to read/write/debug
- Data Modeling: Model Data Objects in a Text Adventure Game 9:00 - 11:00
- Literals & Core Types
- val/var
- type inference in variable/field declaration
- Accessor & Mutator Methods
- Lazy Vals
- Classes, Traits, Objects
- Construction
- Primary Constructors
- Secondary Constructors
- Factory Methods
- Case Classes
- Companion Objects
- Option & Either
- Collections
- Immutable
- Mutable
- Data Transformation: Introducing Behavior to Domain Objects 11:00 - 1:00
- Methods
- Named & Default Arguments
- Operators as method calls
- Right-associative operators
- Functions
- Functions as objects & the apply() method
- Function Literals
- Closure
- Partial application
- Lifted methods
- Covariance & Contravariance
- Higher-Order Functions
- Folding, Mapping, For-Comprehensions
- Case Class Functionality
- Copy methods
- Equality & HashCode
- Pattern Matching
- Basic Syntax - Case Classes
- Variable binding & escaping
- Guards
- PartialFunction
- isDefinedAt & MatchError
- PartialFunction literals
- When PartialFunctions are total
- Scaling: Organizing & Testing the Project 2:00 - 4:00
- Namespace, Packages, Path Dependent-Types
- Composability as a Design Principle
- Scala-Style OOP
- Subclasses
- Traits
- Build Tools
- Sbt
- Testing Frameworks
- ScalaCheck
- Specs
- Practice: Tying it all together in an idiomatic Scala app 4:00 - 6:00
- Purity Where Possible
- Tail recursion and the @tailrec annotation
- Interactivity
- Basic IO
- Modularization
- Pushing Effects to the Top
- Configuration and DI?
- Power Scala: Leveraging Scala to Make Code Safe, Readable & Maintainable
- Implicits
- implicit arguments
- implicit values
- implicit conversions
- Parametric Polymorphism
- Parametric Types
- Parametric Methods
- Covariance/Contravariance
- Type constructors & Higher-kinded types
- The implicit typeclass pattern
- Conformance implicits in Predef
- Evidence notation for parametric methods
- Method invocation
- Operator definition
- Invocation with spaces
- Custom Pattern Matching
- unapply()/unapplySeq()
- Building Internal DSLs
- Concurrency: Building an MMO Game
- Futures
- Actors (Akka)
- A Taste of the Scala Ecosystem
- Lift
- XML literals
- AJAX input / Comet output
- Scalaz: Hardcore Functional Scala
- Monoids & Foldable
- Validation: Introduction to Applicative
- Arrows
- Scala + Swing
- Graduation Project
Day 2: Real World Scala
In day 2, you’ll learn advanced topics in Scala as you complete simple projects, working your way to a graduation project in which you and a team mate build a fully-functional Scala application from the ground-up.
Networking & Breakfast: 8:00 - 8:40
Networking & Lunch: 1:00 - 2:00
Afterhours Social: 7:30+ @ Absinthe House
Comments