Functional Programming in Scala

Taught by Professors Martin Odersky, Viktor Kuncak, Heather Miller, and Dr. Aleksandar Prokopec from EPFL

Course Details:

An intermediate college-level series of four classes which taught how to write elegant functional codes and develop more sophisticated programming skills. Emphasis was placed on best practices and writing good Scala code in real world situations.

Functional Programming Principles in Scala:

  • Compared functional, imperative, and object-oriented programming styles
  • Wrote purely functional programs, using recursion, currying, pattern matching, polymorphism, and higher-order functions
  • Designed immutable data structures and recognized when they were superior or inferior to mutable data structures

Functional Programming Design in Scala:

  • Applied new functional programming techniques, including monads, loops, state space exploration, for-comprehensions, randomized testing, and functional reactive programming
  • Combined functional programming with objects and classes
  • Applied design principles of functional programs
  • Utilized lazy evaluation techniques to handle large, combinatorial search spaces and infinite lists

Parallel Programming:

  • Wrote programs that effectively used parallel programming across both data and threads to achieve enhanced performance
  • Microbenchmarked parallel code
  • Converted problems expressed functionally to solve them in parallel
  • Traced execution of common Scala methods such as map and reduce when running in parallel

Big Data Analysis with Scala and Spark:

  • Analyzed how data-parallel and distributed data-parallel, as well as Spark's RDD's and Scala's collections, differ
  • Manipulated and analyzed data with Scala, Apache Spark, and Spark SQL, from large data sets on multicore architectures to distributed data on a computational cluster
  • Avoided shuffles and recomputation and minimized the effect of latency in Spark through partitioning, reductions, joins, and careful ordering of such methods


Course Statistics:

  • Final Grades: 100%, 100%, 97.5% and 100%
  • University: École Polytechnique Fédérale de Lausanne, a Swiss Polytechnic University (through Coursera.org), which funded the development of Scala
  • Prerequisites: At least one year of programming a language
  • Instructors: Professors Martin Odersky, Viktor Kuncak, Heather Miller, and Dr. Aleksandar Prokopec (not all from EPFL)
Classes Completed:
  • Functional Programming Principles in Scala: coursera.org/learn/progfun1
  • Functional Programming Design in Scala: coursera.org/learn/progfun2
  • Parallel Programming: coursera.org/learn/parprog1
  • Big Data Analysis with Scala and Spark: coursera.org/learn/scala-spark-big-data

    Featured Projects (Click to download):
  • Time Usage Analyzer - takes data from Kaggle, then filters and analyzes data to find correlations in time usage activities (primary need, work, and leisure) across factors including gender, employment status, and age
  • K-Means Clustering Algorithm - takes 2D points spread across a plane and groups them into clusters based on distance after multiple iterations
  • Barnes-Hut N-body Program - implements the Barnes-Hut algorithm for n-body simulation with gravitational forces and parallel programming
  • Quickcheck assignment - created unit tests to distinguish between correct and incorrect implementations of heaps


  • Copyright © Samantha S. 2020