We may earn an affiliate commission when you visit our partners.
Martin Odersky

Functional programming is becoming increasingly widespread in industry. This trend is driven by the adoption of Scala as the main programming language for many applications. Scala fuses functional and object-oriented programming in a practical package. It interoperates seamlessly with both Java and Javascript. Scala is the implementation language of many important frameworks, including Apache Spark, Kafka, and Akka. It provides the core infrastructure for sites such as Twitter, Netflix, Zalando, and also Coursera.

Read more

Functional programming is becoming increasingly widespread in industry. This trend is driven by the adoption of Scala as the main programming language for many applications. Scala fuses functional and object-oriented programming in a practical package. It interoperates seamlessly with both Java and Javascript. Scala is the implementation language of many important frameworks, including Apache Spark, Kafka, and Akka. It provides the core infrastructure for sites such as Twitter, Netflix, Zalando, and also Coursera.

In this course, you will discover the elements of the functional programming style and learn how to apply them usefully in your daily programming tasks, such as modeling business domains or implementing business logic. You will also develop a solid foundation for reasoning about functional programs, by touching upon proofs of invariants and the tracing of execution symbolically.

The course is hands-on; most units introduce short programs that serve as illustrations of important concepts and invite you to play with them, modifying and improving them. The course is complemented by a series of programming projects as homework assignments.

Recommended background: You should have at least one year of 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 background in mathematics (e.g., algebra, logic, proof by induction). Last, you should have some familiarity with using the command line.

Enroll now

What's inside

Syllabus

Getting Started + Functions & Evaluation
Get up and running with Scala on your computer. Complete an example assignment to familiarize yourself with our unique way of submitting assignments. In this week, we'll learn the difference between functional imperative programming. We step through the basics of Scala; covering expressions, evaluation, conditionals, functions, and recursion
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Explores functional programming, which is standard in Scala industry applications
Teaches functional programming principles and their practical uses
Develops a solid foundation for reasoning about functional programs through proofs of invariants and symbolic execution tracing
Taught by Martin Odersky, who is recognized for his work in Scala
Provides hands-on experience through short programs and programming projects
Recommended for experienced programmers who are proficient in Java or C#

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Scala functional programming foundation

According to students, this course provides a solid foundation in functional programming with Scala. Many praise the clear lectures and brilliant instructor. Assignments are often cited as challenging yet rewarding, reinforcing concepts. However, learners highlight it's not for FP beginners, requires strong prerequisites, with a quick pace. Some struggled with assignment difficulty and found auto-grader feedback vague. Certain later topics were perceived as rushed.
Clear and insightful teaching
"Prof. Odersky's lectures are clear and insightful."
"The instructor is top-notch."
"Prof. Odersky is brilliant and makes complex ideas accessible."
"Prof. Odersky is a great teacher."
Provides strong core understanding
"Provides a solid foundation for functional programming concepts and how to apply them in Scala."
"It provides the core infrastructure for sites such as Twitter, Netflix..."
"The core concepts are taught effectively."
"A solid introduction to FP in Scala."
Feedback sometimes vague
"The auto-grader for assignments can be frustrating sometimes with vague error messages."
"The auto-grader feedback could be improved."
Later topics needed more depth
"Some of the later assignments, especially involving lists and collections, felt a bit rushed and could have used more examples or clearer explanations."
"I found the explanations around variance and some advanced type system concepts a bit confusing and had to rely on external resources."
Effective but sometimes difficult
"The assignments were challenging but very rewarding and really solidified the concepts."
"The programming exercises complement the lectures perfectly."
"The assignments were too hard and the lectures didn't feel like enough preparation."
"Assignments are relevant, although some feel very difficult."
"The programming assignments are the highlight, requiring deep thought and reinforcing the principles."
Not for beginners, quick pace
"The course is okay, but definitely not for beginners to programming or FP."
"You really need that 'one year of experience' and ideally some prior FP exposure."
"The pace can be quick..."
"Found this course very difficult."
"...struggled a lot. Maybe my background wasn't strong enough despite meeting the prerequisites."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Functional Programming Principles in Scala with these activities:
Read "Scala Cookbook"
Review key concepts and best practices in Scala programming to lay a strong foundation for the course.
Show steps
  • Purchase or borrow the book.
  • Read the introduction and first two chapters to familiarize yourself with the basics of Scala.
  • Complete one to two exercises from each chapter to practice applying the concepts.
  • Take notes on important concepts and make connections to your current knowledge of programming.
