Learn More
We study congruences on words in order to characterize the class of visibly pushdown languages (VPL), a subclass of context-free languages. For any language L, we define a natural congruence on words that resembles the syntactic congruence for regular languages such that this congruence is of finite index if, and only if, L is a VPL. We then study the(More)
Boolean programs with recursion are convenient abstractions of sequential imperative programs, and can be represented as recursive state machines (RSMs) or pushdown automata. Motivated by the special structure of RSMs, we define a notion of modular visibly pushdown au-tomata (modular VPA) and show that for the class of languages accepted by such automata,(More)
Students in the developing world are frequently cited as being among the most important beneficiaries of online education initiatives such as massive open online courses (MOOCs). While some predict that online classrooms will replace physical classrooms, our experience suggests that blending online and in-person instruction is more likely to succeed in(More)
Fault-tolerance in distributed computing systems has been investigated extensively in the literature and has a rich history and detailed theory. This thesis studies fault-tolerance for distributed cyber-physical systems (DCPS), where distributed computation is combined with dynamics of physical processes. Due to their interaction with the physical world,(More)
JFLAP is a powerful and popular educational software tool that allows students in Formal Languages and Automata courses to understand theoretical concepts in a visual and interactive manner. In this paper, we enhance the quality of JFLAP's interactivity in two ways that are extremely useful for beginners learning to build finite automata: (1) our tool can(More)
This thesis addresses the discretionary privacy demands of users in heterogeneous distributed systems such as ubiquitous computing environments. Because of the physical proximity and pervasiveness of personal devices, sensors, actuators, and other devices and services, ubiquitous computing environments need a powerful infrastructure for coordinating(More)