Introduction to Functional Programming through Scala language

Scala although first published nearly 15 years ago, started gaining its popularity in industry from 2010 onwards coincinding with the creation of cluster programming framework Spark. Since then, Scala had been used in many large level enterprise application such as Twitter, LinkedIn, Guardian etc. Scala is built on top of the Java Virtual Machine and it has seamlessly combined the Object Oriented and Functional Programming model. Due to this unique combination it provides an opportunity to enter into the world of Functional Programming (FP), which is in fact older than the first built computer and was around since 1930s.

INSTRUCTOR

Mr. Imran Kazi, BSc, MSc, MTech

Java professional, Deutsche Bank Group, Pune

SCHEDULE

  • Date: Sunday, December 1, 2019
  • Time:
    • Morning 10 AM - 12:00 PM
    • Afternoon 2:00 PM - 6:00 PM (has a short tea+snack break)

PARTICIPATION

Any BS-MS, iPhD, PhD student, postdoctoral fellow, or faculty member is eligible to participate. Total 25 participants can be accommodated in the workshop. The intended participants are requested to arrive at the venue and register during 9:30 AM - 10:00 AM on the event day.

Venue

Bhaskara Lab, Main Building, IISER, Dr. Homi Bhabha Road, Pashan, Pune - 411008, India

Why Functional Programming?

The advantage of learning FP are two-folds:

    • Hardware industry is producing multi-core processors and cheap memories with increasing ease that in turn, increasing the expectation of faster, reliable, distributed computation. This cannot be achieved with the prevalent model of imperative, thread based programming. The concepts of FP is most suitable to handle such problem, Erlang language(1970), Akka and Spark, all built on top of FP and Actor model, being three most notable examples of that.
    • FP paves the way to understand the more general concepts such as relationship between programming and theorem proving (Coq, and recently Idris language is built for that), Category theory which could be of huge interest to the future mathematicians.

What do we cover?

  • Preparation : Scala installation, Editor Installation
  • Brief introduction to Scala language
  • Usual stuffs: variables, branching, looping etc
  • Classes, Objects, Types
  • Functional Object : Function as first class citizen
  • Control Abstraction: Currying
  • Collections: List, Tuples, Maps
  • Higher Order functions (map, flatMap, fold, zip etc.)
  • For expression revisited
  • Generalising map, flatMap, fold – glimpse of groups of Category theory such as Semigroup, Monoid etc.
scala-workshop2.pdf