This repository has been archived by the owner on Sep 21, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathMoocRoadmap.pillar
171 lines (149 loc) · 8.09 KB
/
MoocRoadmap.pillar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
{
"title":"Roadmap of the Pharo MOOC"
}
!Global MOOC Roadmap
# Week 1: Welcome on Board and Syntax Discovery
# Week 2: Pharo Syntax, Blocks and Inspector
# Week 3: Design, Class Methods and Collections
# Week 4: Inheritance&Lookup and Web Development
# Week 5: Exception, Debugging and Reflection
# Week 6: Rethink lookup and Advanced OO Design
# Week 7: More on OO Design and Testing
!!Different kind of Resources and Activities
This document summarizes the whole MOOC planning week by week.
It is best to do the activities in the order they are presented but you can mix if you feel that this is better for you.
There are several kinds of activities (that you can identify also based on the their names and/or tags):
- [""Lecture""] means that you should watch a video explaining some notions described in slides. You will find a handout version in PDF of all slides in this document. We invite you to always watch videos while taking notes on the slides. All the code snippets presented in the slides are normally fully executable in Pharo and we suggest you execute them.
- [""Live""] means that you should watch a video demonstrating a certain interactive aspect of the Pharo IDE. We suggest to reproduce what is shown in the video.
- [""Quiz""] means that you should answer a sequence of small questions. Watching the lectures will most of the time be enough to answer. Some questions will explicitly ask you to check in Pharo. This is based on the Quiz success that you will get your Pharo Mooc certificate.
- [""Redo""] means that you should
-- (1) watch a Live coding video session and
-- (2) redo what is demonstrated step by step using your Pharo installation.
During the first redo you should act as a monkey just reproducing what you see.
- [""Exercise""] means that you should do a guided project using your Pharo installation. The exercise is described by a document. Sometimes you have version with holes and full versions. It is best to start with a version without the solution, but this is up to you to decide. We will not grade you on such exercises but they are key to train yourself.
- [""Mini project""] means that you get a longer exercise named TinyBlog that will last the complete Mooc. Each week we will add new functionality. Each week you will get a complete code version of the previous week so that if you failed the week before you can still continue during the new week.
- [""Challenge""] means that you have to solve a little challenge by poking in Pharo. The idea is that you should look around. mess up and not be afraid to get lost. You should do the challenge for yourself, we will not grade it because there are several ways to solve it. Every week you will get the solution of the previous challenge and we strongly encourage you to read the messages and classes we use in the solution. Challenges are usually fun and challenging a bit, of course.
!!Week 1: Welcome on Board and Syntax Discovery
# [Lecture] Objectives of this MOOC
# [Lecture] Pharo: an Immersive Object-Oriented System
# [Lecture] Pharo Vision
# [Lecture] Pharo Object Model in a Nutshell
# [Lecture] Pharo Syntax in a Nutshell
# [Lecture] Class and Method Definitions
# [Live] Selecting and executing expressions
# [Live] Learn Pharo with Prof Stef
# [Live] Syntax Highlighting gives Feedback
# [Live] Learn Keyboard Shortcuts
# [Redo] Coding a Counter
# [Exercise] Expressions and Messages
# [Challenge] Challenge 0
!!Week 2: Pharo Syntax, Blocks and Inspector
# [Lecture] Understanding Messages
# [Lecture] Messages for Java programmer
# [Lecture] Messages: Composition and Precedence
# [Lecture] Understanding Messages: Sequence and Cascade
# [Live] Finding Methods with Finder
# [Live] GTInspector 1: Inspect and Interact with Objects
# [Lecture] Introduction to Blocks
# [Lecture] Loops
# [Lecture] Booleans and Conditions
# [Lecture] Parenthesis vs Square Brackets
# [Lecture] Yourself
# [Lecture] The Essence of Dispatch through an Exercise
# [Live] Nautilus 1: First Meet with the Code Browser
# [Live] Nautilus 2: Packages, Tags and Groups
# [Live] Nautilus 3: Inheritance view
# [Redo] Coding a Counter in the Debugger
# [Exercise] Solution: Expressions and Messages
# [Exercise] Expression Results
# [MiniProject] TinyBlog (Chapters 1 and 2)
# [Challenge] Solution: Challenge 0
# [Challenge] Challenge 1
!!Week 3: Design, Class Methods and Collections
# [Lecture] Essence of Dispatch: Taking Pharo Booleans as Example
# [Lecture] Essence of Dispatch
# [Lecture] Variables
# [Lecture] A Simple HTTP Application: a Pretext to Revisit Pharo Syntax
# [Live] Nautilus 4: How to Become a Super Pharo Developer: Understanding Sender and Implementors
# [Live] Nautilus 5: Navigating Fast Inside Classes
# [Lecture] Class Methods
# [Lecture] An Overview of Essential Collections
# [Live] Spotter 1: Find and Browse a Class
# [Live] Spotter 2: Filter Results by Category
# [Lecture] Iterators
# [Lecture] Stream Overview
# [Lecture] Understanding Return
# [Redo] Coding a Little Domain Specific Language
# [Exercise] Solution: Expression Results
# [Exercise] Rewriting Expressions
# [MiniProject] TinyBlog (Chapter 3)
# [Challenge] Solution: Challenge 1
# [Challenge] Challenge 2
!!Week 4: Inheritance, Lookup and Web Development
# [Lecture] Inheritance Basics
# [Lecture] Inheritance & Lookup: Lookup
# [Lecture] Inheritance & Lookup: Super
# [Lecture] Inheritance & Lookup: DoesNotUnderstand:
# [Lecture] Inheritance & Lookup: Lookup in Metaclasses
# [Lecture] Class Methods at Work
# [Lecture] Overview of Pharo Web Stack
# [Lecture] Seaside: an Innovative Web Application Framework
# [Lecture] Seaside: Rendering Components
# [Lecture] Seaside: a Glance at MetaData and REST
# [Lecture] Voyage: NoSql Object Database
# [Live] How to load code from repository
# [Live] How to load projects
# [Live] Nautilus 6: An overview of Refactorings
# [Live] Nautilus 7: Using the Quality Assistant and Code Critic
# [Exercise] Solution: Rewriting Expressions
# [MiniProject] TinyBlog (Chapters 4 to 7)
# [Exercise] Building a Simple Contact Book Application
# [Challenge] Solution: Challenge 2
# [Challenge] Challenge 3
!!Week 5: Exceptions, Debugging and Reflection
# [Lecture] Seaside: Composing Components
# [Lecture] Really Understanding Class Methods
# [Lecture] Common Errors
# [Lecture] Powerful Exceptions: an Overview
# [Lecture] Debugging in Pharo
# [Lecture] SUnit: Unit Tests in Pharo
# [Lecture] Files in Pharo
# [Lecture] Reflection: Basic Introspection
# [Lecture] Benchmarking in Pharo
# [Live] Spotter 3: Scoping and Reducing Search
# [Live] Spotter 6: Search, Navigate and Preview Files
# [Live] Learning the Debugger
# [Live] How to find a bug?
# [Live] GTInspector 2: Inspect Files and Directories
# [MiniProject] TinyBlog (Chapters 8 and 9)
# [Exercise] TinyChat
# [Challenge] Solution: Challenge 3
# [Challenge] Challenge 4
!!Week 6: Rethink Lookup and Advanced OO Design
# [Lecture] Did You Really Understand Super?
# [Lecture] Understanding the Implementation of ifTrue:ifFalse:
# [Lecture] Dice new vs. self class new
# [Lecture] Message sends are plans for reuse
# [Lecture] Hooks and Templates
# [Lecture] Runtime Architecture
# [Lecture] Characters, Strings and Symbols
# [Lecture] Dynamic Vs. Literal Arrays
# [Live] Understanding Images and Changes Files
# [Live] Using the Pharo Launcher to manage your Pharo images
# [Live] Diffing and Merging in Pharo
# [Live] GTInspector 4: Build Custom Tab Views for your Objects
# [Challenge] Solution: Challenge 4
# [Challenge] Challenge 5
!!Week 7: More on OO Design and Testing
# [Lecture] Advanced Points on Classes
# [Lecture] Variable Size Objects
# [Lecture] Understanding Metaclasses
# [Lecture] Reflective Operations for Live Programming
# [Lecture] DoesNotUnderstand: a Precious Hook
# [Lecture] Reflection: Stack as an Object
# [Lecture] Avoid Null Checks
# [Lecture] A Journey in Pharo: A Bright Future
# [Live] Spotter 4: The Preview pane
# [Live] Spotter 5: Search in Playground History
# [Live] GTInspector 3: Understand Pharo Internals by Inspection
# [Challenge] Solution: Challenge 5