Skip to content

Latest commit

 

History

History
175 lines (152 loc) · 8.5 KB

Profile-Eng.md

File metadata and controls

175 lines (152 loc) · 8.5 KB

Profiles

We propose some profiles to help you navigating in the topics and selecting what you want to learn. We tagged some lectures with the profiles and mentioned also the lectures that you may want to skip in a first place because they are on specific topics such as files, exceptions or other topics that you may not need right at the beginning.

We propose five profiles to follow this mooc at different speed and levels. The profiles are not exclusive: to become a pharo expert you need to start as a newbie and grow up.

  • Total newbies [newbie] 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).

  • Looking for Web [web] For those that focus on the web, 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 Tea pot 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.

  • Looking for Black Magic [magic] If you are interesting in black magic it probably means that you get fast in learning a new language or that you already some Pharo. Still do not miss the OO perspective.

  • Wanna be a Pharo expert [Expert] 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.

Schedule

Week 1: Welcome on Board and Syntax Discovery

Download the slides, videos and exercises.

  • [Newbie] [Lecture] Objectives of this MOOC
  • [Newbie] [Lecture] Pharo: an Immersive Object-Oriented System
  • [Newbie] [Lecture] Pharo Vision
  • [Newbie] [Lecture] Pharo Object Model in a Nutshell
  • [Newbie] [Lecture] Pharo Syntax in a Nutshell
  • [Newbie] [Lecture] Class and Method Definitions
  • [Newbie] [Live] Selecting and executing expressions
  • [Newbie] [Live] Learn Pharo with Prof Stef
  • [Newbie] [Live] Syntax Highlighting gives Feedback
  • [Newbie] [Live] Learn Keyboard Shortcuts
  • [Newbie] [Redo] Coding a Counter
  • [Newbie] [Exercise] Expressions and Messages
  • [Newbie] [Exercise] TinyBlog: Presentation and Model
  • [Expert] [Challenge] Challenge 0

Week 2: Pharo Syntax, Blocks and Inspector

Download the slides, videos and exercises.

  • [Newbie] [Lecture] Understanding Messages
  • [Newbie] [Lecture] Messages for Java programmer
  • [Newbie] [Lecture] Messages: Composition and Precedence
  • [Newbie] [Lecture] Understanding Messages: Sequence and Cascade
  • [Newbie] [Live] Finding Methods with Finder
  • [Newbie] [Live] GTInspector 1: Inspect and Interact with Objects
  • [Newbie] [Lecture] Introduction to Blocks
  • [Newbie] [OO] [Lecture] Loops
  • [Newbie] [OO] [Lecture] Booleans and Conditions
  • [Newbie] [Lecture] Parenthesis vs Square Brackets
  • [Newbie] [Lecture] Yourself
  • [OO] [Lecture] The Essence of Dispatch through an Exercise
  • [Newbie] [Live] Nautilus 1: First Meet with the Code Browser
  • [Newbie] [Live] Nautilus 2: Packages, Tags and Groups
  • [Newbie] [Live] Nautilus 3: Inheritance view
  • [Newbie] [Redo] Coding a Counter in the Debugger
  • [Newbie] [Exercise] Solution: Expressions and Messages
  • [Newbie] [Exercise] Expression Results
  • [Newbie] [Exercise] TinyBlog: Extending and Testing the Model
  • [Expert][Challenge] Solution: Challenge 0
  • [Expert][Challenge] Challenge 1

Week 3: Design, Class Methods and Collections

Download the slides, videos and exercises.

  • [Newbie] [OO] [Lecture] Essence of Dispatch: Taking Pharo Booleans as Example
  • [Newbie] [OO] [Lecture] Essence of Dispatch
  • [Newbie] [Lecture] Variables
  • [Newbie] [Web] [Lecture] A Simple HTTP Application: a Pretext to Revisit Pharo Syntax
  • [Newbie] [Live] Nautilus 4: How to Become a Super Pharo Developer: Understanding Sender and Implementors
  • [Newbie] [Live] Nautilus 5: Navigating Fast Inside Classes
  • [Newbie] [Lecture] Class Methods
  • [Newbie] [Lecture] An Overview of Essential Collections
  • [Newbie] [Live] Spotter 1: Find and Browse a Class
  • [Newbie] [Live] Spotter 2: Filter Results by Category
  • [OO] [Lecture] Iterators
  • [Newbie] [Lecture] Stream Overview
  • [Newbie] [Lecture] Understanding Return
  • [Newbie] [Redo] Coding a Little Domain Specific Language
  • [Newbie] [Exercise] Solution: Expression Results
  • [Newbie] [Exercise] Rewriting Expressions
  • [Newbie] [Exercise] TinyBlog: A Simple Teapot Web Interface
  • [Expert][Challenge] Solution: Challenge 1
  • [Expert][Challenge] Challenge 2

