Learn Scala in 2 Days


Details
Scala is the fastest-growing language (http://www.indeed.com/jobtrends?q=scala&l=) on the JVM, and quite possibly the fastest-growing functional language ever invented. More companies than ever (http://www.quora.com/What-startups-or-tech-companies-are-using-Scala) 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?
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
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

Learn Scala in 2 Days