addressalign-toparrow-leftarrow-rightbackbellblockcalendarcameraccwcheckchevron-downchevron-leftchevron-rightchevron-small-downchevron-small-leftchevron-small-rightchevron-small-upchevron-upcircle-with-checkcircle-with-crosscircle-with-pluscontroller-playcrossdots-three-verticaleditemptyheartexporteye-with-lineeyefacebookfolderfullheartglobegmailgooglegroupshelp-with-circleimageimagesinstagramFill 1light-bulblinklocation-pinm-swarmSearchmailmessagesminusmoremuplabelShape 3 + Rectangle 1ShapeoutlookpersonJoin Group on CardStartprice-ribbonprintShapeShapeShapeShapeImported LayersImported LayersImported Layersshieldstartickettrashtriangle-downtriangle-uptwitteruserwarningyahoo

Learn Scala in 2 Days

  • Apr 29, 2011 · 8:00 AM
  • This location is shown only to members

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

  1. Why Scala? 8:40 - 9:00
  1.  
    1. JVM
    2. Consistent
    3. Functional
    4. Powerful Type System
    5. Internal DSLs
    6. High-level
      1. Easy to factor out duplicated data/logic
      2. Low boilerplate = easier to read/write/debug
  2. Data Modeling: Model Data Objects in a Text Adventure Game 9:00 - 11:00
    1. Literals & Core Types
      1. val/var
      2. type inference in variable/field declaration
      3. Accessor & Mutator Methods
      4. Lazy Vals
    2. Classes, Traits, Objects
      1. Construction
        1. Primary Constructors
        2. Secondary Constructors
        3. Factory Methods
      2. Case Classes
      3. Companion Objects
    3. Option & Either
    4. Collections
      1. Immutable
      2. Mutable
  3. Data Transformation: Introducing Behavior to Domain Objects 11:00 - 1:00
    1. Methods
      1. Named & Default Arguments
      2. Operators as method calls
      3. Right-associative operators
    2. Functions
      1. Functions as objects & the apply() method
      2. Function Literals
      3. Closure
      4. Partial application
      5. Lifted methods
      6. Covariance & Contravariance
    3. Higher-Order Functions
    4. Folding, Mapping, For-Comprehensions
    5. Case Class Functionality
      1. Copy methods
      2. Equality & HashCode
    6. Pattern Matching
      1. Basic Syntax - Case Classes
      2. Variable binding & escaping
      3. Guards
      4. PartialFunction
        1. isDefinedAt & MatchError
        2. PartialFunction literals
        3. When PartialFunctions are total
  4. Scaling: Organizing & Testing the Project 2:00 - 4:00
    1. Namespace, Packages, Path Dependent-Types
    2. Composability as a Design Principle
    3. Scala-Style OOP
      1. Subclasses
      2. Traits
    4. Build Tools
      1. Sbt
    5. Testing Frameworks
      1. ScalaCheck
      2. Specs
  5. Practice: Tying it all together in an idiomatic Scala app 4:00 - 6:00
    1. Purity Where Possible
      1. Tail recursion and the @tailrec annotation
    2. Interactivity
      1. Basic IO
    3. Modularization
      1. Pushing Effects to the Top
      2. 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

  1. Power Scala: Leveraging Scala to Make Code Safe, Readable & Maintainable
    1. Implicits
      1. implicit arguments
      2. implicit values
      3. implicit conversions
    2. Parametric Polymorphism
      1. Parametric Types
      2. Parametric Methods
      3. Covariance/Contravariance
      4. Type constructors & Higher-kinded types
      5. The implicit typeclass pattern
      6. Conformance implicits in Predef
      7. Evidence notation for parametric methods
    3. Method invocation
      1. Operator definition
      2. Invocation with spaces
    4. Custom Pattern Matching
      1. unapply()/unapplySeq()
    5. Building Internal DSLs
  2. Concurrency: Building an MMO Game
    1. Futures
    2. Actors (Akka)
  3. A Taste of the Scala Ecosystem
    1. Lift
      1. XML literals
      2. AJAX input / Comet output
    2. Scalaz: Hardcore Functional Scala
      1. Monoids & Foldable
      2. Validation: Introduction to Applicative
      3. Arrows
    3. Scala + Swing
  4. Graduation Project

