Passer au contenu de cette vue

Comment suivre ce MOOC ? How to follow this MOOC?

Profils Profiles

We propose five profiles to follow this MOOC at different speed and levels. The Mooc sequences are 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).
    For total beginners: we strongly advise to start with an optional sequence named 'Presequel' to introduce Oriented Object Programming.
  • 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 Teapot and 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 and that you may drop the web part if you are in a hurry.
  • Looking for Black Magic 🔮 [Magic] If you are interested 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, you must already know OO and be a Pharo expert.

Nous proposons 5 profils pour suivre le cours à des vitesses et niveaux différents. Les séquences du cours seront étiquetées en fonction des profils. Ces profils ne sont pas exclusifs : pour devenir un expert en Pharo il faut commencer par le profil newbie et compléter avec les autres parcours.

  • Débutant complet 🐥 [Newbie] Focalisez-vous sur les premiers cours et suivez le cours jusqu'au bout sans essayer de tout comprendre. Détendez-vous et prenez le temps de comprendre que le système est écrit en lui-même. Focalisez-vous également sur les outils de navigation (senders et implémenteurs).
    Pour les débutants complets : nous vous conseillons vivement de commencer par la séquence facultative nommée "Presequel" consacrée aux bases de la programmation orientée objet.
  • En quête de Web 🌐 [Web] Pour ceux qui se focalisent sur le web, nous conseillons de commencer par la syntaxe.
  • Rafraîchir votre vision OO 🎁 [OO] Si vous voulez repenser votre approche de la programmation Orientée Objet, prêtez attention au fait que même des librairies aussi essentielles que les booléens ou les collections vous immergent dans un monde d'objets.
  • Devenir un expert Pharo 🌶 [Xpert] Eh bien cela signifie qu'il faut parcourir tout le contenu en laissant éventuellement de côté la partie web si vous êtes pressés.
  • En quête de magie noire 🔮 [Magic] Si vous êtes intéressé par des notions avancées, proche de la magie noire ;-) comme la réflexion, les méta-classes, la méta-programmation, etc... qui font de Pharo un langage OO unique. Vous devrez déjà connaître OO et être un expert Pharo.

Sommaire Contents

Introduction

SequencesUnits

Présentation du cours / Course Presentation

Activités / Activities

Badge de réussite / Badge of the course

Guide d'utilisation de la plateforme / Platform Guide

Ressources complémentaires / Additional Ressources

Installation de Pharo / Pharo Installation

Téléchargement vidéos de cours / Lectures videos download

Conditions d'utilisation / Terms of use

Semaine 1 : Démarrage et découverte de la syntaxe Week 1: Welcome on Board and Syntax Discovery

SequencesUnits

Questionnaire de Début de Mooc / Start-of-course Survey

🐥 PRESEQUEL on object-oriented programming

🐥 1.1. Objectives of this Mooc

🐥 1.2. Pharo : An Immersive Object-Oriented System

🐥 1.3. Pharo Vision

🐥 1.4. Pharo Object Model in a Nutshell

🐥 1.5. Pharo Syntax in a Nutshell

🐥 1.6. Class and Method Definition

🐥 1.7. [Lives]

🐥 1.8. [ReDo]

🐥 1.9. Exercices / Exercises

🌶 1.10. Challenge

Supports de cours / Course documents

Semaine 2 : Syntaxe Pharo, Blocks et inspecteur Week 2: Pharo Syntax, Blocks and Inspector

SequencesUnits

🐥 2.1. Understanding Messages

🐥 2.2. Messages for Java Programmers

🐥 2.3. Messages: Composition and Precedence

🐥 2.4. Understanding Messages: Sequence and Cascade

🐥 2.5. Introduction to Blocks

🐥 2.6. Loops

🐥 2.7. Booleans and Conditions

🐥 2.8. Parentheses vs Square Brackets

🐥 2.9. Yourself

🎁 2.10. The Essence Of Dispatch through an Exercise

🐥 2.11. [Lives A & B]: Finder & Inspector

🐥 2.12. [Lives C & D] Browsing a class & scoped operations