Build a Tic-Tac-Toe game in Scala
Apply functional programming principles to design and implement a classic game, solidifying understanding of Scala concepts.
Show steps
  • Design the game logic and classes.
  • Implement the game loop.
  • Add user input handling.
  • Test and debug the game.
Solve Scala coding challenges on LeetCode
Enhance problem-solving skills and gain practical experience in applying Scala to solve coding challenges.
Browse courses on Algorithms
Show steps
  • Select a set of LeetCode problems relevant to the course topics.
  • Attempt to solve the problems on your own.
  • Check your solutions against the provided test cases or community discussions.
  • Review your solutions and identify areas for improvement.
Three other activities
Expand to see all activities and additional details
Show all six activities
Attend a workshop on Scala's Interoperability with Java and JavaScript
Gain hands-on experience in integrating Scala with other popular programming languages used in industry.
Browse courses on Java Interoperability
Show steps
  • Identify and register for a workshop on Scala interoperability.
  • Attend the workshop and actively participate in the exercises.
  • Experiment with the concepts covered in the workshop in your own projects.
Write a blog post on Higher Order Functions in Scala
Deepen understanding of higher order functions by explaining and providing examples in a written format.
Browse courses on Higher Order Functions
Show steps
  • Choose a specific aspect of higher order functions to focus on.
  • Research and gather relevant information from the course materials and external sources.
  • Write an outline of the blog post.
  • Draft the blog post, including examples and explanations.
  • Review and edit the blog post for clarity and accuracy.
Design a RESTful API for a library management system
Apply Scala's capabilities for building web applications to design and document an API for a real-world scenario.
Browse courses on RESTful API
Show steps
  • Define the requirements and use cases for the API.
  • Design the data model and API endpoints.
  • Create a prototype or mock implementation of the API.
  • Document the API using OpenAPI or Swagger.

Career center

