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
Higher Order Functions
This week, we'll learn about functions as first-class values, and higher order functions. We'll also learn about Scala's syntax and how it's formally defined. Finally, we'll learn about methods, classes, and data abstraction through the design of a data structure for rational numbers.
Data and Abstraction
This week, we'll cover traits, and we'll learn how to organize classes into hierarchies. We'll cover the hierarchy of standard Scala types, and see how to organize classes and traits into packages. Finally, we'll touch upon the different sorts of polymorphism in Scala.
Types and Pattern Matching
This week we'll learn about the relationship between functions and objects in Scala; functions *are* objects! We'll zoom in on Scala's type system, covering subtyping and generics, and moving on to more advanced aspects of Scala's type system like variance. Finally, we'll cover Scala's most widely used data structure, Lists, and one of Scala's most powerful tools, pattern matching.
Lists
This week we dive into Lists, the most commonly-used data structure in Scala.
Collections
After a deep-dive into Lists, this week we'll explore other data structures; vectors, maps, ranges, arrays, and more. We'll dive into Scala's powerful and flexible for-comprehensions for querying data.

Good to know

Know what's good
, what to watch for
, 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

Save Functional Programming Principles in Scala (Scala 2 version) to your list so you can find it easily later:
Save

Reviews summary

Knowledgeable scala foundations

Learners say this course offers a clear and accessible introduction to functional programming with Scala. Theories are well-balanced with practical applications, and the course is considered a valuable resource for understanding Scala's capabilities and exploring functional programming. Martin, the course's creator, is highly praised for his expertise and ability to teach complex topics effectively.
The course offers a clear and accessible introduction to functional programming.
""Functional Programming Principles in Scala" (Scala 2 version) is a remarkable course that deserves a resounding 5-star rating. It offers a clear and accessible introduction to functional programming, perfectly balancing theory and practice."
This course is a valuable resource for anyone looking to explore functional programming.
""Functional Programming Principles in Scala" (Scala 2 version) is a remarkable course that deserves a resounding 5-star rating. It offers a clear and accessible introduction to functional programming, perfectly balancing theory and practice."
Theories are well-balanced with practical applications.
""Functional Programming Principles in Scala" (Scala 2 version) is a remarkable course that deserves a resounding 5-star rating. It offers a clear and accessible introduction to functional programming, perfectly balancing theory and practice."
Martin is an excellent instructor who teaches complex topics effectively.
"The course gives a much deeper understanding than a basic course on Scala. It's from the Scala creator himself.Martin is the best"
"I​t was excellent learning experience! Since there are less learning materials and courses about functional programming, especially scala, compared to others, I could easily and beneficially improve my development skill through this course."

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.
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.
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.
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.
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.
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.
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.
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.
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

Here are nine courses similar to Functional Programming Principles in Scala (Scala 2 version).
Functional Programming Principles in Scala
Most relevant
Functional Program Design in Scala (Scala 2 version)
Most relevant
Functional Program Design in Scala
Most relevant
Parallel programming (Scala 2 version)
Most relevant
Big Data Analysis with Scala and Spark (Scala 2 version)
Most relevant
Big Data Analysis with Scala and Spark
Most relevant
Scala 2: The Big Picture
Most relevant
Scala 2 Methods and Functions
Most relevant
Effective Programming in Scala
Most relevant
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 - 2024 OpenCourser