How to follow this MOOC?

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.

Table of contents

Select a profile to display the corresponding sequences and exercises:
Introduction
Course Presentation
Activities
Platform Guide
Forum Guide
Additional Ressources
Pharo Installation
Survey 1
Terms of Use
 
Week 1: Welcome on Board and Syntax Discovery
Newbie 🐥 Presequel On Object-Oriented Programming - OPTIONAL -
Newbie 🐥 Lecture 1.1. Objectives of this Mooc
Newbie 🐥 Lecture 1.2. Pharo : An Immersive Object-Oriented System
Newbie 🐥 Lecture 1.3. Pharo Vision
Newbie 🐥 Lecture 1.4. Pharo Object Model in a Nutshell
Newbie 🐥 Lecture 1.5. Pharo Syntax in a Nutshell
Newbie 🐥 Lecture 1.6. Class and Method Definition
Newbie 🐥 Live 1.7.1. Selecting and executing expression
Newbie 🐥 Live 1.7.2. Learn Pharo with Prof Stef
Newbie 🐥 Live 1.7.3. Syntax Highlighting gives Feedback
Newbie 🐥 Live 1.7.4. Learn Keyboard Shortcuts
Newbie 🐥 Redo 1.7.5. Coding a Counter
Newbie 🐥 Exercise 1.8.1. Expressions and messages
Newbie 🐥 Exercise 1.8.2. Developing a Simple Counter
Xpert 🌶 Challenge 1.9. Challenge 0
 
Week 2: Pharo Syntax, Blocks and Inspector
Newbie 🐥 Lecture 2.1. Understanding Messages
Newbie 🐥 Lecture 2.2. Messages for Java Programmers
Newbie 🐥 Lecture 2.3. Messages: Composition and Precedence
Newbie 🐥 Lecture 2.4. Understanding Messages: Sequence and Cascade
Newbie 🐥 Live 2.5.1. Finding Methods with Finder
Newbie 🐥 Live 2.5.2. GTInspector 1: Inspect and Interact with Objects
Newbie 🐥 Lecture 2.6. Introduction to Blocks
Newbie 🐥 Lecture 2.7. Loops
Newbie 🐥 Lecture 2.8. Booleans and Conditions
Newbie 🐥 Lecture 2.9. Parentheses vs Square Brackets
Newbie 🐥 Lecture 2.10. Yourself
OO1 🎁 Lecture 2.11. The Essence Of Dispatch through an Exercise
Newbie 🐥 Live 2.12.1. Nautilus 1: First Meet with the Code Browser
Newbie 🐥 Live 2.12.2. Nautilus 2: Packages, Tags and Groups
Newbie 🐥 Live 2.12.3. Nautilus 3: Inheritance view
Newbie 🐥 Redo 2.12.4. Coding a Counter in the Debugger
Newbie 🐥 Exercise 2.13.1. Solution: Expressions and Messages
Newbie 🐥 Exercise 2.13.2. Expression Results
Newbie 🐥 Exercise 2.13.3. [Mini-project] Chap 1: About TinyBlog
Newbie 🐥 Exercise 2.13.4. [Mini-project] Chap 2: TinyBlog Application : Core model
Xpert 🌶 Challenge 2.14.1. Solution: Challenge 0
Xpert 🌶 Challenge 2.14.2. Challenge 1
 
Week 3: Design, Class Methods and Collections
Newbie 🐥 Lecture 3.1. Essence of Dispatch 1/2
Newbie 🐥 Lecture 3.2. Essence of Dispatch 2/2
Newbie 🐥 Lecture 3.3. Variables
Newbie Web1 🐥🌐 Lecture 3.4. A Simple HTTP Application
Newbie 🐥 Live 3.5.1. Nautilus 4: How to Become a Super Pharo Developer: Understanding Sender and Implementors
Newbie 🐥 Live 3.5.2. Nautilus 5: Navigating Fast Inside Classes
Newbie 🐥 Lecture 3.6. Class Methods
Newbie 🐥 Lecture 3.7. An overview of Essential Collections
Newbie 🐥 Live 3.8.1. Spotter 1: Find and Browse a Class
Newbie 🐥 Live 3.8.2. Spotter 2: Filter Results by Category
OO1 🎁 Lecture 3.9. Iterators
Newbie 🐥 Lecture 3.10. Stream Overview
Newbie 🐥 Lecture 3.11. Understanding Return
Newbie 🐥 Redo 3.12. Coding a Little Domain Specific Language
Newbie 🐥 Exercise 3.13.1. Solution: Expression Results
Newbie 🐥 Exercise 3.13.2. Rewriting Expressions
Newbie 🐥 Exercise 3.13.3. [Mini-project] Chap 3: TinyBlog: Extending and Testing the Model
Xpert 🌶 Challenge 3.14.1. Solution: Challenge 1
Xpert 🌶 Challenge 3.14.2. Challenge 2
 
