OUR CLIENTS
BNP Paribas securities services
Amadeus
Beeva
Sngular
Packlink
GMV
BBVA Data & Analytics
Letgo
Everis
Autentia
Tecsisa
See more »

What can we do for you?

We are specialised in Scala, its functional programming ecosystem and functionally-enhanced digital transformation processes.

Functionally-Enhanced Digital Transformation Processes

No matter how hard you try with IoT, Mobile, Cloud and Big data technologies, if the functional requirements of your business processes are not properly handled, you'll end up with a big digital transformation... mess. Boost your digital transformation processes through functional programming! We can guide you through:

  • The functional design of domain-specific languages specially tailored to your business requirements.
  • The methodological changes required in order to strongly decouple your business processes from IT infrastructure details, thereby obtaining unprecedented levels of agility!

See more »

Generic placeholder image

Functional Programming Consulting

Functional programming is not self-contained: if we want our applications to do something useful, they must contain something more besides pure functions! We can show you to:

  • Combine web-frameworks and functional programming: your server as a Kleisli!
  • Write specifications functionally and let Akka actors execute them!
  • Use property-based testing to automatically generate test scenarios for complex business requirements expressed in a purley functional way.

See more »

Generic placeholder image

Functional Programming Training

Functional programming is not so far away from conventional object-oriented programming: Just replace your plain interfaces with type classes! We have tried successfully this strategy many times already in our functional programming courses.

  • Learn how to use type classes to write functional programs in Scala in the most idiomatic way.
  • Learn how to gradually transform your non-functional codebase into a purely functional one.

See more »

Generic placeholder image

Nurturing The Functional Programming Community

