Course

Effective Programming in Scala

École Polytechnique Fédérale de Lausanne

Join the Effective Programming in Scala course and embark on a journey to master the expressive and versatile Scala language. This comprehensive course focuses on honing your programming skills by embracing both functional and object-oriented programming. Through a series of hands-on modules, you will learn to model business domains, manipulate data, handle errors, and run parallel tasks using Scala idioms.

Throughout the course, you will delve into fundamental concepts, best practices, and common patterns utilized in real-world applications. Each module is designed to provide in-depth insights, with approximately 1h30 of video lectures every week, complemented by quizzes and graded assignments inspired by real-world scenarios. By the end of the course, you will be adept at writing high-quality, scalable code that can be applied to large applications.

  • Master Scala idioms to model business domains and implement business logic
  • Understand fundamental language concepts and read Scala codebases effectively
  • Learn best practices, common patterns, and effective asynchronous computation handling
  • Gain proficiency in manipulating recursive data structures and handling failures

Certificate Available ✔

Get Started / More Info
Effective Programming in Scala
Course Modules

The course comprises six modules, each focusing on specific skills and concepts. Gain proficiency in domain modeling, standard library usage, build tools, reasoning about code, type-directed programming, error handling, and concurrent programming.

Getting Started, Basics, Domain Modeling

Module 1: Getting Started, Basics, Domain Modeling

This module provides a comprehensive introduction to Scala, covering elements of programs, types, methods, parameters, conditions, and domain modeling. Additionally, you'll explore case classes, sealed traits, enumerations, and tools setup to kickstart your programming journey with Scala. The module emphasizes practical application through assignments and hands-on tools setup.

Standard Library, Loops

Module 2: Standard Library, Loops

Delve into the essential aspects of Scala's standard library, including lists, collections, loops, and tail recursion. The module focuses on constructing and manipulating collections, querying and transforming them, and introduces the concept of loops, along with their syntax and functionality. You'll gain practical experience through loop examples and assignments.

Build Tools, Modules

Module 3: Build Tools, Modules

This module delves into organizing code, build tools, the sbt build tool, program entry points, encapsulation, and extending and refining classes. Additionally, you'll explore case classes, opaque types, and extension methods, gaining practical experience through the organization of code and hands-on tools setup.

Reasoning About Code

Module 4: Reasoning About Code

Explore the critical aspect of reasoning about code, including refactoring-proof programs, handling side-effects, unit testing, property-based testing, mocking, integration testing, and debugging programs. The module emphasizes the importance of writing robust, testable, and maintainable code through practical examples and case studies.

Type-Directed Programming

Module 5: Type-Directed Programming

Dive into type-directed programming in Scala, covering context parameters, given definitions, type classes, conditional given definitions, implicit conversions, and their application in Scala 2. The module emphasizes leveraging type-directed programming to enhance code expressiveness, reusability, and maintainability.

Error Handling, Concurrent Programming

Module 6: Error Handling, Concurrent Programming

This module focuses on error handling with Try, manipulating Try values, validating data, and combining Try and Either. Additionally, you'll delve into concurrent programming, operations on type Future, examples with Future, execution context, and understanding exceptions in Scala. The module equips you with the skills to handle errors and manage concurrent tasks effectively.

More Software Development Courses

Developing APIs with Google Cloud's Apigee API Platform

Google Cloud

This specialization introduces learners to Apigee, Google Cloud's API management platform. Through presentations, labs, and supplemental materials, you will explore...

Architecting with Google Kubernetes Engine: Foundations 한국어

Google Cloud

Architecting with Google Kubernetes Engine: Foundations' is the first course in the series, covering Google Cloud's layout and principles, container creation and...

MATLAB을 사용한 프로그래밍 소개

Vanderbilt University

MATLAB을 사용한 프로그래밍 소개 course provides an introduction to computer programming using MATLAB, covering fundamental concepts and practical skills....

Utilisation et gestion des pointeurs avec la Programmation C

Coursera Project Network

Utilisation et gestion des pointeurs avec la Programmation C