Welcome to the Pharo Mooc (a set of videos, exercises, challenges, and miniprojects).
The Pharo Mooc is fully dubbed in french and english. It comes with subtitles in Japanese, english, french and spanish.
This web site contains all the material of this Mooc in free access. In addition, in average every 18 months the Mooc is proposed and run on the France Université Numérique platform (Even if the platform is french the mooc is run in both languages). When you participate to the mooc you get access to the quizz and the credit validation.
Presequel: Basics on OOP
This MOOC includes some presequel videos and slides about Object-oriented Programming (OOP) for newbies French version and English version.
Join the 2020 Mooc run With Pharo 8.0
Fourth run started 9th of November 2020. Join, have fun and learn (check the testimonies below).
This new version of the Mooc uses Pharo 8.0, github, and comes with 70 new videos. In addition new versions of the dubs videos are available. (cf. download)
April 2019
For its third run, the Pharo Mooc got more than 3200 participants with around 500 active learners from more than 100 countries with 181 participants that obtained the attestation by answering quiz.
We would like want to thanks our sponsors: Unit, Unisciel, and the LearningLab of Inria.
February 2018
For its second run, the Pharo Mooc got more than 2500 participants with around 500 active learners from 92 countries with 176 participants that finished it.
We would like want to thanks our sponsors: Unit, Unisciel, and the LearningLab of Inria.
Testimonies
This Mooc is demanding but rewarding - check below what the participants are saying :)
Thank you for these messages, they boost us!
The week 3 Pharo MOOC videos are excellent, thanks for the recommendation. The idea that sending a message is making a choice is interesting and I'm now starting from week 1 and I hope to keep learning.
J'ai trouvé ça très intéressant, beaucoup plus que prévu ! je regrette de ne pas m'y être mis plus tôt. J'ai enfin l'impression de vraiment faire de la POO ! Ou à l'inverse je me rend que je n'en faisais pas vraiment... - Anonymous, 2019
I have just completed week seven of the Pharo Mooc (beginner and object oriented tracks) I am starting a redo of the Mooc with the web track (TinyBlog project). I have already learned so much ! I have spent the last 20 years or so in software development and, following this Mooc, I realized I hadn’t really grasped the essence of object oriented design. - Anonymous
« Really one of the best mooc I have ever attended. And I have attended quite a few (openSAP, openHPI). As an old fashioned ABAP developer I want to be reborn as Pharo developer in my next life :-) » - Anonymous
Hi! I finished the MOOC some weeks ago and I would like to congratulate everybody involved! After a decade+ of Python programming I think I found my new favorite language :). I'm making a small Teapot server for Slack command bots, I'm goona push it to Github (yay Iceberg), if anyone is interested. - EduardoPadoan
I just completed the @pharoproject Mooc the best investment I have ever made of my time. MAQBOOL
Hey all - I've just finished the Mooc - thanks for an excellent course and a thouroughly interesting look at a new way to program :smile: Looking forward to starting to play with Pharo on some upcoming ideas I've had. - Tieryn
As much as I thought I understand object-orientation, it is very clear NOW that without a truly useable Smalltalk, which Pharo is, it is impossible to really understand and exercise object-orientation. Thank you all soooo much. - Mike D. 06/12/2020
I finished the Pharo MOOC a few days ago. Thank you very much to Damien, Stephane, and Luc for their work on the material! I enjoyed it very much - Anonymous
Hey all - I've just finished the Mooc - thanks for an excellent course and a thouroughly interesting look at a new way to program :smile: Looking forward to starting to play with Pharo on some upcoming ideas I've had 👌3 - Anonymous
I already had previous Smalltalk experience, but yes, I'm extremely happy Chapter 7 has been extremely fulfilling - Anonymous
A general comment I wanted to make is that the MOOC so far has been great. Impressed with the quality and content, and grateful that it is available and free. Many thanks! - Aryeh
IMHO the videos were very well done. I would even say shockingly well done… for a bunch of programmers who are supposed to be clueless about design - SeanDeNigris - 10/26/2017
The more I learning about @pharoproject the more I appreciate it's beauty and simplicity, finally, object-oriented programming is done right - MAQBOOL
Mooc absolument remarquable. Superbe voyage autour de Pharo. Le paradigme objet qui (re)prend enfin du sens ! - Anonymous - 01/03/2019
About this course
If you are either a beginner or an expert in object-oriented programming, this MOOC will change the way you program with objects: come and learn or rediscover object-oriented programming with Pharo!
Pharo is a pure object-oriented programming language in
the tradition of Smalltalk. 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 concept
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,
network.
More…
Pharo is also a very powerful open-source environment
used by companies to develop web applications.
In this MOOC, we will present more specifically Pharo’s
Web stack which changes the way you build web
applications.
In addition we will present fundamental programming
concepts and how Pharo uses them. We will present some
coding idioms and Design Patterns to better design
object-oriented applications. Such concepts can be applied
to any object-oriented programming language.
This MOOC is intended for people with a programming
experience but everyone motivated could follow the course
thanks to the numerous resources proposed. This MOOC will
also have an interest for computer programming teachers:
Pharo is a good teaching tool for object-oriented
programming and the course will discuss object-oriented
design principles (e.g. polymorphism, message sending,
self/super, design patterns).
Throughout this MOOC you will :
learn how to program in Pharo,
be immersed in a live environment and live a new
programming experience,
develop a web application to apply the different
aspects of Pharo presented in the course.
This MOOC will also provide a new vision of the
fundamental principles of object-oriented programming,
i.e. polymorphism and late binding.
This course lasts 7 weeks.
Each week is composed of several sequences containing a
video lecture, quizzes and other videos proposing
application exercises and programming demonstrations.
This course is proposed in french and in english.
Videos are in french with french and english subtitles.
Pdf course documents (in english only) will be available.
All other materials (quizzes, explanation texts…) will be
offered in both languages.
Obtaining the MOOC
You can follow the MOOC during the next session on France Université Numérique because you will be able to discuss with other learners.
But, you can also access all resources of this MOOC offline on:
WebPortal: previous version of the full MOOC (lectures/videos/...) that uses Pharo 5,
CanalU: one of the key website that delivers resources for teaching and research.
How to follow this MOOC?
We propose five profiles to follow this MOOC at different speed and levels. The Mooc sequences will be tagged according to these profiles. The profiles are not exclusive: to become a pharo expert you need to start as a newbie and grow up. Of course, you can also follow the full MOOC.
🐥 Total newbies [Newbies]
Focus on the beginning of the lectures, you can skip the Seaside/Mongo and tinyBlog exercises. Follow the end of the Mooc but without trying to understand everything. Take it easy and spend time understanding that the system is written in itself. Focus on the navigation tools (senders and implementors).
🌐 Looking for Web [Web]
For those that focus on web development, we suggest to get started with the syntax (since we really love this lecture you should really watch the not implementation and sequels), then look at Seaside/Mongo combo. From the exercise stand point, focus on tinychat and tinyblog.
🎁 Refresh your OO perspective [OO]
If you want to rethink your OO perspective, pay attention that even Pharo essential libraries such as Booleans or collections are plain objects. Yes you send a message to a collection to perform a loop. Yes you send a message to a Boolean to perform a conditional.
🌶 Wanna be a Pharo expert [Xpert]
Well it means that you should have a look at everything. You may drop the Web and the Black Magic parts if you are in a hurry.
🔮 Looking for Black Magic [Magic]
If you are interesting by really advanced notions close to black magic ;-) It explains things such as reflection, meta-classes, meta-programming, etc. that makes Pharo a unique OO language. Of course, these lectures require almost everything except the Web part.
Download & Install Pharo for this MOOC
During this MOOC, we assume that you use the PharoWeb image in a specific version (currently Pharo 8.0). To install this version, we recommand using the PharoLauncher as described below.
🔮 Lecture Reflective Operations for Live Programming
🔮 Lecture DoesNotUnderstand: a Precious Hook
🔮 Lecture Reflection: Stack as an Object
🎁 Lecture Avoid Null Checks
🐥 Lecture A Journey in Pharo: A Bright Future
🌶 Challenge Solution: Challenge 5
Resources
You can find free and online resources in the Documentation page. We recommend the Updated Pharo by Example book, the Pharo cheat-sheet, and the new book Learning Object-Oriented Programming, Design and TDD with Pharo on http://books.pharo.org
About
Damien Cassou
Damien Cassou received his PhD degree
in Computer Science from the
University of Bordeaux, France. He is
working as associate professor (maître
de conférences) at the University of
Lille, France, and is a member of the
RMoD research group (Inria, CRIStAL).
Damien is working on dynamic
programming languages (most notably
around traits and modules) and
software engineering (mainly tools for
developers). Damien has co-organized
many events (including ECOOP’14 and
ESUG many times) and co-wrote several
books. Because he loves programming,
Damien is also an active member of the
Smalltalk and Emacs-Lisp communities.
Finally, he maintains many packages
for NixOS.
Stéphane Ducasse
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
influenced JavaScript, Scala and
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
programming.
Luc Fabresse
Luc Fabresse received his PhD in
computer science in 2007 from the
University of Montpellier 2,
France. He is currently an
associate professor in the CAR
research theme at Mines Douai,
Mines-Telecom Institute. Luc is
the co-author of several research
papers advocating the use of
dynamic and reflective languages
such as Pharo to support live
programming of mobile and
autonomous robots in an efficient
way. Luc's long-term vision is to
be able to use Jedi mind trick on
mobile robots ;-) Meanwhile, he
concretizes all his ideas (models
and tools) in the PhaROS platform
(a Pharo client for the Robotics
Operating System) to develop,
debug, test, deploy, execute and
benchmark robotics applications.
Each year, Luc gives many computer
science lectures and co-organizes
events (technical days,
conferences, ...). He also
promotes Smalltalk (ESUG board
member) and participates to its
open-source implementation Pharo.