Join or login to comment.

  • A former member
    A former member

    I did not get to go, but I was overwhelming impressed with the curriculum and the cool projects

    May 5, 2011

  • A former member
    A former member

    The presenters were very knowledgeable. However, only the first presenter went at a consistent pace explaining new ideas in depth. The remaining content was covered in very rapid fashion covering mostly syntax and not explaining the concepts in depth, the ones which are mostly unique to scala and not found in many other programming languages. Overhearing the discussion of other developers it seemed that only those who knew scala previously were able to keep up the entire time.

    I would have liked to learn the intricacies of scala more with its best practices and new concepts instead of figuring out how to build a game on my own the functional way. The presenters did grasp people were confused on points and the second day went back and spent time on pattern matching which was very good. I appreciate all their hard work and hope the feedback can make this session better in the future. Thanks!

    May 4, 2011

  • Brent H.

    It showed that this was the inaugural Learn Scala workshop. The presentations were missing slides (became obvious in the exercises), and they often glossed over features that weren't properly introduced. My biggest problem was with the exercises.
    1) pairing is a good idea, but no one knew who's code to use when we had to switch pairs. So the pairing concept fell apart. It would have been better to go over a best practices example at the end of exercises to get the class on the same page.
    2) We waited waited way too long to actually run any of the code we built up in the exercises. TDD should have been introduced right away. By the time I tried to run my code, it was so bloated from earlier exercises that it was difficult to refactor.
    3) I feel like I didn't learn any best coding practices. I was stabbing in the dark and occasionally getting guidance.

    May 4, 2011

  • Derek C.

    I want to just say how impressed I was not only with everyone's enthusiasm, but with how much everyone was able to get done, particularly in a functional/immutable paradigm. It was great fun to present and I hope we've encouraged everyone to learn and work more in Scala!

    May 2, 2011

  • Kris N.

    Thanks so much to everyone for attending our inaugural training! I had a fantastic time and was tremendously pleased with how much progress everyone seemed to make.

    May 2, 2011

  • Brad J.

    2 days of confusion and mostly frustration. 4 instructors sharing their ideas at once? That's confusing. Pair programming with strangers? I never had any code on my machine because I kept changing pairs and all my hard work was left with the last person I paired with. It's like they were trying to teach us to run without getting us past the crawling phase.

    May 2, 2011

  • Derek C.

    Also, part of the Lift demo refactoring was making it self-contained. I had forgotten that I was reusing a previous session's game code as a dependency on the project (sorry, Eric!), so now the demo has everything it needs to run. I also took the opportunity to comment all of the Akka actor code and state case classes I used from the other session, so that code could conceivably be used to make, say, a Swing game :)

    May 2, 2011

  • Derek C.

    I finally got an opportunity last night to do some heavy commenting and a little refactoring on the Lift demo app, so check it out in Sam's GitHub repo if you're interested in seeing Lift in action. Also, I want to just say how impressed I was not only with everyone's enthusiasm, but with how much everyone was able to get done, particularly in a functional/immutable paradigm. It was great fun to present and I hope we've encouraged everyone to learn and work more in Scala!

    May 2, 2011

  • Chris W.

    It was everything I expected and more! There was a huge amount of information at a very rapid pace, but somehow it started to sink it.
    I loved it!

    May 2, 2011

  • Michael D J.

    Ow, my head still hurts! This was an awesome experience and I learned just how powerful Scala can be. While you can't become proficient in two days, this session helped bring focus to what I know, and what I have yet to learn. I can't thank John and the instructors enough for putting this together and introducing me to Scala. I look forward to learning more and bringing Scala into my current work environment.

    May 1, 2011

  • A former member
    A former member

    Here is mine -lots left to do.
    https://gist.github.com/950978
    Continuing work over here.
    https://github.com/kumaramit01/scalaFrontier

    May 1, 2011

  • Doug S.

    Here's my graduation project - got basic movement going, managed to write the whole thing without using var (which was a big leap for me) - https://gist.github.com/950796

    May 1, 2011

  • A former member
    A former member

    Complete code from Derek's Pattern Matching presentation with some implicits thrown in to clean up the output. git://gist.github.com/950295.git

    May 1, 2011

  • A former member
    A former member

    Excellent workshop and the four instructors were great!

    May 1, 2011

  • A former member
    A former member

    Scala humour on our trip home - Euro Bath is in a collection with Tile (but missing the Nil so this won't compile) http://twitpic.com/4rspe3

    1 · May 1, 2011

  • A former member
    A former member

    I added another action to the game (show inventory) and wrapped readInt() to catch the annoying exception that's raised when a non-integral is received: https://gist.github.com/950140
    Next, making the inventory display differently depending on its owner (Location vs. Character).

    April 30, 2011

  • James B.

    Demonstrates equipment slot functionality and liberal use of traits to describe slots- built on instructor provided game loop.
    url: https://gist.github.com/950076 I really enjoyed this workshop. I learned a lot and am excited to keep expanding my knowledge in Scala.

    April 30, 2011

  • A former member
    A former member

    Was only able to do some small modeling for a personal project, but here it is:

    url = https://gist.github.com/950073

    April 30, 2011

  • Jason K.

    The project features thread-safe, multi-threaded, Specs tests with partially applied functions and implicit extensions
    url = https://gist.github.com/950059
    git = git://gist.github.com/950059.git gist[masked]

    April 30, 2011

  • Dehru C.

    Here's my version of the dungeon app...mostly stolen from and altered from the dungeon code.
    url = https://gist.github.com/950035
    git = git://gist.github.com/950035.git gist[masked]
    Cheers, \m/

    April 30, 2011

  • A former member
    A former member

    So humbling, I learned tons of new stuff.

    April 30, 2011

  • Jason K.

    thanks much Kris!

    for anyone having issues getting specs integrated into IntelliJ here are the steps I needed to get it working:

    right click project folder -> open module settings -> dependencies tab
    click add button -> single entry module library -> navigate and choose jar for specs_2.8.1-1.6.7.jar
    click OK

    now you should be able to right click within a test object and choose Run "testNameYouChose"

    April 29, 2011

  • Kris N.

    For anyone who's interest, I've posted a sample implementation of a dungeon game like the one we were building today in the class. The game class is called LootTheLand - essentially all you can do is navigate around the board and pick up loot. You can find the code at https://github.com/samreid/scala-workshop/tree/master/sample_game ; use 'sbt run' from the command line to build and run the game.

    April 29, 2011

  • John A. De G.

    I'm going to Scala Days 2011, and so is Kris and Sam. I suspect others are as well. Remind me and I'll do an announcement tomorrow!

    April 29, 2011

  • Eric B.

    This meetup is a great intro to the language. Is anyone else going to ScalaDays2011 in June? Find me at the workshop!

    April 29, 2011

  • Michael T.

    Boulder here we come

    April 21, 2011

  • Derek C.

    This is going to be a great session for anyone who has interest in Scala and wants to get a solid foundation. It's going to be a lot of fun teaching, too ;)

    March 14, 2011

  • A former member
    A former member

    Great list of topics. This is a great opportunity to learn Scala

    March 13, 2011

47 went

Your organizer's refund policy for Learn Scala in 2 Days

Refunds offered if:

  • the Meetup is cancelled
  • the Meetup is rescheduled
  • you can cancel at least 15 day(s) before the Meetup

Payments you make go to the organizer, not to Meetup. You must make refund requests to the organizer.

Regardless of the refund policy set by the organizer, Meetup may issue refunds on an organizer's behalf if we determine that Meetup's Payment Policies have been violated.

People in this
Meetup are also in:

Sign up

Meetup members, Log in

By clicking "Sign up" or "Sign up using Facebook", you confirm that you accept our Terms of Service & Privacy Policy