К содержимому
learnspaceYOUR NEXT CHAPTER
ПРОСТРАНСТВО ОБУЧЕНИЯ
ГлавнаяКаталог курсовМоё обучениеCoursera

Знания без границ

Учитесь у лучших университетов и компаний мира.

Открыть Coursera
Интеграция
Пространство университета
Моё пространствоСтраница курса
↵
ЯЛичный кабинетСтудент
© 2026 LearnSpaceКаждый день — возможность узнать больше.Помощь
Functional Program Design in Scala · LearnSpace
Назад в каталог
courseraПрограммирование

Functional Program Design in Scala

Курс от École Polytechnique Fédérale de Lausanne
Средний≈ 35.4 чАнглийский
О курсеНавыкиПрограммаПреподаватели

О курсе

In this course you will learn how to apply the functional programming style in the design of larger Scala applications. You'll get to know important new functional programming concepts, from lazy evaluation to structuring your libraries using monads. We'll work on larger and more involved examples, from state space exploration to random testing to discrete circuit simulators. You’ll also learn some best practices on how to write good Scala code in the real world. Finally, you will learn how to leverage the ability of the compiler to infer values from types. Several parts of this course deal with the question how functional programming interacts with mutable state. We will explore the consequences of combining functions and state. We will also look at purely functional alternatives to mutable state, using infinite data structures or functional reactive programming. 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 with using the command line. This course is intended to be taken after Functional Programming Principles in Scala: https://www.coursera.org/learn/progfun1.

Навыки, которые вы освоите

Scala ProgrammingFunctional DesignFunctional TestingApplication DesignSoftware DesignProgramming PrinciplesOther Programming LanguagesJavaEvent-Driven ProgrammingPerformance TuningSoftware Design PatternsAlgorithmsData Structures

Программа курса

5 модулей · 57 учебных материалов

01For Expressions and Monads19 материалов

Recap: Getting Started with Tools

IntroductionВидеоWorking on AssignmentsЧтениеTools Setup (Please read)ЧтениеGrading PolicyЧтение

Учитесь у экспертов

Martin Odersky

Professor

Functional Program Design in Scala
В каталоге вашей программы

Инвестируйте в себя

Новые знания — в удобное для вас время.

Начать на Coursera

Обучение откроется на Coursera
в новой вкладке

Обучение на Coursera

≈ 35.4 ч

5 модулей

Язык: Английский

Субтитры: Арабский, Французский, Бенгальский, Узбекский, Украинский, Китайский (Китай), Греческий, Итальянский, Бразильский португальский, Нидерландский, Корейский, Немецкий, Пушту, Урду, Русский, Тайский, Индонезийский, Шведский, Турецкий, Азербайджанский, Испанский, Дари, Хинди, Японский, Казахский, Венгерский, Польский

Часть программы вашего университета
SBT tutorial and Submission of Assignments (Please read)Чтение
Example AssignmentПрограммирование
Cheat SheetЧтение
Scala Style GuideЧтение
Learning ResourcesЧтение
Reactive Cheat SheetЧтение

Week 1: For Expressions and Monads

Week 1 IntroductionВидеоRecap: Functions and Pattern MatchingВидеоLecture 1.1 - Queries with ForВидеоLecture 1.2 - Translation of ForВидеоLecture 1.3 - Functional Random GeneratorsВидеоLecture 1.4 - MonadsВидеоLecture 1.5 - Exceptional MonadsВидеоQuickcheckПрограммированиеQuickcheckПрограммирование
02Lazy Evaluation8 материалов

Week 2: Lazy Evaluation

Week 2 IntrductionВидеоLecture 2.1 - Structural Induction on TreesВидеоLecture 2.2 - Lazy ListsВидеоLecture 2.3 - Lazy EvaluationВидеоLecture 2.4 - Computing with Infinite SequencesВидеоLecture 2.5 - Case Study: the Water Pouring ProblemВидеоBloxorzПрограммированиеBloxorzПрограммирование
03Type-Directed Programming17 материалов

Week 3: Type-Directed Programming

Motivating ExampleЧтениеType-Directed ProgrammingЧтениеType-Directed ProgrammingЗаданиеType ClassesЧтениеConditional Implicit DefinitionsЧтениеConditional Implicit DefinitionsЗаданиеImplicit ConversionsЧтениеImplicit ConversionsЗаданиеWeek 3 IntroductionВидеоLecture 3.1 - Contextual abstractionsВидеоLecture 3.2 - Using clauses and given instancesВидеоLecture 3.3 - Type classesВидеоLecture 3.4 - Abstract algebra and type classesВидеоLecture 3.5 - Context passingВидеоLecture 3.6 - Implicit function typesВидеоJSON CodecsПрограммированиеJSON CodecsПрограммирование
04Functions and State5 материалов

Week 4: Functions and State

Week 4 IntroductionВидеоLecture 4.1 - Functions and StateВидеоLecture 4.2 - Identity and ChangeВидеоLecture 4.3 - LoopsВидеоLecture 4.4 - Extended Example: Discrete Event SimulationВидео
05Timely Effects8 материалов

Week 5: Timely Effects

Week 5 IntroductionВидеоLecture 5.1 - Imperative Event Handling: The Observer PatternВидеоLecture 5.2 - Functional Reactive ProgrammingВидеоLecture 5.3 - A Simple FRP ImplementationВидеоConclusionВидеоCalculatorПрограммированиеCalculatorПрограммирование

Conclusion

ConclusionВидео