Spécialisation Functional Programming in Scala

Commencé le mars 27

Spécialisation Functional Programming in Scala

Program on a Higher Level

Write elegant functional code to analyze data that's big or small

À propos de cette Spécialisation

Discover how to write elegant code that works the first time it is run. This Specialization provides a hands-on introduction to functional programming using the widespread programming language, Scala. It begins from the basic building blocks of the functional paradigm, first showing how to use these blocks to solve small problems, before building up to combining these concepts to architect larger functional programs. You'll see how the functional paradigm facilitates parallel and distributed programming, and through a series of hands on examples and programming assignments, you'll learn how to analyze data sets small to large; from parallel programming on multicore architectures, to distributed programming on a cluster using Apache Spark. A final capstone project will allow you to apply the skills you learned by building a large data-intensive application using real-world data.

Créé par :

courses
5 courses

Suivez l'ordre suggéré ou choisissez le vôtre.

projects
Projets

Conçu pour vous aider à vous exercer et à appliquer les compétences que vous avez acquises.

certificates
Certificats

Mettez en évidence vos nouvelles compétences sur votre CV ou sur LinkedIn.

Cours
Intermediate Specialization.
Some related experience required.
  1. COURS 1

    Les principes de programmation fonctionnelle en Scala

    Session en cours : mars 27 — mai 15.
    Sous-titres
    English, Serbian, French

    À propos du cours

    La programmation fonctionnelle et en train de devenir de plus en plus utilisée dans l'industrie. Cette tendance est motivée par l'adoption de Scala en tant que langage de programmation principal dans de nombreuses applications. Scala fusionne la programmation fonctionnelle avec la programmation orientée objet dans un même produit. Il interagit sans problème à la fois avec Java et Javascript. Scala est le langage d'implémentation de plusieurs outils de développement comme Apache Spark, Kafka et Akka. Il offre l'infrastructure centrale à des sites web comme Twitter, Tumblr mais aussi Coursera. Dans ce cours vous allez découvrir les éléments du style de programmation fonctionnelle et apprendre à les utiliser de manière utile dans vos tâches quotidiennes de programmation. Vous allez également développer une solide base de raisonnement à propos des programmes fonctionnels en touchant aux preuves par invariants et au suivi symbolique de l'exécution. Le cours est pratique; la plupart des modules présentent de petits programmes qui servent à illustrer d'importants concepts et qui vous invitent à jouer avec eux en les modifiant et en les améliorant. Le cours est complété par une série de projets de programmation faisant office de devoirs à faire chez soi. Il en résulte de l'apprentissage. À la fin du cours, vous serez capables de : - comprendre les principes de la programmation fonctionnelle, - écrire des programmes purement fonctionnels en s'aidant de la récursivité, du filtrage par motif (pattern matching) et des fonctions d'ordre supérieur - combiner la programmation fonctionnelle aux objets et aux classes, - concevoir des structures de données immuables, - raisonner sur les propriétés des fonctions, - comprendre les types génériques des programmes fonctionnels Base de connaissance recommandée : vous devriez avoir au moins une année d'expérience en programmation. De très bonnes connaissances en Java ou C# est idéal, mais de l'expérience dans d'autres langages comme C/C++, Python, Javascript ou Ruby est également suffisant. Vous devriez avoir une certaine expérience en ligne de commande.
  2. COURS 2

    Functional Program Design in Scala

    Session en cours : mars 27 — mai 1.
    Sous-titres
    English

    À propos du cours

    In this course you will learn how to apply the functional programming style in the design of larger applications. You'll get to know important new functional programming concepts, from lazy evaluation to structuring your libraries using monads. We'll work on larger and more involved examples, from state space exploration to random testing to discrete circuit simulators. You’ll also learn some best practices on how to write good Scala code in the real world. Several parts of this course deal with the question how functional programming interacts with mutable state. We will explore the consequences of combining functions and state. We will also look at purely functional alternatives to mutable state, using infinite data structures or functional reactive programming. Learning Outcomes. By the end of this course you will be able to: - recognize and apply design principles of functional programs, - design functional libraries and their APIs, - competently combine functions and state in one program, - understand reasoning techniques for programs that combine functions and state, - write simple functional reactive applications. Recommended background: You should have at least one year programming experience. Proficiency with Java or C# is ideal, but experience with other languages such as C/C++, Python, Javascript or Ruby is also sufficient. You should have some familiarity using the command line. This course is intended to be taken after Functional Programming Principles in Scala: https://www.coursera.org/learn/progfun1.
  3. COURS 3

    Parallel programming

    Session en cours : mars 27 — mai 1.
    Sous-titres
    English

    À propos du cours

    With every smartphone and computer now boasting multiple processors, the use of functional ideas to facilitate parallel programming is becoming increasingly widespread. In this course, you'll learn the fundamentals of parallel programming, from task parallelism to data parallelism. In particular, you'll see how many familiar ideas from functional programming map perfectly to to the data parallel paradigm. We'll start the nuts and bolts how to effectively parallelize familiar collections operations, and we'll build up to parallel collections, a production-ready data parallel collections library available in the Scala standard library. Throughout, we'll apply these concepts through several hands-on examples that analyze real-world data, such as popular algorithms like k-means clustering. Learning Outcomes. By the end of this course you will be able to: - reason about task and data parallel programs, - express common algorithms in a functional style and solve them in parallel, - competently microbenchmark parallel code, - write programs that effectively use parallel collections to achieve performance Recommended background: You should have at least one year programming experience. Proficiency with Java or C# is ideal, but experience with other languages such as C/C++, Python, Javascript or Ruby is also sufficient. You should have some familiarity using the command line. This course is intended to be taken after Functional Program Design in Scala: https://www.coursera.org/learn/progfun2.
  4. COURS 4

    Big Data Analysis with Scala and Spark

    Session à venir : avr. 10 — mai 15.
    Sous-titres
    English

    À propos du cours

    Manipulating big data distributed over a cluster using functional concepts is rampant in industry, and is arguably one of the first widespread industrial uses of functional ideas. This is evidenced by the popularity of MapReduce and Hadoop, and most recently Apache Spark, a fast, in-memory distributed collections framework written in Scala. In this course, we'll see how the data parallel paradigm can be extended to the distributed case, using Spark throughout. We'll cover Spark's programming model in detail, being careful to understand how and when it differs from familiar programming models, like shared-memory parallel collections or sequential Scala collections. Through hands-on examples in Spark and Scala, we'll learn when important issues related to distribution like latency and network communication should be considered and how they can be addressed effectively for improved performance. Learning Outcomes. By the end of this course you will be able to: - read data from persistent storage and load it into Apache Spark, - manipulate data with Spark and Scala, - express algorithms for data analysis in a functional style, - recognize how to avoid shuffles and recomputation in Spark, Recommended background: You should have at least one year programming experience. Proficiency with Java or C# is ideal, but experience with other languages such as C/C++, Python, Javascript or Ruby is also sufficient. You should have some familiarity using the command line. This course is intended to be taken after Parallel Programming: https://www.coursera.org/learn/parprog1.
  5. COURS 5

    Functional Programming in Scala Capstone

    Session à venir : avr. 3 — mai 22.
    Engagement
    6 weeks, 4-5 hours/week
    Sous-titres
    English

    À propos du cours

    In the final capstone project you will apply the skills you learned by building a large data-intensive application using real-world data. You will implement a complete application processing several gigabytes of data. This application will show interactive visualizations of the evolution of temperatures over time all over the world. The development of such an application will involve: — transforming data provided by weather stations into meaningful information like, for instance, the average temperature of each point of the globe over the last ten years ; — then, making images from this information by using spatial and linear interpolation techniques ; — finally, implementing how the user interface will react to users’ actions.

Créateurs

  • École polytechnique fédérale de Lausanne

    EPFL is Europe’s most cosmopolitan technical university with students, professors and staff from over 120 nations. A dynamic environment, open to Switzerland and the world, EPFL is centered on its three missions: teaching, research and technology transfer.

  • Martin Odersky

    Martin Odersky

    Professor
  • Dr. Heather Miller

    Dr. Heather Miller

    Research Scientist
  • Prof. Viktor Kuncak

    Prof. Viktor Kuncak

    Associate Professor
  • Dr. Aleksandar Prokopec

    Dr. Aleksandar Prokopec

    Principal Researcher

FAQs

More questions? Visit the Learner Help Center.