Live Object Programming in Pharo

Description

About this course

If you are either a beginner or an expert in object-oriented programming, this course 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…Pharo is also a very powerful open-source environment used by companies to develop web applications.

In this course, 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 course is intended for people with a programming experience but everyone motivated could follow the course thanks to the numerous resources proposed. This course 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 course 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 course will also provide a new vision of the fundamental principles of object-oriented programming, i.e. polymorphism and late binding.

Format

This course includes 7 parts :
 each part 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.

Prerequisites

A first experience in object-oriented programming is better.

Course Syllabus

Part 1 : Welcome on Board and Syntax DiscoveryPart 2 : Pharo Syntax, Blocks and InspectorPart 3 : Design, Class Methods and CollectionsPart 4 : Inheritance & Lookup and Web DevelopmentPart 5 : Exception, Debugging and ReflectionPart 6 : Rethink Lookup and Advanced Object-Oriented DesignPart 7 : More on Object-Oriented Design and Testing

Suggested readings

Every reading about object-oriented programming will help you get ready for this course. The book Pharo by Example  available for free, will serve as a supplementary document during the course. Other ressources about Pharo (in english) are available here.

The different media of this course constitute a course 7 weeks hosted on the platform France Universitaire Numérique : https://www.fun-mooc.fr/courses/inria/41003S02/session02/about

 

Vidéo pédagogique

Seaside: Composing Components
Collection
14 vidéos
5 : Exception, Debugging and Reflection
  • CASSOU Damien
  • DUCASSE Stéphane
  • FABRESSE Luc
Last part, we dug into inheritance and lookup and we will continue on this topic this week with class methods (yes again) and exceptions.We will also describe some important activities during development such as debugging, testing, introspecting and profiling as well as Pharo tools to support them. Then, we will also go further into web development by composing Seaside components: this is the killer feature of this framework! Exercises part 5 : Click on the exercises titles to download the documents. - [Mini-project] TinyBlog: Solution Week 4 + Building an Admin Seaside Web Interface with Magritte - TinyChat Solutions for the new exercises will be provided in the section "Exercises" of the following part.
16.03.2015
  • niveau 1 niveau 2 niveau 3
  • audio 1 audio 2 audio 3
  • document 1 document 2 document 3
Inheritance Basics
Collection
15 vidéos
4 : Inheritance & Lookup and Web Development
  • CASSOU Damien
  • DUCASSE Stéphane
  • FABRESSE Luc
In this 4th part, we will discover or revisit the lookup mechanism which is (should be) at the heart of any object-oriented language. We will also dig further into web development with the Pharo Web stack through the Seaside, Magritte and Voyage frameworks. Exercises part 4 : Click on the exercises titles to download the documents. - Rewriting Expressions - Solution for week 3 exercise - [Mini-project] TinyBlog: Solution Exercise Week 3 + Data Persistency using Voyage and Mongo - [Mini-project] TinyBlog: Building a Web Interface with Seaside - Building a Simple Contact Book Application Solutions for the new exercises will be provided in the section "Exercises" of the following part.
16.03.2015
  • niveau 1 niveau 2 niveau 3
  • audio 1 audio 2 audio 3
  • document 1 document 2 document 3
Essence of Dispatch 1/2
Collection
14 vidéos
3 : Design, Class Methods and Collections
  • CASSOU Damien
  • DUCASSE Stéphane
  • FABRESSE Luc
We will discuss object-oriented design: why we code with objects and classes the way we do it. Beyond design, part 3 will present Pharo's different kinds of variables and returns as well as the collection libraries and class methods. Exercises part 3 : Click on the exercises titles to download the documents. - Expression Results - Solution for week 2 exercise - Rewriting Expressions - [Mini-project] TinyBlog: Solution Exercise Week 2 + A Simple Teapot Web Interface Solutions for the new exercises will be provided in the section "Exercises" of the following part.
16.03.2015
  • niveau 1 niveau 2 niveau 3
  • audio 1 audio 2 audio 3
  • document 1 document 2 document 3
Understanding Messages
Collection
16 vidéos
2 : Pharo Syntax, Blocks and Inspector
  • CASSOU Damien
  • DUCASSE Stéphane
  • FABRESSE Luc
In this second week, you will review the concept of "message", but also the one of "block" which is the cornerstone for making conditions, loops, etc. You will also discover development tools such as the Finder and GTInspector. Finally, you will understand why developping in Pharo is a different experience through the redo video "Coding a Counter in the Debugger". Exercises part 2 : Click on the exercises titles to download the documents. - Expression and Messages - Solution for part 1 exercise - Expression Results - [Mini-project] TinyBlog: Solution for week 1 exercise and Extending and Testing the Model Solutions for the new exercises will be provided in the section "Exercises" of the following part.
16.03.2015
  • niveau 1 niveau 2 niveau 3
  • audio 1 audio 2 audio 3
  • document 1 document 2 document 3
Objectives of this course
Collection
11 vidéos
1 : Welcome on Board and Syntax Discovery
  • CASSOU Damien
  • DUCASSE Stéphane
  • FABRESSE Luc
In this first part, we will present the vision behind the Pharo community and we will do a complete overview of Pharo (syntax and object model). In the next parts, we will come back to these notions and even go further. We also invite you to install and experiment with Pharo this first week because one of the strength of Pharo is that it can be explored! Exercises part 1 : Click on the exercises titles to download the instructions. - Expressions and Messages - Developing a Simple Counter - [Mini-project] TinyBlog: Presentation and Model Solutions for these exercises will be provided in the section "Exercises" of the following part.
16.03.2015
  • niveau 1 niveau 2 niveau 3
  • audio 1 audio 2 audio 3
  • document 1 document 2 document 3
Advanced Points on Classes
Collection
11 vidéos
7 : More on Object-Oriented Design and Testing
  • CASSOU Damien
  • DUCASSE Stéphane
  • FABRESSE Luc
In this last part, you will discover some advanced concepts in Pharo such as variable-size classes as well as metaclasses. You will also learn about meta-programming and some more object-oriented design guidelines.
16.03.2015
  • niveau 1 niveau 2 niveau 3
  • audio 1 audio 2 audio 3
  • document 1 document 2 document 3
Did You Really Understand Super?
Collection
12 vidéos
6 : Rethink Lookup and Advanced Object-Oriented Design
  • CASSOU Damien
  • DUCASSE Stéphane
  • FABRESSE Luc
In this part, we will present you some more advanced topics regarding modelisation with objects and its best practices that leads to better code reuse and more robustness against evolution. We will also give you more details on the Pharo infrastructure (VM image, ...) and some data types  such as characters, strings, static and dynamic arrays. Exercises part 6 Click on the exercise title to download the documents. - [Mini-project] TinyBlog: Solution Week 5 + Deployment Solutions for the new exercises will be provided in the section "Exercises" of the following week.
16.03.2015
  • niveau 1 niveau 2 niveau 3
  • audio 1 audio 2 audio 3
  • document 1 document 2 document 3