Capstone Projects
Books, authors, members, and loans with a console (Playground/Transcript) interface, custom exceptions, and full SUnit coverage.
Project 1 — Personal library manager (beginner)
Books, authors, members, and loans with a console (Playground/Transcript) interface, custom exceptions, and full SUnit coverage. *Concepts: classes, collections, exceptions, SUnit, printOn:.*
Project 2 — Text adventure engine (beginner/intermediate)
Rooms, items, and commands parsed from strings; commands dispatched with perform:; save/restore game state with STON. *Concepts: polymorphism, dictionaries, streams, reflection, serialization.*
Project 3 — Spreadsheet (intermediate)
Cells with formulas parsed into an AST, dependency tracking with announcements, recalculation, and a Spec2 table UI. *Concepts: parsing, Visitor pattern, Announcements, Spec2.*
Project 4 — Chat server (intermediate)
Zinc WebSocket server with rooms, a Teapot REST API for history, persistence with Voyage (in-memory repository for tests), and a simple Seaside or HTML client. *Concepts: networking, concurrency, JSON, persistence.*
Project 5 — Software visualization tool (advanced)
Analyze any package with reflection (class sizes, coupling, senders graphs) and display interactive Roassal views and a Spec2 browser; integrate as custom inspector tabs. *Concepts: reflection, Roassal, Spec2, moldable tools.*
Project 6 — Mini Smalltalk interpreter (advanced)
Parse a subset of Smalltalk with the Pharo parser (RBParser), and write an AST interpreter with your own environment, message lookup, and blocks — then compare with the real execution. *Concepts: AST, Visitor, method lookup, closures, metaprogramming.*
Project 7 — Web shop with Seaside (advanced)
Catalog, cart, checkout flow using call:/answer:, Glorp or Voyage persistence, user sessions, and Bootstrap styling; deploy headless in Docker. *Concepts: Seaside components, continuations, persistence, deployment.*
Project 8 — Distributed job queue (expert)
A coordinator image and several worker images communicating over HTTP or ZeroMQ via FFI; jobs serialized with Fuel or STON; retries, timeouts, monitoring dashboard in Roassal; optionally a GemStone-backed version. *Concepts: processes, semaphores, networking, serialization, FFI, headless deployment.*