Learners who complete Functional Programming Principles in Scala will develop knowledge and skills that may be useful to these careers:
Functional Programmer
Functional Programmers work in a programming style that focuses on the mathematical evaluation of expressions. They have a deep understanding of how functions work and how to apply them in practical applications. This course in 'Functional Programming Principles in Scala' will provide you with the foundation you need to become a successful Functional Programmer. You will learn the basics of Scala, including expressions, evaluation, conditionals, functions, and recursion. You will also learn about higher order functions, data abstraction, types, and pattern matching. This course is hands-on, with most units introducing short programs that serve as illustrations of important concepts. You will also complete a series of programming projects as homework assignments.
Software Engineer
Software Engineers apply the principles of computer science and software design to the creation of computer programs. They use their knowledge of programming languages, algorithms, and data structures to design, develop, test, and maintain software systems. This course in 'Functional Programming Principles in Scala' will help you build a strong foundation in functional programming, which is becoming increasingly widespread in industry. You will learn the elements of the functional programming style and how to apply them usefully in your daily programming tasks. You will also develop a solid foundation for reasoning about functional programs. Functional programming is a valuable skill for Software Engineers to have, as it can help them write more efficient and maintainable code.
Data Scientist
Data Scientists use their knowledge of statistics, machine learning, and data mining to extract insights from data. They use this information to help businesses make better decisions. This course in 'Functional Programming Principles in Scala' will help you build a strong foundation in functional programming, which is a valuable skill for Data Scientists to have. Functional programming can help Data Scientists write more efficient and maintainable code. It can also help them to better understand the data they are working with.
Web Developer
Web Developers design and develop websites. They use their knowledge of HTML, CSS, and JavaScript to create websites that are both visually appealing and functional. This course in 'Functional Programming Principles in Scala' may be useful for Web Developers who want to learn more about functional programming. Functional programming can help Web Developers write more efficient and maintainable code. It can also help them to better understand the data they are working with.
Computer Scientist
Computer Scientists conduct research on the theory and practice of computing. They develop new algorithms and data structures, and they design new programming languages. This course in 'Functional Programming Principles in Scala' may be useful for Computer Scientists who want to learn more about functional programming. Functional programming is a valuable skill for Computer Scientists to have, as it can help them to write more efficient and maintainable code.
Quantitative Analyst
Quantitative Analysts use their knowledge of mathematics, statistics, and computer science to develop and implement mathematical models to help businesses make better decisions. This course in 'Functional Programming Principles in Scala' may be useful for Quantitative Analysts who want to learn more about functional programming. Functional programming can help Quantitative Analysts write more efficient and maintainable code. It can also help them to better understand the data they are working with.
Systems Analyst
Systems Analysts design, develop, and implement computer systems. They use their knowledge of computer hardware and software to create systems that meet the needs of businesses. This course in 'Functional Programming Principles in Scala' may be useful for Systems Analysts who want to learn more about functional programming. Functional programming can help Systems Analysts write more efficient and maintainable code. It can also help them to better understand the data they are working with.
Database Administrator
Database Administrators are responsible for the design, implementation, and maintenance of databases. They use their knowledge of database management systems to ensure that databases are reliable, efficient, and secure. This course in 'Functional Programming Principles in Scala' may be useful for Database Administrators who want to learn more about functional programming. Functional programming can help Database Administrators write more efficient and maintainable code. It can also help them to better understand the data they are working with.
Technical Writer
Technical Writers create documentation for software and hardware products. They use their knowledge of technical writing principles and software development to create documentation that is clear, concise, and accurate. This course in 'Functional Programming Principles in Scala' may be useful for Technical Writers who want to learn more about functional programming. Functional programming can help Technical Writers write more efficient and maintainable code. It can also help them to better understand the data they are working with.
Project Manager
Project Managers plan, organize, and execute projects. They use their knowledge of project management principles and software development to ensure that projects are completed on time, within budget, and to the required quality. This course in 'Functional Programming Principles in Scala' may be useful for Project Managers who want to learn more about functional programming. Functional programming can help Project Managers write more efficient and maintainable code. It can also help them to better understand the data they are working with.
Business Analyst
Business Analysts analyze business processes and identify opportunities for improvement. They use their knowledge of business analysis techniques and software development to develop solutions that meet the needs of businesses. This course in 'Functional Programming Principles in Scala' may be useful for Business Analysts who want to learn more about functional programming. Functional programming can help Business Analysts write more efficient and maintainable code. It can also help them to better understand the data they are working with.
Software Tester
Software Testers test software applications to find and fix bugs. They use their knowledge of software testing principles and software development to develop test cases that will thoroughly test software applications. This course in 'Functional Programming Principles in Scala' may be useful for Software Testers who want to learn more about functional programming. Functional programming can help Software Testers write more efficient and maintainable code. It can also help them to better understand the data they are working with.
Network Administrator
Network Administrators design, implement, and maintain computer networks. They use their knowledge of networking principles and software development to create networks that are reliable, efficient, and secure. This course in 'Functional Programming Principles in Scala' may be useful for Network Administrators who want to learn more about functional programming. Functional programming can help Network Administrators write more efficient and maintainable code. It can also help them to better understand the data they are working with.
Database Engineer
Database Engineers design, implement, and maintain databases. They use their knowledge of database management systems and software development to create databases that are reliable, efficient, and secure. This course in 'Functional Programming Principles in Scala' may be useful for Database Engineers who want to learn more about functional programming. Functional programming can help Database Engineers write more efficient and maintainable code. It can also help them to better understand the data they are working with.
Security Analyst
Security Analysts analyze security risks and develop security solutions. They use their knowledge of security principles and software development to develop security solutions that protect computer systems and networks from unauthorized access. This course in 'Functional Programming Principles in Scala' may be useful for Security Analysts who want to learn more about functional programming. Functional programming can help Security Analysts write more efficient and maintainable code. It can also help them to better understand the data they are working with.

