Stephanie Balzer
Carnegie Mellon University
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by Stephanie Balzer.
european conference on object oriented programming | 2007
Stephanie Balzer; Thomas R. Gross; Patrick Eugster
Understanding the collaborations that arise between the instances of classes in object-oriented programs is important for the analysis, optimization, or modification of the program. Relationships have been proposed as a programming language construct to enable an explicit representation of these collaborations. This paper introduces a relational model that allows the specification of systems composed of classes and relationships. These specifications rely in particular on member interposition (facilitates the specification of relationship-dependent members of classes) and on relationship invariants (facilitate the specification of the consistency constraints imposed on object collaborations). The notion of a mathematical relation is the basis for the model. Employing relations as an abstraction of relationships, the specification of a system can be formalized using discrete mathematics. The relational model allows thus not only the specification of object collaborations but also provides a foundation to reason about these collaborations in a rigorous fashion.
Proceedings of the 5th Workshop on MechAnisms for SPEcialization, Generalization and inHerItance | 2013
Ligia Nistor; Darya Kurilova; Stephanie Balzer; Benjamin Chung; Alex Potanin; Jonathan Aldrich
The simplest and purest practical object-oriented language designs today are seen in dynamically-typed languages, such as Smalltalk and Self. Static types, however, have potential benefits for productivity, security, and reasoning about programs. In this paper, we describe the design of Wyvern, a statically typed, pure object-oriented language that attempts to retain much of the simplicity and expressiveness of these iconic designs. Our goals lead us to combine pure object-oriented and functional abstractions in a simple, typed setting. We present a foundational object-based language that we believe to be as close as one can get to simple typed lambda calculus while keeping object-orientation. We show how this foundational language can be translated to the typed lambda calculus via standard encodings. We then define a simple extension to this language that introduces classes and show that classes are no more than sugar for the foundational object-based language. Our future intention is to demonstrate that modules and other object-oriented features can be added to our language as not more than such syntactical extensions while keeping the object-oriented core as pure as possible. The design of Wyvern closely follows both historical and modern ideas about the essence of object-orientation, suggesting a new way to think about a minimal, practical, typed core language for objects.
Proceedings of the ACM on Programming Languages | 2017
Stephanie Balzer; Frank Pfenning
Session-typed languages building on the Curry-Howard isomorphism between linear logic and session-typed communication guarantee session fidelity and deadlock freedom. Unfortunately, these strong guarantees exclude many naturally occurring programming patterns pertaining to shared resources. In this paper, we introduce sharing into a session-typed language where types are stratified into linear and shared layers with modal operators connecting the layers. The resulting language retains session fidelity but not the absence of deadlocks, which can arise from contention for shared processes. We illustrate our language on various examples, such as the dining philosophers problem, and provide a translation of the untyped asynchronous π-calculus into our language.
formal methods | 2014
Ligia Nistor; Jonathan Aldrich; Stephanie Balzer; Hannes Mehnert
The presence of aliasing makes modular verification of object-oriented code difficult. If multiple clients depend on the properties of an object, one client may break a property that others depend on. We have developed a modular verification approach based on the novel abstraction of object propositions, which combine predicates and information about object aliasing. In our methodology, even if shared data is modified, we know that an object invariant specified by a client holds. Our permission system allows verification using a mixture of linear and nonlinear reasoning. We thus offer an alternative to separation logic verification approaches. Object propositions can be more modular in some cases than separation logic because they can more effectively hide the exact aliasing relationships within a module. We validate the practicality of our approach by verifying an instance of the composite pattern. We implement our methodology in the intermediate verification language Boogie of Microsoft Research, for the composite pattern example.
programming languages meets program verification | 2010
Stephanie Balzer; Thomas R. Gross
Reasoning about object-oriented programs is difficult since such programs usually involve aliasing, and it is not easy to identify the ways objects can relate to each other and thus to confine a programs heap. In this paper, we address this problem in the context of a relationship-based programming language. In relationship-based programming languages, relationships are first-class citizens and allow a precise description of inter-object relationships. Relationships enforce a modularization discipline that is closer to the natural modularity inherent to many problem domains and that yields, as a result, program heaps that are DAGs. We further describe a mechanism, member interposition, that leverages the new modularization discipline and supports encapsulation of fields of shared objects. We have implemented the described modularization discipline and the mechanism of member interposition in the context of Rumer, a relationship-based programming language with support for contract specifications. We discuss the implications of member interposition for the modular verification of object invariants with an example. Relationships and interposed members provide an alternative to ownership type systems.
programming based on actors, agents, and decentralized control | 2015
Stephanie Balzer; Frank Pfenning
A key idea in object-oriented programming is that objects encapsulate state and interact with each other by message exchange. This perspective suggests a model of computation that is inherently concurrent (to facilitate simultaneous message exchange) and that accounts for the effect of message exchange on an objects state (to express valid sequences of state transitions). In this paper we show that such a model of computation arises naturally from session-based communication. We introduce an object-oriented programming language that has processes as its only objects and employs linear session types to express the protocols of message exchange and to reason about concurrency and state. Based on various examples we show that our language supports the typical patterns of object-oriented programming (e.g., encapsulation, dynamic dispatch, and subtyping) while guaranteeing session fidelity in a concurrent setting. In addition, we show that our language facilitates new forms of expression (e.g., type-directed reuse, internal choice), which are not available in current object-oriented languages. We have implemented our language in a prototype compiler.
acm conference on systems programming languages and applications software for humanity | 2013
Stephanie Balzer; Ulrik Pagh Schultz
Following its long-standing tradition, SPLASH 2013 will host 19 high-quality workshops, allowing their participants to meet and discuss research questions with peers, to mature new and exciting ideas, and to build up communities and start new collaborations. SPLASH workshops complement the main tracks of the conference and provide meetings in a smaller and more specialized setting. Workshops cultivate new ideas and concepts for the future, optionally recorded in formal proceedings. We invite you to explore the workshops program online at http://splashcon.org/2013/program/workshops. This paper contains brief summaries of each of the accepted workshops, grouped by topic. The SPLASH-E workshop is separate from the regular workshop program, and its program is available at http: //splashcon.org/2013/program/educator-symposium.
Sigplan Notices | 2010
Stephanie Balzer; Thomas R. Gross
Reasoning about object-oriented programs is difficult since such programs usually involve aliasing, and it is not easy to identify the ways objects can relate to each other and thus to confine a programs heap. In this paper, we address this problem in the context of a relationship-based programming language. In relationship-based programming languages, relationships are first-class citizens and allow a precise description of inter-object relationships. Relationships enforce a modularization discipline that is closer to the natural modularity inherent to many problem domains and that yields, as a result, program heaps that are DAGs. We further describe a mechanism, member interposition, that leverages the new modularization discipline and supports encapsulation of fields of shared objects. We have implemented the described modularization discipline and the mechanism of member interposition in the context of Rumer, a relationship-based programming language with support for contract specifications. We discuss the implications of member interposition for the modular verification of object invariants with an example. Relationships and interposed members provide an alternative to ownership type systems.
conference on object-oriented programming systems, languages, and applications | 2008
Stephen Nelson; Stephanie Balzer; Gavin M. Bierman; Erik Meijer; James Noble; David J. Pearce; Jiri Soukup; Frank Tip
There is a disconnect between modelling and implementation: relationships are prevalent in system models but implementation languages do not provide first-class support for them. For example, in Java (and other Object-Oriented Languages), relationships must be implemented by hand using references embedded in participants. This approach is cumbersome and error-prone, and leads to a disconnect between the system model and the system implementation. As software systems grow and models become increasingly complex this disconnect causes problems not only for implementers but especially for code maintainers. To address this issue, the software community is using frameworks and tool support to manage the disconnect. However, this does not address the core issue of relating design and implementation. Recent proposals for programming language extensions to add first-class relationships demonstrate another approach to the same problem: an increased level of abstraction in programming languages to close the gap between model and implementation. We plan to gather the growing number of researchers in the object-oriented programming language community who are working on relationship-based systems to share their research and discuss the future of relationship-based constructs in programming languages.
european conference on object oriented programming | 2011
Stephanie Balzer; Thomas R. Gross