ABSTRACT This article describes an experimental course where students developed Internet of Things device prototypes to improve the upkeep of an urban rooftop greenhouse. With the help of a problem-based learning approach, students were first familiarized with their new learning environment and encouraged to find issues that could be improved as a meaningful personal learning experience. A project-based learning approach was then used to develop innovative solutions while validating their relevance in collaboration with gardeners that were taking care of the greenhouse. As a result, a number of practical applications for monitoring the state of the greenhouse were developed along with new practices for its maintenance. As participants were given the freedom to choose both the topic and technologies to work with, the course provided a learning experience that was tailored to suit personal interests and competences. Having the common background story allowed students to practice teamwork skills and collaborative software engineering in the context of the emerging topic of Internet of Things.