EMBER_CLI_FASTBOOT_BODY

Python. Functional Programming

About the course

Functional programming is a programming paradigm -- that is, a style of building the structure and elements of computer programs in some distinct way. In some sense, any programming style may be characterized by the way that abstractions are built within that style. For example, the widespread Object Oriented Programming (OOP) paradigm is about building data-based abstractions, making "smart data" in a way, treating the computation as a process of interactions within a system of complex entities called objects. Functional programming is about building procedure-based abstractions, treating the computation as a chain of evaluations of functions. These functions are somewhat close to the mathematical ones. Code written in functional manner emphasizes reliability, reusability, abstractness.

A style of designing a program is essentially a style of designing solutions for problems. If you are not familiar with the functional manner of problem solving, exploring it can teach you a lot of patterns, approaches, and tools for program design. You should be warned, however, that no particular approach may be thought of as "the silver bullet". But you can still successively combine various techniques, including functional programming techniques, to approach better results.

I invite you to discover the basic tools that will allow you to implement some of the functional programming techniques in a popular multi-paradigm language called Python. Though Python is more inclined towards Object Oriented Programming, it still is a multi-paradigm language and writing some elements of the code in a functional manner may sometimes give a considerable amount of advantages and it is possible if desired.


Instructors

  1. User picture
    Vitaliy Polshkov
    Mathematics & Mechanics Faculty of St. Petersburg State University, Computer Science Center, former analytics intern at Yandex
    Currently studying at St. Petersburg State University (Mathematics & Mechanics Faculty) and Computer Science Center. Academic interests are primarily in probability theory. I'm also fond of algorithms, algebra, functional programming and curious about modern educational approaches such as MOOCs.

Reviews

Petr Kunilov July 6, 2018 link
5
Very useful short intensive course allowing to learn from scratch all basic concepts of functional programming whith different kinds of exercises to practice all covered material. Besides, it gives a good chance to learn standard python libraries related to the topic like itertools and functools. However, some tasks considered in lectures are more complicated than tasks in practice part, for example a function creating permutations. So I would recommend to add more practice with second level of complexity. Anyway, great course to get started or revise things in case of practice absence.
Joël Duet March 21, 2018 link
5
Excellent introduction to functional programming. Among the strong features : clear and structured (texts are easy to read, videos focus on the main points). Moreover, the scope is rich (lots of examples, different paradigms are presented : classes, decorators ....) and feedbacks are useful (good reactivity from the author, competitive spirit from the students). The weak features are hard to find ! but maybe some topics are missing (monads, fixpoint operator, some examples from https://wiki.haskell.org/Blow_your_mind) and some practice assignment are ambiguous sometimes (n° 2.9 for instance).
Tamas Kurics February 19, 2018 link
5
Great course, I wish I had made it myself :). This is a course about functional programming concepts in Python. The course is designed for those programmers who are familiar with Python and some of its standard libraries, but rarely used generators and methods from the itertools and functools libraries so far. With the help of less standard libraries one will be able to write purely functional code using higher order functions, partial application and compositions, since in Python functions are first class citizens. Some familiarity with basic FP-principles are required and I can imagine that programmers with only imperative background (C++, Java) might have hard times to decipher what's going on. The practical exercises are fun to solve, too. Great stuff.
5 All reviews

The course is about functional elements available in Python and their usage

Workload:
The core of the course could be covered in about an hour
Expected time to complete:
10 hours
Language:
English
Certificate:
Not issuing

About the course

Functional programming is a programming paradigm -- that is, a style of building the structure and elements of computer programs in some distinct way. In some sense, any programming style may be characterized by the way that abstractions are built within that style. For example, the widespread Object Oriented Programming (OOP) paradigm is about building data-based abstractions, making "smart data" in a way, treating the computation as a process of interactions within a system of complex entities called objects. Functional programming is about building procedure-based abstractions, treating the computation as a chain of evaluations of functions. These functions are somewhat close to the mathematical ones. Code written in functional manner emphasizes reliability, reusability, abstractness.

A style of designing a program is essentially a style of designing solutions for problems. If you are not familiar with the functional manner of problem solving, exploring it can teach you a lot of patterns, approaches, and tools for program design. You should be warned, however, that no particular approach may be thought of as "the silver bullet". But you can still successively combine various techniques, including functional programming techniques, to approach better results.

I invite you to discover the basic tools that will allow you to implement some of the functional programming techniques in a popular multi-paradigm language called Python. Though Python is more inclined towards Object Oriented Programming, it still is a multi-paradigm language and writing some elements of the code in a functional manner may sometimes give a considerable amount of advantages and it is possible if desired.


Requirements

You should be familiar with the basics of Python programming (variables, data types, if-else statements, loops, functions, exception handling, objects, methods and properties). It is also assumed you have at least a bit of experience in Python programming.

Target audience

Those who are already familiar with basics of Python programming and want to expand the arsenal of programming techniques

This course is entirely free. All content is available now.