Cultivate advanced programming language skills to grow as a mid-to-high-level developer, as well as software design and implementation skills that combine functional, object-oriented, and LISP paradigms.
245 students
Advanced Programming Language Utilization
Type system
Functional programming
Object-oriented programming
List processing
Multi-paradigm programming
Programming languages have been mainly divided into functional, object-oriented, and procedural languages in the past. However, this trend has changed today. Hybrid programming languages with both functional and object-oriented features have begun to appear, and now most major programming languages such as Java, C#, Scala, TypeScript , JavaScript, Kotlin , and Swift have become multi-paradigm languages. This change has become a common characteristic of languages widely used in the field.
These languages provide a wide range of functional programming features , including first-class functions, list processing, lazy evaluation, and asynchronous/concurrent processing, as well as object-oriented features such as classes, inheritance, and interfaces . They also provide robust yet flexible type systems, type inference, generics, utility types , and even allow mixing static and dynamic types .
Some problems are better solved with functional programming, while others are better solved with object-oriented programming. Programmers no longer need to debate whether functional programming is better or object-oriented programming is better or static typing is better or dynamic typing is better. The organizations and companies that create languages and define standards have evolved to support multiple paradigms in a single language, allowing us to program in a single project, or even within a single function, using a combination of different paradigms .
Now, we may be relying on specific libraries or frameworks and following limited paradigms that fit them, and thus not fully utilizing the various functions and paradigms at the language level. Many of the technologies applied to functional programming languages or object-oriented programming languages have a very deep history and legitimacy, and have already been verified by solving various problems. Programmers with various skills at the language level can solve more problems quickly, safely, and flexibly. It also allows you to write code in a more fundamental way, without being tied to a specific library.
This lecture series primarily uses TypeScript and Kotlin as its languages , but covers techniques and concepts that can be applied to other languages such as Java, C#, Scala, and Swift . It helps you apply functional programming to your work while maintaining your existing environment and language. It also helps you expand your problem-solving skills by increasing your skills and application skills to effectively handle multi-paradigm languages by presenting code that solves problems by mixing object-oriented programming and functional programming .
And this journey is really interesting and fun. Through this lecture, I hope that you will be able to experience the various possibilities of multi-paradigm languages , develop the ability to use high-level programming languages , and develop the ability to design and implement software that combines functional, object-oriented, and LISP paradigms , and above all, enjoy the joy of computer programming and software engineering more deeply.
We provide broad and in-depth lectures based on the multi-paradigm programming book.
“This course covers multi-paradigm iteration and list processing in general, focusing on iterators, which are the intersection of object-oriented and functional programming. The main language used is TypeScript, and Clojure and Kotlin are also briefly reviewed to deeply understand the concepts of list processing and multi-paradigm iteration.”
Iterators, generators, iteration protocols, list processing
Abstraction combining functional, type system, classes, and generic programming.
Code : Object : Function = Generator : Iterator : LISP = IP : OOP : FP
Try it with Kotlin
Deepening the concepts of function composition and lazy evaluation
Handling real-world data with list processing
Expand to more problems
“This lecture introduces the design and structure of the language for asynchronous programming, how to handle the results of asynchronous operations as values, how to write asynchronous/concurrent logic using lazy evaluation and list processing, and how to handle asynchronous programming as types.”
Asynchronous programming by value
Concurrent programming with delay
Type system and asynchrony, AsyncIteration protocol
Asynchronous error handling
“In this lecture, we will learn about Iterable, Iterator, and Sequence provided by Kotlin, and through these, we will look at the sophisticated composition and extensibility unique to Kotlin, and cover the entire list processing. Also, based on Iterator and Sequence, we will deeply understand Kotlin’s iteration design, which will help us accurately understand and apply coroutines later.”
Iterable and Iterator(
Iterator)
Kotlin's sophisticated composability and extensibility
Sequence
List processing and lazy evaluation
Kotlin extension functions
Handling real-world data with list processing
Expand to more problems
“Focusing on the code required for backend programming practices, we implement a scheduler based on list processing to synchronize data between separated services in an MSA environment, and also cover essential backend techniques such as parallelism and request size limits from the perspective of list processing. We also look at multi-paradigm design and implementation cases, and cover examples that can establish criteria for which problems to apply classes (object-oriented), which problems to introduce list processing (functional), and which problems to adopt the imperative method.”
Draw a calendar
List processing pattern
Backend Asynchronous Programming: List Processing Handling MSAs
Hash-based optimization, request size limits, and parallelism for efficiency
Multi-paradigm technique for solving nested data and recursive logic
Extended concurrency handling that combines object-oriented, imperative, and functional.
“Learn about various concurrency mechanisms such as Coroutine, Flow, Deferred, and Channel, and take an in-depth look at multi-paradigm concurrency handling techniques. We also present how to efficiently apply these functions through real-world backend asynchronous programming scenarios.”
Coroutine, Flow
Deferred, Channel
Multi-paradigm concurrency handling
Practical Backend Asynchronous Programming
“We cover front-end development based on Web API (vanilla), and we look at object-oriented component design and multi-paradigm implementation techniques. We learn a wide range of topics, from classes, interfaces, inheritance, abstraction, events, and state management to headless UI, generic classes, strategy patterns, state patterns, and decorators.”
Front-end development based on Web API (Vanilla)
Object-oriented component design and multi-paradigm implementation
Classes, interfaces, inheritance, abstraction, events, state management
Headless UI, generic classes, strategy pattern, state pattern, decorator
Heuristic Diff Algorithm and UI Rendering Optimization
Asynchronous UI handling, inter-component communication design
The instructor draws on his experience in a variety of languages and technologies, including TypeScript, Objective-C, iOS, Java, Android, Node.js, PostgreSQL, Clojure, Kotlin, Ruby on Rails, Web APIs, and Canvas, to present methods for effectively combining object-oriented, functional, and imperative paradigms.
It also covers in depth the foundations, design, and practical code implementation of a robust type system and generics, as well as classes, interfaces, and design patterns.
We have compiled all the contents of various technical trainings conducted for major IT companies such as Nexon, Naver, Kakao, LGU+, and SK Planet.
Example code and how to install the environment can be found on the official Multi-Paradigm Programming and TypeScript GitHub ( link ).
Join us in our online community MDU for additional discussion and learning about multi-paradigm programming. 📢
Subscribe to our YouTube channel and get the latest news. 📺
15% of the proceeds from this lecture and all of the author's proceeds from the book will be donated to Seoul Asan Medical Center Children's Hospital.
This book provides additional theoretical content and perspectives to further support the content of this lecture. Studying with this book will allow for deeper learning and exploration.
The book also provides instructional material for other languages, including Haskell and Clojure.
View recommended articles |
Preview Chapters 1-3
View books - Kyobo Bookstore , yes24 , Aladdin
"This course will teach you how to handle asynchronous programming more simply and intuitively using modern techniques such as lazy evaluation, generators, and iterables. It will also help you realize that complex areas such as backend parallel processing and error handling can be elegantly addressed using list processing techniques."
"You will naturally learn the multi-paradigm fusion of object-oriented and functional programming, so you will gain insight into the nature and design of code beyond simply 'working' code, and be able to flexibly apply practical patterns."
"If you want to grow from an intermediate developer to an advanced developer, you will be able to actively respond to various projects with a broader perspective by making extensive use of functional purity and immutability, as well as object-oriented encapsulation and division of responsibility."
"As you follow the process of optimizing data flow with lazy evaluation and intuitively solving difficult problems like parallel processing and error handling using generators and iterables, you will find the answer to the ultimate question: 'How can I create more value with less code?'"
"This course will help you develop an eye for seeing into the 'essence of code', and will provide you with the opportunity to acquire practical multi-paradigm design and pattern application know-how that goes beyond simple grammar knowledge, and to become a programmer who can present optimal solutions in various situations."
Who is this course right for?
Developers who want to build a solid foundation
Mid-level developer
Frontend developer
Backend developer using TypeScript
Kotlin/Java/Swift developers who want to learn the foundations and applications of multi-paradigm languages.
Need to know before starting?
Basic Syntax of Modern Programming Languages
TypeScript Basic Syntax
22,210
Students
758
Reviews
454
Answers
4.9
Rating
4
Courses
All
48 lectures ∙ (5hr 15min)
GoF's Iterator Pattern
02:11
Generator Basic Syntax
04:29
Iterators and Iterables
07:08
forEach function
04:15
map function
05:14
filter function
09:01
Method Overload
06:00
Iterator Helpers
06:41
Addition with concat
10:33
Handling Commerce Data
08:57
In the next lecture,
03:54