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 |
|
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. TinyBlog: Presentation and Model |
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. TinyBlog: Extending and Testing the 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. TinyBlog: A Simple Teapot Web Interface |
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. TinyBlog: Data Persitency using Voyage and Mongo |
Web1 |
|
Exercise |
4.13.3. TinyBlog: Building a Web Interface with 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 |
Xpert |
|
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. TinyBlog: Building an Admin Seaside Web Interface with Magritte |
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. TinyBlog: Deployment |
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 |
Xpert |
|
Challenge |
7.10. Solution: Challenge 5 |