This project was retired in 2021. You can read up on the history here.
A collection of programming or debugging exercises to support a course on Distributed Systems. The focus is on classroom debugging exercises that can be delivered in about two hours, though not every student will complete them in this timeframe.
The Pityoulish exercises revolve around a common topic: A server implements a Message Board which holds a limited number of messages. Clients can fetch messages from the board and put up new ones. Putting up messages requires a ticket from the server.
It's a fictitious problem with toy implementations. There is no authentication, no security, no high availability. The initial classroom exercises showcase different communication techniques for the client/server interaction. Future exercises might add encrypted communication, user authentication, or more. You're welcome to help getting there :-)
Are you...
If you are a student working on an exercise, this is the wrong repository. Check with your instructor on how to access your current exercise. This repository contains all exercises, and is missing the gaps you are supposed to fill in. Furthermore, it contains the code for clients and servers, while the exercises are about the clients.
If you are a student cheating on an exercise, this is the right repository. It contains the code for all exercises, and is missing the gaps you are supposed to fill in. But what's the point of cheating on these exercises? You're not getting graded for them, are you?
Consider becoming a contributor, too. After the exercise, of course :-)
To squeeze the classroom exercises into the planned timeframe, students are provided with an almost-working client program to debug. The instructor is running the server, with output on a public display visible to all students. Intentional omissions in the client program guide the students to points of interest in the code. You may fork this project and put in your own omissions, to better match the topics you are teaching.
The current set of exercises comprises:
As an instructor, I expect you to build the exercises and server components yourself. See the Development Readme for details.
You can read some more about the background of this project and my lessons learned. I'll update those at the end of each term, so you can follow my progress. As of December 2020, I'm considering to start all over with an enhanced protocol, and server-side code structured as 12 factor apps. All planned enhancements are suspended. They may be re-targetted for the new codebase.
There are many ways in which you might contribute to Pityoulish: proof-reading exercises, commenting on or opening new issues, translating program output or exercises into different languages, coding, and more. If you're interested, have a look at issues labeled "help wanted". A second label indicates the expected effort:
See the Development Readme for more information about working with the Pityoulish source code.