Week 4: Inheritance & Lookup and Web Development

Download the slides, videos and exercises.

  • [Newbie] [Lecture] Inheritance Basics
  • [Newbie] [Lecture] Inheritance & Lookup: Lookup
  • [Newbie] [Lecture] Inheritance & Lookup: Super
  • [Newbie] [Lecture] Inheritance & Lookup: DoesNotUnderstand:
  • [Expert] [Lecture] Inheritance & Lookup: Lookup in Metaclasses
  • [OO] [Lecture] Class Methods at Work
  • [Web] [Lecture] Overview of Pharo Web Stack
  • [Web] [Lecture] Seaside: an Innovative Web Application Framework
  • [Web] [Lecture] Seaside: Rendering Components
  • [Web] [Lecture] Seaside: a Glance at MetaData and REST
  • [Web] [Lecture] Voyage: NoSql Object Database
  • [Newbie] [Live] How to load code from repository
  • [Newbie] [Live] How to load projects
  • [OO] [Live] Nautilus 6: An overview of Refactorings
  • [OO] [Live] Nautilus 7: Using the Quality Assistant and Code Critic
  • [Newbie] [Exercise] Solution: Rewriting Expressions
  • [Web] [Exercise] TinyBlog: Data Persitency using Voyage and Mongo
  • [Web] [Exercise] TinyBlog: Building a Web Interface with Seaside
  • [Web] [Exercise] Building a Simple Contact Book Application
  • [Expert] [Challenge] Solution: Challenge 2
  • [Expert] [Challenge] Challenge 3

Week 5: Exception, Debugging and Reflection

Download the slides, videos and exercises.

  • [Web] [Lecture] Seaside: Composing Components
  • [OO] [Lecture] Really Understanding Class Methods
  • [Newbie] [Lecture] Common Errors
  • [Expert] [Lecture] Powerful Exceptions: an Overview
  • [Newbie] [Lecture] Debugging in Pharo
  • [Newbie] [Lecture] SUnit: Unit Tests in Pharo
  • [Expert] [Lecture] Files in Pharo
  • [Magic] [Lecture] Reflection: Basic Introspection
  • [Expert] [Lecture] Benchmarking in Pharo
  • [Newbie] [Live] Spotter 3: Scoping and Reducing Search
  • [Newbie] [Live] Spotter 6: Search, Navigate and Preview Files
  • [Newbie] [Live] Learning the Debugger
  • [Newbie] [Live] How to find a bug?
  • [Newbie] [Live] GTInspector 2: Inspect Files and Directories
  • [Web] [Exercise] TinyBlog: Building an Admin Seaside Web Interface with Magritte
  • [Newbie] [Exercise] TinyChat
  • [Expert] [Challenge] Solution: Challenge 3
  • [Expert] [Challenge] Challenge 4

Week 6: Rethink Lookup and Advanced Object-Oriented Design

Download the slides, videos and exercises.

  • [OO] [Lecture] Did You Really Understand Super?
  • [Newbie] [Lecture] Understanding the Implementation of ifTrue:ifFalse:
  • [OO] [Lecture] Dice new vs. self class new
  • [OO] [Lecture] Message sends are plans for reuse
  • [OO] [Lecture] Hooks and Templates
  • [Newbie] [Lecture] Runtime Architecture
  • [Newbie] [Lecture] Characters, Strings and Symbols
  • [Newbie] [Lecture] Dynamic Vs. Literal Arrays
  • [Newbie] [Live] Understanding Images and Changes Files
  • [Newbie] [Live] Using the Pharo Launcher to manage your Pharo images
  • [Expert] [Live] Diffing and Merging in Pharo
  • [Newbie] [Live] GTInspector 4: Build Custom Tab Views for your Objects
  • [Web] [Exercise] TinyBlog: Deployment ( Download PharoWeb image for deployment which uses Pharo 4)
  • [Expert] [Challenge] Solution: Challenge 4
  • [Expert] [Challenge] Challenge 5

Week 7: More on Object-Oriented Design and Testing

Download the slides, videos and exercises.

  • [Expert] [Lecture] Advanced Points on Classes
  • [Newbie] [Lecture] Variable Size Objects
  • [Magic] [Lecture] Understanding Metaclasses
  • [Magic] [Lecture] Reflective Operations for Live Programming
  • [Magic] [Lecture] DoesNotUnderstand: a Precious Hook
  • [Magic] [Lecture] Reflection: Stack as an Object
  • [OO] [Lecture] Avoid Null Checks
  • [Newbie] [Lecture] A Journey in Pharo: A Bright Future
  • [Expert] [Live] Spotter 4: The Preview pane
  • [Expert] [Live] Spotter 5: Search in Playground History
  • [Expert] [Live] GTInspector 3: Understand Pharo Internals by Inspection
  • [Expert] [Challenge] Solution: Challenge 5