Learn More
Modern software development extensively involves reusing library components accessed through their Application Programming Interfaces (APIs). Usability is therefore a fundamental goal of API design, but rigorous empirical studies of API usability are still relatively uncommon. In this paper, we present the design of an API usability study which combines(More)
The student project is a key component of a software engineering course. What exact goals should the project have, and how should the instructors focus it? While in most cases projects are artificially designed for the course, we use a deployable, realistic project. This paper presents the rationale for such an approach and assesses our experience with it,(More)
Contracts are a form of lightweight formal specification embedded in the program text. Being executable parts of the code, they encourage programmers to devote proper attention to specifications, and help maintain consistency between specification and implementation as the program evolves. The present study investigates how contracts are used in the(More)
When an application retrieves serialized objects for which the class has changed, it may have to cope with modifications of the semantics. While there are numerous ways to handle the resulting mismatch at runtime, the developer is typically required to provide some code to reestablish the intended semantics of the new class. The present article shows how to(More)
With the wide support for serialization in objectoriented programming languages, persistent objects have become common place. Retrieving previously “persisted” objects from classes whose schema changed is however difficult, and may lead to invalidating the consistency of the application. The ESCHER framework addresses this issues through an(More)
With the wide support for object serialization in object-oriented programming languages, persistent objects have become commonplace and most large object-oriented software systems rely on extensive amounts of persistent data. Such systems also evolve over time. Retrieving previously persisted objects from classes whose schema has changed is, however,(More)
The advent of Massive Open Online Courses makes it essential to develop tools and techniques that automatically support computer science students in solving programming assignments. Complementing existing tools for automatically checking the correctness of students' programs, we have developed and evaluated an incremental hint system for programming(More)
The purpose of our study was to analyze the immunohistochemical expression of two MMR system proteins at different steps of neoplastic progression within the squamous cervical epithelium. We compared cases showing normal histologic appearance with those affected by low and high-grade squamous intraepithelial lesions and invasive cervical carcinoma. We(More)
MOOCs (Massive Open Online Courses), which have taken higher education by storm, are an opportunity to elevate the quality of existing residential courses. We report about an experimental attempt during the Autumn 2013 semester at ETH Zurich, involving our "Introduction to Programming" course. We designed and implemented a MOOC infrastructure and used it as(More)
2013 Acknowledgments First and foremost I would like to thank Bertrand Meyer for giving me the opportunity to do a PhD under his supervision at ETH Zurich. His support and the research freedom he granted me made the work presented here possible. I also thank the co-examiners of this dissertation, Hausi Müller, Richard Paige and Manuel Oriol, who kindly made(More)