Reading list

We've selected 23 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Functional Programming Principles in Scala.
Provides an in-depth look at advanced Scala topics, including functional programming concepts. It is written for experienced Scala programmers.
Provides a comprehensive overview of functional programming in Scala. It covers the core concepts of functional programming, such as immutability, higher-order functions, and recursion. The book also provides a detailed introduction to Scala's type system and its support for functional programming.
Provides a deep dive into the Scala type system. It covers everything from the basics of the type system to advanced topics such as variance and type inference. This book great resource for anyone who wants to learn more about the Scala type system.
Provides a comprehensive overview of advanced Scala programming. It covers topics such as type classes, implicits, and macros. The book is ideal for Scala developers who want to learn more about the advanced features of the language.
Provides a practical guide to functional and reactive domain modeling in Scala. It covers the core concepts of functional and reactive programming, and it shows how to use these concepts to build scalable and maintainable applications. The book is ideal for Scala developers who want to learn more about functional and reactive programming.
Provides a comprehensive overview of functional programming in Scala. It covers the basics of functional programming, as well as more advanced topics such as monads and type classes. This book great resource for anyone who wants to learn more about functional programming in Scala.
Provides a comprehensive overview of functional programming in Scala. It covers the basics of functional programming, as well as more advanced topics such as monads and type classes. This book great resource for anyone who wants to learn more about functional programming in Scala.
Provides an introduction to type theory, which is the mathematical foundation of functional programming. It is helpful for programmers who want to understand the theoretical underpinnings of functional programming.
Provides an introduction to logic, which is the mathematical foundation of functional programming. It is helpful for programmers who want to understand the theoretical underpinnings of functional programming.
Provides an introduction to category theory, which is the mathematical foundation of functional programming. It is helpful for programmers who want to understand the theoretical underpinnings of functional programming.
Provides an introduction to Scala for web development. It covers the basics of the language, as well as more advanced topics such as web frameworks and web services. This book great resource for anyone who wants to learn more about Scala for web development.
Fast-paced introduction to Scala. It covers the basics of the language, including its syntax, type system, and object-oriented features. The book also provides a number of examples of how to use Scala to solve real-world problems.
Provides a gentle introduction to functional programming in Scala. It covers the core concepts of functional programming, such as immutability, higher-order functions, and recursion. The book also provides a number of examples of how to use Scala to solve real-world problems.
Practical guide to Scala for Java developers. It covers the differences between Scala and Java, and it shows how to use Scala to solve common programming problems. The book is ideal for Java developers who want to learn Scala.
Provides a practical guide to using Scala for big data analysis. It covers the core concepts of big data analysis, such as data ingestion, data processing, and data visualization. The book is ideal for Scala developers who want to learn more about big data analysis.
Provides an introduction to Scala for machine learning. It covers the basics of the language, as well as more advanced topics such as data manipulation and machine learning algorithms. This book great resource for anyone who wants to learn more about Scala for machine learning.
Provides an introduction to Scala. It covers the basics of the language, as well as more advanced topics such as concurrency and Akka. This book great resource for anyone who wants to learn more about Scala.
Explores the practical applications of functional programming in real-world software development. It covers a wide range of topics, from concurrency to testing to web development.
Provides an introduction to functional programming concepts using C#. It is helpful for programmers who want to learn functional programming without having to learn a new language.
Provides an introduction to functional programming concepts using Java. It is helpful for programmers who want to learn functional programming without having to learn a new language.
Gentle introduction to Scala. It covers the basics of the language, including its syntax, type system, and object-oriented features. The book is ideal for beginners who have no prior experience with Scala.
Provides a gentle introduction to functional programming concepts. It is written for programmers with no prior experience in functional programming.

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