We founded and organize the Madrid Scala Meetup (affectionately known as #ScalaMAD) and regularly contribute to the Scala community with blog posts, meetup and conference talks, and open source projects. Check out our github account!

See more »

Generic placeholder image

Let us help you to implement your processes!

We are experts in process analysis, language design, functional programming, and Scala. A great mix of expertise at your fingertips!


Business process digitisation

Do you want agile, efficient and optimised business processes? Think of publishing them in a digital format as a software package, i.e. not as a PDF document, but as a program! To do this properly, these business programs must be completely decoupled from IT infrastructure details. We can help you to achieve this using functional programming techniques!

Contact us and tell us about the business process you deal with »

Generic placeholder image

Transition to functional programming

The advantages of functional programming (FP) make it an appealing approach to software development. But when setting up a team of functional programmers, they need with them an expert to guide them in the transition from conventional object-oriented programming to FP, and explain them the major techniques and design patterns involved. In sum, we can show you how to make the most of Play framework, Akka, Spark, and any other library or framework of the Scala ecosystem, using sound and proven functional programming techniques.

Contact us to help your team »

Generic placeholder image

Let us help you to embrace the Scala revolution!

We have a solid expertise in Scala, its ecosystem of libraries and tools, and functional programming. You can benefit from our expertise in any of the courses we offer:

Contact us for prices and calendar »

Generic placeholder image

Introduction to Scala

Introduction to Scala is a one-day course that presents the essential language features. This course is for developers who are initiating themselves in Scala's mix of object-oriented and functional features.
Generic placeholder image

Purely functional Scala

You wonder what all the fuss on purely functional programming (monads and the like) is about, and want to know why it really matters. This course introduces the major principles of functional programming and presents scalaz/cats, two major Scala libraries that enable functional programming in the JVM.
Generic placeholder image

Advanced functional Scala

This course goes beyond the basic stuff on functional programming, and delves into more advanced notions of monadic programming (e.g. using free monads and coproducts). Moreover, it introduces the applicative and datatype generic programming styles. All of it, using state-of-the-art libraries of the Scala ecosystem such as shapeless, scalaz and cats.
Generic placeholder image

Big Data

Apache Spark is a Big Data framework to manipulate alge ammounts of data in a very simple way. It allows to process data in batch and streaming and also, it has a powerfull framework for Machine Learning with large ammounts of data.
Generic placeholder image

Distributed programming

Akka is a major driver behind the Reactive Manifesto, an as such an essential tool to create resilient systems. Learn the basics of Akka and its Scala API, and delve into the actor programming paradigm to write fault-tolerant distributed applications.
Generic placeholder image

Bespoke training

The ecosystem of Scala is vast, and you may as well want courses on sbt (simple build tool), test frameworks (specs, scalatest, scalacheck), language design, etc. We can design and teach tailor-made courses specifically created to satisfy your unique needs.

Introduction to Scala

Instructor:

Jesús López González

Location:
Parque Científico Universidad Carlos III de Madrid
Price:
50€
Duration:
One session of 5h
Language:
Spanish
Start:
15/9/17 16:00
Buy tickets!

Overview (Spanish)

We will not argue that the Scala programming language is an easy one to delve into. Therefore, we want to provide you with the fundamental means to start this journey. This one-day course offers you an introduction to Scala: where it comes from, which programming paradigms it supports, and which are its major technical features. We do not guarantee that this language is for you, but we are absolutely sure that you will become a better programmer by learning it.

Audience

You have heard of Scala, and the myriads of frameworks and tools based on Scala which are all the rage these days (Spark, Akka, Play, and so forth), but do not have the time to delve into the Scala jungle yourself. This course will give you a gentle and smooth introduction to it. Familiarity with conventional object-oriented languages is assumed.

Objectives

This course will enable you to:
  • Grasp the main technical features of Scala pertaining to the object-oriented paradigm: classes, traits, objects, etc.
  • Grasp the main technical features of Scala pertaining to functional programming: case classes, pattern matching, etc.
  • Grasp the main technical features of Scala genericity
  • Grasp the major syntactic sugar techniques deployed in Scala
  • Lean the basics of SBT and the Scalatest testing framework

Outline

The course is structured around the major programming paradigms that the Scala language supports, namely the object-oriented, functional and generic paradigms. Besides, we will take a look at the syntactic sugar tricks that make reading Scala encodings a tough task for newcomers. The Scala collection library will be used throughout the course as a source of inspiring examples.

  • Scala tools
    • SBT
    • Scalatest
  • Object-oriented features
    • Classes and objects
    • Traits
  • Functional programming features
    • Immutability
    • Case classes & pattern matching
    • Lambdas
  • Syntactic Sugar
    • Method invocation
    • Apply method
  • Generic programming features
    • Generic classes
    • Polymorphic methods

Organization

  • The course will take place in a single session, for five (intensive) hours starting at 16:00h. Setup instructions will be made available well in advance, so that attendees can bring their laptops properly configured to the classroom.
  • Explanations during sessions will alternate between slides and live coding, with a preference for the later. Small exercises and challenges will be proposed after each block of contents, and solved in the classroom.

About the instructor

Jesús holds a double MsC in Software engineering and Telematics. He has been using Scala since he started to work in Habla Computing five years ago, both for DSL design and applications in the banking industry. Currently, he is doing his PhD in reactive systems and functional programming in Habla Computing. Jesús was coordinator and frequent speaker during several years of the Madrid Scala Meetup.

Introducción a Scala

Profesor:

Jesús López González

Ubicación:
Parque Científico Universidad Carlos III de Madrid
Precio:
50€
Duración:
5 horas
Idioma:
Castellano
Comienzo:
15/9/17 16:00
Comprar tickets!

Resumen

Sabemos que adentrarse en el lenguaje de programación Scala no es una tarea trivial. Con este curso, se pretende que el alumno adquiera las nociones básicas para poder comenzar este reto con buen pie. Se ofrecerá una introducción al lenguaje: de dónde viene, qué paradigmas de programación soporta y cuáles son las características principales que lo hacen tan especial. No podemos garantizar que este lenguaje esté hecho a medida para ti, pero sí que podemos asegurar que aprender Scala te convertirá en mejor programador.

Audiencia

  • Has oído hablar de Scala, o de alguna de las librerías o frameworks que conforman su ecosistema y que están adquiriendo gran relevancia en la actualidad (Spark, Akka, Play, etc.), pero no dispones del tiempo necesario para adentrarte en esta selva, y te gustaría tener una visión general sobre las posibilidades que ofrece este entorno.
  • Tienes una experiencia mínima con la programación orientada a objetos y alguno de sus lenguajes.

    Objetivos

    Este curso te permitira:
    • Tener nociones básicas sobre las características que ofrece Scala para el paradigma de orientación a objetos: classes, traits, objects, etc.
    • Tener nociones básicas sobre las características que ofrece Scala para el paradigma de programación funcional: case classes, pattern matching, etc.
    • Tener nociones básicas sobre las características que ofrece Scala para trabajar con genericidad
    • Conocer el azúcar sintáctico que se despliega en Scala
    • Conocer las características básicas de SBT y el framework de testing Scalatest

    Temario

    El curso se estructura en torno a los principales paradigmas de programación soportados por Scala: orientación a objetos, programación funcional y programación genérica. Adicionalmente, se analizará el azúcar sintáctico que hace que los fuentes resulten tan difíciles de leer para los recién llegados. La librería de colecciones de Scala se utilizará como fuente de ejemplos durante el curso.

    • Herramientas de Scala
      • SBT
      • Scalatest
    • Características de Orientación a Objetos
      • Clases y objetos
      • Traits
    • Características de Programación Funcional
      • Inmutabilidad
      • Case classes & pattern matching
      • Lambdas
    • Azúcar Sintáctico
      • Invocación de métodos
      • Método 'apply'
    • Características de Programación Genérica
      • Clases genéricas
      • Funciones polimórficas

    Organización

    • El curso se llevará a cabo en una única sesión de cinco horas de duración, en formato intensivo, comenzando a las 16:00h. Se indicarán los requisitos de configuración necesarios para poder seguir el curso con la suficiente antelación, de manera que los asistentes puedan traer sus propios equipos al aula.
    • Las explicaciones alternarán entre diapositivas y live coding, con una predilección por lo segundo. Se propondrán pequeños ejercicios al final de cada bloque para ser resueltos en clase.

    Sobre el profesor

    Jesús es Ingeniero Superior en Informática y Máster en Sistemas Telemáticos e Informáticos. Trabaja en Habla Computing desde hace cinco años como programador de Scala para aplicaciones del sector bancario. Actualmente, desarrolla su tesis doctoral en Habla Computing sobre temas de programación funcional y sistemas reactivos, gracias a una subvención del programa de Doctorados Industriales del Ministerio de Economía y Competitividad. Jesús fue durante varios años coorganizador del meetup de Scala en Madrid, donde es ponente habitual.

  • Purely functional Scala

    Instructors:

    Alfonso Roa Redondo

    Juan Manuel Serrano

    Price:
    500€/560€
    Duration:
    16 hours. Two Sessions 9:00 - 18:30 with short brakes each 2 hours and lunch break.
    Language:
    Spanish

    Madrid

    Location:
    Sales Innovation School
    Start:
    06/6/19
    End:
    07/6/19
    Buy tickets!

    Málaga

    Location:
    Polo Contenidos Digitales Málaga
    Start:
    20/6/19
    End:
    21/6/19
    Buy tickets!

    Barcelona

    Location:
    EspaisBarcelona
    Start:
    27/6/19
    End:
    28/6/19
    Buy tickets!

    Overview (Spanish)

    The main goal of this course is introducing the basic functional programming techniques that fuel the most advanced libraries and applications nowadays (Spark, Twitter, Facebook, etc.). These techniques are, amongst others, algebraic data types, higher-order functions, type classes, monads and pure functions. Throughout the course, you will learn what these techniques are, and, specially, why we should care about them, i.e. how they will help us to achieve higher levels of reusability, testability, evolvability, etc., in our code. Last, note that this is a functional programming course that happens to be taught using Scala. So, the major lessons to be learned here will be readily applicable to your everyday programming tasks, even if you can't use Scala at your workplace (sigh).

    Audience

    This course is specially made for you if you meet at least one of the following requirements:
    • You are fluent in Java, C#, Python, Javascript, Ruby, or any other non-functional but object oriented programming language, and want to push the boundaries of your comfort zone. You have heard about the virtues of functional programming, and want to start with Scala, but don't know what's all the fuss behind it, and why it really matters.
    • You are already familiar with functional programming concepts (inmutability, map, filter, etc.), but have not heard about monads, or you heard about them but you don't still use them to effectively manage your side effects.
    • You enjoy writing correct, robust and elegant code, and want to include in your CV some of the most acclaimed technologies and programming paradigms in the software industry nowadays.
    The course requires none level of familiarity with Scala. We will start from scratch.

    Objectives

    This course will enable you to:
    • Understand the essence of functional programming, and why you should embrace it.
    • Exploit the functional programming features of Scala for great good!
    • Master testing to deploy allways the best code that you can create.
    • Not being scare when someone says things like "monadic computation", and use monads to dramatically improve the testability and modularity of your designs

    Outline

    The course is divided into four major blocks. The first one introduces Scala and functional programming, and why they really matter. We will learn that the power of functional programming comes from the many modularity techniques that it supports: generic programming, higher-order functions, type classes, pure functions, etc. The rest of the course is structured according to these different techniques: higher-order functions will be covered in the first section, monadic structures for different purposes in the second one, and type classes in the third one.

    1. Introduction to Scala
      • Object-oriented programming
      • Functional programming
      • Implicits & generic programming
      • Build tools: sbt
      • Unit testing with Scalatest
    2. Higher-order functions
      • Higher-order functions (HOFs)
      • HOFs in the Scala standard library
      • ADTs & catamorphisms
    3. Higher-order functions (II)
      • Error handling with Either
      • Applicative programming with Validated
      • Asynchronous programming with Future
      • Dependency injection with Reader
    4. Type classes
      • Type classes & object-oriented patterns
      • Type classes in the Scala standard library
      • Property-based testing

    Organization

    • The course runs over two consecutive days, each session running for eight hours. Setup instructions will be made available well in advance, so that attendees can bring their laptops properly configured to the classroom. Also the first day, the teacher will be half an hour early to help with the problems during the instalation.
    • Explanations during sessions will alternate between slides and live coding, with a preference for the later. Small exercises and challenges will be proposed after each major block of contents, and solved in the classroom.
    • The course will be taught in Spanish.
    • After each session, attendees will be encouraged to complete a number of additional exercises on Github. Habla Computing trainers will provide feedback via code reviews for those who completed this coursework in due time. A chat room will also be made available to offer guidance and foster collaboration among course attendees.

    About the coordinator

    The course is coordinated by Juan Manuel Serrano, and taught by Alfonso Roa Redondo an Habla Computing specialists.

    Juan Manuel is CTO and co-founder of Habla Computing. He has been using Scala for the last eight years in real-world applications for the banking sector, and has extensive experience in consultancy projects with Scalaz, Cats, and other frameworks of the Scala ecosystem. He founded and manages the Madrid Scala Meetup group and is member of the organizing committee of lambda.world, the premier Spanish conference of functional programming for the software practitioner. Prior to joining Habla Computing, Juan Manuel was a University teacher for more than fifteen years in different computer science and software engineering degrees.

    Alfonso Roa is a Functional Arquitect in Habla Computing. He has been using Scala for the last five years in real-world applications for the retail sector, and has extensive experience in consultancy projects with spark, akka and other frameworks of the Scala ecosystem. He is a co-organizer of the Madrid Scala Meetup group.

    Programación funcional con Scala

    Instructores:

    Alfonso Roa Redondo

    Juan Manuel Serrano

    Precio:
    500€/560€
    Duración:
    16 horas. Dos sesiones de 9:00 - 18:30 con descansos cada 2 horas y un descanso para comer de una hora.
    Idioma:
    Castellano

    Madrid

    Ubicación:
    Sales Innovation School
    Comienzo:
    06/6/19
    Fin:
    07/6/19
    Comprar tickets!

    Malaga

    Ubicación:
    Polo Contenidos Digitales Málaga
    Comienzo:
    20/6/19
    Fin:
    21/6/19
    Comprar tickets!

    Barcelona

    EspaisBarcelona
    Comienzo:
    27/6/19
    Fin:
    28/6/19
    Comprar tickets!

    Motivación (English Version)

    Este curso tiene por objetivo introducir las técnicas básicas de programación funcional utilizadas en la construcción de las librerías y aplicaciones más avanzadas de la actualidad: desde el framework de big data Spark, hasta las aplicaciones de Twitter, Facebook, etc. Entre las técnicas abordadas se encuentran los tipos algebraicos de datos, las funciones de orden superior, las type classes y las mónadas. Durante el curso se explicará en qué consisten estas técnicas y, sobre todo, qué se gana con su utilización (reusabilidad, testability, tolerancia al cambio, etc.). Por último, aunque el lenguaje de programación utilizado será predominantemente Scala, este curso consiste principalmente en un curso de programación funcional, por lo que las lecciones aprendidas en él podrás aplicarlas en tu día a día incluso si no puedes utilizar Scala en tu trabajo (lástima ;).

    Audiencia

    Este curso está especialmente dirigido a ti si cumples al menos una de las siguientes condiciones:
    • Estás familiarizado con lenguajes como Java, Javascript, C#, Python, C++, u otro lenguaje no funcional orientad a objetos, y sus patrones de diseño más comunes, pero has oído hablar de la programación funcional y quieres saber qué ganarás saliendo de tu zona de confort y abrazando sus principios.
    • Tienes ya alguna familiaridad con la programación funcional (inmutabilidad, map, filter, reduce, etc.), pero no sabes bien qué son las mónadas, o las conoces pero todavía no las utilizas para mantener a raya los efectos de lado.
    • Te gusta escribir código que funciona, robusto y elegante, y quieres añadir a tu currículum las tecnologías que hoy en día están empezando ya a imperar en la industria del software y ser demandadas por multitud de empresas.
    Para este curso no se requiere ningun nivel de conocimiento de scala, ya que haremos un repaso de sus principales elementos al inicio.

    Objetivos

    Este curso te permitirá:
    • No quedarte a medias en tus conocimientos de programación funcional: además de las lambdas y las funciones de orden superior, es esencial conocer las type classes, los funtores y mónadas, y las funciones puras.
    • Aprender cómo programar funcionalmente en Scala.
    • No quedarte perplejo cuando alguien diga "computación monádica", y utilizar las mónadas e intérpretes para mejorar drásticamente la facilidad de pruebas, modularidad, robustez y eficiencia de tu código.
    • En resumen, si la programación funcional es un toro, este curso te permitirá coger el toro por las lambdas ;)

    Temario

    El curso está dividido en cuatro bloques principales. En el primero se introduce el lenguaje Scala, qué es la programación funcional y por qué es cada vez más relevante. Veremos que la potencia de la programación funcional descansa en gran medida en los numerosos mecanismos de modularidad que soporta: la genericidad, las funciones de orden superior, las type classes, las funciones puras, etc. El resto del curso se estructura en base a estos mecanismos: en el segundo bloque se estudiará en profundidad las funciones de orden superior, estructuras monadicas para distintos usos en el tercero y en el cuarto las type classes.

    1. Introducción a Scala
      • Programación orientada a objetos
      • Programación funcional
      • Implicitos y programación genérica
      • Herramientas de construcción: sbt
      • Unit testing con Scalatest
    2. Funciones de orden superior (I)
      • Funciones de orden superior (HOFs)
      • HOFs en la librería estandar de SCala
      • Tipos algebraicos de datos (ADT) y catamorfismos
    3. Funciones de orden superior (II)
      • Manejo de errores con Either
      • Programación aplicativa con with Validated
      • Programación asíncrona con Future
      • Injección de dependencias con Reader
    4. Type classes
      • Type classes y patrones de orientación a objetos
      • Type classes con la librería estandar de Scala
      • Testing basado en propiedades

    Organización

    • El curso se celebrará en dos días intensivos seguidos. Las herramientas y librerías necesarias para seguir el curso se comunicarán con la suficiente antelación para que los alumnos puedan traer configurados sus portátiles desde casa. Igualmente el primer día el profesor estará media hora antes en la sala para poder solucionar problemas que se encuentren.
    • Las explicaciones en el aula alternarán el uso de transparencias y ejemplos de programación en live-coding, con una preferencia por este último medio. Al terminar cada bloque de contenido se propondrán pequeños ejercicios y retos para ser resueltos en clase.
    • El curso se impartirá en español.
    • Después de cada sesión, se propondrá a los asistentes la resolución de una serie de ejercicios adicionales que podrán subirse al repositorio Github del curso. El equipo de Habla Computing proporcionará feedback por medio de revisiones de código a todos aquellos que completen dichos ejercicios dentro de un plazo determinado de tiempo. Para resolver dudas y fomentar la colaboración entre los alumnos, se pondrá a disposición de los mismos un chat moderado por el profesor del curso y miembros de Habla.

    Sobre el profesor

    El curso será coordinado por Juan Manuel Serano e impartido por Alfonso Roa Redondo.

    Juan Manuel es CTO y co-fundador de Habla Computing. Utiliza la programación funcional y Scala desde hace más de ocho años en el desarrollo de un framework de procesos así como en servicios de consultoría para el desarrollo de aplicaciones en los sectores de comercio electrónico y bancario. Hace dos años fundó el grupo de usuarios de Scala en Madrid (ScalaMAD), y es miembro del comité organizador de lambda.world, un foro de reciente creación sobre programación funcional para el profesional de la informática. Antes de fundar Habla, Juan Manuel fue profesor en titulaciones de informática durante más de quince años y es actualmente profesor en excedencia de la Universidad Rey Juan Carlos.

    Alfonso Roa es aqruitecto funcinal en Habla Computing. Lleva usando Scala los últimos 5 años en aplicaciones en dominios variados como retal, paquetería, y obras publicas. Tiene amplica experiencia en consultoría con proyectos con Spark, Akka y más frameworks del ecosistema de Scala. También es co-organizador del Meetup de Scala de Madrid (ScalaMAD)

    Advanced functional programming with Scala

    Instructors:

    Juan Manuel Serrano

    Javier Fuentes

    Location:
    Parque Científico Universidad Carlos III de Madrid
    Price:
    275/550€
    Start:
    To be determined
    Duration:
    Fridays, 16:00h. Four consecutive sessions of four hours each.
    Language:
    Spanish
    Eventbrite - Programación funcional avanzada con Scala

    Overview (Spanish)

    This course provides a comprehensive introduction to three programming styles endorsed by functional programming: datatype generic, applicative and monadic programming. We also delve into the concept of algebra and compare the two major ways of representing algebras in functional programming: either as object-algebras, using type classes, or as F-algebras, using algebraic data types, natural transformations, and so forth. Throughout the course, we use Scala and its awesome ecosystem of frameworks and libraries for functional programming. In particular, we built upon the generic programming library shapeless, and the type class libraries scalaz and cats. We also make ocassional reference to property-based testing and the Scalacheck library. For each programming style, we describe the kinds of problems they are intended to solve, their constituent software abstractions and their implementation by different libraries.

    Audience

    • Scala Programmers with moderate knowledge of functional programming, tired of reinventing the wheel each time they must define a new monad or instantiate a type class, for instance
    • Programmers with deep knowledge of functional programming, but moderate knowledge of Scala and its ecosystem for functional programming

      Objectives

      At the end of the course, attendees should be able to:
    • Identify the different modularity techniques endorsed by functional programming: from parametric and ad-hoc polimorphism (i.e. type classes), to datatype generic programming, languages and interpreters, etc.
    • Understand the design patterns used in the implementation of the signature, laws, derived operations, instances and syntactic facilities of type classes, both in Scalaz and Cats.
    • Understand how monad transformers work, and the common transformer instances of monadic type classes: StateT (MonadState), EitherT (MonadError), etc.
    • Understand the concept of algebra in functional programming, and the different ways of representing them: either with type classes (object algebras) or algebraic data types (F-algebras).
    • Understand Generalised ADTs, natural transformations and Free monads, and know when to use these ADT-based representations instead of object algebras and Church encodings.
    • Understand the differences between the applicative and monadic (i.e. imperative) programming styles, their major applications, and their support in scalaz and cats!
    • Understand the concept of "free structure" and use it in the implementation of monadic and applicative languages
    • Understand the role of heterogeneous lists (aka HList) and coproducts to abstract away the particular shapes of algebraic data types (ADTs), and implement generic algorithms that work at this level of abstraction, e.g. to automatically derive type classes. All of this using shapeless!
    • Understand the overall internal architecture of Shapeless, scalaz and cats, and the most advanced Scala tricks used in their implementation, thus taking your Scala expertise to the next level
    • Learn more functional programming yourself!

    Outline

    • Type class libraries: Scalaz & Cats
      • Scalaz & Cats overview
      • Type classes: Monad, MonadState, MonadError, etc.
      • Monad transformers: StateT, EitherT, etc.
    • Applicative programming
      • Applicative functors
      • Traversables
      • Error handling with validation
    • Functional programming with ADTs
      • GADTs and natural transformations
      • Free structures (monoids, applicatives & monads)
      • F-algebras and object-algebras
    • Datatype generic programming
      • Shapeless architecture
      • HList & Coproduct representations of ADTs
      • Automatic type class derivation

    Organization

    • The course runs over four consecutive Fridays, each session running for four hours. Setup instructions will be made available well in advance, so that attendees can bring their laptops properly configured to the classroom.
    • Explanations during sessions will alternate between slides and live coding, with a preference for the later. Small exercises and challenges will be proposed after each major block of contents, and solved in the classroom.
    • The course will be taught in Spanish.
    • After each session, attendees will be encouraged to complete a number of additional exercises on Github. Habla Computing trainers will provide feedback via code reviews for those who completed this coursework in due time. A chat room will also be made available to offer guidance and foster collaboration among course attendees.

    About the coordinator

    The course is coordinated by Juan Manuel Serrano. Juan Manuel is CTO and co-founder of Habla Computing. He has been using Scala for the last six years in real-world applications for the banking sector, and has extensive experience in consultancy projects with Scalaz, Cats, and other frameworks of the Scala ecosystem. He founded and manages the Madrid Scala Meetup group and is member of the organizing committee of lambda.world, the premier Spanish conference of functional programming for the software practitioner. Prior to joining Habla Computing, Juan Manuel was a University teacher for more than fifteen years in different computer science and software engineering degrees.

    Programación funcional avanzada con Scala

    Instructores:

    Juan Manuel Serrano

    Javier Fuentes

    Ubicación:
    Parque Científico Universidad Carlos III de Madrid
    Precio:
    275/550€
    Comienzo:
    Sin fecha decidida para la próxima edición
    Duración:
    Viernes, 16:00h. Cuatro sesiones de 4 horas de duración.
    Idioma:
    Español
    Eventbrite - Programación funcional avanzada con Scala

    Este curso ofrece una introducción avanzada a tres estilos de programación soportados y promovidos por la programación funcional: la programación genérica, la programación aplicativa y la programación monádica. El curso también introduce el papel que juegan las álgebras en la programación funcional, y los dos estilos de programación algebraica principales: basados en type classes y basados en F-algebras, transformaciones naturales, tipos algebraicos de datos generalizados, etc. Durante el curso utilizaremos Scala y su fantástico ecosistema de librerías para la programación funcional, concretamente, shapeless y las librerías de type classes scalaz y cats. Con una menor relevancia, en el curso también se hará mención a la librería de pruebas Scalacheck. Para cada uno de estos tres estilos de programación, se describirán los problemas más relevantes para los que están pensados, sus abstracciones constituyentes y el soporte que ofrecen para ellos las librerías del ecosistema de Scala.

    Audiencia

    • Programadores de Scala con conocimientos intermedios de programación funcional, deseosos de mejorar su conocimiento de este paradigma y poder utilizar shapeless, scalaz, cats, y otras librerías igualmente avanzadas del ecosistema de Scala, en su código de producción
    • Programadores con un conocimiento profundo de programación funcional, con ganas de saber cómo se aplican dichos conocimientos con Scala y su ecosistema de librerías

    Objetivos

    Al terminar el curso, los alumnos serán capaces de:
    • Encuadrar los tres estilos de programación estudiados durante el curso como parte del catálogo de técnicas de modularidad proporcionadas por la programación funcional
    • Entender los patrones de diseño utilizados por Cats y Scalaz en la implementación de la signatura, leyes, operaciones derivadas, instancias y sintaxis de las type classes incluidas en dichas librerías.
    • Instanciar las type classes monádicas más comunes (MonadState, MonadError, etc.) con los transformadores de mónadas correspondientes (StateT, EitherT, etc.), y entender cómo funcionan dichos transformadores.
    • Entender el papel que desempeñan las algebras en la programación funcionaln como especificaciones de DSLs, y las distintas formas de representarlas: con tipos algebraicos de datos (F-Algebras) y mediante type classes (Ojbect-algebras).
    • Utilizar tipos algebraicos de datos generalizados, transformaciones naturales y Free monads para diseñar DSLs, y saber cuándo utilizar estas representaciones en lugar de las basadas en Church encodings y álgebras de objetos.
    • Entender las diferencias entre los estilos aplicativo y monádico (es decir, imperativo), sus principales aplicaciones y el soporte que ofrecen scalaz y cats para ellos
    • Entender el concepto de representación libre ("free structures") y su aplicación al diseño de lenguajes aplicativos y monádicos
    • Entender el papel de las listas heterogéneas (HList) y los coproductos para abstraer la forma particular de los tipos algebraicos de datos (ADTs), y poder de esa forma implementar algoritmos genéricos que trabajen a ese nivel de abstracción (por ejemplo, para derivar automáticamente type classes). ¡Todo ello utilizando shapeless!
    • Entender la arquitectura interna de shapeless, cats y scalaz, así como las técnicas de Scala más avanzadas utilizadas en su diseño
    • ¡Aprender más programación funcional por uno mismo!

    Temario

    • Type class libraries: Scalaz & Cats
      • Scalaz & Cats overview
      • Type classes: Monad, MonadState, MonadError, etc.
      • Monad transformers: StateT, EitherT, etc.
    • Applicative programming
      • Applicative functors
      • Traversables
      • Error handling with validation
    • Algebras and functional programming
      • GADTs and natural transformations
      • Free structures (monoids, applicatives & monads)
      • F-algebras and object-algebras
    • Datatype generic programming
      • Shapeless architecture
      • HList, Coproduct and Fix
      • Automatic type class derivation

    Organización

    • El curso se celebrará los viernes por la tarde en cuatro sesiones consecutivas de cuatro horas. Las herramientas y librerías necesarias para seguir el curso se comunicarán con la suficiente antelación para que los alumnos puedan traer configurados sus portátiles desde casa.
    • Las explicaciones en el aula alternarán el uso de transparencias y ejemplos de programación en live-coding, con una preferencia por este último medio. Al terminar cada bloque de contenido se propondrán pequeños ejercicios y retos para ser resueltos en clase.
    • El curso se impartirá en español.
    • Después de cada sesión, se propondrá a los asistentes la resolución de una serie de ejercicios adicionales que podrán subirse al repositorio Github del curso. El equipo de Habla Computing proporcionará feedback por medio de revisiones de código a todos aquellos que completen dichos ejercicios dentro de un plazo determinado de tiempo. Para resolver dudas y fomentar la colaboración entre los alumnos, se pondrá a disposición de los mismos un chat moderado por el profesor del curso y miembros de Habla.

    Sobre los profesores

    El curso será coordinado por Juan Manuel Serano. Juan Manuel es CTO y co-fundador de Habla Computing. Utiliza la programación funcional y Scala desde hace seis años en el desarrollo de un framework de procesos así como en servicios de consultoría para el desarrollo de aplicaciones en los sectores de comercio electrónico y bancario. Hace dos años fundó el grupo de usuarios de Scala en Madrid (ScalaMAD), y es miembro del comité organizador de lambda.world, un foro de reciente creación sobre programación funcional para el profesional de la informática. Antes de fundar Habla, Juan Manuel fue profesor en titulaciones de informática durante más de quince años y es actualmente profesor en excedencia de la Universidad Rey Juan Carlos.

    Apache Spark con Scala

    Instructores:

    Alfonso Roa Redondo

    Mikel San Vicente Maeztu

    Precio:
    600€/660€
    Duración:
    16 horas

    Madrid

    Ubicación:
    Offiplace Fernando VI 17- 1º Izda, 28004, Madrid
    Start:
    26/09/2019 09:00
    End:
    27/09/2019 19:00
    Idioma:
    Español

    Eventbrite - Apache Spark con Scala


    Barcelona

    Ubicación:
    Espais Barcelona, C/ Legalitat 60-62, 08024, Barcelona, España
    Start:
    30/09/2019 09:00
    End:
    01/10/2019 19:00
    Idioma:
    Inglés

    Eventbrite - Apache Spark en Scala


    Málaga

    Ubicación:
    Suscríbete para actualizaciones
    Fecha:
    Por determinar
    Idioma:
    Por determinar

    Motivación (English Version)

    Este curso ofrece una introducción en profundidad a la programación distribuida con Apache Spark en Scala. El curso se centra en dotar al alumno de conocimientos sobre los fundamentos del modelo de computación de Spark, ilustrándolo a través de numerosos ejemplos interactivos. Además se explicará cómo analizar la eficiencia de programas utilizando las herramientas que Spark pone a nuestra disposición, como SparkUI, y se explicarán las técnicas que permiten obtener el máximo beneficio de las optimizaciones que Spark ofrece a los programadores a través de ejercicios prácticos de patrones y antipatrones.

    Audiencia

  • Programadores con nociones básicas de Scala, interesados en introducirse en el mundo del Big Data
  • Desarrolladores de Big Data que quieran mejorar sus habilidades sobre Spark, independientemente de su experiencia previa con el lenguaje de programación Scala

    Objetivos

    Al terminar el curso, los alumnos serán capaces de:
  • Comprender en profundidad el modelo de computación de Spark
  • Desarrollar procesos ETL con Spark de una forma modular y testable
  • Identificar y resolver problemas habituales en Spark, particularmente de rendimiento

    Temario

    • Modelo de computación I: Introducción
      • Transformaciones y acciones
      • Computación distribuida
      • Transformaciones narrow vs. wide
      • Transformaciones: joins
      • Cacheo
    • Modelo de computación II: Plan de ejecución
      • Jobs, stages y tasks
      • Gestores de clúster: Yarn, Standalone, Mesos
      • Driver y executors
      • SparkUI
    • APIs
      • Los lenguajes de Spark: SparkSQL, RDDs, ML, GraphX
      • Dataset: Type safe
      • DataFrame: Type unsafe
      • Datasets vs DataFrames
    • Lectura y escritura de datos
      • Ficheros: JSON, Parquet
      • Bases de datos: JDBC, NoSQL
    • Patrones y antipatrones
      • Gestión de memoria
      • Problemas de serialización
      • Cacheo
      • Tareas que no terminan
      • Estructura del workflow (ETL)
      • Testing

    Organización

    • Las explicaciones en el aula alternarán el uso de transparencias y ejemplos de programación en live-coding utilizando notebooks, con una preferencia por este último medio. Al terminar cada bloque de contenido se propondrán pequeños ejercicios y retos para ser resueltos en clase.
    • Después de cada sesión, se propondrá a los asistentes la resolución de una serie de ejercicios adicionales que podrán subirse al repositorio Github del curso. El equipo de Habla Computing proporcionará feedback por medio de revisiones de código a todos aquellos que completen dichos ejercicios dentro de un plazo determinado de tiempo.

    Sobre los profesores

    El curso será impartido por Alfonso Roa Redondo y Mikel San Vicente Maeztu. Alfonso y Mikel son arquitectos funcionales en Habla Computing. Llevan usando Scala desde hace más de 5 años en aplicaciones en dominios variados como financiero, predictive marketing, retail, paquetería, obras publicas, etc. Tienen amplia experiencia en consultoría con proyectos con Spark, Akka y otros frameworks del ecosistema de Scala. Alfonso es co-organizador del Meetup de Scala de Madrid (ScalaMad)

  • Apache Spark in Scala

    Instructors:

    Alfonso Roa Redondo

    Mikel San Vicente Maeztu

    Price:
    600€/660€
    Duration:
    16 hours

    Madrid

    Location:
    Offiplace Fernando VI 17- 1º Izda, 28004, Madrid
    Start:
    26/09/2019 09:00
    End:
    27/09/2019 19:00
    Language:
    Spanish

    Eventbrite - Apache Spark in Scala


    Barcelona

    Location:
    Espais Barcelona, C/ Legalitat 60-62, 08024, Barcelona, España
    Start:
    30/09/2019 09:00
    End:
    01/10/2019 19:00
    Language:
    English

    Eventbrite - Apache Spark in Scala


    Málaga

    Location:
    Subscribe for updates
    Date:
    TBD
    Language:
    TBD

    Summary (Versión en español)

    This course is a deep introduction into distributed programming with Apache Spark and Scala. It's focused in learning the fundamentals of Apache Spark computational model, the course contents are explained through interactive examples. It will also provide insights on how to analyze the program's performance using SparkUI and how to optimize it through practical exercises.

    Audience

  • Programmers with basic Scala knowledge interested in learning big data technologies.
  • Big data programmers interested in improving their skills, no previous Scala experience needed

    Goals

    At the end of the course the attendees should be able to:
  • Understand Spark computational model
  • Develop testable and modular ETL programs with Spark
  • Identify and resolve common problems in Spark, with a special focus on performance

    Syllabus

    • Computational model I: Introduction
      • Transformations and actions
      • Distributed computing
      • Narrow vs wide transformations
      • Joins
      • Caching
    • Computational model II: Execution plan
      • Jobs, stages y tasks
      • Cluster managers: Yarn, Standalone, Mesos
      • Driver and executors
      • SparkUI
    • APIs
      • Spark languages: SparkSQL, RDDs, ML, GraphX
      • Dataset: Statically typed
      • DataFrame: Dynamically unsafe
      • Datasets vs DataFrames
    • Reading and writting in Spark
      • Files: JSON, Parquet
      • Databases: JDBC, NoSQL
    • Patterns and antipatterns
      • Memory
      • Serialization issues
      • Caching
      • Tasks that never finish
      • Workflow structure (ETL)
      • Testing

    Organization

    • Explanations during sessions will alternate between slides and live coding, with a preference for the later. Small exercises and challenges will be proposed after each block of contents, and solved in the classroom.
    • After each session, attendees will be encouraged to complete a number of additional exercises on Github. Habla Computing trainers will provide feedback via code reviews for those who completed this coursework in due time. A chat room will also be made available to offer guidance and foster collaboration among course attendees.

    About the instructors

    The instructors are Alfonso Roa Redondo y Mikel San Vicente Maeztu. Alfonso and Mikel are functional programming architects at Habla Computing. They have been using Scala for more than 5 years in multiple domains like fintech, predictive marketing, retail, logistics, civil engineering, etc... They also have extensive experience in consultancy with Akka, Spark and other Scala ecosystem technologies. Alfonso is a co-organizer of Madrid's Scala Meetup (ScalaMad)

  • Advanced functional programming with Scala

    Trainer:

    Juan Manuel Serrano

    Trainer:

    Javier Fuentes Sánchez

    Duration:
    24 hours

    Overview (Spanish)

    This course provides a comprehensive introduction to three programming styles endorsed by functional programming: datatype generic, applicative and monadic programming. To this end, we use Scala and its awesome ecosystem of frameworks and libraries for functional programming. In particular, we built upon the generic programming library shapeless, and the type class libraries scalaz and cats. We also make ocassional reference to property-based testing and the Scalacheck library. For each programming style, we describe the kinds of problems they are intended to solve, their constituent software abstractions and their implementation by different libraries.

    Objectives

    At the end of the course, attendees should be able to:
  • Identify the different modularity techniques endorsed by functional programming: from parametric and ad-hoc polimorphism (i.e. type classes), to datatype generic programming, languages and interpreters, etc.
  • Understand the role of heterogeneous lists (aka HList) and coproducts to abstract away the particular shapes of algebraic data types (ADTs), and implement generic algorithms that work at this level of abstraction, e.g. to automatically derive type classes. All of this using shapeless!
  • Understand the differences between the applicative and monadic (i.e. imperative) programming styles, their major applications, and their support in scalaz and cats!
  • Understand the concept of "free structure" and use it in the implementation of monadic and applicative languages
  • Understand the overall internal architecture of Shapeless, scalaz and cats, and the most advanced Scala tricks used in their implementation, thus taking your Scala expertise to the next level
  • Learn more functional programming yourself!

    Outline

    • Type classes: más allá de las funciones de orden superior
      • Type classes
      • Extensibilidad y patrones de diseño
    • Languages and interpreters
      • Limitations of conventional abstract interfaces
      • Use of type classes to implement DSLs
      • Monadic DSLs
    • The functional ecosystem of Scala
      • Type class libraries: scalaz, cats
      • Scalacheck
      • Property-based testing with the State monad
    • Monadic programming with GADTs
      • GADTs and natural transformations
      • Free monads
      • Coproducts
    • Applicative programming
      • Applicative functors
      • Traversables
      • Free applicatives
    • Datatype generic programming
      • Shapeless architecture
      • HList, Coproduct and Fix
      • Automatic type class derivation

    About the coordinator

    The course is coordinated by Juan Manuel Serrano, and taught by him and Habla Computing specialists. Juan Manuel is CTO and co-founder of Habla Computing. He has been using Scala for the last five years in real-world applications for the banking sector, and has extensive experience in consultancy projects with Scala, Play, and other frameworks of the Scala ecosystem. He founded and manages the Madrid Scala Meetup group and is member of the organizing committee of lambda.world, the premier Spanish conference of functional programming for the software practitioner. Prior to joining Habla Computing, Juan Manuel was a University teacher for more than fifteen years in different computer science and software engineering degrees.

  • Programación funcional avanzada con Scala

    Profesor:

    Juan Manuel Serrano

    Profesor:

    Javier Fuentes Sánchez

    Duración:
    24 horas

    Resumen

    Este curso ofrece una introducción avanzada a tres estilos de programación soportados y promovidos por la programación funcional: la programación genérica, la programación aplicativa y la programación monádica. Para ello, utilizaremos Scala y su fantástico ecosistema de librerías para la programación funcional, concretamente, shapeless y las librerías de type classes scalaz y cats. Con una menor relevancia, en el curso también se hará mención a la librería de pruebas Scalacheck. Para cada uno de estos tres estilos de programación, se describirán los problemas más relevantes para los que están pensados, sus abstracciones constituyentes y el soporte que ofrecen para ellos las librerías del ecosistema de Scala.

    Objetivos

    Al terminar el curso, los alumnos serán capaces de:
  • Encuadrar los tres estilos de programación estudiados durante el curso como parte del catálogo de técnicas de modularidad proporcionadas por la programación funcional
  • Entender el papel de las listas heterogéneas (HList) y los coproductos para abstraer la forma particular de los tipos algebraicos de datos (ADTs), y poder de esa forma implementar algoritmos genéricos que trabajen a ese nivel de abstracción (por ejemplo, para derivar automáticamente type classes). ¡Todo ello utilizando shapeless!
  • Entender las diferencias entre los estilos aplicativo y monádico (es decir, imperativo), sus principales aplicaciones y el soporte que ofrecen scalaz y cats para ellos
  • Entender el concepto de representación libre ("free structures") y su aplicación al diseño de lenguajes aplicativos y monádicos
  • Entender la arquitectura interna de shapeless, cats y scalaz, así como las técnicas de Scala más avanzadas utilizadas en su diseño
  • ¡Aprender más programación funcional por uno mismo!

    Temario

    • Type classes: más allá de las funciones de orden superior
      • Type classes
      • Extensibilidad y patrones de diseño
    • Languages and interpreters
      • Limitations of conventional abstract interfaces
      • Use of type classes to implement DSLs
      • Monadic DSLs
    • The functional ecosystem of Scala
      • Type class libraries: scalaz, cats
      • Scalacheck
      • Property-based testing with the State monad
    • Monadic programming with GADTs
      • GADTs and natural transformations
      • Free monads
      • Coproducts
    • Applicative programming
      • Applicative functors
      • Traversables
      • Free applicatives
    • Datatype generic programming
      • Shapeless architecture
      • HList, Coproduct and Fix
      • Automatic type class derivation

    Sobre los profesores

    El curso será coordinado por Juan Manuel Serano, e impartido por él y Javier Fuentes, programador y formador senior de Habla Computing. Juan Manuel es CTO y co-fundador de Habla Computing. Utiliza la programación funcional y Scala desde hace cinco años en el desarrollo de un framework de procesos así como en servicios de consultoría para el desarrollo de aplicaciones en los sectores de comercio electrónico y bancario. Hace dos años fundó el grupo de usuarios de Scala en Madrid (ScalaMAD), y es miembro del comité organizador de lambda.world, un foro de reciente creación sobre programación funcional para el profesional de la informática. Antes de fundar Habla, Juan Manuel fue profesor en titulaciones de informática durante más de quince años y es actualmente profesor en excedencia de la Universidad Rey Juan Carlos.

  • Introduction to Scala

    Instructor:

    Jesús López González

    Location:
    Parque Científico Universidad Carlos III de Madrid
    Duration:
    One session of 5h
    Start:
    4/11/16 16:00

    Overview (Spanish)

    We will not argue that the Scala programming language is an easy one to delve into. Therefore, we want to provide you with the fundamental means to start this journey. This one-day course offers you an introduction to Scala: where it comes from, which programming paradigms it supports, and which are its major technical features. We do not guarantee that this language is for you, but we are absolutely sure that you will become a better programmer by learning it.

    Audience

    You have heard of Scala, and the myriads of frameworks and tools based on Scala which are all the rage these days (Spark, Akka, Play, and so forth), but do not have the time to delve into the Scala jungle yourself. This course will give you a gentle and smooth introduction to it. Familiarity with conventional object-oriented languages is assumed.

    Objectives

    This course will enable you to:
    • Grasp the main technical features of Scala pertaining to the object-oriented paradigm: classes, traits, objects, etc.
    • Grasp the main technical features of Scala pertaining to functional programming: case classes, pattern matching, etc.
    • Grasp the main technical features of Scala genericity
    • Grasp the major syntactic sugar techniques deployed in Scala

    Outline

    The course is structured around the major programming paradigms that the Scala language supports, namely the object-oriented, functional and generic paradigms. Besides, we will take a look at the syntactic sugar tricks that make reading Scala encodings a tough task for newcomers. The Scala collection library will be used throughout the course as a source of inspiring examples.

    • Object-oriented features
      • Classes and objects
      • Traits
    • Functional programming features
      • Immutability
      • Case classes & pattern matching
      • Lambdas
    • Syntactic Sugar
      • Method invocation
      • Apply method
    • Generic programming features
      • Generic classes
      • Polymorphic methods

    Organization

    • The course will take place in a single session, for five (intensive) hours starting at 16:00h. Setup instructions will be made available well in advance, so that attendees can bring their laptops properly configured to the classroom.
    • Explanations during sessions will alternate between slides and live coding, with a preference for the later. Small exercises and challenges will be proposed after each block of contents, and solved in the classroom.

    About the instructor

    Jesús holds a double MsC in Software engineering and Telematics. He has been using Scala since he started to work in Habla Computing five years ago, both for DSL design and applications in the banking industry. Currently, he is doing his PhD in reactive systems and functional programming in Habla Computing. Jesús was coordinator and frequent speaker during several years of the Madrid Scala Meetup.

    Introducción a Scala

    Profesor:

    Jesús López González

    Ubicación:
    Parque Científico Universidad Carlos III de Madrid
    Duración:
    5 horas
    Start:
    4/11/16 16:00

    Resumen

    Sabemos que adentrarse en el lenguaje de programación Scala no es una tarea trivial. Con este curso, se pretende que el alumno adquiera las nociones básicas para poder comenzar este reto con buen pie. Se ofrecerá una introducción al lenguaje: de dónde viene, qué paradigmas de programación soporta y cuáles son las características principales que lo hacen tan especial. No podemos garantizar que este lenguaje esté hecho a medida para ti, pero sí que podemos asegurar que aprender Scala te convertirá en mejor programador.

    Audiencia

  • Has oído hablar de Scala, o de alguna de las librerías o frameworks que conforman su ecosistema y que están adquiriendo gran relevancia en la actualidad (Spark, Akka, Play, etc.), pero no dispones del tiempo necesario para adentrarte en esta selva, y te gustaría tener una visión general sobre las posibilidades que ofrece este entorno.
  • Tienes una experiencia mínima con la programación orientada a objetos y alguno de sus lenguajes.

    Objetivos

    Este curso te permitira:
    • Tener nociones básicas sobre las características que ofrece Scala para el paradigma de orientación a objetos: classes, traits, objects, etc.
    • Tener nociones básicas sobre las características que ofrece Scala para el paradigma de programación funcional: case classes, pattern matching, etc.
    • Tener nociones básicas sobre las características que ofrece Scala para trabajar con genericidad
    • Conocer el azúcar sintáctico que se despliega en Scala

    Temario

    El curso se estructura en torno a los principales paradigmas de programación soportados por Scala: orientación a objetos, programación funcional y programación genérica. Adicionalmente, se analizará el azúcar sintáctico que hace que los fuentes resulten tan difíciles de leer para los recién llegados. La librería de colecciones de Scala se utilizará como fuente de ejemplos durante el curso.

    • Características de Orientación a Objetos
      • Clases y objetos
      • Traits
    • Características de Programación Funcional
      • Inmutabilidad
      • Case classes & pattern matching
      • Lambdas
    • Azúcar Sintáctico
      • Invocación de métodos
      • Método 'apply'
    • Características de Programación Genérica
      • Clases genéricas
      • Funciones polimórficas

    Organización

    • El curso se llevará a cabo en una única sesión de cinco horas de duración, en formato intensivo, comenzando a las 16:00h. Se indicarán los requisitos de configuración necesarios para poder seguir el curso con la suficiente antelación, de manera que los asistentes puedan traer sus propios equipos al aula.
    • Las explicaciones alternarán entre diapositivas y live coding, con una predilección por lo segundo. Se propondrán pequeños ejercicios al final de cada bloque para ser resueltos en clase.

    Sobre el profesor

    Jesús es Ingeniero Superior en Informática y Máster en Sistemas Telemáticos e Informáticos. Trabaja en Habla Computing desde hace cinco años como programador de Scala para aplicaciones del sector bancario. Actualmente, desarrolla su tesis doctoral en Habla Computing sobre temas de programación funcional y sistemas reactivos, gracias a una subvención del programa de Doctorados Industriales del Ministerio de Economía y Competitividad. Jesús fue durante varios años coorganizador del meetup de Scala en Madrid, donde es ponente habitual.

  • Purely functional Scala

    Coordinator:

    Juan Manuel Serrano

    Trainer:

    Javier Fuentes Sánchez

    Location:
    Parque Científico Universidad Carlos III de Madrid
    Duration:
    Fridays, 16:00h. Four consecutive sessions of four hours each.
    Language:
    Spanish
    Start:
    11/11/16 (5th edition)

    Overview (Spanish)

    The main goal of this course is introducing the basic functional programming techniques that fuel the most advanced libraries and applications nowadays (Spark, Twitter, Facebook, etc.). These techniques are, amongst others, algebraic data types, higher-order functions, type classes, monads and pure functions. Throughout the course, you will learn what these techniques are, and, specially, why we should care about them, i.e. how they will help us to achieve higher levels of reusability, testability, evolvability, etc., in our code. To illustrate these functional techniques, we will pay special attention to the Spark library. Last, note that this is mostly a functional programming course that happens to be taught using Scala. So, the major lessons to be learned here will be readily applicable to your everyday programming tasks, even if you can't use Scala at your workplace (sigh).

    Audience

    This course is specially made for you if you meet at least one of the following requirements:
    • You are fluent in Java, Scala, C#, Python, Javascript, Ruby, or any other non-functional programming language, and want to push the boundaries of your comfort zone. You have heard about the virtues of functional programming, and want to know what's all the fuss behind it, and why it really matters.
    • You are already familiar with functional programming concepts (inmutability, map, filter, etc.), but have not heard about monads, or you heard about them but you don't still use them to effectively manage your side effects.
    • You are determined to use Spark, and would like to get a comprehensive introduction to the functional programming principles behind this wonderful framework (higher-order functions and beyond).
    • You enjoy writing correct, robust and elegant code, and want to include in your CV some of the most acclaimed technologies and programming paradigms in the software industry nowadays.
    The course requires a minimum level of familiarity with Scala. But don't worry if you know nothing about Scala! With the inscription in this course, you will get a discount for our fast-track Scala course. Last, note that no in-depth knowledge of Scala is needed, since more advanced concepts such as type constructors, higher-kind generics, implicits, etc., will be covered by this course.

    Objectives

    This course will enable you to:
    • Understand the essence of functional programming, and why you should embrace it
    • Exploit the functional programming features of Scala for great good!
    • Not being scare when someone says things like "monadic computation", and use monads to dramatically improve the testability and modularity of your designs
    • Understand the functional architecture of the Spark framework, and write complex data transformation programs in a purely functional style

    Outline

    The course is divided into four major blocks. The first one introduces what is functional programming and why it really matters. We will learn that the power of functional programming comes from the many modularity techniques that it supports: generic programming, higher-order functions, type classes, pure functions, etc. The rest of the course is structured according to these different techniques: higher-order functions will be covered in the first section, type classes in the second one, and pure functions in the third one. The last fourth module of the course is entirely devoted to Spark. We will see how Spark exemplifies the functional abstractions introduced throughout the course (higher-order functions, pure functions, etc.) and will illustrate how we can write complex data transformation programs in a purely functional style.

    • What is functional programming?
      • The modularity ladder
      • Functions and algebraic data types
      • Higher-order functions
    • Beyond higher-order functions
      • Type classes
      • Extensibility and design patterns
    • Taming impure functions
      • Type constructor classes as Functional APIs
      • Monadic APIs
      • Composition of effects
    • Introduction to Spark
      • The functional architecture of the Spark framework
      • The DSL: RDD transformations
      • The interpreter: RDD actions

    Organization

    • The course runs over four consecutive Fridays, each session running for four hours. Setup instructions will be made available well in advance, so that attendees can bring their laptops properly configured to the classroom.
    • Explanations during sessions will alternate between slides and live coding, with a preference for the later. Small exercises and challenges will be proposed after each major block of contents, and solved in the classroom.
    • The course will be taught in Spanish.
    • After each session, attendees will be encouraged to complete a number of additional exercises on Github. Habla Computing trainers will provide feedback via code reviews for those who completed this coursework in due time. A chat room will also be made available to offer guidance and foster collaboration among course attendees.

    About the coordinator

    Juan Manuel is CTO and co-founder of Habla Computing. He has been using Scala for the last five years in real-world applications for the banking sector, and has extensive experience in consultancy projects with Scala, Play, and other frameworks of the Scala ecosystem. He founded and manages the Madrid Scala Meetup group and is member of the organizing committee of lambda.world, the premier Spanish conference of functional programming for the software practitioner. Prior to joining Habla Computing, Juan Manuel was a University teacher for more than fifteen years in different computer science and software engineering degrees.

    Programación funcional con Scala

    Coordinador:
    Juan Manuel Serrano

    Juan Manuel Serrano

    Profesor:
    Javier Fuentes Sánchez

    Javier Fuentes Sánchez

    Ubicación:
    Parque Científico Universidad Carlos III de Madrid
    Duración:
    Viernes, 16:00h. Cuatro sesiones de 4 horas cada una
    Idioma:
    Español
    Start:
    11/11/16 (5ª edición)

    Motivación

    Este curso tiene por objetivo introducir las técnicas básicas de programación funcional utilizadas en la construcción de las librerías y aplicaciones más avanzadas de la actualidad: desde el framework de big data Spark, hasta las aplicaciones de Twitter, Facebook, etc. Entre las técnicas abordadas se encuentran los tipos algebraicos de datos, las funciones de orden superior, las type classes y las mónadas. Durante el curso se explicará en qué consisten estas técnicas y, sobre todo, qué se gana con su utilización (reusabilidad, testability, tolerancia al cambio, etc.). Para ilustrar estos conceptos se prestará una especial atención al framework de Spark. Por último, aunque el lenguaje de programación utilizado será predominantemente Scala, este curso consiste principalmente en un curso de programación funcional, por lo que las lecciones aprendidas en él podrás aplicarlas en tu día a día incluso si no puedes utilizar Scala en tu trabajo (lástima ;).

    Audiencia

    Este curso está especialmente dirigido a ti si cumples al menos una de las siguientes condiciones:
    • Estás familiarizado con lenguajes como Java, Javascript, C#, Python, C++, etc., y sus patrones de diseño más comunes, pero has oído hablar de la programación funcional y quieres saber qué ganarás saliendo de tu zona de confort y abrazando sus principios.
    • Tienes ya alguna familiaridad con la programación funcional (inmutabilidad, map, filter, reduce, etc.), pero no sabes bien qué son las mónadas, o las conoces pero todavía no las utilizas para mantener a raya los efectos de lado.
    • Estás decidido a aprender Spark y quieres conocer en profundidad los fundamentos de programación funcional que subyacen a este framework (más allá aún de las funciones de orden superior).
    • Te gusta escribir código que funciona, robusto y elegante, y quieres añadir a tu currículum las tecnologías que hoy en día están empezando ya a imperar en la industria del software y ser demandadas por multitud de empresas.
    Por otra parte, no te preocupes si no estás familiarizado con Scala: con la matrícula de este curso tienes un descuento para asistir a nuestro curso de iniciación a Scala. Con este nivel de iniciación es suficiente, dado que los conceptos de Scala más avanzados necesarios para la programación funcional, como los constructores de tipos, implícitos y la genericidad tipo higher-kinds, sí se enseñarán en este curso.

    Objetivos

    Este curso te permitirá:
    • No quedarte a medias en tus conocimientos de programación funcional: además de las lambdas y las funciones de orden superior, es esencial conocer las type classes y las funciones puras.
    • Aprender cómo programar funcionalmente en Scala.
    • No quedarte perplejo cuando alguien diga "computación monádica", y utilizar las mónadas e intérpretes para mejorar drásticamente la facilidad de pruebas, modularidad, robustez y eficiencia de tu código.
    • Conocer la arquitectura funcional de Spark, y escribir complejos programas de transformación de datos en un estilo puramente funcional.
    • En resumen, si la programación funcional es un toro, este curso te permitirá coger el toro por las lambdas ;)

    Temario

    El curso está dividido en cuatro bloques principales, de cuatro horas de duración cada uno aproximadamente. En el primero se introduce qué es la programación funcional y por qué es cada vez más relevante. Veremos que la potencia de la programación funcional descansa en gran medida en los numerosos mecanismos de modularidad que soporta: la genericidad, las funciones de orden superior, las type classes, las funciones puras, etc. El resto del curso se estructura en base a estos mecanismos: en el primer bloque se estudiará en profundidad las funciones de orden superior, en el segundo las type classes y en el tercero la purificación de funciones y segregación de efectos de lado. Por último, en el cuarto bloque nos centraremos exclusivamente en Spark y en cómo se aplican en su arquitectura los conceptos anteriores. Desde un punto de vista práctico, veremos cómo escribir complejos programas de transformación de datos en un estilo puramente funcional.

    • ¿Qué es la programación funcional?
      • Los mecanismos de modularidad
      • Las funciones y los tipos algebraicos de datos
      • Las funciones de orden superior
    • Type classes: más allá de las funciones de orden superior
      • Type classes
      • Extensibilidad y patrones de diseño
    • La pureza funcional
      • APIs funcionales como type constructor classes
      • APIs monádicas
      • Composición de efectos
    • El framework Spark
      • La arquitectura funcional del framework Spark
      • El lenguaje RDD: transformaciones de datos
      • El intérprete de RDDs: acciones

    Organización

    • El curso se celebrará los viernes por la tarde en cuatro sesiones consecutivas de cuatro horas. Las herramientas y librerías necesarias para seguir el curso se comunicarán con la suficiente antelación para que los alumnos puedan traer configurados sus portátiles desde casa.
    • Las explicaciones en el aula alternarán el uso de transparencias y ejemplos de programación en live-coding, con una preferencia por este último medio. Al terminar cada bloque de contenido se propondrán pequeños ejercicios y retos para ser resueltos en clase.
    • El curso se impartirá en español.
    • Después de cada sesión, se propondrá a los asistentes la resolución de una serie de ejercicios adicionales que podrán subirse al repositorio Github del curso. El equipo de Habla Computing proporcionará feedback por medio de revisiones de código a todos aquellos que completen dichos ejercicios dentro de un plazo determinado de tiempo. Para resolver dudas y fomentar la colaboración entre los alumnos, se pondrá a disposición de los mismos un chat moderado por el profesor del curso y miembros de Habla.

    Sobre el coordinador

    Juan Manuel es CTO y co-fundador de Habla Computing. Utiliza la programación funcional y Scala desde hace cinco años en el desarrollo de un framework de procesos así como en servicios de consultoría para el desarrollo de aplicaciones en los sectores de comercio electrónico y bancario. Hace dos años fundó el grupo de usuarios de Scala en Madrid (ScalaMAD), y es miembro del comité organizador de lambda.world, un foro de reciente creación sobre programación funcional para el profesional de la informática. Antes de fundar Habla, Juan Manuel fue profesor en titulaciones de informática durante más de quince años y es actualmente profesor en excedencia de la Universidad Rey Juan Carlos.

    Purely functional Scala

    Coordinator:

    Juan Manuel Serrano

    Trainer:

    Javier Fuentes Sánchez

    Location:
    Parque Científico Universidad Carlos III de Madrid
    Duration:
    Fridays, 16:00h. Four consecutive sessions of four hours each.
    Language:
    Spanish
    Start:
    14/10/16

    Overview (Spanish)

    The main goal of this course is introducing the basic functional programming techniques that fuel the most advanced libraries and applications nowadays (Spark, Twitter, Facebook, etc.). These techniques are, amongst others, algebraic data types, higher-order functions, type classes, monads and pure functions. Throughout the course, you will learn what these techniques are, and, specially, why we should care about them, i.e. how they will help us to achieve higher levels of reusability, testability, evolvability, etc., in our code. To illustrate these functional techniques, we will pay special attention to the Spark library. Last, note that this is mostly a functional programming course that happens to be taught using Scala. So, the major lessons to be learned here will be readily applicable to your everyday programming tasks, even if you can't use Scala at your workplace (sigh).

    Audience

    This course is specially made for you if you meet at least one of the following requirements:
    • You are fluent in Java, Scala, C#, Python, Javascript, Ruby, or any other non-functional programming language, and want to push the boundaries of your comfort zone. You have heard about the virtues of functional programming, and want to know what's all the fuss behind it, and why it really matters.
    • You are already familiar with functional programming concepts (inmutability, map, filter, etc.), but have not heard about monads, or you heard about them but you don't still use them to effectively manage your side effects.
    • You are determined to use Spark, and would like to get a comprehensive introduction to the functional programming principles behind this wonderful framework (higher-order functions and beyond).
    • You enjoy writing correct, robust and elegant code, and want to include in your CV some of the most acclaimed technologies and programming paradigms in the software industry nowadays.
    The course requires a minimum level of familiarity with Scala. But don't worry if you know nothing about Scala! With the inscription in this course, you will get a discount for our fast-track Scala course. Last, note that no in-depth knowledge of Scala is needed, since more advanced concepts such as type constructors, higher-kind generics, implicits, etc., will be covered by this course.

    Objectives

    This course will enable you to:
    • Understand the essence of functional programming, and why you should embrace it
    • Exploit the functional programming features of Scala for great good!
    • Not being scare when someone says things like "monadic computation", and use monads to dramatically improve the testability and modularity of your designs
    • Understand the functional architecture of the Spark framework, and write complex data transformation programs in a purely functional style

    Outline

    The course is divided into four major blocks. The first one introduces what is functional programming and why it really matters. We will learn that the power of functional programming comes from the many modularity techniques that it supports: generic programming, higher-order functions, type classes, pure functions, etc. The rest of the course is structured according to these different techniques: higher-order functions will be covered in the first section, type classes in the second one, and pure functions in the third one. The last fourth module of the course is entirely devoted to Spark. We will see how Spark exemplifies the functional abstractions introduced throughout the course (higher-order functions, pure functions, etc.) and will illustrate how we can write complex data transformation programs in a purely functional style.

    • What is functional programming?
      • The modularity ladder
      • Functions and algebraic data types
      • Higher-order functions
    • Beyond higher-order functions
      • Type classes
      • Extensibility and design patterns
    • Taming impure functions
      • Type constructor classes as Functional APIs
      • Monadic APIs
      • Composition of effects
    • Introduction to Spark
      • The functional architecture of the Spark framework
      • The DSL: RDD transformations
      • The interpreter: RDD actions

    Organization

    • The course runs over four consecutive Fridays, each session running for four hours. Setup instructions will be made available well in advance, so that attendees can bring their laptops properly configured to the classroom.
    • Explanations during sessions will alternate between slides and live coding, with a preference for the later. Small exercises and challenges will be proposed after each major block of contents, and solved in the classroom.
    • The course will be taught in Spanish.
    • After each session, attendees will be encouraged to complete a number of additional exercises on Github. Habla Computing trainers will provide feedback via code reviews for those who completed this coursework in due time. A chat room will also be made available to offer guidance and foster collaboration among course attendees.

    About the coordinator

    Juan Manuel is CTO and co-founder of Habla Computing. He has been using Scala for the last five years in real-world applications for the banking sector, and has extensive experience in consultancy projects with Scala, Play, and other frameworks of the Scala ecosystem. He founded and manages the Madrid Scala Meetup group and is member of the organizing committee of lambda.world, the premier Spanish conference of functional programming for the software practitioner. Prior to joining Habla Computing, Juan Manuel was a University teacher for more than fifteen years in different computer science and software engineering degrees.

    Programación funcional con Scala

    Coordinador:

    Juan Manuel Serrano

    Profesor:

    Javier Fuentes Sánchez

    Ubicación:
    Parque Científico Universidad Carlos III de Madrid
    Duración:
    Viernes, 16:00h. Cuatro sesiones de 4 horas cada una
    Idioma:
    Español
    Start:
    14/10/16 (4th edition)

    Motivación

    Este curso tiene por objetivo introducir las técnicas básicas de programación funcional utilizadas en la construcción de las librerías y aplicaciones más avanzadas de la actualidad: desde el framework de big data Spark, hasta las aplicaciones de Twitter, Facebook, etc. Entre las técnicas abordadas se encuentran los tipos algebraicos de datos, las funciones de orden superior, las type classes y las mónadas. Durante el curso se explicará en qué consisten estas técnicas y, sobre todo, qué se gana con su utilización (reusabilidad, testability, tolerancia al cambio, etc.). Para ilustrar estos conceptos se prestará una especial atención al framework de Spark. Por último, aunque el lenguaje de programación utilizado será predominantemente Scala, este curso consiste principalmente en un curso de programación funcional, por lo que las lecciones aprendidas en él podrás aplicarlas en tu día a día incluso si no puedes utilizar Scala en tu trabajo (lástima ;).

    Audiencia

    Este curso está especialmente dirigido a ti si cumples al menos una de las siguientes condiciones:
    • Estás familiarizado con lenguajes como Java, Javascript, C#, Python, C++, etc., y sus patrones de diseño más comunes, pero has oído hablar de la programación funcional y quieres saber qué ganarás saliendo de tu zona de confort y abrazando sus principios.
    • Tienes ya alguna familiaridad con la programación funcional (inmutabilidad, map, filter, reduce, etc.), pero no sabes bien qué son las mónadas, o las conoces pero todavía no las utilizas para mantener a raya los efectos de lado.
    • Estás decidido a aprender Spark y quieres conocer en profundidad los fundamentos de programación funcional que subyacen a este framework (más allá aún de las funciones de orden superior).
    • Te gusta escribir código que funciona, robusto y elegante, y quieres añadir a tu currículum las tecnologías que hoy en día están empezando ya a imperar en la industria del software y ser demandadas por multitud de empresas.
    Por otra parte, no te preocupes si no estás familiarizado con Scala: con la matrícula de este curso tienes un descuento para asistir a nuestro curso de iniciación a Scala. Con este nivel de iniciación es suficiente, dado que los conceptos de Scala más avanzados necesarios para la programación funcional, como los constructores de tipos, implícitos y la genericidad tipo higher-kinds, sí se enseñarán en este curso.

    Objetivos

    Este curso te permitirá:
    • No quedarte a medias en tus conocimientos de programación funcional: además de las lambdas y las funciones de orden superior, es esencial conocer las type classes y las funciones puras.
    • Aprender cómo programar funcionalmente en Scala.
    • No quedarte perplejo cuando alguien diga "computación monádica", y utilizar las mónadas e intérpretes para mejorar drásticamente la facilidad de pruebas, modularidad, robustez y eficiencia de tu código.
    • Conocer la arquitectura funcional de Spark, y escribir complejos programas de transformación de datos en un estilo puramente funcional.
    • En resumen, si la programación funcional es un toro, este curso te permitirá coger el toro por las lambdas ;)

    Temario

    El curso está dividido en cuatro bloques principales, de cuatro horas de duración cada uno aproximadamente. En el primero se introduce qué es la programación funcional y por qué es cada vez más relevante. Veremos que la potencia de la programación funcional descansa en gran medida en los numerosos mecanismos de modularidad que soporta: la genericidad, las funciones de orden superior, las type classes, las funciones puras, etc. El resto del curso se estructura en base a estos mecanismos: en el primer bloque se estudiará en profundidad las funciones de orden superior, en el segundo las type classes y en el tercero la purificación de funciones y segregación de efectos de lado. Por último, en el cuarto bloque nos centraremos exclusivamente en Spark y en cómo se aplican en su arquitectura los conceptos anteriores. Desde un punto de vista práctico, veremos cómo escribir complejos programas de transformación de datos en un estilo puramente funcional.

    • ¿Qué es la programación funcional?
      • Los mecanismos de modularidad
      • Las funciones y los tipos algebraicos de datos
      • Las funciones de orden superior
    • Type classes: más allá de las funciones de orden superior
      • Type classes
      • Extensibilidad y patrones de diseño
    • La pureza funcional
      • APIs funcionales como type constructor classes
      • APIs monádicas
      • Composición de efectos
    • El framework Spark
      • La arquitectura funcional del framework Spark
      • El lenguaje RDD: transformaciones de datos
      • El intérprete de RDDs: acciones

    Organización

    • El curso se celebrará los viernes por la tarde en cuatro sesiones consecutivas de cuatro horas. Las herramientas y librerías necesarias para seguir el curso se comunicarán con la suficiente antelación para que los alumnos puedan traer configurados sus portátiles desde casa.
    • Las explicaciones en el aula alternarán el uso de transparencias y ejemplos de programación en live-coding, con una preferencia por este último medio. Al terminar cada bloque de contenido se propondrán pequeños ejercicios y retos para ser resueltos en clase.
    • El curso se impartirá en español.
    • Después de cada sesión, se propondrá a los asistentes la resolución de una serie de ejercicios adicionales que podrán subirse al repositorio Github del curso. El equipo de Habla Computing proporcionará feedback por medio de revisiones de código a todos aquellos que completen dichos ejercicios dentro de un plazo determinado de tiempo. Para resolver dudas y fomentar la colaboración entre los alumnos, se pondrá a disposición de los mismos un chat moderado por el profesor del curso y miembros de Habla.

    Sobre el coordinador

    Juan Manuel es CTO y co-fundador de Habla Computing. Utiliza la programación funcional y Scala desde hace cinco años en el desarrollo de un framework de procesos así como en servicios de consultoría para el desarrollo de aplicaciones en los sectores de comercio electrónico y bancario. Hace dos años fundó el grupo de usuarios de Scala en Madrid (ScalaMAD), y es miembro del comité organizador de lambda.world, un foro de reciente creación sobre programación funcional para el profesional de la informática. Antes de fundar Habla, Juan Manuel fue profesor en titulaciones de informática durante más de quince años y es actualmente profesor en excedencia de la Universidad Rey Juan Carlos.

    Introducción a Scala

    Profesor:

    Javier Fuentes Sánchez

    Ubicación:
    Parque Científico Universidad Carlos III de Madrid
    Precio:
    50€
    Duración:
    5 horas
    Start:
    4/11/16 16:00

    Resumen

    Sabemos que adentrarse en el lenguaje de programación Scala no es una tarea trivial. Con este curso, se pretende que el alumno adquiera las nociones básicas para poder comenzar este reto con buen pie. Se ofrecerá una introducción al lenguaje: de dónde viene, qué paradigmas de programación soporta y cuáles son las características principales que lo hacen tan especial. No podemos garantizar que este lenguaje esté hecho a medida para ti, pero sí que podemos asegurar que aprender Scala te convertirá en mejor programador.

    Audiencia

  • Has oído hablar de Scala, o de alguna de las librerías o frameworks que conforman su ecosistema y que están adquiriendo gran relevancia en la actualidad (Spark, Akka, Play, etc.), pero no dispones del tiempo necesario para adentrarte en esta selva, y te gustaría tener una visión general sobre las posibilidades que ofrece este entorno.
  • Tienes una experiencia mínima con la programación orientada a objetos y alguno de sus lenguajes.

    Objetivos

    Este curso te permitira:
    • Tener nociones básicas sobre las características que ofrece Scala para el paradigma de orientación a objetos: classes, traits, objects, etc.
    • Tener nociones básicas sobre las características que ofrece Scala para el paradigma de programación funcional: case classes, pattern matching, etc.
    • Tener nociones básicas sobre las características que ofrece Scala para trabajar con genericidad
    • Conocer el azúcar sintáctico que se despliega en Scala

    Temario

    El curso se estructura en torno a los principales paradigmas de programación soportados por Scala: orientación a objetos, programación funcional y programación genérica. Adicionalmente, se analizará el azúcar sintáctico que hace que los fuentes resulten tan difíciles de leer para los recién llegados. La librería de colecciones de Scala se utilizará como fuente de ejemplos durante el curso.

    • Características de Orientación a Objetos
      • Clases y objetos
      • Traits
    • Características de Programación Funcional
      • Inmutabilidad
      • Case classes & pattern matching
      • Lambdas
    • Azúcar Sintáctico
      • Invocación de métodos
      • Método 'apply'
    • Características de Programación Genérica
      • Clases genéricas
      • Funciones polimórficas

    Organización

    • El curso se llevará a cabo en una única sesión de cinco horas de duración, en formato intensivo, comenzando a las 16:00h. Se indicarán los requisitos de configuración necesarios para poder seguir el curso con la suficiente antelación, de manera que los asistentes puedan traer sus propios equipos al aula.
    • Las explicaciones alternarán entre diapositivas y live coding, con una predilección por lo segundo. Se propondrán pequeños ejercicios al final de cada bloque para ser resueltos en clase.

    Sobre el profesor

    Javier es Ingeniero Superior en Informática. Trabaja en Habla Computing desde hace cuatro años como programador de Scala para aplicaciones del sector bancario y el diseño de DLSs. Actualmente, Javier es coordinador del meetup de Scala en Madrid, donde es ponente habitual.

  • Advanced functional programming with Scala

    Coordinator:

    Juan Manuel Serrano

    Location:
    Parque Científico Universidad Carlos III de Madrid
    Price:
    275/550€
    Start:
    22/4/16
    Duration:
    Fridays, 16:00h. Five consecutive sessions of four hours each.
    Language:
    Spanish
    Eventbrite - Programación funcional avanzada con Scala

    Overview (Spanish)

    This course provides a comprehensive introduction to three programming styles endorsed by functional programming: datatype generic, applicative and monadic programming. To this end, we use Scala and its awesome ecosystem of frameworks and libraries for functional programming. In particular, we built upon the generic programming library shapeless, and the type class libraries scalaz and cats. We also make ocassional reference to property-based testing and the Scalacheck library. For each programming style, we describe the kinds of problems they are intended to solve, their constituent software abstractions and their implementation by different libraries.

    Audience

  • Scala Programmers with moderate knowledge of functional programming, tired of reinventing the wheel each time they must define a new monad or instantiate a type class, for instance
  • Programmers with deep knowledge of functional programming, but moderate knowledge of Scala and its ecosystem for functional programming

    Objectives

    At the end of the course, attendees should be able to:
  • Identify the different modularity techniques endorsed by functional programming: from parametric and ad-hoc polimorphism (i.e. type classes), to datatype generic programming, languages and interpreters, etc.
  • Understand the role of heterogeneous lists (aka HList) and coproducts to abstract away the particular shapes of algebraic data types (ADTs), and implement generic algorithms that work at this level of abstraction, e.g. to automatically derive type classes. All of this using shapeless!
  • Understand the differences between the applicative and monadic (i.e. imperative) programming styles, their major applications, and their support in scalaz and cats!
  • Understand the concept of "free structure" and use it in the implementation of monadic and applicative languages
  • Combine different monadic structures and languages using monad transformers and coproducts
  • Understand the overall internal architecture of Shapeless, scalaz and cats, and the most advanced Scala tricks used in their implementation, thus taking your Scala expertise to the next level
  • Learn more functional programming yourself!

    Outline

    • Preliminaries
      • FP review: the modularity ladder
      • FP ecosystem: shapeless, scalaz, cats
    • Datatype generic programming
      • HList, Coproduct and Fix
      • Automatic type class derivation
    • Applicative programming
      • Applicative functors
      • Traversables
      • Free applicatives
    • Monadic programming
      • Monads
      • Monad transformers
      • Free monads
      • Coproducts

    Organization

    • The course runs over five consecutive Fridays, each session running for four hours. Setup instructions will be made available well in advance, so that attendees can bring their laptops properly configured to the classroom.
    • Explanations during sessions will alternate between slides and live coding, with a preference for the later. Small exercises and challenges will be proposed after each major block of contents, and solved in the classroom.
    • The course will be taught in Spanish.
    • After each session, attendees will be encouraged to complete a number of additional exercises on Github. Habla Computing trainers will provide feedback via code reviews for those who completed this coursework in due time. A chat room will also be made available to offer guidance and foster collaboration among course attendees.

    About the coordinator

    The course is coordinated by Juan Manuel Serrano, and taught by him and Habla Computing specialists. Juan Manuel is CTO and co-founder of Habla Computing. He has been using Scala for the last five years in real-world applications for the banking sector, and has extensive experience in consultancy projects with Scala, Play, and other frameworks of the Scala ecosystem. He founded and manages the Madrid Scala Meetup group and is member of the organizing committee of lambda.world, the premier Spanish conference of functional programming for the software practitioner. Prior to joining Habla Computing, Juan Manuel was a University teacher for more than fifteen years in different computer science and software engineering degrees.

  • Programación funcional avanzada con Scala

    Coordinator:

    Juan Manuel Serrano

    Ubicación:
    Parque Científico Universidad Carlos III de Madrid
    Precio:
    275/550€
    Comienzo:
    22/4/16
    Duración:
    Viernes, 16:00h. Cinco sesiones de 4 horas de duración.
    Idioma:
    Español
    Eventbrite - Programación funcional avanzada con Scala

    Resumen

    Este curso ofrece una introducción avanzada a tres estilos de programación soportados y promovidos por la programación funcional: la programación genérica, la programación aplicativa y la programación monádica. Para ello, utilizaremos Scala y su fantástico ecosistema de librerías para la programación funcional, concretamente, shapeless y las librerías de type classes scalaz y cats. Con una menor relevancia, en el curso también se hará mención a la librería de pruebas Scalacheck. Para cada uno de estos tres estilos de programación, se describirán los problemas más relevantes para los que están pensados, sus abstracciones constituyentes y el soporte que ofrecen para ellos las librerías del ecosistema de Scala.

    Audiencia

  • Programadores de Scala con conocimientos intermedios de programación funcional, deseosos de mejorar su conocimiento de este paradigma y poder utilizar shapeless, scalaz, cats, y otras librerías igualmente avanzadas del ecosistema de Scala, en su código de producción
  • Programadores con un conocimiento profundo de programación funcional, con ganas de saber cómo se aplican dichos conocimientos con Scala y su ecosistema de librerías

    Objetivos

    Al terminar el curso, los alumnos serán capaces de:
  • Encuadrar los tres estilos de programación estudiados durante el curso como parte del catálogo de técnicas de modularidad proporcionadas por la programación funcional
  • Entender el papel de las listas heterogéneas (HList) y los coproductos para abstraer la forma particular de los tipos algebraicos de datos (ADTs), y poder de esa forma implementar algoritmos genéricos que trabajen a ese nivel de abstracción (por ejemplo, para derivar automáticamente type classes). ¡Todo ello utilizando shapeless!
  • Entender las diferencias entre los estilos aplicativo y monádico (es decir, imperativo), sus principales aplicaciones y el soporte que ofrecen scalaz y cats para ellos
  • Entender el concepto de representación libre ("free structures") y su aplicación al diseño de lenguajes aplicativos y monádicos
  • Combinar estructuras y lenguajes monádicos utilizando transformadores de mónadas y coproductos
  • Entender la arquitectura interna de shapeless, cats y scalaz, así como las técnicas de Scala más avanzadas utilizadas en su diseño
  • ¡Aprender más programación funcional por uno mismo!

    Temario

    • Preliminares
      • Resumen FP: técnicas de modularidad
      • El ecosistema funcional de Scala: shapeless, scalaz y cats
    • Datatype generic programming
      • HList, Coproduct y Fix
      • Derivación automática de type classes
    • Programación aplicativa
      • Funtores aplicativos
      • Traversables
      • Free applicatives
    • Programación monádica
      • Mónadas
      • Transformadores de mónadas
      • Free monads
      • Coproductos

    Organización

    • El curso se celebrará los viernes por la tarde en cinco sesiones consecutivas de cinco horas. Las herramientas y librerías necesarias para seguir el curso se comunicarán con la suficiente antelación para que los alumnos puedan traer configurados sus portátiles desde casa.
    • Las explicaciones en el aula alternarán el uso de transparencias y ejemplos de programación en live-coding, con una preferencia por este último medio. Al terminar cada bloque de contenido se propondrán pequeños ejercicios y retos para ser resueltos en clase.
    • El curso se impartirá en español.
    • Después de cada sesión, se propondrá a los asistentes la resolución de una serie de ejercicios adicionales que podrán subirse al repositorio Github del curso. El equipo de Habla Computing proporcionará feedback por medio de revisiones de código a todos aquellos que completen dichos ejercicios dentro de un plazo determinado de tiempo. Para resolver dudas y fomentar la colaboración entre los alumnos, se pondrá a disposición de los mismos un chat moderado por el profesor del curso y miembros de Habla.

    Sobre los profesores

    El curso será coordinado por Juan Manuel Serano, e impartido por él y personal especializado de Habla Computing. Juan Manuel es CTO y co-fundador de Habla Computing. Utiliza la programación funcional y Scala desde hace cinco años en el desarrollo de un framework de procesos así como en servicios de consultoría para el desarrollo de aplicaciones en los sectores de comercio electrónico y bancario. Hace dos años fundó el grupo de usuarios de Scala en Madrid (ScalaMAD), y es miembro del comité organizador de lambda.world, un foro de reciente creación sobre programación funcional para el profesional de la informática. Antes de fundar Habla, Juan Manuel fue profesor en titulaciones de informática durante más de quince años y es actualmente profesor en excedencia de la Universidad Rey Juan Carlos.

  • Programación funcional con Scala

    Coordinador:

    Juan Manuel Serrano

    Profesor:

    Javier Fuentes

    Localización:
    Oficinas de Beeva
    Comienzo:
    Junio 2016
    Duration:
    20 horas

    Motivación

    El objetivo de este curso es introducir e ilustrar con ejemplos sencillos pero reales, el concepto de arquitectura funcional, así como todas las técnicas necesarias para implantar con éxito dicha arquitectura: funciones de orden superior, type classes, funciones puras, mónadas, intérpretes, etc. Todo ello utilizando el lenguaje Scala y los mecanismos que proporciona para la programación funcional: implícitos, higher-kind generics, for-comprehensions, etc. En el curso se hará también hincapié en comparar la arquitectura funcional propuesta con la solución "orientada a objetos" más convencional, de tal manera que las similitudes entre ambas aproximaciones (que haberlas, haylas), así como las diferencias y las ventajas de la aproximación puramente funcional, en términos de reusabilidad, facilidad de pruebas y mantenibilidad, especialmente, se vean claramente expuestas. Con esta comparación también se pretende mostrar cómo se pueden introducir gradualmente las técnicas funcionales, sin cambios disruptivos, en proyectos de desarrollo reales y en el “mindset” de los programadores.

    Objetivos

    • Conocer las técnicas de modularidad esenciales de la programación funcional y cómo contribuyen a alcanzar mejoras drásticas en la facilidad de pruebas, reusabilidad y mantenimiento del código.
    • Conocer las limitaciones del mecanismo de herencia y patrones de diseño asociados, y cómo las type classes resuelven dichas limitaciones.
    • Utilizar las interfaces orientadas a objetos para implementar una arquitectura funcional basada en type classes y funciones puras.
    • Entender el papel de los lenguajes específicos de dominio (DSLs) en una arquitectura funcional, y cómo las mónadas nos ayudan a implementar DSLs imperativos.
    • Aprender a diseñar APIs para servicios Web, entrada/salida, persistencia y cualquier otro tipo de infraestructura en términos de DSLs puramente funcionales, e implementarlos mediante type classes.
    • Conocer el papel que las funciones de orden superior, las type classes y las funciones puras juegan en la arquitectura de Spark, y escribir complejos programas de transformación de datos en un estilo puramente funcional.

    Temario

    • Overview de Scala
      • Scala y la programación orientada a objetos
      • Scala y la programación funcional
      • Scala y la programación genérica
    • ¿Qué es la programación funcional?
      • Los mecanismos de modularidad
      • Las funciones y los tipos algebraicos de datos
      • Las funciones de orden superior
    • Type classes: más allá de las funciones de orden superior
      • Type classes
      • Type classes vs. adaptadores, herencia, factorías y visitors
      • Type constructor classes
    • La pureza funcional
      • Los lenguajes específicos de dominio (DSLs) y los intérpretes
      • Segregación de efectos colaterales mediante DSLs
    • El framework Spark
      • La arquitectura funcional del framework Spark
      • El lenguaje RDD: transformaciones de datos
      • El intérprete de RDDs: acciones

    Sobre los profesores

    El curso será coordinado por Juan Manuel Serano, e impartido por él y personal especializado de Habla Computing. Juan Manuel es CTO y co-fundador de Habla Computing. Utiliza la programación funcional y Scala desde hace cinco años en el desarrollo de un framework de procesos así como en servicios de consultoría para el desarrollo de aplicaciones en los sectores de comercio electrónico y bancario. Hace dos años fundó el grupo de usuarios de Scala en Madrid (ScalaMAD), y es miembro del comité organizador de lambda.world, un foro de reciente creación sobre programación funcional para el profesional de la informática. Antes de fundar Habla, Juan Manuel fue profesor en titulaciones de informática durante más de quince años y es actualmente profesor en excedencia de la Universidad Rey Juan Carlos.

    Programación funcional con Scala

    Coordinador:

    Juan Manuel Serrano

    Profesor:

    Javier Fuentes

    Localización:
    Oficinas de S|ngular
    Comienzo:
    Junio 2016
    Duration:
    20 horas

    Motivación

    El objetivo de este curso es introducir e ilustrar con ejemplos sencillos pero reales, el concepto de arquitectura funcional, así como todas las técnicas necesarias para implantar con éxito dicha arquitectura: funciones de orden superior, type classes, funciones puras, mónadas, intérpretes, etc. Todo ello utilizando el lenguaje Scala y los mecanismos que proporciona para la programación funcional: implícitos, higher-kind generics, for-comprehensions, etc. En el curso se hará también hincapié en comparar la arquitectura funcional propuesta con la solución "orientada a objetos" más convencional, de tal manera que las similitudes entre ambas aproximaciones (que haberlas, haylas), así como las diferencias y las ventajas de la aproximación puramente funcional, en términos de reusabilidad, facilidad de pruebas y mantenibilidad, especialmente, se vean claramente expuestas. Con esta comparación también se pretende mostrar cómo se pueden introducir gradualmente las técnicas funcionales, sin cambios disruptivos, en proyectos de desarrollo reales y en el “mindset” de los programadores.

    Objetivos

    • Conocer las técnicas de modularidad esenciales de la programación funcional y cómo contribuyen a alcanzar mejoras drásticas en la facilidad de pruebas, reusabilidad y mantenimiento del código.
    • Conocer las limitaciones del mecanismo de herencia y patrones de diseño asociados, y cómo las type classes resuelven dichas limitaciones.
    • Utilizar las interfaces orientadas a objetos para implementar una arquitectura funcional basada en type classes y funciones puras.
    • Entender el papel de los lenguajes específicos de dominio (DSLs) en una arquitectura funcional, y cómo las mónadas nos ayudan a implementar DSLs imperativos.
    • Aprender a diseñar APIs para servicios Web, entrada/salida, persistencia y cualquier otro tipo de infraestructura en términos de DSLs puramente funcionales, e implementarlos mediante type classes.
    • Conocer el papel que las funciones de orden superior, las type classes y las funciones puras juegan en la arquitectura de Spark, y escribir complejos programas de transformación de datos en un estilo puramente funcional.

    Temario

    • Overview de Scala
      • Scala y la programación orientada a objetos
      • Scala y la programación funcional
      • Scala y la programación genérica
    • ¿Qué es la programación funcional?
      • Los mecanismos de modularidad
      • Las funciones y los tipos algebraicos de datos
      • Las funciones de orden superior
    • Type classes: más allá de las funciones de orden superior
      • Type classes
      • Type classes vs. adaptadores, herencia, factorías y visitors
      • Type constructor classes
    • La pureza funcional
      • Los lenguajes específicos de dominio (DSLs) y los intérpretes
      • Segregación de efectos colaterales mediante DSLs
    • El ecosistema funcional de Scala
      • Property-based testing con Scalacheck
      • La librería de type classes Scalaz

    Sobre los profesores

    El curso será coordinado por Juan Manuel Serano, e impartido por él y personal especializado de Habla Computing. Juan Manuel es CTO y co-fundador de Habla Computing. Utiliza la programación funcional y Scala desde hace cinco años en el desarrollo de un framework de procesos así como en servicios de consultoría para el desarrollo de aplicaciones en los sectores de comercio electrónico y bancario. Hace dos años fundó el grupo de usuarios de Scala en Madrid (ScalaMAD), y es miembro del comité organizador de lambda.world, un foro de reciente creación sobre programación funcional para el profesional de la informática. Antes de fundar Habla, Juan Manuel fue profesor en titulaciones de informática durante más de quince años y es actualmente profesor en excedencia de la Universidad Rey Juan Carlos.

    Functional programming with Scalaz

    Coordinator:

    Juan Manuel Serrano

    Location:
    Amadeus
    Start:
    March 2016
    Duration:
    Five consecutive sessions of four hours each.
    Language:
    English

    Overview

    This course provides a comprehensive introduction to some of the essential patterns of functional programming, and to their implementation in the Scalaz library. Its major goal is to explain when these patterns can be applied, and how to use their Scalaz implementation so as to avoid repetition and boilerplate, enhance conciseness, and exploit the wealth of utilities already implemented there. The course covers the following patterns: monoids, monads, functors, applicative functors, monad transformers, free monads, coproducts and kleislis. Explanations of these patterns will also rely on the ScalaCheck library, in such a way that this course also serves as an introduction to this library and, in general, to property-based testing - an indispensable ally of purely functional programming.

    Audience

  • Programmers with enough knowledge of the Scala language, who want in-depth knowledge of the essential patterns of functional programming
  • Scala Programmers with some knowledge of functional programming, tired of reinventing the wheel each time they must implement a monad, for instance
  • Programmers with deep knowledge of functional programming, but little knowledge of Scala and its ecosystem for functional programming

    Objectives

    At the end of the course, attendees should be able to:
  • Understand monads, applicative functors, functors, kleislis, coproducts and other essential functional programming patterns and idioms, and identify when to use them
  • Use and understand the Scalaz implementation of those patterns to obtain concise and boilerplate-free code
  • Improve their functional designs with the aid of property-based testing, and use the ScalaCheck library in order to obtain battled-tested programs
  • Understand the overall internal architecture of Scalaz and the most advanced Scala tricks used in its implementation, thus taking their Scala expertise to the next level
  • Learn more Scalaz and similar libraries (e.g. Cats) yourself

    Outline

    • Preliminaries
      • Origins, purpose and architecture of Scalaz
      • Scala review: higher-kind generics, implicits
      • Functional programming review: higher-order functions, GADTs
      • Property-based testing with ScalaCheck
    • Essential type classes
      • Monoids
      • Functors
      • Applicative functors
      • Monads
    • Effectful programs
      • Free monads
      • Monad transformers
      • Coproducts
      • Kleislis
    The first section quickly reviews introductory material on Scala, functional programming and property-based testing. Particular attention will be given to higher-kind generics, implicits, type classes, generalized algebraic data types, and a few more techniques and concepts underlying the Scalaz implementation. This section also introduces property-based testing and the basics of the ScalaCheck library that will be used throughout the course. The next section covers the Scalaz type classes related to several major functional design patterns: monoids, functors, applicative functors and monads. For each pattern we will give its motivation, description, Scalaz implementation and, especially, examples of applications (e.g. error handling with the applicative Validation). The last section revolves around one of the killer features of purely functional programming, namely its effectiveness in encapsulating side effects. Accordingly, we will review the support of Scalaz for designing and combining effect languages with free monads, monad transformers and coproducts, and its support for modularising effectful monadic programs using Kleislis.

    Organization

    • The course runs for twenty hours and we suggest to split it into four sessions of five hours each.
    • Explanations during sessions will alternate between slides and live coding, with a preference for the later. Small exercises and challenges will be proposed after each major block of contents, and solved in the classroom.
    • Provided that there is enough time between sessions, attendees will be encouraged to complete a number of additional exercises on Github at the end of each session. Habla Computing trainers will provide feedback via code reviews for those who completed this coursework in due time. A chat room will also be made available to offer guidance and foster collaboration among course attendees.

    About the coordinator

    The course is coordinated by Juan Manuel Serrano, and taught by him and Habla Computing specialists. Juan Manuel is CTO and co-founder of Habla Computing. He has been using Scala for the last five years in real-world applications for the banking sector, and has extensive experience in consultancy projects with Scala, Play, and other frameworks of the Scala ecosystem. He founded and manages the Madrid Scala Meetup group and is member of the organizing committee of lambda.world, the premier Spanish conference of functional programming for the software practitioner. Prior to joining Habla Computing, Juan Manuel was a University teacher for more than fifteen years in different computer science and software engineering degrees.

  • Introduction to Scala

    Instructor:

    Jesús López González

    Location:
    Parque Científico Universidad Carlos III de Madrid
    Price:
    50€
    Starts:
    19/02/16 16:00
    Duration:
    One session of 5h
    Eventbrite - Introducción a Scala

    Overview (Spanish)

    We will not argue that the Scala programming language is an easy one to delve into. Therefore, we want to provide you with the fundamental means to start this journey. This one-day course offers you an introduction to Scala: where it comes from, which programming paradigms it supports, and which are its major technical features. We do not guarantee that this language is for you, but we are absolutely sure that you will become a better programmer by learning it.

    Audience

    You have heard of Scala, and the myriads of frameworks and tools based on Scala which are all the rage these days (Spark, Akka, Play, and so forth), but do not have the time to delve into the Scala jungle yourself. This course will give you a gentle and smooth introduction to it. Familiarity with conventional object-oriented languages is assumed.

    Objectives

    This course will enable you to:
    • Grasp the main technical features of Scala pertaining to the object-oriented paradigm: classes, traits, objects, etc.
    • Grasp the main technical features of Scala pertaining to functional programming: case classes, pattern matching, etc.
    • Grasp the main technical features of Scala genericity
    • Grasp the major syntactic sugar techniques deployed in Scala

    Outline

    The course is structured around the major programming paradigms that the Scala language supports, namely the object-oriented, functional and generic paradigms. Besides, we will take a look at the syntactic sugar tricks that make reading Scala encodings a tough task for newcomers. The Scala collection library will be used throughout the course as a source of inspiring examples.

    • Object-oriented features
      • Classes and objects
      • Traits
    • Functional programming features
      • Immutability
      • Case classes & pattern matching
      • Lambdas
    • Syntactic Sugar
      • Method invocation
      • Apply method
    • Generic programming features
      • Generic classes
      • Polymorphic methods

    Organization

    • The course will take place in a single session, for five (intensive) hours starting at 16:00h. Setup instructions will be made available well in advance, so that attendees can bring their laptops properly configured to the classroom.
    • Explanations during sessions will alternate between slides and live coding, with a preference for the later. Small exercises and challenges will be proposed after each block of contents, and solved in the classroom.

    About the instructor

    Jesús holds a double MsC in Software engineering and Telematics. He has been using Scala since he started to work in Habla Computing five years ago, both for DSL design and applications in the banking industry. Currently, he is doing his PhD in reactive systems and functional programming in Habla Computing. Jesús was coordinator and frequent speaker during several years of the Madrid Scala Meetup. He has also teached a course on functional programming in the School of Informatics of the URJC.

    Introducción a Scala

    Profesor:

    Jesús López González

    Ubicación:
    Parque Científico Universidad Carlos III de Madrid
    Precio:
    50€
    Fecha:
    19/02/16 16:00
    Duración:
    5 horas
    Eventbrite - Introducción a Scala

    Resumen

    Sabemos que adentrarse en el lenguaje de programación Scala no es una tarea trivial. Con este curso, se pretende que el alumno adquiera las nociones básicas para poder comenzar este reto con buen pie. Se ofrecerá una introducción al lenguaje: de dónde viene, qué paradigmas de programación soporta y cuáles son las características principales que lo hacen tan especial. No podemos garantizar que este lenguaje esté hecho a medida para ti, pero sí que podemos asegurar que aprender Scala te convertirá en mejor programador.

    Audiencia

  • Has oído hablar de Scala, o de alguna de las librerías o frameworks que conforman su ecosistema y que están adquiriendo gran relevancia en la actualidad (Spark, Akka, Play, etc.), pero no dispones del tiempo necesario para adentrarte en esta selva, y te gustaría tener una visión general sobre las posibilidades que ofrece este entorno.
  • Tienes una experiencia mínima con la programación orientada a objetos y alguno de sus lenguajes.

    Objetivos

    Este curso te permitira:
    • Tener nociones básicas sobre las características que ofrece Scala para el paradigma de orientación a objetos: classes, traits, objects, etc.
    • Tener nociones básicas sobre las características que ofrece Scala para el paradigma de programación funcional: case classes, pattern matching, etc.
    • Tener nociones básicas sobre las características que ofrece Scala para trabajar con genericidad
    • Conocer el azúcar sintáctico que se despliega en Scala

    Temario

    El curso se estructura en torno a los principales paradigmas de programación soportados por Scala: orientación a objetos, programación funcional y programación genérica. Adicionalmente, se analizará el azúcar sintáctico que hace que los fuentes resulten tan difíciles de leer para los recién llegados. La librería de colecciones de Scala se utilizará como fuente de ejemplos durante el curso.

    • Características de Orientación a Objetos
      • Clases y objetos
      • Traits
    • Características de Programación Funcional
      • Inmutabilidad
      • Case classes & pattern matching
      • Lambdas
    • Azúcar Sintáctico
      • Invocación de métodos
      • Método 'apply'
    • Características de Programación Genérica
      • Clases genéricas
      • Funciones polimórficas

    Organización

    • El curso se llevará a cabo en una única sesión de cinco horas de duración, en formato intensivo, comenzando a las 16:00h. Se indicarán los requisitos de configuración necesarios para poder seguir el curso con la suficiente antelación, de manera que los asistentes puedan traer sus propios equipos al aula.
    • Las explicaciones alternarán entre diapositivas y live coding, con una predilección por lo segundo. Se propondrán pequeños ejercicios al final de cada bloque para ser resueltos en clase.

    Sobre el profesor

    Jesús es Ingeniero Superior en Informática y Máster en Sistemas Telemáticos e Informáticos. Trabaja en Habla Computing desde hace cuatro años como programador de Scala para aplicaciones del sector bancario. Actualmente, desarrolla su tesis doctoral en Habla Computing sobre temas de programación funcional y sistemas reactivos, gracias a una subvención del programa de Doctorados Industriales del Ministerio de Economía y Competitividad. Jesús fue durante varios años coorganizador del meetup de Scala en Madrid, donde es ponente habitual. También impartió un curso de Programación Funcional en Scala organizado por la Escuela de Informática de la URJC.

  • Purely functional Scala

    Instructors:

    Juan Manuel Serrano

    Jesús López

    Location:
    Parque Científico Universidad Carlos III de Madrid
    Price:
    250€/490€
    Start:
    26/2/16
    Duration:
    Fridays, 16:00h. Four sessions of four hours each.
    Language:
    Spanish
    Eventbrite - Programación funcional en Scala

    Overview (Spanish)

    The main goal of this course is introducing the basic functional programming techniques which are behind the most advanced libraries and applications nowadays, such as Spark, Twitter, Facebook, etc. These techniques are, amongst others, algebraic data types, higher-order functions, type classes and monads. Throughout the course, you will learn what these techniques are, and, specially, why we should care about them, i.e. how they will help us with the reusability, testability, evolvability, etc., of our code. Last, note that this is mostly a functional programming course that happens to be taught using Scala (but for a brief reference to Java8). So, the major lessons to be learned here will be readily applicable to your everyday programming tasks, even if you can't use Scala at your workplace (sigh).

    Audience

    This course is specially made for you if you meet at least one of the following requirements:
    • You are fluent in Java, Scala, C#, Python, Javascript, Ruby, or any other non-functional programming language, and want to push the boundaries of your comfort zone. You have heard about the virtues of functional programming, and want to know what's all the fuss behind it, and why it really matters.
    • You are already familiar with functional programming concepts (inmutability, map, filter, etc.), but have not heard about monads, or you heard about them but you don't still use them to effectively manage your side effects.
    • You enjoy writing correct, robust and elegant code, and want to include in your CV one of the most acclaimed technologies in the software industry nowadays.
    The course requires a minimum level of familiarity with Scala. But, if you know nothing about Scala, don't worry! With the inscription in this course, you will get a discount for our fast-track Scala course. Last, note that no in-depth knowledge of Scala is needed, since more advanced concepts such as type constructors, higher-kind generics, implicits, etc., will be covered by this course.

    Objectives

    This course will enable you to:
    • Understand the essence of functional programming, and why you should embrace it
    • Program functionally using Scala
    • Not being scare when someone says things like "monadic computation", and use monads to dramatically improve the testability and modularity of your designs
    • Be acquaintanced with the Scalaz, Cats and Scalacheck libraries.
    • Be prepared to teach yourself more functional programming stuff

    Outline

    The course is divided into four major blocks. In the first one, the essential concepts of side-effects, languages and interpreters will be introduced, as well as how to use algebraic data types to design your effect languages. In the second one, we will teach you how to use higher-order functions to improve the modularity of your code, and the most common higher-order functions: map, filter, reduce, flatMap, etc. In the third block, we will go further in the modularity realm by introducing type classes, and the monad type class in particular. Last, the fourth block aims at giving you a glance of the Scala ecosystem for functional programming, covering the basics of three major libraries: Scalaz, Cats and Scalacheck.

    • What is functional programming?
      • Languages and interpreters
      • Algebraic data types
    • Higher-order functions
      • Anonymous functions
      • Functions map, filter, reduce, etc.
    • Beyond higher-order functions
      • Type classes
      • Monads
    • The Scala ecosystem of functional programming

    Organization

    • The course runs over four consecutive Fridays, each session running for four (intensive) hours. Setup instructions will be made available well in advance, so that attendees can bring their laptops properly configured to the classroom.
    • Explanations during sessions will alternate between slides and live coding, with a preference for the later. Small exercises and challenges will be proposed after each major block of contents, and solved in the classroom.
    • The course will be taught in Spanish.
    • After each session, attendees will be encouraged to complete a number of additional exercises on Github. Habla Computing trainers will provide feedback via code reviews for those who completed this coursework in due time. A chat room will also be made available to offer guidance and foster collaboration among course attendees.

    About the instructors

    Juan Manuel is CTO and co-founder of Habla Computing. He has been using Scala for the last four years in real-world applications for the banking sector, and has extensive experience in consultancy projects with Scala, Play, and other frameworks of the Scala ecosystem. He founded and manages the Madrid Scala Meetup group and is member of the organizing committee of lambda.world, the premier Spanish conference of functional programming for the software practitioner. Prior to joining Habla Computing, Juan Manuel was a University teacher for more than fifteen years in different computer science and software engineering degrees.

    Jesús holds a double MsC in Software engineering and Telematics. He has been using Scala since he started to work in Habla Computing five years ago, both for DSL design and applications in the banking industry. Currently, he is doing his PhD in reactive systems and functional programming in Habla Computing. Jesús was coordinator and frequent speaker during several years of the Madrid Scala Meetup. He has also teached a course on functional programming in the School of Informatics of the URJC.

    Programación funcional con Scala

    Profesores:

    Juan Manuel Serrano

    Jesús López

    Ubicación:
    Parque Científico Universidad Carlos III de Madrid
    Precio:
    250€/490€
    Comienzo:
    26/2/16
    Duración:
    Viernes, 16:00h. Cuatro ssiones de 4 horas cada una
    Idioma:
    Español
    Eventbrite - Programación funcional en Scala

    Motivación

    Este curso tiene por objetivo introducir las técnicas básicas de programación funcional utilizadas en la construcción de las librerías y aplicaciones más avanzadas de la actualidad: desde el framework de big data Spark, hasta las aplicaciones de Twitter, Facebook, etc. Entre las técnicas abordadas se encuentran los tipos algebraicos de datos, las funciones de orden superior, las type classes y las mónadas. Durante el curso se explicará en qué consisten estas técnicas y, sobre todo, qué se gana con su utilización (reusabilidad, testability, tolerancia al cambio, etc.). Por último, aunque el lenguaje de programación utilizado será predominantemente Scala (excepto por una breve referencia a Java8), este curso consiste principalmente en un curso de programación funcional, por lo que las lecciones aprendidas en él podrás aplicarlas en tu día a día incluso si no puedes utilizar Scala en tu trabajo (lástima ;).

    Audiencia

    Este curso está especialmente dirigido a ti si cumples al menos una de las siguientes condiciones:
    • Estás familiarizado con lenguajes como Java, Javascript, C#, Python, C++, etc., y sus patrones de diseño más comunes, pero has oído hablar de la programación funcional y quieres saber qué ganarás saliendo de tu zona de confort y abrazando sus principios.
    • Tienes ya alguna familiaridad con la programación funcional (inmutabilidad, map, filter, reduce, etc.), pero no sabes bien qué son las mónadas, o las conoces pero todavía no las utilizas para mantener a raya los efectos de lado.
    • Te gusta escribir código que funciona, robusto y elegante, y quieres añadir a tu currículum las tecnologías que hoy en día están empezando ya a imperar en la industria del software y ser demandadas por multitud de empresas.
    Por otra parte, no te preocupes si no estás familiarizado con Scala: con la matrícula de este curso tienes un descuento para asistir a nuestro curso de iniciación a Scala. Con este nivel de iniciación es suficiente, dado que los conceptos de Scala más avanzados necesarios para la programación funcional, como los constructores de tipos, implícitos y la genericidad tipo higher-kinds, sí se enseñarán en este curso.

    Objetivos

    Este curso te permitirá:
    • Conocer los principios esenciales de la programación funcional y saber qué ganarás con ellos.
    • Aprender cómo programar funcionalmente en Scala.
    • No quedarte perplejo cuando alguien diga "computación monádica", y utilizar las mónadas e intérpretes para mejorar drásticamente la facilidad de pruebas, modularidad, robustez y eficiencia de tu código.
    • Familiarizarte con el uso de librerías como Scalaz, Cats y Scalacheck.
    • Prepararte para seguir aprendiendo más conceptos de programación funcional por ti mismo.

    Temario

    El curso está dividido en cuatro bloques principales. En el primero se introducen los principios básicos de la programación funcional: la eliminación de efectos de lado, el diseño de lenguajes e intérpretes, y cómo utilizar los tipos algebraicos de datos para el diseño de nuestros lenguajes de efectos. En el segundo bloque se introducen las funciones de orden superior típicas (map, reduce, filter, etc.), y se muestra cómo mejorar la modularidad de nuestro código funcional con ellas. En el tercer bloque se introducen las type classes como un mecanismo de modularidad todavía más potente que las funciones de orden superior, y se explican las mónadas como una type class que podemos utilizar para diseñar lenguajes de efectos imperativos. Por último, el cuarto bloque tiene por objetivo familiarizarte con tres librerías básicas del ecosistema de Scala: las librerías scalaz y cats, y la librería de property-based testing Scalacheck.

    • ¿Qué es la programación funcional?
      • Lenguajes e intérpretes
      • Tipos algebraicos de datos
    • Funciones de orden superior
      • Funciones anónimas
      • Funciones map, filter, reduce, etc.
    • Más allá de las funciones de orden superior
      • Type classes
      • Mónadas
    • El ecosistema funcional de Scala

    Organización

    • El curso se celebrará los viernes por la tarde en cuatro sesiones consecutivas de cuatro horas. Las herramientas y librerías necesarias para seguir el curso se comunicarán con la suficiente antelación para que los alumnos puedan traer configurados sus portátiles desde casa.
    • Las explicaciones en el aula alternarán el uso de transparencias y ejemplos de programación en live-coding, con una preferencia por este último medio. Al terminar cada bloque de contenido se propondrán pequeños ejercicios y retos para ser resueltos en clase.
    • El curso se impartirá en español.
    • Después de cada sesión, se propondrá a los asistentes la resolución de una serie de ejercicios adicionales que podrán subirse al repositorio Github del curso. El equipo de Habla Computing proporcionará feedback por medio de revisiones de código a todos aquellos que completen dichos ejercicios dentro de un plazo determinado de tiempo. Para resolver dudas y fomentar la colaboración entre los alumnos, se pondrá a disposición de los mismos un chat moderado por el profesor del curso y miembros de Habla.

    Sobre los profesores

    Juan Manuel es CTO y co-fundador de Habla Computing. Utiliza la programación funcional y Scala desde hace cuatro años en el desarrollo de un framework de procesos así como en servicios de consultoría para el desarrollo de aplicaciones en los sectores de comercio electrónico y bancario. Hace dos años fundó el grupo de usuarios de Scala en Madrid (ScalaMAD), y es miembro del comité organizador de lambda.world, un foro de reciente creación sobre programación funcional para el profesional de la informática. Antes de fundar Habla, Juan Manuel fue profesor en titulaciones de informática durante más de quince años y es actualmente profesor en excedencia de la Universidad Rey Juan Carlos.

    Jesús es Ingeniero Superior en Informática y Máster en Sistemas Telemáticos e Informáticos. Trabaja en Habla Computing desde hace cuatro años como programador de Scala para aplicaciones del sector bancario. Actualmente, desarrolla su tesis doctoral en Habla Computing sobre temas de programación funcional y sistemas reactivos, gracias a una subvención del programa de Doctorados Industriales del Ministerio de Economía y Competitividad. Jesús fue durante varios años coorganizador del meetup de Scala en Madrid, donde fue ponente habitual. También impartió un curso de Programación Funcional en Scala organizado por la Escuela de Informática de la URJC.

    Purely functional Scala

    Coordinator:

    Juan Manuel Serrano

    Instructor:

    Javier Fuentes

    Location:
    Parque Científico Universidad Carlos III de Madrid
    Price:
    200€/475€
    Start:
    22/4/16
    Duration:
    Fridays, 16:00h. Four consecutive sessions of four hours each.
    Language:
    Spanish
    Eventbrite - Programación funcional en Scala (3ª edición)

    Overview (Spanish)

    The main goal of this course is introducing the basic functional programming techniques that fuel the most advanced libraries and applications nowadays (Spark, Twitter, Facebook, etc.). These techniques are, amongst others, algebraic data types, higher-order functions, type classes, monads and pure functions. Throughout the course, you will learn what these techniques are, and, specially, why we should care about them, i.e. how they will help us to achieve higher levels of reusability, testability, evolvability, etc., in our code. To illustrate these functional techniques, we will pay special attention to the Spark library. Last, note that this is mostly a functional programming course that happens to be taught using Scala. So, the major lessons to be learned here will be readily applicable to your everyday programming tasks, even if you can't use Scala at your workplace (sigh).

    Audience

    This course is specially made for you if you meet at least one of the following requirements:
    • You are fluent in Java, Scala, C#, Python, Javascript, Ruby, or any other non-functional programming language, and want to push the boundaries of your comfort zone. You have heard about the virtues of functional programming, and want to know what's all the fuss behind it, and why it really matters.
    • You are already familiar with functional programming concepts (inmutability, map, filter, etc.), but have not heard about monads, or you heard about them but you don't still use them to effectively manage your side effects.
    • You are determined to use Spark, and would like to get a comprehensive introduction to the functional programming principles behing this wonderful framework (higher-order functions and beyond).
    • You enjoy writing correct, robust and elegant code, and want to include in your CV some of the most acclaimed technologies and programming paradigms in the software industry nowadays.
    The course requires a minimum level of familiarity with Scala. But don't worry if you know nothing about Scala! With the inscription in this course, you will get a discount for our fast-track Scala course. Last, note that no in-depth knowledge of Scala is needed, since more advanced concepts such as type constructors, higher-kind generics, implicits, etc., will be covered by this course.

    Objectives

    This course will enable you to:
    • Understand the essence of functional programming, and why you should embrace it
    • Exploit the functional programming features of Scala for great good!
    • Not being scare when someone says things like "monadic computation", and use monads to dramatically improve the testability and modularity of your designs
    • Understand the functional architecture of the Spark framework, and write complex data transformation programs in a purely functional style

    Outline

    The course is divided into four major blocks. The first one introduces what is functional programming and why it really matters. We will learn that the power of functional programming comes from the many modularity techniques that it supports: generic programming, higher-order functions, type classes, pure functions, etc. The rest of the course is structured according to these different techniques: higher-order functions will be covered in the first section, type classes in the second one, and pure functions in the third one. The last fourth module of the course is entirely devoted to Spark. We will see how Spark exemplifies the functional abstractions introduced throughout the course (higher-order functions, pure functions, etc.) and will illustrate how we can write complex data transformation programs in a purely functional style.

    • What is functional programming?
      • The modularity ladder
      • Functions and algebraic data types
      • Higher-order functions
    • Beyond higher-order functions
      • Type classes
      • Functors and monads
    • Taming impure functions
      • Domain-specific languages (DSLs) and interpreters
      • Segregating side-effects in practice
    • Introduction to Spark
      • The functional architecture of the Spark framework
      • The DSL: RDD transformations
      • The interpreter: RDD actions

    Organization

    • The course runs over four consecutive Fridays, each session running for four hours. Setup instructions will be made available well in advance, so that attendees can bring their laptops properly configured to the classroom.
    • Explanations during sessions will alternate between slides and live coding, with a preference for the later. Small exercises and challenges will be proposed after each major block of contents, and solved in the classroom.
    • The course will be taught in Spanish.
    • After each session, attendees will be encouraged to complete a number of additional exercises on Github. Habla Computing trainers will provide feedback via code reviews for those who completed this coursework in due time. A chat room will also be made available to offer guidance and foster collaboration among course attendees.

    About the coordinator

    The course is coordinated by Juan Manuel Serrano, and taught by him and Habla Computing specialists. Juan Manuel is CTO and co-founder of Habla Computing. He has been using Scala for the last five years in real-world applications for the banking sector, and has extensive experience in consultancy projects with Scala, Play, and other frameworks of the Scala ecosystem. He founded and manages the Madrid Scala Meetup group and is member of the organizing committee of lambda.world, the premier Spanish conference of functional programming for the software practitioner. Prior to joining Habla Computing, Juan Manuel was a University teacher for more than fifteen years in different computer science and software engineering degrees.

    Programación funcional con Scala

    Coordinador:

    Juan Manuel Serrano

    Profesor:

    Javier Fuentes

    Ubicación:
    Parque Científico Universidad Carlos III de Madrid
    Precio:
    200€/475€
    Comienzo:
    22/4/16
    Duración:
    Viernes, 16:00h. Cuatro sesiones de 4 horas cada una
    Idioma:
    Español
    Eventbrite - Programación funcional en Scala (3ª edición)

    Motivación

    Este curso tiene por objetivo introducir las técnicas básicas de programación funcional utilizadas en la construcción de las librerías y aplicaciones más avanzadas de la actualidad: desde el framework de big data Spark, hasta las aplicaciones de Twitter, Facebook, etc. Entre las técnicas abordadas se encuentran los tipos algebraicos de datos, las funciones de orden superior, las type classes y las mónadas. Durante el curso se explicará en qué consisten estas técnicas y, sobre todo, qué se gana con su utilización (reusabilidad, testability, tolerancia al cambio, etc.). Para ilustrar estos conceptos se prestará una especial atención al framework de Spark. Por último, aunque el lenguaje de programación utilizado será predominantemente Scala, este curso consiste principalmente en un curso de programación funcional, por lo que las lecciones aprendidas en él podrás aplicarlas en tu día a día incluso si no puedes utilizar Scala en tu trabajo (lástima ;).

    Audiencia

    Este curso está especialmente dirigido a ti si cumples al menos una de las siguientes condiciones:
    • Estás familiarizado con lenguajes como Java, Javascript, C#, Python, C++, etc., y sus patrones de diseño más comunes, pero has oído hablar de la programación funcional y quieres saber qué ganarás saliendo de tu zona de confort y abrazando sus principios.
    • Tienes ya alguna familiaridad con la programación funcional (inmutabilidad, map, filter, reduce, etc.), pero no sabes bien qué son las mónadas, o las conoces pero todavía no las utilizas para mantener a raya los efectos de lado.
    • Estás decidido a aprender Spark y quieres conocer en profundidad los fundamentos de programación funcional que subyacen a este framework (más allá aún de las funciones de orden superior).
    • Te gusta escribir código que funciona, robusto y elegante, y quieres añadir a tu currículum las tecnologías que hoy en día están empezando ya a imperar en la industria del software y ser demandadas por multitud de empresas.
    Por otra parte, no te preocupes si no estás familiarizado con Scala: con la matrícula de este curso tienes un descuento para asistir a nuestro curso de iniciación a Scala. Con este nivel de iniciación es suficiente, dado que los conceptos de Scala más avanzados necesarios para la programación funcional, como los constructores de tipos, implícitos y la genericidad tipo higher-kinds, sí se enseñarán en este curso.

    Objetivos

    Este curso te permitirá:
    • Conocer los principios esenciales de la programación funcional y saber qué ganarás con ellos.
    • Aprender cómo programar funcionalmente en Scala.
    • No quedarte perplejo cuando alguien diga "computación monádica", y utilizar las mónadas e intérpretes para mejorar drásticamente la facilidad de pruebas, modularidad, robustez y eficiencia de tu código.
    • Conocer la arquitectura funcional de Spark, y escribir complejos programas de transformación de datos en un estilo puramente funcional.

    Temario

    El curso está dividido en cuatro bloques principales, de cuatro horas de duración cada uno aproximadamente. En el primero se introduce qué es la programación funcional y por qué es cada vez más relevante. Veremos que la potencia de la programación funcional descansa en gran medida en los numerosos mecanismos de modularidad que soporta: la genericidad, las funciones de orden superior, las type classes, las funciones puras, etc. El resto del curso se estructura en base a estos mecanismos: en el primer bloque se estudiará en profundidad las funciones de orden superior, en el segundo las type classes y en el tercero la purificación de funciones y segregación de efectos de lado. Por último, en el cuarto bloque nos centraremos exclusivamente en Spark y en cómo se aplican en su arquitectura los conceptos anteriores. Desde un punto de vista práctico, veremos cómo escribir complejos programas de transformación de datos en un estilo puramente funcional.

    • ¿Qué es la programación funcional?
      • Los mecanismos de modularidad
      • Las funciones y los tipos algebraicos de datos
      • Las funciones de orden superior
    • Type classes: más allá de las funciones de orden superior
      • Type classes
      • Functores y mónadas
    • La pureza funcional
      • Los lenguajes específicos de dominio (DSLs) y los intérpretes
      • Segregación de efectos colaterales mediante DSLs
    • El framework Spark
      • La arquitectura funcional del framework Spark
      • El lenguaje RDD: transformaciones de datos
      • El intérprete de RDDs: acciones

    Organización

    • El curso se celebrará los viernes por la tarde en cuatro sesiones consecutivas de cuatro horas. Las herramientas y librerías necesarias para seguir el curso se comunicarán con la suficiente antelación para que los alumnos puedan traer configurados sus portátiles desde casa.
    • Las explicaciones en el aula alternarán el uso de transparencias y ejemplos de programación en live-coding, con una preferencia por este último medio. Al terminar cada bloque de contenido se propondrán pequeños ejercicios y retos para ser resueltos en clase.
    • El curso se impartirá en español.
    • Después de cada sesión, se propondrá a los asistentes la resolución de una serie de ejercicios adicionales que podrán subirse al repositorio Github del curso. El equipo de Habla Computing proporcionará feedback por medio de revisiones de código a todos aquellos que completen dichos ejercicios dentro de un plazo determinado de tiempo. Para resolver dudas y fomentar la colaboración entre los alumnos, se pondrá a disposición de los mismos un chat moderado por el profesor del curso y miembros de Habla.

    Sobre los profesores

    El curso será coordinado por Juan Manuel Serano, e impartido por él y personal especializado de Habla Computing. Juan Manuel es CTO y co-fundador de Habla Computing. Utiliza la programación funcional y Scala desde hace cinco años en el desarrollo de un framework de procesos así como en servicios de consultoría para el desarrollo de aplicaciones en los sectores de comercio electrónico y bancario. Hace dos años fundó el grupo de usuarios de Scala en Madrid (ScalaMAD), y es miembro del comité organizador de lambda.world, un foro de reciente creación sobre programación funcional para el profesional de la informática. Antes de fundar Habla, Juan Manuel fue profesor en titulaciones de informática durante más de quince años y es actualmente profesor en excedencia de la Universidad Rey Juan Carlos.

    Purely functional Scala

    Instructor:

    Juan Manuel Serrano

    Location:
    Parque Científico Universidad Carlos III de Madrid
    Start:
    20/11/15
    Duration:
    Fridays, 16:00h. Four sessions of five hours each.
    Language:
    Spanish

    Overview (Spanish)

    Functional programming is all the rage these days, as witnessed by the fact that almost any non-functional programming language (Java, Javascript, C#, Python or C++) has dedicated functional libraries, or even functional extensions like anonymous functions (e.g. Java8). Not to mention the creation of "new" programming languages of increasing popularity, like Scala, designed from the very beginning to support functional abstractions like inmutable values and algebraic data types.

    However, these basic features are just the tip of the iceberg: in order to leverage the FP paradigm to their full potential, you must also master its essential design patterns: typeclasses, monads, interpreters, etc. Scala gratefully supports these patterns, and this course will allow you to understand exactly what is "purely" functional programming, and obtain all the benefits that this programming paradigm promise to us (modularity, testability, efficiency, etc.).

    This course is largely of a practical nature, and we will make a strong emphasis in comparing the proposed functional solution with the common "object-oriented" patterns you are used to. This will allow us to clearly unveil the similarities between both paradigms, as well as their differences and the advantages of the functional approach. Last, note that this is mostly a functional programming course that happens to be taught using Scala (but for a brief reference to Java8). So, the major lessons to be learned here will be readily applicable to your everyday programming tasks, even if you can't use Scala at your workplace (sigh).

    Audience

    This course is specially made for you if you meet at least one of the following requirements:
    • You are fluent in Java, C#, Python, Javascript, Ruby, or any other non-functional programming language, and want to push the boundaries of your comfort zone. You have heard about the virtues of functional programming, and want to know what's all the fuss behind it, and why it really matters.
    • You are already familiar with functional programming concepts (inmutability, map, filter, etc.), but have not heard about monads, or you heard about them but you don't still use them to effectively manage your side effects.
    • You enjoy writing correct, robust and elegant code, and want to include in your CV one of the most acclaimed technologies in the software industry nowadays.

    Objectives

    This course will enable you to:
    • Understand the essence of functional programming, and why you should embrace it
    • Not being scare when someone says things like "monadic computation"
    • Use monads to dramatically improve the testability and modularity of your designs
    • Exploit type classes and use Scalaz/Cats in your production code
    • Be prepared to teach yourself more functional programming stuff

    Outline

    • What is functional programming?
      • Principles: modularity and side-effect segregation
      • Introduction to Scala: packages, classes, objects and methods
      • The Scala ecosystem of functional libraries and tools
    • Modularity mechanisms
      • Algebraic data types
      • Anonymous and higher-order functions
      • Laziness
    • Functional purity from scratch
      • Languages and interpreters
      • The monad design pattern
      • Functional patterns in Java8
    • Functional programming with Scalaz/Cats
      • Type classes
      • Free monads

    We will first introduce what it's functional programming and what it's not. We will learn that functional programming is all about writing highly modular functions which are free from side effects, i.e. which are pure. In this first section, we will also introduce the most basic features of Scala. The next two sections will deal, respectively, with the major techniques to achieve modularity and purity: algebraic data types, higher-order functions, laziness and monads. In this third section, we will also compare monads to the most common object-oriented design patterns, and will briefly review the functional support of Java8. Last, we will learn about typeclasses and how the scalaz library exploits them to implement for us the FP design patterns used in the previous sections.

    Organization

    • The course runs over four consecutive Fridays, each session running for five (intensive) hours. Setup instructions will be made available well in advance, so that attendees can bring their laptops properly configured to the classroom.
    • Explanations during sessions will alternate between slides and live coding, with a preference for the later. Small exercises and challenges will be proposed after each major block of contents, and solved in the classroom.
    • The course will be taught in Spanish.
    • After each session, attendees will be encouraged to complete a number of additional exercises on Github. Habla Computing trainers will provide feedback via code reviews for those who completed this coursework in due time. A chat room will also be made available to offer guidance and foster collaboration among course attendees.

    About the instructor

    Juan Manuel is CTO and co-founder of Habla Computing. He has been using Scala for the last four years in real-world applications for the banking sector, and has extensive experience in consultancy projects with Scala, Play, and other frameworks of the Scala ecosystem. He founded and manages the Madrid Scala Meetup group and is member of the organizing committee of lambda.world, the premier Spanish conference of functional programming for the software practitioner. Prior to joining Habla Computing, Juan Manuel was a University teacher for more than fifteen years in different computer science and software engineering degrees.

    Programación funcional con Scala

    Profesor:

    Juan Manuel Serrano

    Ubicación:
    Parque Científico Universidad Carlos III de Madrid
    Comienzo:
    20/11/15
    Duración:
    Viernes, 16:00h. Cuatro sesiones de 5 horas cada una
    Idioma:
    Español
    Eventbrite - Introducción a Scala

    Motivación

    La programación funcional está cobrando cada vez más importancia en la industria del software, y raro es el lenguaje de programación no funcional (hablamos de Java, Javascript, C#, Python o C++) para el que no existan ya librerías funcionales, o incluso extensiones en las que se introducen explícitamente construcciones como las funciones anónimas (por ejemplo, Java8). Eso sin mencionar otros lenguajes de más "reciente" aparición y popularidad creciente, como Scala, diseñados desde el principio para dar soporte a abstracciones básicas de la programación funcional, como los valores inmutables o los tipos algebraicos.

    Sin embargo, debes saber que esto es solo la punta del iceberg: para explotar de una manera plena el paradigma funcional es imprescindible conocer patrones de diseño básicos como las type classes, las mónadas y los intérpretes. Scala soporta estos patrones estupendamente, y este curso tiene por objetivo enseñarte en qué consisten para que sepas qué es la programación funcional "pura" y puedas realmente obtener todas las ventajas que promete este paradigma (modularidad, facilidad de pruebas, eficiencia, etc.).

    El curso tiene una orientación eminentemente práctica y en él se hará un hincapié especial por comparar la solución funcional propuesta con la solución "orientada a objetos" más común que probablemente ya utilices, de tal manera que las similitudes entre ambas aproximaciones (que haberlas, haylas), así como las diferencias y las ventajas de la aproximación funcional se vean claramente expuestas. Por último, aunque el lenguaje de programación utilizado será predominantemente Scala (excepto por una breve referencia a Java8), este curso consiste principalmente en un curso de programación funcional, por lo que las lecciones aprendidas en él podrás aplicarlas en tu día a día incluso si no puedes utilizar Scala en tu trabajo (lástima ;).

    Audiencia

    Este curso está especialmente dirigido a ti si cumples al menos una de las siguientes condiciones:
    • Estás familiarizado con lenguajes como Java, Javascript, C#, Python, C++, etc., y sus patrones de diseño más comunes, pero has oído hablar de la programación funcional y quieres saber qué ganarás saliendo de tu zona de confort y abrazando sus principios.
    • Tienes ya alguna familiaridad con la programación funcional (inmutabilidad, map, filter, reduce, etc.), pero no sabes bien qué son las mónadas, o las conoces pero todavía no las utilizas para mantener a raya los efectos de lado.
    • Te gusta escribir código que funciona, robusto y elegante, y quieres añadir a tu currículum las tecnologías que hoy en día están empezando ya a imperar en la industria del software y ser demandadas por multitud de empresas.

    Objetivos

    Este curso te permitirá:
    • Conocer los principios esenciales de la programación funcional y saber qué ganarás con ellos.
    • No quedarte perplejo cuando alguien diga "computación monádica".
    • Utilizar las mónadas e intérpretes para mejorar drásticamente la facilidad de pruebas, modularidad, robustez y eficiencia de tu código.
    • Utilizar las type classes y librerías como Scalaz/Cats en tu código de producción.
    • Prepararte para seguir aprendiendo más conceptos de programación funcional por ti mismo.

    Temario

    • ¿Qué es la programación funcional?
      • Principios: modularidad y eliminación de efectos de lado
      • Introducción a Scala: paquetes, clases, objetos y métodos
      • El ecosistema funcional de librerías y herramientas de Scala
    • Mecanismos de modularidad
      • Tipos algebraicos de datos
      • Funciones anónimas y funciones de orden superior
      • Laziness
    • La pureza funcional desde cero
      • Lenguajes e intérpretes
      • Las mónadas
      • Soporte funcional en Java8
    • La programación funcional con Scalaz/Cats
      • Type classes
      • Free monads

    En la primera sección del programa haremos una introducción a las nociones básicas de Scala (el resto de conceptos de Scala más específicos de la programación funcional se introducirán conformen vayan haciendo falta), y veremos que la programación funcional descansa en dos principios básicos: la modularidad y las funciones puras. De esta forma, las dos secciones siguientes se centrarán en las técnicas funcionales para conseguir modularidad (tipos algebraicos, funciones de orden superior, etc.) y pureza funcional (mónadas e intérpretes). En esta tercera sección también se hará una comparativa entre la solución monádica obtenida y los patrones típicos de la orientación a objetos, y se verá brevemente cómo implementar en Java8 los patrones monádicos. En la última sección introduciremos las type classes y cómo utilizar librerías como Scalaz y Cats para simplificar radicalmente la implementación de código funcional.

    Organización

    • El curso se celebrará los viernes por la tarde en cuatro sesiones consecutivas de cinco horas. Las herramientas y librerías necesarias para seguir el curso se comunicarán con la suficiente antelación para que los alumnos puedan traer configurados sus portátiles desde casa.
    • Las explicaciones en el aula alternarán el uso de transparencias y ejemplos de programación en live-coding, con una preferencia por este último medio. Al terminar cada bloque de contenido se propondrán pequeños ejercicios y retos para ser resueltos en clase.
    • El curso se impartirá en español.
    • Después de cada sesión, se propondrá a los asistentes la resolución de una serie de ejercicios adicionales que podrán subirse al repositorio Github del curso. Formadores de Habla Computing proporcionarán feedback por medio de revisiones de código a todos aquellos que completen dichos ejercicios dentro de un plazo determinado de tiempo. Para resolver dudas y fomentar la colaboración entre los alumnos, se pondrá a disposición de los mismos un chat moderado por el profesor del curso y miembros de Habla.

    Sobre el profesor

    Juan Manuel es CTO y co-fundador de Habla Computing. Utiliza la programación funcional y Scala desde hace cuatro años en el desarrollo de un framework de procesos así como en servicios de consultoría para el desarrollo de aplicaciones en los sectores de comercio electrónico y bancario. Hace dos años fundó el grupo de usuarios de Scala en Madrid (ScalaMAD), y es miembro del comité organizador de lambda.world, un foro de reciente creación sobre programación funcional para el profesional de la informática. Antes de fundar Habla, Juan Manuel fue profesor en titulaciones de informática durante más de quince años y es actualmente profesor en excedencia de la Universidad Rey Juan Carlos.

    Clients

    Training

    We have already run several editions of the basic and advanced functional programming courses for the community. In addition, we have offered these courses in an in-house modality for different companies such as Amadeus, Beeva, Packlink, S|ngular, GMV, etc.

    Companies willing to run our courses privately have several advantanges: they can run the course at their offices and at the pace they choose, and, more importantly, they can tailor the content of the course to their specific needs.

    Generic placeholder image

    Financial regulations support

    The Bank of Spain Risk Assessment Central Office (CIRBE) rules how financial entities and the Bank of Spain interact on risk declarations matters: reports, conflict-resolution protocols, notifications, etc. BNP Paribas Security Services (BP2S) applies a language defined by Habla Computing to reflect CIRBE regulations, ensuring its processes match the normative.

    Using this language enables BP2S to quickly react to change regulations through simple modifications in its code. Also, this code can be easily plugged to different tools, freeing BP2S to tie its business logic to any specific platform.


    Partners



    Supporters


    Know us better

    We are a bunch of people with a common passion: achieving better ways to engineer and deliver software products.

    Juan Manuel Serrano Hidalgo
    CEO & Co-founder
    Isabel de la Morena Maroñas
    CFO & Co-founder
    Jesús López González
    Senior software developer
    Giancarlo Muñoz Reinoso
    Senior software developer
    Abel Fernández Alfonso
    Senior software developer
    Alfonso Roa Redondo
    Senior software developer
    Mikel San Vicente
    Senior software developer
    Carlos Vidal
    Senior software developer
    Contact us if you like what we do and want to join us »
    Contact us if you like what we do and want to join us »

    Please, tell us which are your needs and how do you think we may help you. We will answer you as soon as possible.

    -- The Habla Computing team



    Find us

    Parque Científico Universidad Carlos III de Madrid

    Room 1.1.C.13

    Avenida Gregorio Peces-Barba 1, 28918 Leganés

    Madrid, Spain

    Phone us: +34 609 252 235

    Email us: info@hablapps.com

    Check out our contributions

    As pioneers in the use of Scala, we founded the Madrid Scala Meetup (affectionately known as #ScalaMAD) and regularly contribute to the Scala community with blog posts, meetup talks, open source projects, and conferences.

    Terms of use

    Welcome to the Habla Computing S.L. website
    Owner: Habla Computing, S.L.
    Address: Villalobos, 20, 13A 28018 Madrid
    Tel. (+34) 91 172 68 52; fax. (+34) 91 172 68 52
    E-mail: info@hablapps.com
    Registry Data: Madrid Commerce Registry, Volume 27,693, Sheet 12, Section 8, Page M-499100, dated April 12, 2010, first registration.
    C.I.F.: B-85933729

    Terms of Use
    The conditions herein regulate the use of this website. By accessing, browsing, or using this Web site imply that user have read, understood, and agree, unconditionally, to be bound by these terms.
    Habla Computing may, without notice to you, at any time revise and/or update these Terms of Use and any other information contained in this Web site. Habla Computing may also make changes in the products, services, or programs described in this site at any time without previous notice.
    Habla Computing reserves the right to deny, suspend, interrupt or cancel access or use of this website, either completely or partially, for those users or visitors found to be in non-compliance with any of the conditions set forth in this Legal Notice.

    General
    Specifically, the reproduction, transformation, distribution, communication, public dissemination and, in general, any form of development, using any procedure whatsoever, of all or part of the contents of this website, as well as any corresponding design and manner of presentation of the materials included herein are strictly prohibited. Said development shall only be permitted if Habla Computing issues written authorization of the same and only as long as appropriate reference is made to the sole property of Habla Computing. Notwithstanding the foregoing, any software and other materials that are made available for downloading, access, or other use from this site with their own license terms, conditions, and notices will be governed by such terms, conditions, and notices.
    The decompilation, disassembly, reverse engineering, sub-licensing or transfer of any kind, translation or execution of work derived from the computer programs required for functioning, access and use of this website, and of the services described in the contents, as well as the execution of any of the development activities described in the previous paragraph, whether related to all or part of such programs, is also strictly prohibited. The user of this website must abstain from deleting, modifying, avoiding or manipulating any protection device or security systems that may be installed herein.
    The brand names, commercial names and distinctive symbols are the sole property of Habla Computing. Access to the website does not imply the granting of any express or implied rights under any patents, trademarks, copyrights, or other proprietary or intellectual property rights.

    Hyperlinks to other sites
    The hyperlinks or links included in this website can lead the user to other third party sites, over which Habla Computing has no control. Habla Computing shall not be held liable for the contents or the state in which said sites are found. Access to the said sites using this website also does not, in any way whatsoever, imply that Habla Computing either recommends or approves of corresponding contents or use of such Web site.
    Habla Computing is not a party to or responsible for any transactions user may enter into with third parties, even if you learn of such parties (or use a link to such parties) from a Habla Computing site. Accordingly, user acknowledge and agree that Habla Computing is not responsible for the availability of such external sites or resources, and is not responsible or liable for any content, services, products, or other materials on or available from those sites or resources.
    It is up to user to take precautions to protect themselves from viruses, worms, trojan horses, and other potentially destructive programs, and to protect your information as you deem appropriate.

    Linking to this site
    All links to this Web site must be approved in writing by Habla Computing, except that Habla Computing consents to links in which the link and the pages that are activated by the link do not: (a) create frames around any page on this Web site or use other techniques that alter in any way the visual presentation or appearance of any content within this site; (b) misrepresent your relationship with Habla Computing; (c) imply that Habla Computing approves or endorses you, your Web site, or your service or product offerings; and (d) present false or misleading impressions about Habla Computing or otherwise damage the goodwill associated with the Habla Computing name. As a further condition to being permitted to link to this site, you agree that Habla Computing may at any time, in its sole discretion, terminate permission to link to this Web site. In such event, you agree to immediately remove all links to this Web site.

    Modifications
    Habla Computing reserves the right, at any time, to modify, enlarge or temporarily suspend the website presentation, configuration, technical specifications and services unilaterally and without previous notice.
    Also reserves the right to modify the terms of use, as well as any other specific conditions, set forth herein at any time.

    Confidential information
    Habla Computing does not want to receive confidential or proprietary information from user through our Web site. Please note that any information or material sent to Habla Computing will be deemed NOT to be confidential. By sending Habla Computing any information or material, you grant Habla Computing an unrestricted, irrevocable license to copy, reproduce, publish, upload, post, transmit, distribute, publicly display, perform, modify, create derivative works from, and otherwise freely use, those materials or information. You also agree that Habla Computing is free to use any ideas, concepts, know-how, or techniques that you send us for any purpose. However, we will not release your name or otherwise publicize the fact that you submitted materials or other information to us unless we obtain your permission to use your name.

    Liability Exclusion
    Whoever uses the website does so at their own expense and risk. All materials, information, products, software, programs, and services are provided “as is” with no warranties or guarantees whatsoever, neither explicit nor implied, and can be modified or updated without previous notice. Habla Computing, its associates and employees shall not be held liable for the errors or omissions that could exist within the contents of either this website or other contents to which access can be gained using the same. Habla Computing, its associates and employees shall also not be held liable for either any damages arising from the use of this website or any activity undertaken as a result of the information made available herein. Accordingly, user should confirm the accuracy and completeness of all posted information before making any decision related to any services, products, or other matters described in this site.
    Habla Computing does not guarantee the absence of viruses, worms or other harmful computer elements that could cause damage or alter the computer system in the electronic documents or user files included herein. As a result, Habla Computing shall not be held liable for any user or third party damages or losses arising from such elements. Furthermore, Habla Computing shall not be held liable for or guarantee the availability and continuity of access to this web site. Habla Computing shall also not guarantee that this website is secure or error-free. It shall be the user’s responsibility to have the appropriate tools available for detecting and disinfecting harmful or damaging computer programs.
    In no event will Habla Computing be liable to any party for any direct, indirect, incidental, special, exemplary or consequential damages of any type whatsoever related to or arising from this web site or any use of this web site, or of any site or resource linked to, referenced, or accessed through this web site, or for the use or downloading of, or access to, any materials, information, products, or services, including, without limitation, any lost profits, business interruption, lost savings or loss of programs or other data. The user is fully aware of, and voluntarily accepts the fact that they are fully liable for any consequences arising from any use of any part of the contents herein, materials, information, products, software, programs, or services, so at their own discretion and risk. User will be solely responsible for any damages that may result, including loss of data or damage to your computer system.
    The user shall be held liable for losses and damages of any kind that Habla Computing could suffer as a result of incompliance with the obligations set forth herein.
    Additional or different terms, conditions, and notices may apply to specific materials, information, products, software, and services offered through this Web site. In the event of any conflict, such additional or different terms, conditions, and notices will prevail over these Terms of Use.

    Legislation
    Under any and all circumstances, the use conditions set forth herein shall be governed by Spanish Law.