Scala Beginners Workshop with Pawel Szulc
Event Information
Description
Scala Beginners Workshop
"Scala Beginners Workshop" is an extensive 2 days course aiming to level-up developers who want to gain practical knowledge of the Scala programming language.
No prior knowledge of the language is required, however, we assume that you have a programming background.
The workshop is designed in such a way, that you will gain knowledge of the language syntax but also you will step into "the Scala mindset". Getting that intuition is important for further expanding your knowledge or when dealing with a variety of Scala libraries.
Daily Structure
The workshop is divided into lecture sessions (10-20 minutes) followed by exercises (10-15 minutes).
• 9:00 - Begin Instruction (selection of pastries along with tea, coffee and fruit juice)
• 10:25 - Break (mid-morning tea, coffee and biscuits)
• 10:35 - Resume Instruction
• 12:00 - Lunch Break (2 course hot and cold buffet lunch)
• 13:00 - Resume Instruction
• 14:55 - Break
• 15:05 - Resume Instruction
• 16:25 - Break (afternoon sweet treat with tea and coffee)
• 16:35 - Resume Instruction
• 18:00 - End of Day
Throughout the day attendees will be supplied with drinks including tea and coffee, snacks, mid-morning and afternoon as well as a full 2 course hot and cold buffet lunch.
Please advise us of any dietary requirements.
Schedule
Day 1
On the first day, you will get a solid introduction to the language. During the first couple of hours, we will exercise a warmup session, so that you will get a quick understanding of what does it mean to write software in Scala. We will cover a very important citizen of the language: functions. You will learn why they play a central role in the language. Further, we will explore concepts of pattern matching - a powerful concept that at first glance looks like a switch statement on steroids, but in depth is a much richer concept that is being used extensively in the language. After covering collections API, an interesting syntactic sugar called for-comprehension (also known as do-notation in some languages) and error handling, we will explore a concept called implicits - a mechanism that is very unique to the Scala programming language.
Introduction
- A quick history of the language
- Warm-up
- Compiling single file
- Creating a sbt project
- Classes, constructor on class definition level
- Objects, companion objects
- Overriding toString
- Secondary contructor
- Val vs var
- String interpolation
- Touples
Functions and methods
- First class citizens
- Methods vs functions
- Default arguments
- Named parameters
- Multiparameter lists
- Functions as values
- Higher-order functions
- Curry and partial application
- Composition
- Infix notation
- Function values revisited
- Apply method
- Polymorphism
- Functions vs generated bytecode
Pattern matching
- Guards
- On case classes
- On expressions
- On value definitions
- On for-comprehensions
- On lambdas
- On partial functions
- User-defined extractors
- Gotchas
Collections
For-comprehension
Error handling
- Option
- Try-catch-finally
- Try
- Either
Implicits
- Implicit arguments
- Implicit conversions
Day 2
We start with insights into testing libraries. We will focus on a technique that is well adopted in the Functional Programming community called Property-Based Testing. Next, we move to a brief discussion on traits, a mechanism that is multiple inheritance friendly but doesn't suffer the diamond problem. We will then focus on a few more advanced topics: variance and ad-hoc polymorphism. We will wrap up with Q&A session.
Testing
- Scalatest
- Property-based testing
Traits
- Mixing
- Selective mixing
Design Patterns vs Scala
Tooling
- sbt
- Ammonite
- Wart remover
- Scala compiler options
- Scala fix
Variance
- Invariance
- Covariance
- Contravariance
AnyVal
Ad-hoc polymorphism
- Type constructors
- Generics vs ad-hoc polymorphism
Q&A session
Additional knowledge
If we manage to cover material from both Day 1 and Day 2, we will jump into more advanced topics.
Future, monix.Task
A bit of functional programming
- Algebraic data types
- Useful type classes
- Effects as values
- A bit of tagless final
Materials
Attendees will be provided with example code, a course outline, and exercises in electronic form. The workshop is not recorded and recording is strictly prohibited.
Signify Technology will provide each attendee with a welcome pack which includes Scala swag such as notepads, bottle openers, T-shirts and more.
Venue
The training course will take place at Cloth Hall Court, located in the heart of Leeds. Cloth Hall Court is a dedicated conference and events venue, making it the perfect location for our Scala training.
Check out Cloth Hall Court here.
Financial Aid
Financial aid is available for qualified applicants. If you would like to attend the training but cannot afford the listed prices, please contact Signify Technology for information on available aid packages.
Signify Technology
Signify Technology is a hub for everything functional programming related. We provide permanent and contract technology recruitment solutions to a wide range of the world's leading brands on a global basis including blue chip, technology companies and start-ups.
Signify are committed to helping the Scala community grow by organising meetups, providing sponsorship for tech diversity and offering some of the coolest Scala jobs on the market. Having a voice in the Scala community to make a positive impact is essential to Signify.
Are you interested in a new Scala opportunity? We have an abundance of opportunities globally with some of the coolest tech companies. From Junior to Senior level, just reach out and see how we can help you!
Check out just a few of the incredible roles we have available.
Follow Signify on Twitter to stay up to date with all our news @Signify_Tech
Credit Karma
Credit Karma is there to make the finance process easier for everyone. They provide the tools, the education and the opportunities needed to make real, meaningful progress.
Credit Karma has a strong engineering team and provides its engineers with amazing learning opportunities to develop their programming skills. If you're looking for a company where you can flourish then this is ideal for you. Credit Karma is always looking for passionate Scala Developers, do you want to be part of the team?
Find out more about Credit Karma careers here.
About Paweł Szulc
Paweł is a skilled Scala Developer and a key contributor to the Scala community. Throughout the year Paweł dedicates his time to giving talks at conferences and meet-ups globally such as Scalar, Scala World and Scala in the City.
Experienced professionally in JVM ecosystem, Scala and Haskell, Paweł will demonstrate an impressive training session and best placed to share his knowledge of Scala.
Make sure you're following Paweł on Twitter @rabbitonweb