We may earn an affiliate commission when you visit our partners.
Erik Meijer

Broadly speaking, functional programming is a style of programming in which the primary method of computation is the application of functions to arguments. Among other features, functional languages offer a compact notation for writing programs, powerful abstraction methods for structuring programs, and a simple mathematical basis that supports reasoning about programs.

Read more

Broadly speaking, functional programming is a style of programming in which the primary method of computation is the application of functions to arguments. Among other features, functional languages offer a compact notation for writing programs, powerful abstraction methods for structuring programs, and a simple mathematical basis that supports reasoning about programs.

Functional languages represent the leading edge of programming language design, and the primary setting in which new programming concepts are introduced and studied. All contemporary programming languages such as Hack/PHP, C#, Visual Basic, F#, C++, JavaScript, Python, Ruby, Java, Scala, Clojure, Groovy, Racket, … support higher-order programming via the concept of closures or lambda expressions.

This course will use Haskell as the medium for understanding the basic principles of functional programming. While the specific language isn't all that important, Haskell is a pure functional language so it is entirely appropriate for learning the essential ingredients of programming using mathematical functions. It is also a relatively small language, and hence it should be easy for you to get up to speed with Haskell.

Once you understand the Why, What and How that underlies pure functional programming and learned to “think like a fundamentalist”, we will apply the concepts of functional programming to “code like a hacker” in mainstream programming languages, using Facebook’s novel Hack language as our main example. This course assumes no prior knowledge of functional programming, but assumes you have at least one year of programming experience in a regular programming language such as Java, .NET, Javascript or PHP.

LICENSE
The course materials of this course are Copyright Delft University of Technology and are licensed under a Creative Commons Attribution-NonCommercial-ShareAlike (CC-BY-NC-SA) 4.0 International License.

What you'll learn

  • Understand the Why, What and How that underlies pure functional programming, and learn to “think like a fundamentalist”
  • Apply the concepts of functional programming to “code like a hacker” in mainstream programming languages
     

What's inside

Learning objectives

  • Apply the concepts of functional programming to “code like a hacker” in mainstream programming languages  
  • Understand the why, what and how that underlies pure functional programming, and learn to “think like a fundamentalist”

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Introduces learners to programming principles using Haskell
Taught by Erik Meijer, who is recognized for his work in programming languages
Provides a strong foundation for beginners in functional programming
Develops skills and concepts that are core for coding in mainstream programming languages
Teaches learners to “think like a fundamentalist” in programming
May require additional software or tools that are not readily available

Save this course

Save Introduction to Functional Programming to your list so you can find it easily later:
Save

Reviews summary

Functional programming foundations

Learners say that while the Introduction to Functional Programming course is challenging, it is also an engaging and fun way to learn the basics of functional programming. Its excellent exercises, labs, and lectures, led by engaging lecturer Erik Meijer, walk learners through the material step-by-step.
The material is presented step-by-step by an engaging professor.
"Prof. Erik Meijer has done a great job of going through the material in this course."
Exercises are top-notch.
"FP101x has excellent exercises, labs and lectures."
"The quizzes and homework are excellent."
Course provides a challenge, but it's worth it for the learning experience.
"Overall I found the course instrumental to improving my understanding of functional programming."

Activities

Coming soon We're preparing activities for Introduction to Functional Programming. These are activities you can do either before, during, or after a course.

Career center

