
This semester's class on distributed software systems, more specifically the lab class going along, proved to be fairly insightful. Even though I have done my share of multi-threaded programming and using Java Sockets, I never got around to play with Java's Remote Method Invocation API or anything remotely utilizing RPC concepts for that matter.
Some of the assignments were pretty dull others for all intents and purposes interesting. I liked a modified version of Dijkstra's Dining Philosophers problem in particular, where the number of philosophers exceeds the seats at the table. This results in not only having philosophers sitting at the table competing for chopsticks/forks, but unseated philosophers challenging each other for available seats as well.
Given the slew of activities eating up my schedule this semester, I decided to not join the other students in the lab, coding under professorial supervision [for a whole semester] :) Much rather I opted to hack all of this semester's tasks on a couple of free evenings last week and the one before.
So it wasn't until turning in and presenting my solutions to the class-instructing professor, that I witnessed quite a few fellow students being totally stressed out and struggling with the assignments. Since I am not a believer in closed code, especially in an academic environment, I am sharing mine via an open source repository.
Head over to Google's excellent Project Hosting and feel free to play around with, even better improve on, my beads'n'threads code. As always, there is room for improvement. For starters you could take a look at the issue list.
Please let me know either via email or a comment to this post, if you'd like to have committer access to the repo.
I don't want to encourage my fellow classmates to revel in cheap plagiarism. But in the end it is and should remain everyone's own decision, whether to use the code as
- inspiration
- learning material
- means of communication
- basis for collaboration
Code shouldn't be locked up, especially in an environment where learning is supposed to be of prime importance.


