Skip to the content.

Table of Contents

Learn Programming with Smalltalk


Part I: Welcome to Programming

Chapter 1: What is Programming (And Why Smalltalk?)

Introduction to programming concepts, why Smalltalk is uniquely suited for learning, brief history, and what makes it special.

Chapter 2: Your First Steps - Installing and Exploring

Detailed walkthrough of installing Pharo, Squeak, and Glamorous Toolkit; understanding what an “image” is; first look at the environment.

Chapter 3: The Workspace - Your Programming Playground

Using workspaces/playgrounds to experiment; your first lines of code; the “Do it,” “Print it,” and “Inspect it” paradigm.


Part II: Thinking in Objects

Chapter 4: Everything is an Object (No, Really!)

Objects, messages, and methods; the fundamental mantra; sending your first messages.

Chapter 5: Numbers, Strings, and Basic Types

Working with numbers (integers, floats); strings and characters; booleans; nil; everything is an object!

Chapter 6: Collections - Organizing Your Data

Arrays, OrderedCollections, Sets, Dictionaries; the power of collection protocols.

Chapter 7: Variables - Naming Your Objects

Temporary variables, instance variables (preview), class variables (preview); the assignment operator.


Part III: Making Decisions and Repeating Actions

Chapter 8: Conditionals - Making Choices

ifTrue:, ifFalse:, ifTrue:ifFalse:; how Smalltalk implements control flow with objects and blocks.

Chapter 9: Blocks - Code You Can Hold

Understanding blocks (closures); storing code as objects; the power of first-class functions.

Chapter 10: Loops and Iteration

timesRepeat:, to:do:, whileTrue:, whileFalse:; collection iteration (do:, collect:, select:, reject:, inject:into:).


Part IV: Creating Your Own Objects

Chapter 11: Classes - The Blueprint

What are classes?; creating your first class; the System Browser; understanding instance vs. class.

Chapter 12: Methods - Teaching Objects New Tricks

Defining methods; method protocols; the method browser; return values.

Chapter 13: Instance Variables - Giving Objects Memory

Adding state to your objects; accessors and mutators; encapsulation.

Chapter 14: The Mystery of ‘self’ and ‘super’

Understanding self; message sending to self; what super means; the lookup chain.

Chapter 15: Inheritance - Standing on Shoulders

Creating subclasses; overriding methods; when to inherit; the class hierarchy.


Part V: The Image, Changes, and Sources

Chapter 16: Understanding the Image

What the image file contains; saving and loading; why it’s revolutionary; managing multiple images.

Chapter 17: Changes and Sources Files

The changes file as your safety net; the sources file; recovering lost code; understanding the three-file system.

Chapter 18: Version Control for Smalltalkers

Git with Smalltalk; Monticello; Iceberg in Pharo; best practices; moving beyond the image.


Part VI: Tools of the Trade

Chapter 19: The System Browser - Your Code Navigator

Deep dive into browsing classes; finding methods; refactoring tools; keyboard shortcuts.

Chapter 20: The Inspector and Explorer

Inspecting objects live; modifying running objects; exploring object graphs; debugging in the inspector.

Chapter 21: The Debugger - Your New Best Friend

Why Smalltalk’s debugger is magical; fixing bugs while the program runs; stepping through code; the stack.

Chapter 22: The Finder - Discovering Code

Finding implementors, senders; method searches; example searches; learning from existing code.


Part VII: Intermediate Concepts

Chapter 23: Protocols and Polymorphism

Duck typing in Smalltalk; designing with protocols; the power of polymorphism.

Chapter 24: Error Handling - When Things Go Wrong

Exceptions in Smalltalk; on:do:; ensure:; creating custom exceptions.

Chapter 25: Testing Your Code

SUnit testing framework; writing tests first; test-driven development; running test suites.

Chapter 26: Packages and Code Organization

Organizing code into packages; dependencies; loading code; baseline configurations.


Part VIII: Exploring the Smalltalk Variations

Chapter 27: Pharo - The Modern Smalltalk

Pharo’s unique features; the community; key libraries (Seaside, Roassal, etc.); when to choose Pharo.

Chapter 28: Squeak - Multimedia and Education

Squeak’s heritage; Morphic UI; multimedia capabilities; Etoys and learning environments.

Chapter 29: Glamorous Toolkit - Moldable Development

GT’s revolutionary approach; custom inspectors; moldable development; exploring data.

Chapter 30: Other Smalltalks Worth Knowing

Brief overview of Cuis, GNU Smalltalk, VA Smalltalk, and the broader family.


Part IX: Building Real Things

Chapter 31: Project 1 - A Todo List Manager

Putting it all together; building a simple application; managing state; collections in practice.

Chapter 32: Project 2 - A Text Adventure Game

Objects modeling game entities; polymorphism in action; designing a small game engine.

Chapter 33: Project 3 - A Simple Web Server

Understanding Zinc HTTP; serving web pages; handling requests; introduction to web development.

Chapter 34: Working with Files and Streams

File I/O; reading and writing files; streams; binary vs. text; FileSystem API.

Chapter 35: Graphics and UI Basics

Introduction to Morphic; creating simple UIs; event handling; making things visual.


Part X: Next Steps

Chapter 36: Design Patterns in Smalltalk

Classic patterns that originated in Smalltalk; MVC; Observer; Strategy; when to use them.

Chapter 37: Performance and Optimization

Profiling code; common performance pitfalls; when to optimize; benchmarking.

Chapter 38: The Smalltalk Community

Where to get help; Discord, Slack, mailing lists; contributing to open source; conferences.

Chapter 39: Beyond Smalltalk - Taking Your Skills Further

How Smalltalk concepts transfer to other languages; what to learn next; career possibilities.

Chapter 40: Your Smalltalk Journey

Recap; resources for continued learning; parting wisdom; the joy of live programming.


Appendices

Appendix A: Installation Guide Details

Platform-specific installation instructions; troubleshooting common issues.

Appendix B: Keyboard Shortcuts Reference

Essential shortcuts for Pharo, Squeak, and Glamorous Toolkit.

Appendix C: Useful Code Snippets

Common patterns and idioms for quick reference.

Appendix D: Glossary

Definitions of Smalltalk-specific terms and concepts.

Appendix E: Further Reading

Books, papers, websites, and online resources for continued learning.


Back to Main README