🐥 2.13. [ReDo] Xtreme TDD

🐥 2.14. Exercices / Exercises

🌶 2.15. Challenge

Supports de cours / Course documents

Semaine 3: Conception, méthodes de classes et collections Week 3 : Design, Class Methods and Collections

SequencesUnits

🐥 3.1. Essence of Dispatch 1/2: Taking Pharo Booleans as Example

🐥 3.2. Essence of Dispatch 2/2

🐥 3.3. Variables

🐥🌐 3.4. A Simple HTTP Application

🐥 3.5. Class Methods

🐥 3.6. An overview of Essential Collections

🎁 3.7. Iterators

🐥 3.8. Stream Overview

🐥 3.9. Understanding Return

🐥 3.10. [Lives A & B]: Implementor/Senders & Class Reference

🐥 3.11. [Live C]: Spotter

🐥 3.12. [ReDo]: Die mechanics/handle & DSL

🐥 3.13. Exercices / Exercises

🌶 3.14. Challenge

Supports de cours / Course documents

Semaine 4 : Héritage et recherche de méthode et développement Web Week 4: Inheritance & Lookup and Web Development

SequencesUnits

🐥 4.1. Inheritance Basics

🐥 4.2. Inheritance & Lookup: Lookup

🐥 4.3. Inheritance & Lookup: Super

🐥 4.4. Inheritance & Lookup: DoesNotUnderstand:

🌶 4.5. Inheritance & Lookup: Lookup in Metaclasses

🎁 4.6. Class Methods at Work

🌐 4.7. Overview of Pharo Web Stack

🌐 4.8. Seaside: an Innovative Web Application Framework

🌐 4.9. Seaside: Rendering Components

🌐 4.10. Seaside: a Glance at MetaData and REST

🌐 4.11. Voyage: NoSql Object Database

🐥🎁 4.12. [Lives]

🐥🌐 4.13. Exercices / Exercises

🌶 4.14. Challenge

Supports de cours / Course documents

Semaine 5 : Exception, débuggage et réflexion Week 5 : Exception, Debugging and Reflection

SequencesUnits

🌐 5.1. Seaside: Composing Components

🎁 5.2. Really Understanding Class Methods

🐥 5.3. Common Errors

🌶 5.4. Powerful Exceptions: an Overview

🐥 5.5. Debugging in Pharo

🐥 5.6. SUnit: Unit Tests in Pharo

🌶 5.7. Files in Pharo

🔮 5.8. Reflection: Basic Introspection

🌶 5.9. Benchmarking in Pharo

🐥 5.10. [Lives]

🌐🐥 5.11. Exercices / Exercises

🌶 5.12. Challenge

Supports de cours / Course documents

Semaine 6: Repenser la recherche de méthode et points avancés Week 6: Rethink lookup and Advanced Object-Oriented Design

SequencesUnits

🎁 6.1. Did You Really Understand Super?

🐥 6.2. Understanding the Implementation of ifTrue:ifFalse:

🎁 6.3. Dice new vs. self class new

🎁 6.4. Message sends are plans for reuse

🎁 6.5. Hooks and Templates

🐥 6.6. Runtime Architecture

🐥 6.7. Characters, Strings and Symbols

🐥 6.8. Dynamic Vs. Literal Arrays

🎁🌶 6.9. [Lives]

🌐 6.10. Exercices / Exercises

🌶 6.11. Challenge

Supports de cours / Course documents

Semaine 7 : Conception OO et tests Week 7: More on Object-Oriented Design and Testing

SequencesUnits

🌶 7.1. Advanced Points on Classes

🐥 7.2. Variable Size Objects

🔮 7.3. Understanding Metaclasses

🔮 7.4. Reflective Operations for Live Programming

🔮 7.5. DoesNotUnderstand: a Precious Hook

🔮 7.6. Reflection: Stack as an Object

🎁 7.7. Avoid Null Checks

🐥 7.8. A Journey in Pharo: A Bright Future

🌶 7.9. Challenge 5 : Solution

Supports de cours / Course documents

Questionnaire de Fin de Mooc / End-of-course Survey