The Advanced Object-Oriented Design and Development with Pharo Mooc
About this MOOC
This MOOC is about Advanced Object-Oriented Design.
You will get to know and understand the key mechanisms and the essence of OOD.
Either you are a beginner or an expert in object-oriented programming, this MOOC immerses you in advanced object-oriented design.
We are sure that you will not develop the same way after following this unique lecture.
It is built on more than 60 years of expert teaching object-oriented design.
This MOOC invites you to a journey around 10 modules (with over 60 videos) covering the following topics:
Hooks: support for evolution
Objects: state and behavior
Elementary design patterns
Inversion of control
The Mooc proposes several design exercises ranging from little interpreters to games and quizzes.
Why the Pharo programming language?
This MOOC uses Pharo as a pedagogical vehicle but all the concepts you will learn are language independent and can be applied to any object-oriented language.
Nevertheless, we use Pharo because it is a pure object-oriented programming language.
It offers a unique developing experience in constant interaction with live objects.
Pharo is elegant, fun to use, and very powerful. It is very easy to learn and enables to understand advanced concepts in a natural way.
When programming in Pharo, you are immersed in a world of live objects.
You have immediate feedback at any moment of your development on objects representing web applications, code itself, graphics, and network. More…
Note that there is a full MOOC on Pharo but it is not a requirement.
But, if you already followed it and liked it, this MOOC on Advanced Object-Oriented Design will bring you to the next level ;-)
The following picture shows the different modules.
You can see the mooc overview PDF / VIDEO
Module 1: Understanding messages
This first module revisits elementary concepts around self, super, and the power of dispatching to dedicated objects.
The case study shows how to go from a monolithic design with one kind of format to the handling of optional different formats in the Pillar document compilation chain.
Completely rethink what it means to send a message
Explain that sending a message is making a choice based on classes
Distinguish between static and dynamic approaches to inheritance
Understand what is to send a message and how lookup works
Understand deeply what super is
Apply the mechanics of a transformation that makes implicit behavior explicit
M1-1 LectureEssence of Dispatch: Taking Pharo Booleans as Example PDF / VIDEO
M1-2 LectureEssence of Dispatch: Let the receiver decide PDF / VIDEO
M1-6 LectureReification and delegation - A case study: Microdown in Pillar PDF / VIDEO
Module 2: Tests
This module covers an important aspect: testing applications and how to take advantage of test driven design. It shows in particular the power of eXtreme Test Driven Design and how writing tests first and coding in the debugger is empowering the designer.
Understand the structure and benefits of a test and specify a proper automated test
Identify the benefits and characteristics of a good test suite
Identify the benefits and apply a Test Driven Development workflow
Specify and apply the Xtrem Test Driven Development method with Pharo tools
Create a parameterized test and reuse it with specific values
M2-1 LectureTest 101: The minimum you should know PDF / VIDEO
M2-4 LectureXtreme Test Driven Development: Getting a productivity boost PDF / VIDEO
M2-5 LectureParametrized Tests: Getting more tests out of test cases PDF / VIDEO
Module 3: Hooks
In this module we will start to look at design patterns. In parallel, we will discuss a key point of object-oriented design which is how to design abstractions that are extensible using hooks. The case study is about going from monolithic to parametrized objects.
Get exposed to design patterns
Use hooks to extend code
Analyze hook and template methods
Use a stream and avoid creating spurious objects
Move from a monolithic global design to one that can be parameterized
Stéphane Ducasse is directeur de
recherche at Inria. He leads the RMoD
team. He is expert in two domains:
object-oriented language design and
reengineering. His works on traits
have been introduced in AmbientTalk,
Slate, Pharo, Perl-6, PHP 5.4 and
Squeak. They have also
Fortress. Stéphane is also expert on
software quality, program
understanding, program visualisations,
reengineering and metamodeling. He is
one of the developers of Pharo. He is
also one of the developers of Moose,
an open-source software analysis
platform. He created Synectique a
company building dedicated tools for
advanced software analysis. Stéphane
wrote several books on programming
learning and other topics such as web
Luc Fabresse is currently professor in computer science at IMT Nord Europe.
His researches focus on dynamic and reflective languages such as Pharo to better support programming in the context of mobile robotics and IoT.
It involves deployment, code update, memory management and bootstrapping.
He also works on fleet of collaborating mobile robots involving challenges such as: localization, navigation and distributed coordination.
Luc's long-term vision is to be able to use Jedi mind trick on mobile robots ;-)
Meanwhile, Luc gives many computer science lectures, co-organizes events (technical days, conferences, ...), promotes Smalltalk (ESUG board member) and participates to its open-source implementation Pharo.
Guille Polito is a permanent researcher at Inria of the University of Lille, within the EVREF team. Guille’s main research interests are programming language implementations, Virtual machines, testing, programming tools, and modular systems. He has more than 15 years in teaching advanced OOP.
Pablo Tesone is Pharo consortium engineer. He holds a PhD in Computer Science from the University of Lille. Prior to that, Pablo was during 10 years an engineer in large corporates. Pablo has a large spectrum of skills ranging from low-level assembly to high-level reflective systems. He is one of the engineers behind the Pharo Virtual machines. He is the father of stateful traits as available in Pharo.
He has more than 15 years in teaching advanced OOP.