À propos du cours / About this course
Que vous soyez un débutant ou un expert en programmation orientée objet, ce MOOC va changer votre façon de penser objet : venez apprendre ou redécouvrir la programmation objet avec Pharo !
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 est un langage à objets pur, inspiré de Smalltalk, qui offre une expérience unique de développement en constante interaction avec des objets vivants. Pharo est élégant, fun à programmer et très puissant. Il est très facile à apprendre et permet de comprendre des concepts très avancés de façon naturelle. En programmant en Pharo vous êtes immergés dans un monde d'objets vivants. Vous modifiez en live sans cesse des objets qui peuvent représenter des applications web, du code lui-même, des graphismes, du réseau…
Pharo c’est aussi un environnement libre très productif utilisé par des entreprises pour le développement d’applications Web.
Dans ce MOOC nous présenterons plus particulièrement la pile Web de Pharo qui a la particularité de changer la manière de construire des applications Web.
Nous allons également revisiter des concepts essentiels de la programmation en illustrant comment Pharo les utilise. Nous allons présenter des heuristiques et des Design Patterns pour mieux concevoir des applications objets. Ces concepts sont applicables dans n’importe quels langages objets.
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…
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.
Ce MOOC s’adresse aux personnes ayant une expérience en programmation, mais toute personne motivée pourra également suivre le cours grâce aux nombreuses ressources proposées. Ce MOOC intéressera également les enseignants d'informatique car Pharo est un bon outil pour enseigner la programmation orientée objet et ce cours sera l'occasion de discuter de points de conception objet (par exemple : polymorphisme, envoi de messages, self/super, design patterns).
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).
A travers ce MOOC :
- vous apprendrez à programmer en Pharo,
- vous vous immergerez dans un environnement vivant et vivrez une expérience de programmation nouvelle,
- vous développerez une application web pour mettre en oeuvre les différentes facettes de Pharo présentées dans le cours.
Ce MOOC apportera également une nouvelle vision des fondements même de la programmation objet que sont le polymorphisme et la liaison tardive.
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.
Format
Ce cours a une durée de 7 semaines.
Chaque semaine est composée de séquences contenant une vidéo de cours de 6 à 10 minutes environ et de quiz, ainsi que des vidéos proposant des travaux pratiques ou des démonstrations de l’environnement immersif de programmation.
Ce cours est bilingue français / anglais. Les vidéos sont en français sous-titrées en français et en anglais. Les supports de cours au format pdf (en anglais uniquement) sont fournis. Tous les autres contenus (quiz, textes explicatifs, etc.) sont proposés dans les deux langues.
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.
Les enseignants / Teachers
Damien Cassou
Damien Cassou a obtenu son doctorat en Informatique à l'Université de Bordeaux. Il est maître de conférences à l'Université de Lille et membre de l'équipe de recherche RMoD chez Inria / CRIStAL. Damien travaille sur les langages de programmation dynamiques (plus particulièrement sur les traits et les modules) et sur l'ingénierie des logiciels (principalement sur les outils pour développeurs). Damien a co-organisé de nombreux événements (tels que ECOOP'14 et ESUG) et co-écrit plusieurs livres. C'est également un membre actif des communautés Smalltalk et Emacs-Lisp.
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. He is also an active member of the Smalltalk and Emacs-Lisp communities.
Stéphane Ducasse
Stéphane Ducasse est directeur de recherche Inria première classe et dirige l'équipe RMoD. Stéphane est expert en conception objet, conception de langages objets, programmation réflexive ainsi qu'en maintenance et évolution de larges applications (visualisation, métriques, meta modélisation). Ses travaux sur les traits ont été introduits dans AmbientTalk, Slate, Pharo, Perl-6, PHP 5.4 et Squeak. Ils ont été portés sur JavaScript et ont influencé les langages Scala et Fortress. Stéphane est l'un des développeurs de Pharo. Il est également l'un des développeurs de Moose une plate-forme d'analyses. Stéphane est par ailleurs co-fondateur de Synectique, une société proposant des outils d'analyses dédiés. Il a écrit plusieurs livres sur l'apprentissage de la programmation et sur d'autres sujets comme la programmation web.
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 influencedJavaScript, 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 a obtenu son doctorat en informatique en 2007, à l'université de Montpellier 2, France. Il travaille actuellement dans le thème de recherche CAR des Mines de Douai, au sein de l'Institut Mines-Télécom. Luc est co-auteur de nombreux articles de recherche visant à promouvoir l'utilisation de langages dynamiques et réflexifs comme Pharo pour supporter le développement interactif d'applications pour robots mobiles et autonomes. A long terme, Luc voudrait pouvoir utiliser la Force Jedi pour contrôler des robots mobiles ;-) En attendant, il concrétise ses travaux (modèles et outils) au sein de la plateforme PhaROS (un client Pharo pour l'intergiciel ROS) afin de mieux développer, déboguer, tester, déployer et exécuter des applications de robotique mobile. Chaque année, Luc donne de nombreux cours d'informatique et co-organise des événements (journées techniques, conférences, ...). Il promeut également Smalltalk (membre du bureau d'ESUG) et participe au développement de son implémentation open-source Pharo.
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 plateform (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.