Week 4: Inheritance & Lookup and Web Development
Newbie 🐥 Lecture 4.1. Inheritance Basics
Newbie 🐥 Lecture 4.2. Inheritance & Lookup: Lookup
Newbie 🐥 Lecture 4.3. Inheritance & Lookup: Super
Newbie 🐥 Lecture 4.4. Inheritance & Lookup: DoesNotUnderstand:
Xpert 🌶 Lecture 4.5. Inheritance & Lookup: Lookup in Metaclasses
OO1 🎁 Lecture 4.6. Class Methods at Work
Web1 🌐 Lecture 4.7. Overview of Pharo Web Stack
Web1 🌐 Lecture 4.8. Seaside: an Innovative Web Application Framework
Web1 🌐 Lecture 4.9. Seaside: Rendering Components
Web1 🌐 Lecture 4.10. Seaside: a Glance at MetaData and REST
Web1 🌐 Lecture 4.11. Voyage: NoSql Object Database
Newbie 🐥 Live 4.12.1. How to load code from repository
Newbie 🐥 Live 4.12.2. How to load projects
OO1 🎁 Live 4.12.3. Nautilus 6: An overview of Refactorings
OO1 🎁 Live 4.12.4. Nautilus 7: Using the Quality Assistant and Code Critic
Newbie 🐥 Exercise 4.13.1. Solution: Rewriting Expressions
Web1 🌐 Exercise 4.13.2. [Mini-project] Chap 4: Data Persitency using Voyage and Mongo
Web1 🌐 Exercise 4.13.3. [Mini-project] Chap 5, 6 & 7: TinyBlog: Building the public Web using Seaside
Web1 🌐 Exercise 4.13.4. Building a Simple Contact Book Application
Xpert 🌶 Challenge 4.14.1. Solution: Challenge 2
Xpert 🌶 Challenge 4.14.2. Challenge 3
 
Week 5: Exception, Debugging and Reflection
Web1 🌐 Lecture 5.1. Seaside: Composing Components
OO1 🎁 Lecture 5.2. Really Understanding Class Methods
Newbie 🐥 Lecture 5.3. Common Errors
Xpert 🌶 Lecture 5.4. Powerful Exceptions: an Overview
Newbie 🐥 Lecture 5.5. Debugging in Pharo
Newbie 🐥 Lecture 5.6. SUnit: Unit Tests in Pharo
Newbie 🐥 Lecture 5.7. Files in Pharo
Magic 🔮 Lecture 5.8. Reflection: Basic Introspection
Xpert 🌶 Lecture 5.9. Benchmarking in Pharo
Newbie 🐥 Live 5.10.1. Spotter 3: Scoping and Reducing Search
Newbie 🐥 Live 5.10.2. Spotter 6: Search, Navigate and Preview Files
Newbie 🐥 Live 5.10.3. Learning the Debugger
Newbie 🐥 Live 5.10.4. How to find a bug?
Newbie 🐥 Live 5.10.5. GTInspector 2: Inspect Files and Directories
Web1 🌐 Exercise 5.11.1. [Mini-project] Chap 8 & 9: Authentification and Administrator view for TinyBlog
Newbie 🐥 Exercise 5.11.2. TinyChat
Xpert 🌶 Challenge 5.12.1. Solution: Challenge 3
Xpert 🌶 Challenge 5.12.2. Challenge 4
 
Week 6: Rethink lookup and Advanced Object-Oriented Design
OO1 🎁 Lecture 6.1. Did You Really Understand Super?
Newbie 🐥 Lecture 6.2. Understanding the Implementation of ifTrue:ifFalse:
OO1 🎁 Lecture 6.3. Dice new vs. self class new
OO1 🎁 Lecture 6.4. Message sends are plans for reuse
OO1 🎁 Lecture 6.5. Hooks and Templates
Newbie 🐥 Lecture 6.6. Runtime Architecture
Newbie 🐥 Lecture 6.7. Characters, Strings and Symbols
Newbie 🐥 Lecture 6.8. Dynamic Vs. Literal Arrays
Newbie 🐥 Live 6.9.1. Understanding Images and Changes Files
Newbie 🐥 Live 6.9.2. Using the Pharo Launcher to manage your Pharo images
Xpert 🌶 Live 6.9.3. Diffing and Merging in Pharo
Newbie 🐥 Live 6.9.4. GTInspector 4: Build Custom Tab Views for your Objects
Web1 🌐 Exercise 6.10. [Mini-project] Chap 10: Deploying TinyBlog
Xpert 🌶 Challenge 6.11.1. Solution: Challenge 4
Xpert 🌶 Challenge 6.11.2. Challenge 5
 
Week 7: More on Object-Oriented Design and Testing
Xpert 🌶 Lecture 7.1. Advanced Points on Classes
Newbie 🐥 Lecture 7.2. Variable Size Objects
Magic 🔮 Lecture 7.3. Understanding Metaclasses
Magic 🔮 Lecture 7.4. Reflective Operations for Live Programming
Magic 🔮 Lecture 7.5. DoesNotUnderstand: a Precious Hook
Magic 🔮 Lecture 7.6. Reflection: Stack as an Object
OO1 🎁 Lecture 7.7. Avoid Null Checks
Newbie 🐥 Lecture 7.8. A Journey in Pharo: A Bright Future
Xpert 🌶 Live 7.9.1. Spotter 4: The Preview pane
Xpert 🌶 Live 7.9.2. Spotter 5: Search in Playground History
Xpert 🌶 Live 7.9.3. GTInspector 3: Understand Pharo Internals by Inspection
Web1 🌐 Exercice 7.10. [Mini-project] TinyBlog: Optional Elements
Xpert 🌶 Challenge 7.11. Solution: Challenge 5