We describe our experience in building an open-ended, loosely-defined distributed systems project in a terminal-year course. The class had forty students organized into eight groups, producing eight projects. The direct objective of the project was to build a distributed application incorporating forms for synchronization, replication, consistency, and fault tolerance. The indirect objectives were to explore in more details concepts and algorithms studied in the lectures and to learn and utilize new concepts and algorithm not covered in the lectures. We briefly describe each project and reflect on this experience. This paper shows with a dominant student voice that the students took on the challenge to higher levels, raising their own expectation, bringing out their creativity to its best, tackling domain-specific research, and demonstrating their resourcefulness with available technologies.