What Is Programming? And How To Get Started
January 28, 2025
Article · 6 min read
This course is part of Functional Programming in Scala Specialization
Instructor: Martin Odersky
217,359 already enrolled
Included with
(8,249 reviews)
Recommended experience
Intermediate level
At least one year of programming (in any language)
(8,249 reviews)
Recommended experience
Intermediate level
At least one year of programming (in any language)
Understand the principles of functional programming
Write purely functional programs, using recursion, pattern matching, and higher-order functions
Design immutable data structures
Combine functional programming with objects and classes
Add to your LinkedIn profile
31 assignments
Add this credential to your LinkedIn profile, resume, or CV
Share it on social media and in your performance review
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.
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
8 videos7 readings7 assignments3 programming assignments
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.
8 videos5 assignments2 programming assignments
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.
6 videos4 assignments2 programming assignments
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.
7 videos6 assignments2 programming assignments
This week we dive into Lists, the most commonly-used data structure in Scala.
6 videos5 assignments
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.
7 videos4 assignments2 programming assignments
We asked all learners to give feedback on our instructors based on the quality of their teaching style.
École Polytechnique Fédérale de Lausanne
Course
École Polytechnique Fédérale de Lausanne
Specialization
École Polytechnique Fédérale de Lausanne
Course
École Polytechnique Fédérale de Lausanne
Course
8,249 reviews
83.54%
13.51%
1.69%
0.66%
0.56%
Showing 3 of 8249
Reviewed on Jul 12, 2016
The course is very good and labs are sometimes difficult but useful. However some material was not covered, and it is always like that, but still it can include iterators and some other chapters
Reviewed on Oct 8, 2016
Really good explanation by the instructor. Good assignments. The assignments gave a good insights into functional programming. I loved the way the problems were decomposed into neat smaller functions.
Reviewed on Aug 13, 2017
Great introduction to the principles of functional programming! Easy to follow lectures. Assignments challenging at times! Important: It feels like the assignment for week 4 should be after week 5.
Unlimited access to 10,000+ world-class courses, hands-on projects, and job-ready certificate programs - all included in your subscription
Earn a degree from world-class universities - 100% online
Upskill your employees to excel in the digital economy
This course covers the latest stable version of Scala. You can find the legacy version of the same course based on Scala 2 here.
Access to lectures and assignments depends on your type of enrollment. If you take a course in audit mode, you will be able to see most course materials for free. To access graded assignments and to earn a Certificate, you will need to purchase the Certificate experience, during or after your audit. If you don't see the audit option:
The course may not offer an audit option. You can try a Free Trial instead, or apply for Financial Aid.
The course may offer 'Full Course, No Certificate' instead. This option lets you see all course materials, submit required assessments, and get a final grade. This also means that you will not be able to purchase a Certificate experience.
When you enroll in the course, you get access to all of the courses in the Specialization, and you earn a certificate when you complete the work. Your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile. If you only want to read and view the course content, you can audit the course for free.
If you subscribed, you get a 7-day free trial during which you can cancel at no penalty. After that, we don’t give refunds, but you can cancel your subscription at any time. See our full refund policy.
Yes. In select learning programs, you can apply for financial aid or a scholarship if you can’t afford the enrollment fee. If fin aid or scholarship is available for your learning program selection, you’ll find a link to apply on the description page.