Learners who complete Introduction to Functional Programming will develop knowledge and skills that may be useful to these careers:
Software Developer
Software Developers design and develop new applications and features for a wide range of programs and systems. This course may help lead to success in this career role by building a foundation of knowledge in functional programming, a style of programming that emphasizes the use of mathematical functions as the primary method of computation. By understanding the principles and techniques of functional programming, you will be well-equipped to write robust, efficient, and maintainable software.
Software Engineer
Software Engineers design, develop, and maintain software applications. This course may be useful for those interested in a career as a Software Engineer, as it provides a foundation in functional programming principles and techniques. By understanding the principles and techniques of functional programming, you will be well-equipped to design and develop high-quality, maintainable software applications.
Software Architect
Software Architects design and develop software systems. This course may be useful for those interested in a career as a Software Architect, as it provides a foundation in functional programming principles and techniques. By understanding the principles and techniques of functional programming, you will be well-equipped to design and develop high-quality, scalable software systems.
Computer Scientist
Computer Scientists conduct research in various areas of computer science, including artificial intelligence, machine learning, and computer graphics. This course may be useful for those interested in a career as a Computer Scientist, as it provides a foundation in functional programming principles and techniques. By understanding the principles and techniques of functional programming, you will be well-equipped to conduct research in a variety of areas of computer science.
Web Designer
Web Designers create and maintain websites. This course may be useful for those interested in a career as a Web Designer, as it provides a foundation in functional programming principles and techniques. By understanding the principles and techniques of functional programming, you will be well-equipped to design and develop user-friendly, interactive websites.
Computer Systems Analyst
Computer Systems Analysts analyze, design, and implement computer systems. This course may be useful for those interested in a career as a Computer Systems Analyst, as it provides a foundation in functional programming principles and techniques. By understanding the principles and techniques of functional programming, you will be well-equipped to analyze, design, and implement efficient and effective computer systems.
Information Technology Specialist
Information Technology Specialists manage and maintain computer systems and networks. This course may be useful for those interested in a career as an Information Technology Specialist, as it provides a foundation in functional programming principles and techniques. By understanding the principles and techniques of functional programming, you will be well-equipped to manage and maintain complex computer systems and networks.
Information Security Analyst
Information Security Analysts protect computer systems and networks from security breaches and cyber attacks. This course may be useful for those interested in a career as an Information Security Analyst, as it provides a foundation in functional programming principles and techniques. By understanding the principles and techniques of functional programming, you will be well-equipped to develop and implement secure software systems and networks.
Computer Programmer
Computer Programmers write and test code that makes computers perform specific tasks. This course may be useful for those interested in a career as a Computer Programmer, as it provides a foundation in functional programming principles and techniques. By understanding the principles and techniques of functional programming, you will be well-equipped to write robust, efficient, and maintainable code.
Web Developer
Web Developers design and develop websites and web applications. This course may be useful for those interested in a career as a Web Developer, as it provides a foundation in functional programming principles and techniques. By understanding the principles and techniques of functional programming, you will be well-equipped to develop robust, efficient, and maintainable web applications.
Data Analyst
Data Analysts collect, analyze, and interpret data to provide insights for businesses. This course may be useful for those interested in a career as a Data Analyst, as it provides a foundation in functional programming principles and techniques. By understanding the principles and techniques of functional programming, you will be well-equipped to analyze and interpret data accurately and efficiently.
Database Administrator
Database Administrators manage and maintain databases. This course may be useful for those interested in a career as a Database Administrator, as it provides a foundation in functional programming principles and techniques. By understanding the principles and techniques of functional programming, you will be well-equipped to manage and maintain complex databases.
Computer Hardware Engineer
Computer Hardware Engineers design and develop computer hardware, including processors, memory, and storage devices. This course may be useful for those interested in a career as a Computer Hardware Engineer, as it provides a foundation in functional programming principles and techniques. By understanding the principles and techniques of functional programming, you will be well-equipped to design and develop efficient and reliable computer hardware.
Quality Assurance Engineer
Quality Assurance Engineers test and evaluate software and hardware to ensure that they meet quality standards. This course may be useful for those interested in a career as a Quality Assurance Engineer, as it provides a foundation in functional programming principles and techniques. By understanding the principles and techniques of functional programming, you will be well-equipped to test and evaluate software and hardware effectively.
Data Scientist
Data Scientists use their knowledge of mathematics, statistics, and computing to extract insights from data. This course may be useful for those interested in a career as a Data Scientist, as it provides a strong foundation in the mathematical underpinnings of programming and can help build a framework for understanding statistical techniques used in data analysis.

Reading list

We haven't picked any books for this reading list yet.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser