We may earn an affiliate commission when you visit our partners.
Course image
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, Tumblr 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, Tumblr 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 programming projects as homework assignments.

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.

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 and object-oriented paradigms in a practical context
Taught by renowned Scala expert Martin Odersky, the inventor of the language
Develops a solid foundation in functional programming principles and techniques
Applies functional programming concepts to real-world scenarios, making the learning practical
Requires some prior programming experience, ideally with Java or C#
Involves hands-on projects and assignments to reinforce learning

Save this course

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

Reviews summary

Foundational yet challenging scala fp

According to learners, this course offers a strong foundation in functional programming with Scala, with one recent review highlighting it as a well-structured and essential introduction featuring clear explanations from an excellent instructor. However, some earlier feedback points to assignments that were difficult to solve and a perceived lack of forum support, indicating potential areas of challenge or past issues. The programming projects are noted as challenging but rewarding by some, yet impossible by others, suggesting a diverse experience depending on background or timing.
While some older concerns existed, the course appears to remain relevant and valuable.
"This course is essential for anyone who wants to learn functional programming..."
"I gained a comprehensive understanding of functional programming in Scala that I can apply."
"It is not updated, not even to Scala 2.12."
The course content is strong, delivered by a highly regarded instructor.
"This is definitely one of the best introductory courses for functional programming in Scala. The course is very good overview..."
"The instructor (Martin Odersky) is excellent and I really enjoyed his teaching style."
"The course is well-structured and the explanations are clear."
Assignments are a significant hurdle, with varying experiences on difficulty and support.
"Assignments are impossible to solve and you don't get any help from the forum."
"The programming projects given as homework assignments are challenging but rewarding."
"Assignments are sometimes hard and I had to spend a significant amount of time on them."
"The TA's help for assignments, but the forums are dead."

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 (Scala 2 version) with these activities:
Review basic programming fundamentals
Revisit essential programming concepts, such as data types, variables, and control flow, to strengthen your foundation and make learning more efficient.
Browse courses on Programming Fundamentals
Show steps
  • Go through online tutorials or documentation on programming fundamentals.
  • Solve practice problems on coding platforms to test your understanding.
  • Review your notes and textbooks from previous programming courses.
Read 'Scala for the Impatient'
Gain a comprehensive foundation in Scala by reading 'Scala for the Impatient'. This book provides a thorough introduction to essential concepts, syntax, and best practices.
View Core Java, Volume I on Amazon
Show steps
  • Obtain a copy of 'Scala for the Impatient'.
  • Read through each chapter, taking notes and highlighting key concepts.
  • Solve the practice exercises provided in the book.
Practice solving Scala exercises
Engage in regular practice by solving Scala exercises and challenges to reinforce your understanding of syntax, concepts, and problem-solving techniques.
Show steps
  • Find online resources or textbooks with Scala exercises.
  • Set aside dedicated time for practice and consistently solve exercises.
  • Review solutions and identify areas for improvement.
Five other activities
Expand to see all activities and additional details
Show all eight activities
Participate in Scala study groups
Connect with fellow learners through study groups to discuss concepts, share knowledge, and collaborate on projects. This social learning environment can enhance your understanding and motivation.
Show steps
  • Join or create a study group with other Scala learners.
  • Regularly participate in group discussions and problem-solving sessions.
  • Share your knowledge and assist other members of the group.
Explore advanced Scala concepts
Seek out in-depth tutorials and resources to dive deeper into advanced Scala topics, such as type systems, concurrency, and functional design patterns.
Show steps
  • Identify specific advanced Scala concepts you want to explore.
  • Search for reputable online tutorials or video courses on those topics.
  • Follow the tutorials, take notes, and try out the examples.
Develop a small Scala application
Apply your Scala skills by building a functional Scala application. This hands-on project will solidify your understanding and provide a practical demonstration of your abilities.
Show steps
  • Brainstorm and choose a small application idea that aligns with the course concepts.
  • Design the application's architecture and functionality.
  • Implement the application using Scala and appropriate libraries.
  • Test and debug the application to ensure it meets the requirements.
Attend Scala workshops or conferences
Immerse yourself in the Scala ecosystem by participating in workshops or conferences. These events provide opportunities to connect with experts, learn about cutting-edge advancements, and enhance your Scala knowledge.
Show steps
  • Research upcoming Scala workshops or conferences.
  • Register for an event that aligns with your interests and skill level.
  • Attend the event, actively participate in sessions, and network with other attendees.
Contribute to Scala open-source projects
Immerse yourself in the Scala community by contributing to open-source projects. This practical experience will expose you to real-world Scala codebases, development practices, and collaborative teamwork.
Show steps
  • Identify Scala open-source projects that interest you.
  • Review the project's documentation and codebase.
  • Identify areas where you can contribute and submit pull requests.
  • Collaborate with project maintainers to improve the codebase.

Career center

Learners who complete Functional Programming Principles in Scala (Scala 2 version) will develop knowledge and skills that may be useful to these careers:
Software Engineer
Scala, the topic of this course, is a language used for many business applications, such as Apache Spark, Kafka, and Akka. It also provides the core infrastructure for sites including Twitter, Tumblr, and Coursera. This means that Software Engineers who learn Scala will become valuable to companies across industries. Additionally, Scala is considered to be in the top 10 programming languages, which will help any Software Engineer's resume stand out.
Data Analyst
Data Analysts work with structured data to find patterns and draw insights that help businesses. Scala is a popular programming language for working with data, so this course will teach learners the foundations of Scala so that they can solve real-world business problems.
Backend Developer
Scala is a language used to build server-side applications, which is what Backend Developers work on. This course will teach the basics of Scala, including expressions, evaluation, conditionals, functions, and recursion.
Data Scientist
Functional programming is important to a Data Scientist. This course will teach learners to reason about functional programs, cover proofs of invariants, and the tracing of execution symbolically. Those are advanced topics that are relevant to professionals working with big data sets, especially those working with machine learning models.
Software Architect
Software Architects need to have a solid foundation in programming, including functional programming. This course will help them learn the basics of Scala, including expressions, evaluation, conditionals, functions, and recursion.
Web Developer
Scala can be used to build web applications, and this course will teach Web Developers its basics, such as expressions, evaluation, conditionals, functions, and recursion.
Database Administrator
Database Administrators need to have a solid foundation in programming, including functional programming. This course will help them learn the basics of Scala, which they can then use to work with databases.
Systems Analyst
Systems Analysts need to have a solid foundation in programming, and this course will teach them the basics of Scala, including expressions, evaluation, conditionals, functions, and recursion.
Mobile Developer
While Scala is not as commonly used for mobile development, it is still possible to build mobile apps with it. This course will teach the basics of Scala, including expressions, evaluation, conditionals, functions, and recursion, which will give Mobile Developers a strong foundation in programming.
Product Manager
Product Managers need to be able to understand the technical specifications of any software their team is working on. This course will help Product Managers build a solid foundation in Scala so that they can better understand the way that products' features are built.
Computer Scientist
Computer Scientists need to have a strong foundation in programming, including functional programming. This course will help them learn the basics of Scala, which they can then use to work with databases.
Information Security Analyst
Information Security Analysts need to have a strong foundation in programming, and this course will teach them the basics of Scala, including expressions, evaluation, conditionals, functions, and recursion.
Technical Writer
Technical Writers need to be able to understand the technical specifications of any software they are writing about. This course will help Technical Writers build a solid foundation in Scala so that they can better understand the way that software works.
Web Designer
While Web Designers do not typically need to know how to code, having a foundation in programming can be helpful. This course will teach Web Designers the basics of Scala, including expressions, evaluation, conditionals, functions, and recursion.
Graphic Designer
While Graphic Designers do not typically need to know how to code, having a foundation in programming can be helpful. This course will teach Graphic Designers the basics of Scala, including expressions, evaluation, conditionals, functions, and recursion.

Reading list

We've selected nine 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 (Scala 2 version).
Comprehensive guide to functional programming in Scala. It covers a wide range of topics, from basic syntax to advanced concepts such as monads and type classes.
Collection of recipes for solving common programming problems in Scala. It covers a wide range of topics, from basic syntax to advanced concepts such as concurrency and parallelism.
Practical guide to using functional and reactive programming techniques to build robust and scalable domain models. It covers a wide range of topics, from basic concepts to advanced techniques such as event sourcing and CQRS.
Fast-paced introduction to Scala. It covers the basics of the language, as well as more advanced topics such as functional programming and object-oriented programming.
Practical guide to learning Scala programming. It covers a wide range of topics, from basic syntax to advanced concepts such as functional programming and object-oriented programming.
Gentle introduction to functional programming in Scala. It covers the basics of the language, as well as more advanced topics such as recursion and pattern matching.
Is an introduction to Scala programming. It covers the basics of the language, as well as more advanced topics such as functional programming and object-oriented programming.
Gentle introduction to Scala programming. It covers the basics of the language, as well as more advanced topics such as functional programming and object-oriented 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