Parallel Functional and Streaming Programming with Scala

Course topics

Part 1. Intro to Big Data & Parallel processing

  • Historical retrospective on Big data development
  • Current Big-Data ecosystem overview (Landscape).
    • Review all of the different technologies such as Nifi, Flink, Spark, etc.
  • Parallel programming. Paradigm, concept shift
  • Streaming programming. Purpose, challenges, architecture. Intro to Kafka

Part 2. Scala

  • Scala programming language
    • Programming paradigms
    • Scala syntax. Data Structures. OOP in Scala
  • Functional Programming in Scala
    • Function as a first-class citizen. Higher-order functions
    • Referential transparency, pure functions, side-effects.
    • Functional Programming patterns. Monads
  • Asynchronous and parallel programming in Scala
    • Parallel & Concurrent programming on JVM
    • Asynchronous programming with Futures. Parallel collections
  • Introduction to Akka Actors
    • Actor model. Akka. Handling shared state.
    • Implementing event-driven systems. Reactive programming
  • Introduction to Akka Streams
    • Handling streams of data. Source, Sink, Flow, runnable graphs
    • Handling backpressure

Part 3. Cloud

  • Cloud computing. Core cloud services.
    • IaaS, PaaS, SaaS. Horizontal and vertical scalability
    • Containerization & virtualization. Virtual compute instances
    • Core services
  • AWS & GCP resources.
    • Core AWS and GCP services
    • Utilizing serverless architecture
  • Hands on Cloud Services

Part 4. Kafka Streams and how to work with them

  • Intro to Kafka Streams
    • Basics. Kstreams, Ktables, concept, usage, limitations
  • Hands on KStreams
  • Kstreams – Advanced practices
  • Deploying simple Kstream app using Confluent platform

Prerequisites

Strong knowledge and practical experience with Java or Python. Would be a plus:

  • Basic knowledge of JVM
  • Basic understanding of data structures
  • Experience working with multi-threading
  • Functional Programming basics
  • Experience developing enterprise-level software

Hardware

Laptop with JVM and Docker compatible OS (Unix-based is preferable but Windows should work fine).

Installed software:

  • Git
  • JDK 1.8
  • Scala 2.12. sbt 1.2.3
  • IntelliJ IDEA – Community edition or any elevated.
  • Scala plugin for IntelliJ IDEA
  • Latest version of Docker

Lecturers and instructors

This course is supported by Ricker Lyman Robotic and is taught by the company’s top specialists and engineers.

Ricker Lyman Robotic provides unique expertise in Big Data, Data Science and the Internet of Things. The company empowers their engineers to solve the world’s big problems. While implementing their vision, the company is single-mindedly dedicated to empowering its clients, for a future empowered by advanced automation. The core technologies that the company works on include ‘Big Enough’ Data, Big Data Science, Streaming Big Data, Big Graphs, Internet of Things, Blockchain.